@spicainternational/ngx-sds-components 6.12.0 → 6.14.0-beta.1
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/esm2020/src/lib/drawer/drawer.component.mjs +3 -3
- package/esm2020/src/lib/drawer/drawer.module.mjs +1 -1
- package/esm2020/src/lib/quick-info/quick-info.component.mjs +3 -4
- package/esm2020/src/lib/table-actions/table-actions.component.mjs +3 -2
- package/esm2020/src/lib/timeline/components/timeline.component.mjs +55 -16
- package/esm2020/src/lib/timeline/models/timeline.model.mjs +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-drawer.mjs +2 -2
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-drawer.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-quick-info.mjs +2 -3
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-quick-info.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-table-actions.mjs +2 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-table-actions.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs +56 -16
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-drawer.mjs +2 -2
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-drawer.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-quick-info.mjs +2 -3
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-quick-info.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-table-actions.mjs +2 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-table-actions.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs +54 -15
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/timeline/components/timeline.component.d.ts +9 -4
- package/src/lib/timeline/models/timeline.model.d.ts +19 -4
|
@@ -9,7 +9,6 @@ import * as i3 from 'devextreme-angular/ui/popover';
|
|
|
9
9
|
import { DxPopoverModule } from 'devextreme-angular/ui/popover';
|
|
10
10
|
|
|
11
11
|
class SdsQuickInfoComponent {
|
|
12
|
-
// public infoIcon = faInfoCircle;
|
|
13
12
|
constructor() {
|
|
14
13
|
this.popoverMaxWidth = '20rem';
|
|
15
14
|
this.popoverMinWidth = '';
|
|
@@ -73,10 +72,10 @@ class SdsQuickInfoComponent {
|
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
74
|
SdsQuickInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsQuickInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
76
|
-
SdsQuickInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsQuickInfoComponent, selector: "sds-quick-info", inputs: { popoverMaxWidth: "popoverMaxWidth", popoverMinWidth: "popoverMinWidth", popoverWidth: "popoverWidth", showDelay: "showDelay", showEventName: "showEventName", hideDelay: "hideDelay", hideEventName: "hideEventName", mode: "mode", animation: "animation", showPopoverArrow: "showPopoverArrow", infoIcon: "infoIcon" }, outputs: { hide: "hide", show: "show" }, queries: [{ propertyName: "customContent", first: true, predicate: ["customContent"], descendants: true }], viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }, { propertyName: "buttonElementRef", first: true, predicate: ["popoverTarget"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div #popoverTarget\r\n class=\"d-inline\">\r\n\r\n <fa-icon *ngIf=\"!customContent\"\r\n [icon]=\"infoIcon\"\r\n > </fa-icon>\r\n\r\n <ng-container *ngIf=\"customContent\" >\r\n <ng-content select=\"customContent\"></ng-content>\r\n </ng-container> \r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n class=\"d-inline\"\r\n [target]=\"buttonElementRef?.nativeElement\"\r\n [maxWidth]=\"popoverMaxWidth\"\r\n [minWidth]=\"popoverMinWidth\"\r\n [width]=\"popoverWidth\"\r\n [showEvent]=\"showEvent\"\r\n [hideEvent]=\"hideEvent\"\r\n (onHiding)=\"onHiding($event)\"\r\n (onShown)=\"onShown()\"\r\n (onHidden)=\"onHidden()\"\r\n [animation]=\"animation ?? {}\"\r\n [wrapperAttr]=\"{ class: 'sds-quick-info-popover ' + (!showPopoverArrow ? 'sds-dx-popup-no-arrow' : '') }\"\r\n>\r\n <ng-content></ng-content>\r\n</dx-popover>", styles: ["dx-popover{display:inline}::ng-deep .sds-quick-info-popover.sds-dx-popup-no-arrow .dx-popover-arrow{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i3.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
75
|
+
SdsQuickInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsQuickInfoComponent, selector: "sds-quick-info", inputs: { popoverMaxWidth: "popoverMaxWidth", popoverMinWidth: "popoverMinWidth", popoverWidth: "popoverWidth", showDelay: "showDelay", showEventName: "showEventName", hideDelay: "hideDelay", hideEventName: "hideEventName", mode: "mode", animation: "animation", showPopoverArrow: "showPopoverArrow", infoIcon: "infoIcon" }, outputs: { hide: "hide", show: "show" }, queries: [{ propertyName: "customContent", first: true, predicate: ["customContent"], descendants: true }], viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }, { propertyName: "buttonElementRef", first: true, predicate: ["popoverTarget"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div #popoverTarget\r\n class=\"d-inline-block\">\r\n\r\n <fa-icon *ngIf=\"!customContent\"\r\n [icon]=\"infoIcon\"\r\n > </fa-icon>\r\n\r\n <ng-container *ngIf=\"customContent\" >\r\n <ng-content select=\"customContent\"></ng-content>\r\n </ng-container> \r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n class=\"d-inline-block\"\r\n [target]=\"buttonElementRef?.nativeElement\"\r\n [maxWidth]=\"popoverMaxWidth\"\r\n [minWidth]=\"popoverMinWidth\"\r\n [width]=\"popoverWidth\"\r\n [showEvent]=\"showEvent\"\r\n [hideEvent]=\"hideEvent\"\r\n (onHiding)=\"onHiding($event)\"\r\n (onShown)=\"onShown()\"\r\n (onHidden)=\"onHidden()\"\r\n [animation]=\"animation ?? {}\"\r\n [wrapperAttr]=\"{ class: 'sds-quick-info-popover ' + (!showPopoverArrow ? 'sds-dx-popup-no-arrow' : '') }\"\r\n>\r\n <ng-content></ng-content>\r\n</dx-popover>", styles: ["dx-popover{display:inline}::ng-deep .sds-quick-info-popover.sds-dx-popup-no-arrow .dx-popover-arrow{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i3.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
77
76
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsQuickInfoComponent, decorators: [{
|
|
78
77
|
type: Component,
|
|
79
|
-
args: [{ selector: 'sds-quick-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #popoverTarget\r\n class=\"d-inline\">\r\n\r\n <fa-icon *ngIf=\"!customContent\"\r\n [icon]=\"infoIcon\"\r\n > </fa-icon>\r\n\r\n <ng-container *ngIf=\"customContent\" >\r\n <ng-content select=\"customContent\"></ng-content>\r\n </ng-container> \r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n class=\"d-inline\"\r\n [target]=\"buttonElementRef?.nativeElement\"\r\n [maxWidth]=\"popoverMaxWidth\"\r\n [minWidth]=\"popoverMinWidth\"\r\n [width]=\"popoverWidth\"\r\n [showEvent]=\"showEvent\"\r\n [hideEvent]=\"hideEvent\"\r\n (onHiding)=\"onHiding($event)\"\r\n (onShown)=\"onShown()\"\r\n (onHidden)=\"onHidden()\"\r\n [animation]=\"animation ?? {}\"\r\n [wrapperAttr]=\"{ class: 'sds-quick-info-popover ' + (!showPopoverArrow ? 'sds-dx-popup-no-arrow' : '') }\"\r\n>\r\n <ng-content></ng-content>\r\n</dx-popover>", styles: ["dx-popover{display:inline}::ng-deep .sds-quick-info-popover.sds-dx-popup-no-arrow .dx-popover-arrow{display:none}\n"] }]
|
|
78
|
+
args: [{ selector: 'sds-quick-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #popoverTarget\r\n class=\"d-inline-block\">\r\n\r\n <fa-icon *ngIf=\"!customContent\"\r\n [icon]=\"infoIcon\"\r\n > </fa-icon>\r\n\r\n <ng-container *ngIf=\"customContent\" >\r\n <ng-content select=\"customContent\"></ng-content>\r\n </ng-container> \r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n class=\"d-inline-block\"\r\n [target]=\"buttonElementRef?.nativeElement\"\r\n [maxWidth]=\"popoverMaxWidth\"\r\n [minWidth]=\"popoverMinWidth\"\r\n [width]=\"popoverWidth\"\r\n [showEvent]=\"showEvent\"\r\n [hideEvent]=\"hideEvent\"\r\n (onHiding)=\"onHiding($event)\"\r\n (onShown)=\"onShown()\"\r\n (onHidden)=\"onHidden()\"\r\n [animation]=\"animation ?? {}\"\r\n [wrapperAttr]=\"{ class: 'sds-quick-info-popover ' + (!showPopoverArrow ? 'sds-dx-popup-no-arrow' : '') }\"\r\n>\r\n <ng-content></ng-content>\r\n</dx-popover>", styles: ["dx-popover{display:inline}::ng-deep .sds-quick-info-popover.sds-dx-popup-no-arrow .dx-popover-arrow{display:none}\n"] }]
|
|
80
79
|
}], ctorParameters: function () { return []; }, propDecorators: { popoverMaxWidth: [{
|
|
81
80
|
type: Input
|
|
82
81
|
}], popoverMinWidth: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-quick-info.mjs","sources":["../../../projects/ngx-sds-components/src/lib/quick-info/quick-info.component.ts","../../../projects/ngx-sds-components/src/lib/quick-info/quick-info.component.html","../../../projects/ngx-sds-components/src/lib/quick-info/quick-info.module.ts","../../../projects/ngx-sds-components/src/lib/quick-info/spicainternational-ngx-sds-components-src-lib-quick-info.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { faInfoCircle } from '@fortawesome/pro-regular-svg-icons';\r\n\r\nimport { DxPopoverComponent } from 'devextreme-angular';\r\nimport { PopoverAnimation } from './quick-info.model';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\n\r\n@Component({\r\n selector: 'sds-quick-info',\r\n templateUrl: './quick-info.component.html',\r\n styleUrls: ['./quick-info.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdsQuickInfoComponent implements OnChanges {\r\n @Input() popoverMaxWidth: number | Function | string = '20rem';\r\n @Input() popoverMinWidth: number | Function | string = '';\r\n @Input() popoverWidth: number | Function | string = '';\r\n @Input() showDelay?: number;\r\n @Input() showEventName: string = 'dxhoverstart';\r\n @Input() hideDelay?: number;\r\n @Input() hideEventName: string = 'dxhoverend';\r\n @Input() mode: 'default' | 'hint' = 'default';\r\n @Input() animation: PopoverAnimation | undefined;\r\n @Input() showPopoverArrow: boolean = true;\r\n @Input() infoIcon: IconProp = faInfoCircle;\r\n\r\n @Output() hide = new EventEmitter();\r\n @Output() show = new EventEmitter();\r\n\r\n @ViewChild('popover', { static: false }) private _popover: DxPopoverComponent | undefined;\r\n @ViewChild('popoverTarget', { read: ElementRef, static: true }) public buttonElementRef?: ElementRef;\r\n @ContentChild('customContent') customContent: ElementRef = {nativeElement: undefined};\r\n\r\n public hideEvent: string | {\r\n delay?: number;\r\n name?: string;\r\n };\r\n\r\n public showEvent: string | {\r\n delay?: number;\r\n name?: string;\r\n };\r\n\r\n // public infoIcon = faInfoCircle;\r\n\r\n constructor() {\r\n this.showEvent = { name: this.showEventName, delay: 200 };\r\n this.hideEvent = { name: this.hideEventName, delay: 200 };\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['showDelay'] || changes['showEventName']) {\r\n this.setShowEvent();\r\n } else if (changes['hideDelay'] || changes['hideEventName']) {\r\n this.setHideEvent();\r\n }\r\n }\r\n\r\n onHiding(e: any) {\r\n if (this.mode === 'default') {\r\n const popoverContent = e.component.content().parentNode;\r\n const isMouseInsidePopover = popoverContent.matches(':hover');\r\n e.cancel = isMouseInsidePopover;\r\n\r\n popoverContent.addEventListener('mouseleave', () => {\r\n e.component.hide();\r\n });\r\n }\r\n }\r\n\r\n onHidden() {\r\n this.hide.emit();\r\n }\r\n\r\n onShown() {\r\n this.show.emit();\r\n }\r\n\r\n public showInfo() {\r\n if (this._popover) {\r\n this._popover.instance.show();\r\n }\r\n }\r\n\r\n public hideInfo() {\r\n if (this._popover) {\r\n this._popover.instance.hide();\r\n }\r\n }\r\n\r\n private setShowEvent(): void {\r\n this.showEvent = {\r\n name: this.showEventName,\r\n delay: this.showDelay ?? 200,\r\n };\r\n }\r\n\r\n private setHideEvent(): void {\r\n this.hideEvent = {\r\n name: this.hideEventName,\r\n delay: this.hideDelay ?? 200,\r\n };\r\n }\r\n}\r\n","<div #popoverTarget\r\n class=\"d-inline\">\r\n\r\n <fa-icon *ngIf=\"!customContent\"\r\n [icon]=\"infoIcon\"\r\n > </fa-icon>\r\n\r\n <ng-container *ngIf=\"customContent\" >\r\n <ng-content select=\"customContent\"></ng-content>\r\n </ng-container> \r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n class=\"d-inline\"\r\n [target]=\"buttonElementRef?.nativeElement\"\r\n [maxWidth]=\"popoverMaxWidth\"\r\n [minWidth]=\"popoverMinWidth\"\r\n [width]=\"popoverWidth\"\r\n [showEvent]=\"showEvent\"\r\n [hideEvent]=\"hideEvent\"\r\n (onHiding)=\"onHiding($event)\"\r\n (onShown)=\"onShown()\"\r\n (onHidden)=\"onHidden()\"\r\n [animation]=\"animation ?? {}\"\r\n [wrapperAttr]=\"{ class: 'sds-quick-info-popover ' + (!showPopoverArrow ? 'sds-dx-popup-no-arrow' : '') }\"\r\n>\r\n <ng-content></ng-content>\r\n</dx-popover>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsQuickInfoComponent } from './quick-info.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\n\r\n\r\nconst components = [SdsQuickInfoComponent];\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n DxPopoverModule,\r\n ],\r\n exports: [\r\n ...components\r\n ]\r\n})\r\nexport class SdsQuickInfoModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-quick-info.mjs","sources":["../../../projects/ngx-sds-components/src/lib/quick-info/quick-info.component.ts","../../../projects/ngx-sds-components/src/lib/quick-info/quick-info.component.html","../../../projects/ngx-sds-components/src/lib/quick-info/quick-info.module.ts","../../../projects/ngx-sds-components/src/lib/quick-info/spicainternational-ngx-sds-components-src-lib-quick-info.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { faInfoCircle } from '@fortawesome/pro-regular-svg-icons';\r\n\r\nimport { DxPopoverComponent } from 'devextreme-angular';\r\nimport { PopoverAnimation } from './quick-info.model';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\n\r\n@Component({\r\n selector: 'sds-quick-info',\r\n templateUrl: './quick-info.component.html',\r\n styleUrls: ['./quick-info.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdsQuickInfoComponent implements OnChanges {\r\n @Input() popoverMaxWidth: number | Function | string = '20rem';\r\n @Input() popoverMinWidth: number | Function | string = '';\r\n @Input() popoverWidth: number | Function | string = '';\r\n @Input() showDelay?: number;\r\n @Input() showEventName: string = 'dxhoverstart';\r\n @Input() hideDelay?: number;\r\n @Input() hideEventName: string = 'dxhoverend';\r\n @Input() mode: 'default' | 'hint' = 'default';\r\n @Input() animation: PopoverAnimation | undefined;\r\n @Input() showPopoverArrow: boolean = true;\r\n @Input() infoIcon: IconProp = faInfoCircle;\r\n\r\n @Output() hide = new EventEmitter();\r\n @Output() show = new EventEmitter();\r\n\r\n @ViewChild('popover', { static: false }) private _popover: DxPopoverComponent | undefined;\r\n @ViewChild('popoverTarget', { read: ElementRef, static: true }) public buttonElementRef?: ElementRef;\r\n @ContentChild('customContent') customContent: ElementRef = {nativeElement: undefined};\r\n\r\n public hideEvent: string | {\r\n delay?: number;\r\n name?: string;\r\n };\r\n\r\n public showEvent: string | {\r\n delay?: number;\r\n name?: string;\r\n };\r\n\r\n constructor() {\r\n this.showEvent = { name: this.showEventName, delay: 200 };\r\n this.hideEvent = { name: this.hideEventName, delay: 200 };\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['showDelay'] || changes['showEventName']) {\r\n this.setShowEvent();\r\n } else if (changes['hideDelay'] || changes['hideEventName']) {\r\n this.setHideEvent();\r\n }\r\n }\r\n\r\n onHiding(e: any) {\r\n if (this.mode === 'default') {\r\n const popoverContent = e.component.content().parentNode;\r\n const isMouseInsidePopover = popoverContent.matches(':hover');\r\n e.cancel = isMouseInsidePopover;\r\n\r\n popoverContent.addEventListener('mouseleave', () => {\r\n e.component.hide();\r\n });\r\n }\r\n }\r\n\r\n onHidden() {\r\n this.hide.emit();\r\n }\r\n\r\n onShown() {\r\n this.show.emit();\r\n }\r\n\r\n public showInfo() {\r\n if (this._popover) {\r\n this._popover.instance.show();\r\n }\r\n }\r\n\r\n public hideInfo() {\r\n if (this._popover) {\r\n this._popover.instance.hide();\r\n }\r\n }\r\n\r\n private setShowEvent(): void {\r\n this.showEvent = {\r\n name: this.showEventName,\r\n delay: this.showDelay ?? 200,\r\n };\r\n }\r\n\r\n private setHideEvent(): void {\r\n this.hideEvent = {\r\n name: this.hideEventName,\r\n delay: this.hideDelay ?? 200,\r\n };\r\n }\r\n}\r\n","<div #popoverTarget\r\n class=\"d-inline-block\">\r\n\r\n <fa-icon *ngIf=\"!customContent\"\r\n [icon]=\"infoIcon\"\r\n > </fa-icon>\r\n\r\n <ng-container *ngIf=\"customContent\" >\r\n <ng-content select=\"customContent\"></ng-content>\r\n </ng-container> \r\n</div>\r\n\r\n<dx-popover\r\n #popover\r\n class=\"d-inline-block\"\r\n [target]=\"buttonElementRef?.nativeElement\"\r\n [maxWidth]=\"popoverMaxWidth\"\r\n [minWidth]=\"popoverMinWidth\"\r\n [width]=\"popoverWidth\"\r\n [showEvent]=\"showEvent\"\r\n [hideEvent]=\"hideEvent\"\r\n (onHiding)=\"onHiding($event)\"\r\n (onShown)=\"onShown()\"\r\n (onHidden)=\"onHidden()\"\r\n [animation]=\"animation ?? {}\"\r\n [wrapperAttr]=\"{ class: 'sds-quick-info-popover ' + (!showPopoverArrow ? 'sds-dx-popup-no-arrow' : '') }\"\r\n>\r\n <ng-content></ng-content>\r\n</dx-popover>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsQuickInfoComponent } from './quick-info.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\n\r\n\r\nconst components = [SdsQuickInfoComponent];\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n DxPopoverModule,\r\n ],\r\n exports: [\r\n ...components\r\n ]\r\n})\r\nexport class SdsQuickInfoModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, Input, NgModule } from '@angular/core';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { faEllipsis } from '@fortawesome/pro-regular-svg-icons';
|
|
4
5
|
import * as i1 from '@fortawesome/angular-fontawesome';
|
|
5
6
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
6
7
|
import { DxPopoverModule } from 'devextreme-angular';
|
|
7
8
|
|
|
8
9
|
class SdsTableActionsComponent {
|
|
9
10
|
constructor() {
|
|
10
|
-
this.dropdownIcon =
|
|
11
|
+
this.dropdownIcon = faEllipsis;
|
|
11
12
|
this.showShadow = false;
|
|
12
13
|
this.dropDownAutoClose = 'true';
|
|
13
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-table-actions.mjs","sources":["../../../projects/ngx-sds-components/src/lib/table-actions/table-actions.component.ts","../../../projects/ngx-sds-components/src/lib/table-actions/table-actions.component.html","../../../projects/ngx-sds-components/src/lib/table-actions/table-actions.module.ts","../../../projects/ngx-sds-components/src/lib/table-actions/spicainternational-ngx-sds-components-src-lib-table-actions.ts"],"sourcesContent":["import { Component, ElementRef, Input, OnChanges, OnInit, Renderer2, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\n\r\n@Component({\r\n selector: 'sds-table-actions',\r\n templateUrl: './table-actions.component.html',\r\n styleUrls: ['./table-actions.component.scss'],\r\n})\r\nexport class SdsTableActionsComponent implements OnInit {\r\n\r\n @Input() dropdownIcon: IconProp =
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-table-actions.mjs","sources":["../../../projects/ngx-sds-components/src/lib/table-actions/table-actions.component.ts","../../../projects/ngx-sds-components/src/lib/table-actions/table-actions.component.html","../../../projects/ngx-sds-components/src/lib/table-actions/table-actions.module.ts","../../../projects/ngx-sds-components/src/lib/table-actions/spicainternational-ngx-sds-components-src-lib-table-actions.ts"],"sourcesContent":["import { Component, ElementRef, Input, OnChanges, OnInit, Renderer2, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\nimport { faEllipsis } from '@fortawesome/pro-regular-svg-icons';\r\n\r\n@Component({\r\n selector: 'sds-table-actions',\r\n templateUrl: './table-actions.component.html',\r\n styleUrls: ['./table-actions.component.scss'],\r\n})\r\nexport class SdsTableActionsComponent implements OnInit {\r\n\r\n @Input() dropdownIcon: IconProp = faEllipsis;\r\n @Input() showShadow: boolean = false;\r\n @Input() dropDownAutoClose: 'true' | 'false' | 'inside' | 'outside' = 'true';\r\n\r\n constructor(\r\n\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n<div class=\"sds-actions-container me-2\">\r\n\r\n <div class=\"btn-group sds-actions-wrapper\">\r\n <ng-content select='quickActions'></ng-content>\r\n\r\n <div class=\"btn-group\">\r\n <button \r\n #dropdownButton\r\n class=\"sds-actions-dropdown-button dropdown-toggle sds-btn-table\"\r\n type=\"button\" \r\n data-bs-toggle=\"dropdown\" \r\n [attr.data-bs-auto-close]=\"dropDownAutoClose\"\r\n aria-expanded=\"false\"\r\n >\r\n <fa-icon \r\n [icon]=\"dropdownIcon\" \r\n [fixedWidth]=\"true\" \r\n [size]=\"'sm'\">\r\n </fa-icon>\r\n </button>\r\n\r\n <ul \r\n class=\"dropdown-menu sds-table-dropdown-menu py-2\"\r\n [class.shadow]=\"showShadow\"\r\n >\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsTableActionsComponent } from './table-actions.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { DxPopoverModule } from 'devextreme-angular';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n SdsTableActionsComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n DxPopoverModule\r\n ],\r\n exports: [\r\n SdsTableActionsComponent\r\n ]\r\n})\r\nexport class SdsTableActionsModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MASa,wBAAwB,CAAA;AAMjC,IAAA,WAAA,GAAA;QAJS,IAAY,CAAA,YAAA,GAAa,UAAU,CAAC;QACpC,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAiB,CAAA,iBAAA,GAA4C,MAAM,CAAC;KAIzE;AAEJ,IAAA,QAAQ,MAAW;;sHAVV,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,qKCTrC,kiCA8BM,EAAA,MAAA,EAAA,CAAA,4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDrBO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,mBAAmB,EAAA,QAAA,EAAA,kiCAAA,EAAA,MAAA,EAAA,CAAA,4EAAA,CAAA,EAAA,CAAA;0EAMpB,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;MEQG,qBAAqB,CAAA;;mHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;oHAArB,qBAAqB,EAAA,YAAA,EAAA,CAX9B,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAGxB,YAAY;QACZ,iBAAiB;AACjB,QAAA,eAAe,aAGf,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGf,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAR9B,YAAY;QACZ,iBAAiB;QACjB,eAAe,CAAA,EAAA,CAAA,CAAA;4FAMN,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;AACzB,qBAAA;AACF,iBAAA,CAAA;;;ACpBD;;AAEG;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input, ViewChild, HostListener, NgModule } from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Input, Output, ViewChild, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
|
|
@@ -142,6 +142,7 @@ class SdsTimelineComponent {
|
|
|
142
142
|
* @memberof SdsTimelineComponent
|
|
143
143
|
*/
|
|
144
144
|
this.items = [];
|
|
145
|
+
this.pointInTimeItems = [];
|
|
145
146
|
/**
|
|
146
147
|
* The template to be used for custom rendering of the items.
|
|
147
148
|
*
|
|
@@ -163,6 +164,9 @@ class SdsTimelineComponent {
|
|
|
163
164
|
* @memberof SdsTimelineComponent
|
|
164
165
|
*/
|
|
165
166
|
this.zoomPercent = 100;
|
|
167
|
+
this.zoomPercentChange = new EventEmitter();
|
|
168
|
+
this.viewOffsetPercent = 0;
|
|
169
|
+
this.viewOffsetPercentChange = new EventEmitter();
|
|
166
170
|
/**
|
|
167
171
|
* The maximum allowed zoom level of the timeline. In percent.
|
|
168
172
|
*
|
|
@@ -211,7 +215,7 @@ class SdsTimelineComponent {
|
|
|
211
215
|
this.dayLabels = [];
|
|
212
216
|
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes);
|
|
213
217
|
this.presentationItems = [];
|
|
214
|
-
this.
|
|
218
|
+
this.presentationPointInTimeItems = [];
|
|
215
219
|
this.isDragging = false;
|
|
216
220
|
this.initialDragX = 0;
|
|
217
221
|
this.viewOffsetPercentDragStart = 0;
|
|
@@ -231,8 +235,11 @@ class SdsTimelineComponent {
|
|
|
231
235
|
if (changes['items']) {
|
|
232
236
|
this.generateInternalTimelineItems();
|
|
233
237
|
}
|
|
238
|
+
if (changes['pointInTimeItems']) {
|
|
239
|
+
this.generateInternalTimelinePointInTimeItems();
|
|
240
|
+
}
|
|
234
241
|
if (changes['zoomPercent']) {
|
|
235
|
-
this.viewOffsetPercent = (this.zoomPercent - 100) / -2;
|
|
242
|
+
// this.viewOffsetPercent = (this.zoomPercent - 100) / -2;
|
|
236
243
|
}
|
|
237
244
|
if (changes['showDayLabels'] || changes['showHourLabels']) {
|
|
238
245
|
this.generateTicks();
|
|
@@ -247,17 +254,18 @@ class SdsTimelineComponent {
|
|
|
247
254
|
const newZoomPercent = Math.min(Math.max(this.zoomPercent + -delta * 20, 100), this.maxZoomPercent);
|
|
248
255
|
const deltaZoomPercent = newZoomPercent - this.zoomPercent;
|
|
249
256
|
this.zoomPercent = newZoomPercent;
|
|
257
|
+
this.zoomPercentChange.emit(this.zoomPercent);
|
|
250
258
|
// get the relative position of the cursor on the viewport so we can zoom in into this position
|
|
251
259
|
const x = event.clientX - this._viewport?.nativeElement.getBoundingClientRect().left;
|
|
252
260
|
const cursorRelativePosition = x / this._viewport?.nativeElement.getBoundingClientRect().width;
|
|
253
|
-
this.viewOffsetPercent = this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition;
|
|
254
|
-
this.constrainOffset();
|
|
261
|
+
// this.viewOffsetPercent = this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition;
|
|
262
|
+
this.constrainOffset(this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition);
|
|
255
263
|
}
|
|
256
264
|
}
|
|
257
265
|
//#endregion
|
|
258
266
|
//#region dragging
|
|
259
267
|
onDragStart(event) {
|
|
260
|
-
if (this.enableZoomAndDrag) {
|
|
268
|
+
if (this.enableZoomAndDrag && this.zoomPercent > 100) {
|
|
261
269
|
event.preventDefault();
|
|
262
270
|
this.isDragging = true;
|
|
263
271
|
this.viewOffsetPercentDragStart = this.viewOffsetPercent;
|
|
@@ -294,16 +302,20 @@ class SdsTimelineComponent {
|
|
|
294
302
|
const diff = currentX - this.initialDragX;
|
|
295
303
|
if (this._viewport && this._viewport.nativeElement) {
|
|
296
304
|
const diffInPercent = (diff / this._viewport?.nativeElement.getBoundingClientRect().width) * 100;
|
|
297
|
-
this.viewOffsetPercent = this.viewOffsetPercentDragStart + diffInPercent;
|
|
298
|
-
this.constrainOffset();
|
|
305
|
+
// this.viewOffsetPercent = this.viewOffsetPercentDragStart + diffInPercent;
|
|
306
|
+
this.constrainOffset(this.viewOffsetPercentDragStart + diffInPercent);
|
|
299
307
|
}
|
|
300
308
|
}
|
|
301
309
|
//#endregion
|
|
302
|
-
constrainOffset() {
|
|
303
|
-
if (this.zoomPercent +
|
|
304
|
-
|
|
310
|
+
constrainOffset(newOffset) {
|
|
311
|
+
if (this.zoomPercent + newOffset < 100) {
|
|
312
|
+
newOffset = -this.zoomPercent + 100;
|
|
313
|
+
}
|
|
314
|
+
newOffset = Math.min(0, newOffset);
|
|
315
|
+
if (newOffset != this.viewOffsetPercent) {
|
|
316
|
+
this.viewOffsetPercent = newOffset;
|
|
317
|
+
this.viewOffsetPercentChange.emit(this.viewOffsetPercent);
|
|
305
318
|
}
|
|
306
|
-
this.viewOffsetPercent = Math.min(0, this.viewOffsetPercent);
|
|
307
319
|
}
|
|
308
320
|
generateTicks() {
|
|
309
321
|
this.hourTicks = this._timelineService.getHourTicks(this.tickFrequency);
|
|
@@ -319,28 +331,55 @@ class SdsTimelineComponent {
|
|
|
319
331
|
data: item.data,
|
|
320
332
|
x: this._timelineService.getX(item.start),
|
|
321
333
|
width: this._timelineService.getWidthFromTime(item.start, item.end),
|
|
322
|
-
hint: item.hint ?? timeRange
|
|
334
|
+
hint: item.hint ?? timeRange,
|
|
335
|
+
backgroundColor: item.backgroundColor,
|
|
336
|
+
top: item.top ?? '50%',
|
|
337
|
+
height: item.height ?? '60%',
|
|
338
|
+
class: item.class,
|
|
339
|
+
};
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
generateInternalTimelinePointInTimeItems() {
|
|
343
|
+
this.presentationPointInTimeItems = this.pointInTimeItems.map((item) => {
|
|
344
|
+
const timePointString = new Date(item.date).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });
|
|
345
|
+
return {
|
|
346
|
+
data: item.data,
|
|
347
|
+
x: this._timelineService.getX(item.date),
|
|
348
|
+
hint: item.hint ?? timePointString,
|
|
349
|
+
top: item.top ?? '20%',
|
|
350
|
+
height: item.height ?? '1rem',
|
|
351
|
+
width: item.width ?? '1rem',
|
|
352
|
+
class: item.class,
|
|
353
|
+
backgroundColor: item.backgroundColor,
|
|
323
354
|
};
|
|
324
355
|
});
|
|
325
356
|
}
|
|
326
357
|
}
|
|
327
358
|
SdsTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
328
|
-
SdsTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsTimelineComponent, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", itemTemplate: "itemTemplate", tickFrequency: "tickFrequency", zoomPercent: "zoomPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", showDayLabels: "showDayLabels", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n
|
|
359
|
+
SdsTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsTimelineComponent, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", pointInTimeItems: "pointInTimeItems", itemTemplate: "itemTemplate", tickFrequency: "tickFrequency", zoomPercent: "zoomPercent", viewOffsetPercent: "viewOffsetPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", showDayLabels: "showDayLabels", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag" }, outputs: { zoomPercentChange: "zoomPercentChange", viewOffsetPercentChange: "viewOffsetPercentChange" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngStyle]=\"{\r\n 'width': 'max(' + item.width +'%, 1px)',\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n }\"\r\n\r\n [style.left.%]=\"item.x\"\r\n [style.height]=\"item.height\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n </div>\r\n\r\n\r\n <div *ngFor=\"let item of presentationPointInTimeItems\"\r\n class=\"sds-timeline-point-in-time-item-container\"\r\n [ngClass]=\"item.class\"\t\r\n [style.height]=\"item.height\"\r\n [style.width]=\"item.width\"\r\n [ngStyle]=\"{\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\r\n \r\n }\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultPointInTimeItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
329
360
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsTimelineComponent, decorators: [{
|
|
330
361
|
type: Component,
|
|
331
|
-
args: [{ selector: 'sds-timeline', template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n
|
|
362
|
+
args: [{ selector: 'sds-timeline', template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngStyle]=\"{\r\n 'width': 'max(' + item.width +'%, 1px)',\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n }\"\r\n\r\n [style.left.%]=\"item.x\"\r\n [style.height]=\"item.height\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n </div>\r\n\r\n\r\n <div *ngFor=\"let item of presentationPointInTimeItems\"\r\n class=\"sds-timeline-point-in-time-item-container\"\r\n [ngClass]=\"item.class\"\t\r\n [style.height]=\"item.height\"\r\n [style.width]=\"item.width\"\r\n [ngStyle]=\"{\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\r\n \r\n }\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultPointInTimeItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"] }]
|
|
332
363
|
}], ctorParameters: function () { return []; }, propDecorators: { start: [{
|
|
333
364
|
type: Input
|
|
334
365
|
}], end: [{
|
|
335
366
|
type: Input
|
|
336
367
|
}], items: [{
|
|
337
368
|
type: Input
|
|
369
|
+
}], pointInTimeItems: [{
|
|
370
|
+
type: Input
|
|
338
371
|
}], itemTemplate: [{
|
|
339
372
|
type: Input
|
|
340
373
|
}], tickFrequency: [{
|
|
341
374
|
type: Input
|
|
342
375
|
}], zoomPercent: [{
|
|
343
376
|
type: Input
|
|
377
|
+
}], zoomPercentChange: [{
|
|
378
|
+
type: Output
|
|
379
|
+
}], viewOffsetPercent: [{
|
|
380
|
+
type: Input
|
|
381
|
+
}], viewOffsetPercentChange: [{
|
|
382
|
+
type: Output
|
|
344
383
|
}], maxZoomPercent: [{
|
|
345
384
|
type: Input
|
|
346
385
|
}], showHourLabels: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-timeline.mjs","sources":["../../../projects/ngx-sds-components/src/lib/timeline/services/timeline.service.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.html","../../../projects/ngx-sds-components/src/lib/timeline/timeline.module.ts","../../../projects/ngx-sds-components/src/lib/timeline/spicainternational-ngx-sds-components-src-lib-timeline.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { TimelineIntervalLabel, TimelineTick } from '../models/timeline.model';\r\nimport { TimelineTickFrequency } from '../types/timeline.types';\r\n\r\nexport class SdsTimelineService {\r\n\r\n private start: Date = new Date();\r\n private end: Date = new Date();\r\n\r\n private widthPercentPerMinute: number;\r\n\r\n private hourTicks: TimelineTick[] = [];\r\n public dayLabels: TimelineIntervalLabel[] = [];\r\n public hourLabels: TimelineIntervalLabel[] = [];\r\n \r\n constructor(start: Date, end: Date, offSetMinutes: number) {\r\n this.start = new Date(start);\r\n this.start.setMinutes(this.start.getMinutes() - offSetMinutes);\r\n this.end = new Date(end); \r\n this.end.setMinutes(this.end.getMinutes() + offSetMinutes);\r\n this.widthPercentPerMinute = (100 / this.diffInMinutes(start, end));\r\n\r\n this.initHourTicks();\r\n this.initDayLabels();\r\n this.initHourLabels();\r\n }\r\n\r\n public getX(time: Date): number {\r\n return this.diffInMinutes(this.start, time) * this.widthPercentPerMinute; \r\n }\r\n\r\n public getWidthFromMinutes(minutes: number): number {\r\n return minutes * this.widthPercentPerMinute;\r\n }\r\n\r\n public getWidthFromTime(start: Date, end: Date): number {\r\n return this.getWidthFromMinutes(this.diffInMinutes(start, end));\r\n }\r\n\r\n public getTick(time: Date): TimelineTick {\r\n return {\r\n date: new Date(time),\r\n x: this.getX(time),\r\n } \r\n }\r\n \r\n public getHourTicks(frequency: TimelineTickFrequency = 'hourly'): TimelineTick[] {\r\n if (frequency == 'hourly') {\r\n return this.hourTicks;\r\n } else if (frequency == '3hrs') {\r\n return this.hourTicks.filter((tick, index) => index % 3 == 0)\r\n } else if (frequency == '6hrs') {\r\n return this.hourTicks.filter((tick, index) => index % 6 == 0)\r\n }\r\n return []\r\n }\r\n\r\n\r\n //#region Private Methods\r\n\r\n private diffInMinutes(start: Date, end: Date): number {\r\n return (end.getTime() - start.getTime()) / (1000 * 60);\r\n }\r\n\r\n private roundHoursUp(time: Date): Date {\r\n \r\n let newTime = new Date(time);\r\n \r\n if (newTime.getMinutes() > 0 || newTime.getSeconds() > 0 || newTime.getMilliseconds() > 0) {\r\n newTime.setHours(newTime.getHours() + 1);\r\n }\r\n newTime.setMinutes(0, 0, 0);\r\n return newTime;\r\n }\r\n\r\n\r\n private roundHoursDown(time: Date) {\r\n let newTime = new Date(time);\r\n newTime.setMinutes(0, 0, 0);\r\n return newTime;\r\n }\r\n \r\n\r\n private initHourTicks(): void {\r\n this.hourTicks = [];\r\n\r\n // get first whole hour from start date\r\n let startHour = this.roundHoursUp(this.start);\r\n\r\n // get last whole hour from end date\r\n let endHour = this.roundHoursDown(this.end);\r\n\r\n let currentHour = new Date(startHour)\r\n while (currentHour <= endHour) {\r\n this.hourTicks.push(this.getTick(currentHour));\r\n currentHour.setHours(currentHour.getHours() + 1);\r\n }\r\n }\r\n\r\n private initDayLabels(): void {\r\n this.dayLabels = [];\r\n\r\n // get start date at the beginning of the day\r\n let startDate = new Date(this.start);\r\n startDate.setHours(0, 0, 0, 0);\r\n\r\n // get end date at the end of the day\r\n let endDate = new Date(this.end);\r\n endDate.setHours(23, 59, 59, 999);\r\n\r\n let currentDate = new Date(startDate);\r\n while (currentDate <= endDate) {\r\n let endOfCurrentDay = new Date(currentDate);\r\n endOfCurrentDay.setHours(23, 59, 59, 999);\r\n\r\n this.dayLabels.push({\r\n // date: new Date(currentDate),\r\n x: this.getX(new Date(currentDate)),\r\n width: this.getWidthFromTime(currentDate, endOfCurrentDay),\r\n label: currentDate.toLocaleDateString([], { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' })\r\n });\r\n currentDate.setDate(currentDate.getDate() + 1); \r\n }\r\n } \r\n \r\n private initHourLabels(): void {\r\n\r\n // get first whole hour from start date\r\n let startHour = this.roundHoursUp(this.start);\r\n // get last whole hour from end date\r\n let endHour = this.roundHoursDown(this.end);\r\n\r\n let currentHour = new Date(startHour)\r\n while (currentHour <= endHour) {\r\n if (currentHour.getHours() % 3 === 0) {\r\n let labelStartTime = new Date(currentHour);\r\n labelStartTime.setMinutes(-30);\r\n this.hourLabels.push(\r\n {\r\n x: this.getX(labelStartTime),\r\n width: this.getWidthFromMinutes(60),\r\n label: currentHour.getHours().toString() //currentHour.toLocaleTimeString([], { hour: 'numeric'})\r\n }\r\n );\r\n currentHour.setHours(currentHour.getHours() + 2);\r\n }\r\n currentHour.setHours(currentHour.getHours() + 1);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { TimelineTickFrequency } from '../types/timeline.types';\r\nimport { SdsTimelineService } from '../services/timeline.service';\r\nimport {\r\n TimelineIntervalLabel,\r\n TimelineItem,\r\n TimelineItemPresentation,\r\n TimelineTick,\r\n} from '../models/timeline.model';\r\n\r\n@Component({\r\n selector: 'sds-timeline',\r\n templateUrl: './timeline.component.html',\r\n styleUrls: ['./timeline.component.scss'],\r\n})\r\nexport class SdsTimelineComponent implements OnInit, OnChanges, AfterViewInit {\r\n /**\r\n * The start date and time for the timeline.\r\n *\r\n * @type {Date}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() start: Date = new Date();\r\n\r\n /**\r\n * The end date and time for the timeline.\r\n *\r\n * @type {Date}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() end: Date = new Date();\r\n\r\n /**\r\n * The items to be displayed on the timeline. Specify data if you need \r\n * additional data for custom rendering of the items.\r\n *\r\n * @type {TimelineItem[]}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() items: TimelineItem[] = [];\r\n\r\n /**\r\n * The template to be used for custom rendering of the items.\r\n *\r\n * @type {(TemplateRef<any> | undefined)}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() itemTemplate: TemplateRef<any> | undefined = undefined;\r\n\r\n /**\r\n * The frequency of the ticks on the timeline.\r\n *\r\n * @type {TimelineTickFrequency}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() tickFrequency: TimelineTickFrequency = 'hourly';\r\n /**\r\n * The current zoom level of the timeline. In percent.\r\n *\r\n * @type {number}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() zoomPercent: number = 100;\r\n\r\n /**\r\n * The maximum allowed zoom level of the timeline. In percent.\r\n *\r\n * @type {number}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() maxZoomPercent: number = 500;\r\n\r\n /**\r\n * Whether to show hour labels.\r\n *\r\n * @type {boolean}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() showHourLabels: boolean = true;\r\n\r\n /**\r\n * Whether to show day labels. \r\n *\r\n * @type {boolean}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() showDayLabels: boolean = false;\r\n\r\n /**\r\n * The height of the timeline. Default is 2rem.\r\n *\r\n * @type {string}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() timelineHeight: string = '2rem';\r\n\r\n /**\r\n * Whether to enable zoom and drag functionality.\r\n *\r\n * @type {boolean}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() enableZoomAndDrag: boolean = true;\r\n\r\n /**\r\n * Number of minutes added to start and stop to fit the data on the edges\r\n *\r\n * @type {number}\r\n * @memberof SdsTimelineComponent\r\n */\r\n offSetMinutes: number = 15;\r\n\r\n // protected\r\n hourTicks: TimelineTick[] = [];\r\n hourLabels: TimelineIntervalLabel[] = [];\r\n dayLabels: TimelineIntervalLabel[] = [];\r\n\r\n private _timelineService: SdsTimelineService = new SdsTimelineService(\r\n this.start,\r\n this.end,\r\n this.offSetMinutes\r\n );\r\n\r\n public presentationItems: TimelineItemPresentation[] = [];\r\n\r\n public viewOffsetPercent = 0;\r\n\r\n public isDragging = false;\r\n public initialDragX = 0;\r\n\r\n private viewOffsetPercentDragStart = 0;\r\n\r\n @ViewChild('viewport', { static: true }) _viewport: ElementRef | undefined;\r\n\r\n constructor() {}\r\n\r\n ngAfterViewInit(): void {\r\n this.generateTicks();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.start && this.end) {\r\n this._timelineService = new SdsTimelineService(\r\n this.start,\r\n this.end,\r\n this.offSetMinutes\r\n );\r\n this.generateTicks();\r\n this.generateInternalTimelineItems();\r\n }\r\n\r\n if (changes['start'] || changes['end']) {\r\n this._timelineService = new SdsTimelineService(\r\n this.start,\r\n this.end,\r\n this.offSetMinutes\r\n );\r\n }\r\n\r\n if (changes['items']) {\r\n this.generateInternalTimelineItems();\r\n }\r\n\r\n if (changes['zoomPercent']) {\r\n this.viewOffsetPercent = (this.zoomPercent - 100) / -2;\r\n }\r\n\r\n if (changes['showDayLabels'] || changes['showHourLabels']) {\r\n this.generateTicks();\r\n } \r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n //#region mouse wheel zoom\r\n onScroll(event: WheelEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n\r\n event.preventDefault();\r\n\r\n const delta = Math.sign(event.deltaY);\r\n const newZoomPercent = Math.min(\r\n Math.max(this.zoomPercent + -delta * 20, 100),\r\n this.maxZoomPercent\r\n );\r\n const deltaZoomPercent = newZoomPercent - this.zoomPercent;\r\n this.zoomPercent = newZoomPercent;\r\n \r\n // get the relative position of the cursor on the viewport so we can zoom in into this position\r\n const x = event.clientX - this._viewport?.nativeElement.getBoundingClientRect().left;\r\n const cursorRelativePosition = x / this._viewport?.nativeElement.getBoundingClientRect().width;\r\n this.viewOffsetPercent = this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition;\r\n\r\n this.constrainOffset();\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region dragging\r\n \r\n public onDragStart(event: MouseEvent | TouchEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n event.preventDefault();\r\n this.isDragging = true;\r\n this.viewOffsetPercentDragStart = this.viewOffsetPercent;\r\n\r\n if (event instanceof MouseEvent) {\r\n this.initialDragX = event.clientX;\r\n } else if (event instanceof TouchEvent) {\r\n this.initialDragX = event.touches[0].clientX;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:mousemove', ['$event'])\r\n public onDragMove(event: MouseEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n if (this.isDragging) {\r\n const currentX = event.clientX;\r\n this.moveElement(currentX);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:touchmove', ['$event'])\r\n onDragMoveTouch(event: TouchEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n if (this.isDragging) {\r\n const currentX = event.touches[0].clientX;\r\n this.moveElement(currentX);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:mouseup', ['$event'])\r\n @HostListener('window:touchend', ['$event'])\r\n public onDragEnd(event: MouseEvent | TouchEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n this.isDragging = false;\r\n }\r\n }\r\n\r\n private moveElement(currentX: number): void {\r\n const diff = currentX - this.initialDragX;\r\n if (this._viewport && this._viewport.nativeElement) {\r\n const diffInPercent = (diff / this._viewport?.nativeElement.getBoundingClientRect().width) * 100;\r\n this.viewOffsetPercent = this.viewOffsetPercentDragStart + diffInPercent;\r\n this.constrainOffset();\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n private constrainOffset(): void {\r\n if (this.zoomPercent + this.viewOffsetPercent < 100) {\r\n this.viewOffsetPercent = -this.zoomPercent + 100;\r\n }\r\n this.viewOffsetPercent = Math.min(0, this.viewOffsetPercent);\r\n }\r\n\r\n private generateTicks(): void {\r\n this.hourTicks = this._timelineService.getHourTicks(this.tickFrequency);\r\n this.dayLabels = this._timelineService.dayLabels;\r\n this.hourLabels = this._timelineService.hourLabels;\r\n }\r\n\r\n private generateInternalTimelineItems(): void {\r\n this.presentationItems = this.items.map((item) => {\r\n\r\n const startTime = new Date(item.start).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });\r\n const endTime = new Date(item.end).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });\r\n const timeRange = `${startTime} - ${endTime}`;\r\n \r\n return {\r\n data: item.data,\r\n x: this._timelineService.getX(item.start),\r\n width: this._timelineService.getWidthFromTime(\r\n item.start,\r\n item.end\r\n ),\r\n hint: item.hint ?? timeRange\r\n };\r\n });\r\n }\r\n}\r\n","<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngStyle]=\"{'width': 'max(' + item.width +'%, 1px)'}\"\r\n [style.left.%]=\"item.x\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsTimelineComponent } from './components/timeline.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdsTimelineComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n SdsTimelineComponent\r\n ],\r\n})\r\nexport class SdsTimelineModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-timeline.mjs","sources":["../../../projects/ngx-sds-components/src/lib/timeline/services/timeline.service.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.html","../../../projects/ngx-sds-components/src/lib/timeline/timeline.module.ts","../../../projects/ngx-sds-components/src/lib/timeline/spicainternational-ngx-sds-components-src-lib-timeline.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { TimelineIntervalLabel, TimelineTick } from '../models/timeline.model';\r\nimport { TimelineTickFrequency } from '../types/timeline.types';\r\n\r\nexport class SdsTimelineService {\r\n\r\n private start: Date = new Date();\r\n private end: Date = new Date();\r\n\r\n private widthPercentPerMinute: number;\r\n\r\n private hourTicks: TimelineTick[] = [];\r\n public dayLabels: TimelineIntervalLabel[] = [];\r\n public hourLabels: TimelineIntervalLabel[] = [];\r\n \r\n constructor(start: Date, end: Date, offSetMinutes: number) {\r\n this.start = new Date(start);\r\n this.start.setMinutes(this.start.getMinutes() - offSetMinutes);\r\n this.end = new Date(end); \r\n this.end.setMinutes(this.end.getMinutes() + offSetMinutes);\r\n this.widthPercentPerMinute = (100 / this.diffInMinutes(start, end));\r\n\r\n this.initHourTicks();\r\n this.initDayLabels();\r\n this.initHourLabels();\r\n }\r\n\r\n public getX(time: Date): number {\r\n return this.diffInMinutes(this.start, time) * this.widthPercentPerMinute; \r\n }\r\n\r\n public getWidthFromMinutes(minutes: number): number {\r\n return minutes * this.widthPercentPerMinute;\r\n }\r\n\r\n public getWidthFromTime(start: Date, end: Date): number {\r\n return this.getWidthFromMinutes(this.diffInMinutes(start, end));\r\n }\r\n\r\n public getTick(time: Date): TimelineTick {\r\n return {\r\n date: new Date(time),\r\n x: this.getX(time),\r\n } \r\n }\r\n \r\n public getHourTicks(frequency: TimelineTickFrequency = 'hourly'): TimelineTick[] {\r\n if (frequency == 'hourly') {\r\n return this.hourTicks;\r\n } else if (frequency == '3hrs') {\r\n return this.hourTicks.filter((tick, index) => index % 3 == 0)\r\n } else if (frequency == '6hrs') {\r\n return this.hourTicks.filter((tick, index) => index % 6 == 0)\r\n }\r\n return []\r\n }\r\n\r\n\r\n //#region Private Methods\r\n\r\n private diffInMinutes(start: Date, end: Date): number {\r\n return (end.getTime() - start.getTime()) / (1000 * 60);\r\n }\r\n\r\n private roundHoursUp(time: Date): Date {\r\n \r\n let newTime = new Date(time);\r\n \r\n if (newTime.getMinutes() > 0 || newTime.getSeconds() > 0 || newTime.getMilliseconds() > 0) {\r\n newTime.setHours(newTime.getHours() + 1);\r\n }\r\n newTime.setMinutes(0, 0, 0);\r\n return newTime;\r\n }\r\n\r\n\r\n private roundHoursDown(time: Date) {\r\n let newTime = new Date(time);\r\n newTime.setMinutes(0, 0, 0);\r\n return newTime;\r\n }\r\n \r\n\r\n private initHourTicks(): void {\r\n this.hourTicks = [];\r\n\r\n // get first whole hour from start date\r\n let startHour = this.roundHoursUp(this.start);\r\n\r\n // get last whole hour from end date\r\n let endHour = this.roundHoursDown(this.end);\r\n\r\n let currentHour = new Date(startHour)\r\n while (currentHour <= endHour) {\r\n this.hourTicks.push(this.getTick(currentHour));\r\n currentHour.setHours(currentHour.getHours() + 1);\r\n }\r\n }\r\n\r\n private initDayLabels(): void {\r\n this.dayLabels = [];\r\n\r\n // get start date at the beginning of the day\r\n let startDate = new Date(this.start);\r\n startDate.setHours(0, 0, 0, 0);\r\n\r\n // get end date at the end of the day\r\n let endDate = new Date(this.end);\r\n endDate.setHours(23, 59, 59, 999);\r\n\r\n let currentDate = new Date(startDate);\r\n while (currentDate <= endDate) {\r\n let endOfCurrentDay = new Date(currentDate);\r\n endOfCurrentDay.setHours(23, 59, 59, 999);\r\n\r\n this.dayLabels.push({\r\n // date: new Date(currentDate),\r\n x: this.getX(new Date(currentDate)),\r\n width: this.getWidthFromTime(currentDate, endOfCurrentDay),\r\n label: currentDate.toLocaleDateString([], { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' })\r\n });\r\n currentDate.setDate(currentDate.getDate() + 1); \r\n }\r\n } \r\n \r\n private initHourLabels(): void {\r\n\r\n // get first whole hour from start date\r\n let startHour = this.roundHoursUp(this.start);\r\n // get last whole hour from end date\r\n let endHour = this.roundHoursDown(this.end);\r\n\r\n let currentHour = new Date(startHour)\r\n while (currentHour <= endHour) {\r\n if (currentHour.getHours() % 3 === 0) {\r\n let labelStartTime = new Date(currentHour);\r\n labelStartTime.setMinutes(-30);\r\n this.hourLabels.push(\r\n {\r\n x: this.getX(labelStartTime),\r\n width: this.getWidthFromMinutes(60),\r\n label: currentHour.getHours().toString() //currentHour.toLocaleTimeString([], { hour: 'numeric'})\r\n }\r\n );\r\n currentHour.setHours(currentHour.getHours() + 2);\r\n }\r\n currentHour.setHours(currentHour.getHours() + 1);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { TimelineTickFrequency } from '../types/timeline.types';\r\nimport { SdsTimelineService } from '../services/timeline.service';\r\nimport {\r\n TimelineIntervalLabel,\r\n TimelineItem,\r\n TimelineItemPresentation,\r\n TimelinePointInTimeItem,\r\n TimelinePointInTimeItemPresentation,\r\n TimelineTick,\r\n} from '../models/timeline.model';\r\n\r\n@Component({\r\n selector: 'sds-timeline',\r\n templateUrl: './timeline.component.html',\r\n styleUrls: ['./timeline.component.scss'],\r\n})\r\nexport class SdsTimelineComponent implements OnInit, OnChanges, AfterViewInit {\r\n /**\r\n * The start date and time for the timeline.\r\n *\r\n * @type {Date}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() start: Date = new Date();\r\n\r\n /**\r\n * The end date and time for the timeline.\r\n *\r\n * @type {Date}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() end: Date = new Date();\r\n\r\n /**\r\n * The items to be displayed on the timeline. Specify data if you need \r\n * additional data for custom rendering of the items.\r\n *\r\n * @type {TimelineItem[]}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() items: TimelineItem[] = [];\r\n\r\n\r\n @Input() pointInTimeItems: TimelinePointInTimeItem[] = [];\r\n\r\n /**\r\n * The template to be used for custom rendering of the items.\r\n *\r\n * @type {(TemplateRef<any> | undefined)}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() itemTemplate: TemplateRef<any> | undefined = undefined;\r\n\r\n /**\r\n * The frequency of the ticks on the timeline.\r\n *\r\n * @type {TimelineTickFrequency}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() tickFrequency: TimelineTickFrequency = 'hourly';\r\n /**\r\n * The current zoom level of the timeline. In percent.\r\n *\r\n * @type {number}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() zoomPercent: number = 100;\r\n @Output() zoomPercentChange = new EventEmitter<number>();\r\n\r\n @Input() viewOffsetPercent: number = 0;\r\n @Output() viewOffsetPercentChange = new EventEmitter<number>();\r\n\r\n /**\r\n * The maximum allowed zoom level of the timeline. In percent.\r\n *\r\n * @type {number}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() maxZoomPercent: number = 500;\r\n\r\n /**\r\n * Whether to show hour labels.\r\n *\r\n * @type {boolean}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() showHourLabels: boolean = true;\r\n\r\n /**\r\n * Whether to show day labels. \r\n *\r\n * @type {boolean}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() showDayLabels: boolean = false;\r\n\r\n /**\r\n * The height of the timeline. Default is 2rem.\r\n *\r\n * @type {string}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() timelineHeight: string = '2rem';\r\n\r\n /**\r\n * Whether to enable zoom and drag functionality.\r\n *\r\n * @type {boolean}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() enableZoomAndDrag: boolean = true;\r\n\r\n /**\r\n * Number of minutes added to start and stop to fit the data on the edges\r\n *\r\n * @type {number}\r\n * @memberof SdsTimelineComponent\r\n */\r\n offSetMinutes: number = 15;\r\n\r\n // protected\r\n hourTicks: TimelineTick[] = [];\r\n hourLabels: TimelineIntervalLabel[] = [];\r\n dayLabels: TimelineIntervalLabel[] = [];\r\n\r\n private _timelineService: SdsTimelineService = new SdsTimelineService(\r\n this.start,\r\n this.end,\r\n this.offSetMinutes\r\n );\r\n\r\n public presentationItems: TimelineItemPresentation[] = [];\r\n public presentationPointInTimeItems: TimelinePointInTimeItemPresentation[] = [];\r\n\r\n public isDragging = false;\r\n public initialDragX = 0;\r\n\r\n private viewOffsetPercentDragStart = 0;\r\n\r\n @ViewChild('viewport', { static: true }) _viewport: ElementRef | undefined;\r\n\r\n constructor() {}\r\n\r\n ngAfterViewInit(): void {\r\n this.generateTicks();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.start && this.end) {\r\n this._timelineService = new SdsTimelineService(\r\n this.start,\r\n this.end,\r\n this.offSetMinutes\r\n );\r\n this.generateTicks();\r\n this.generateInternalTimelineItems();\r\n }\r\n\r\n if (changes['start'] || changes['end']) {\r\n this._timelineService = new SdsTimelineService(\r\n this.start,\r\n this.end,\r\n this.offSetMinutes\r\n );\r\n }\r\n\r\n if (changes['items']) {\r\n this.generateInternalTimelineItems();\r\n }\r\n\r\n if (changes['pointInTimeItems']) {\r\n this.generateInternalTimelinePointInTimeItems();\r\n }\r\n\r\n if (changes['zoomPercent']) {\r\n // this.viewOffsetPercent = (this.zoomPercent - 100) / -2;\r\n }\r\n\r\n if (changes['showDayLabels'] || changes['showHourLabels']) {\r\n this.generateTicks();\r\n } \r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n //#region mouse wheel zoom\r\n onScroll(event: WheelEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n\r\n event.preventDefault();\r\n\r\n const delta = Math.sign(event.deltaY);\r\n const newZoomPercent = Math.min(\r\n Math.max(this.zoomPercent + -delta * 20, 100),\r\n this.maxZoomPercent\r\n );\r\n const deltaZoomPercent = newZoomPercent - this.zoomPercent;\r\n this.zoomPercent = newZoomPercent;\r\n this.zoomPercentChange.emit(this.zoomPercent);\r\n \r\n // get the relative position of the cursor on the viewport so we can zoom in into this position\r\n const x = event.clientX - this._viewport?.nativeElement.getBoundingClientRect().left;\r\n const cursorRelativePosition = x / this._viewport?.nativeElement.getBoundingClientRect().width;\r\n // this.viewOffsetPercent = this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition;\r\n\r\n this.constrainOffset(this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition);\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region dragging\r\n \r\n public onDragStart(event: MouseEvent | TouchEvent): void {\r\n if (this.enableZoomAndDrag && this.zoomPercent > 100) {\r\n event.preventDefault();\r\n this.isDragging = true;\r\n this.viewOffsetPercentDragStart = this.viewOffsetPercent;\r\n\r\n if (event instanceof MouseEvent) {\r\n this.initialDragX = event.clientX;\r\n } else if (event instanceof TouchEvent) {\r\n this.initialDragX = event.touches[0].clientX;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:mousemove', ['$event'])\r\n public onDragMove(event: MouseEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n if (this.isDragging) {\r\n const currentX = event.clientX;\r\n this.moveElement(currentX);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:touchmove', ['$event'])\r\n onDragMoveTouch(event: TouchEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n if (this.isDragging) {\r\n const currentX = event.touches[0].clientX;\r\n this.moveElement(currentX);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:mouseup', ['$event'])\r\n @HostListener('window:touchend', ['$event'])\r\n public onDragEnd(event: MouseEvent | TouchEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n this.isDragging = false;\r\n }\r\n }\r\n\r\n private moveElement(currentX: number): void {\r\n const diff = currentX - this.initialDragX;\r\n if (this._viewport && this._viewport.nativeElement) {\r\n const diffInPercent = (diff / this._viewport?.nativeElement.getBoundingClientRect().width) * 100;\r\n // this.viewOffsetPercent = this.viewOffsetPercentDragStart + diffInPercent;\r\n this.constrainOffset(this.viewOffsetPercentDragStart + diffInPercent);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n private constrainOffset(newOffset: number): void { \r\n if (this.zoomPercent + newOffset < 100) {\r\n newOffset = -this.zoomPercent + 100;\r\n }\r\n newOffset = Math.min(0, newOffset);\r\n if (newOffset != this.viewOffsetPercent) {\r\n this.viewOffsetPercent = newOffset;\r\n this.viewOffsetPercentChange.emit(this.viewOffsetPercent);\r\n }\r\n }\r\n\r\n private generateTicks(): void {\r\n this.hourTicks = this._timelineService.getHourTicks(this.tickFrequency);\r\n this.dayLabels = this._timelineService.dayLabels;\r\n this.hourLabels = this._timelineService.hourLabels;\r\n }\r\n\r\n private generateInternalTimelineItems(): void {\r\n this.presentationItems = this.items.map((item) => {\r\n\r\n const startTime = new Date(item.start).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });\r\n const endTime = new Date(item.end).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });\r\n const timeRange = `${startTime} - ${endTime}`;\r\n \r\n return {\r\n data: item.data,\r\n x: this._timelineService.getX(item.start),\r\n width: this._timelineService.getWidthFromTime(\r\n item.start,\r\n item.end\r\n ),\r\n hint: item.hint ?? timeRange,\r\n backgroundColor: item.backgroundColor,\r\n top: item.top ?? '50%',\r\n height: item.height ?? '60%',\r\n class: item.class,\r\n };\r\n });\r\n }\r\n\r\n\r\n private generateInternalTimelinePointInTimeItems(): void {\r\n this.presentationPointInTimeItems = this.pointInTimeItems.map((item) => {\r\n\r\n const timePointString = new Date(item.date).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });\r\n \r\n return {\r\n data: item.data,\r\n x: this._timelineService.getX(item.date),\r\n hint: item.hint ?? timePointString,\r\n top: item.top ?? '20%',\r\n height: item.height ?? '1rem',\r\n width: item.width ?? '1rem',\r\n class: item.class,\r\n backgroundColor: item.backgroundColor,\r\n };\r\n });\r\n }\r\n}\r\n","<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngStyle]=\"{\r\n 'width': 'max(' + item.width +'%, 1px)',\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n }\"\r\n\r\n [style.left.%]=\"item.x\"\r\n [style.height]=\"item.height\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n </div>\r\n\r\n\r\n <div *ngFor=\"let item of presentationPointInTimeItems\"\r\n class=\"sds-timeline-point-in-time-item-container\"\r\n [ngClass]=\"item.class\"\t\r\n [style.height]=\"item.height\"\r\n [style.width]=\"item.width\"\r\n [ngStyle]=\"{\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\r\n \r\n }\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultPointInTimeItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsTimelineComponent } from './components/timeline.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdsTimelineComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n SdsTimelineComponent\r\n ],\r\n})\r\nexport class SdsTimelineModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AfterViewInit, ElementRef, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, ElementRef, OnChanges, OnInit, SimpleChanges, TemplateRef, EventEmitter } from '@angular/core';
|
|
2
2
|
import { TimelineTickFrequency } from '../types/timeline.types';
|
|
3
|
-
import { TimelineIntervalLabel, TimelineItem, TimelineItemPresentation, TimelineTick } from '../models/timeline.model';
|
|
3
|
+
import { TimelineIntervalLabel, TimelineItem, TimelineItemPresentation, TimelinePointInTimeItem, TimelinePointInTimeItemPresentation, TimelineTick } from '../models/timeline.model';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class SdsTimelineComponent implements OnInit, OnChanges, AfterViewInit {
|
|
6
6
|
/**
|
|
@@ -25,6 +25,7 @@ export declare class SdsTimelineComponent implements OnInit, OnChanges, AfterVie
|
|
|
25
25
|
* @memberof SdsTimelineComponent
|
|
26
26
|
*/
|
|
27
27
|
items: TimelineItem[];
|
|
28
|
+
pointInTimeItems: TimelinePointInTimeItem[];
|
|
28
29
|
/**
|
|
29
30
|
* The template to be used for custom rendering of the items.
|
|
30
31
|
*
|
|
@@ -46,6 +47,9 @@ export declare class SdsTimelineComponent implements OnInit, OnChanges, AfterVie
|
|
|
46
47
|
* @memberof SdsTimelineComponent
|
|
47
48
|
*/
|
|
48
49
|
zoomPercent: number;
|
|
50
|
+
zoomPercentChange: EventEmitter<number>;
|
|
51
|
+
viewOffsetPercent: number;
|
|
52
|
+
viewOffsetPercentChange: EventEmitter<number>;
|
|
49
53
|
/**
|
|
50
54
|
* The maximum allowed zoom level of the timeline. In percent.
|
|
51
55
|
*
|
|
@@ -93,7 +97,7 @@ export declare class SdsTimelineComponent implements OnInit, OnChanges, AfterVie
|
|
|
93
97
|
dayLabels: TimelineIntervalLabel[];
|
|
94
98
|
private _timelineService;
|
|
95
99
|
presentationItems: TimelineItemPresentation[];
|
|
96
|
-
|
|
100
|
+
presentationPointInTimeItems: TimelinePointInTimeItemPresentation[];
|
|
97
101
|
isDragging: boolean;
|
|
98
102
|
initialDragX: number;
|
|
99
103
|
private viewOffsetPercentDragStart;
|
|
@@ -111,6 +115,7 @@ export declare class SdsTimelineComponent implements OnInit, OnChanges, AfterVie
|
|
|
111
115
|
private constrainOffset;
|
|
112
116
|
private generateTicks;
|
|
113
117
|
private generateInternalTimelineItems;
|
|
118
|
+
private generateInternalTimelinePointInTimeItems;
|
|
114
119
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdsTimelineComponent, never>;
|
|
115
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdsTimelineComponent, "sds-timeline", never, { "start": "start"; "end": "end"; "items": "items"; "itemTemplate": "itemTemplate"; "tickFrequency": "tickFrequency"; "zoomPercent": "zoomPercent"; "maxZoomPercent": "maxZoomPercent"; "showHourLabels": "showHourLabels"; "showDayLabels": "showDayLabels"; "timelineHeight": "timelineHeight"; "enableZoomAndDrag": "enableZoomAndDrag"; }, {}, never, never, false, never>;
|
|
120
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdsTimelineComponent, "sds-timeline", never, { "start": "start"; "end": "end"; "items": "items"; "pointInTimeItems": "pointInTimeItems"; "itemTemplate": "itemTemplate"; "tickFrequency": "tickFrequency"; "zoomPercent": "zoomPercent"; "viewOffsetPercent": "viewOffsetPercent"; "maxZoomPercent": "maxZoomPercent"; "showHourLabels": "showHourLabels"; "showDayLabels": "showDayLabels"; "timelineHeight": "timelineHeight"; "enableZoomAndDrag": "enableZoomAndDrag"; }, { "zoomPercentChange": "zoomPercentChange"; "viewOffsetPercentChange": "viewOffsetPercentChange"; }, never, never, false, never>;
|
|
116
121
|
}
|