herum-shared 0.1.25
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/README.md +63 -0
- package/animations/index.d.ts +5 -0
- package/assets/feed/exercise/exerciseAchivment.svg +11 -0
- package/assets/feed/icons/active/audio.svg +5 -0
- package/assets/feed/icons/active/collection.svg +15 -0
- package/assets/feed/icons/active/exercise.svg +13 -0
- package/assets/feed/icons/active/generic-file.svg +8 -0
- package/assets/feed/icons/active/image.svg +11 -0
- package/assets/feed/icons/active/link.svg +6 -0
- package/assets/feed/icons/active/pdf.svg +14 -0
- package/assets/feed/icons/active/presentation.svg +11 -0
- package/assets/feed/icons/active/quiz.svg +17 -0
- package/assets/feed/icons/active/story.svg +7 -0
- package/assets/feed/icons/active/video.svg +11 -0
- package/assets/feed/icons/comment.svg +12 -0
- package/assets/feed/icons/error/audio.svg +5 -0
- package/assets/feed/icons/error/collection.svg +15 -0
- package/assets/feed/icons/error/exercise.svg +13 -0
- package/assets/feed/icons/error/generic-file.svg +8 -0
- package/assets/feed/icons/error/image.svg +11 -0
- package/assets/feed/icons/error/pdf.svg +14 -0
- package/assets/feed/icons/error/presentation.svg +11 -0
- package/assets/feed/icons/error/quiz.svg +17 -0
- package/assets/feed/icons/error/story.svg +7 -0
- package/assets/feed/icons/error/video.svg +11 -0
- package/assets/feed/icons/eye.svg +13 -0
- package/assets/feed/icons/garbage-secondary.svg +14 -0
- package/assets/feed/icons/garbage.svg +14 -0
- package/assets/feed/icons/green-x.svg +165 -0
- package/assets/feed/icons/hamburger.svg +2 -0
- package/assets/feed/icons/inactive/audio.svg +5 -0
- package/assets/feed/icons/inactive/exercise.svg +17 -0
- package/assets/feed/icons/inactive/link.svg +6 -0
- package/assets/feed/icons/inactive/pdf.svg +19 -0
- package/assets/feed/icons/inactive/presentation.svg +13 -0
- package/assets/feed/icons/inactive/quiz.svg +25 -0
- package/assets/feed/icons/inactive/story.svg +7 -0
- package/assets/feed/icons/inactive/video.svg +13 -0
- package/assets/feed/icons/status/Group 856.svg +11 -0
- package/assets/feed/icons/status/almostDone.svg +11 -0
- package/assets/feed/icons/status/done.svg +11 -0
- package/assets/feed/icons/status/inProgress.svg +13 -0
- package/assets/feed/icons/white-chevron.svg +3 -0
- package/assets/feed/icons/wide-mode.png +0 -0
- package/assets/feed/icons/wide-mode.svg +7 -0
- package/assets/feed/icons/wide-mode2.svg +8 -0
- package/assets/files-icons/.image.svg +11 -0
- package/assets/files-icons/.mp4.png +0 -0
- package/assets/files-icons/.mp4.svg +12 -0
- package/assets/files-icons/.pdf.png +0 -0
- package/assets/files-icons/.pdf.svg +16 -0
- package/assets/files-icons/.pptx.png +0 -0
- package/assets/files-icons/.pptx.svg +12 -0
- package/assets/files-icons/.video.svg +12 -0
- package/assets/files-icons/default-file.png +0 -0
- package/assets/files-icons/generic-file.svg +8 -0
- package/assets/files-icons/story.png +0 -0
- package/assets/files-icons/story.svg +3 -0
- package/assets/files-icons/upload-file.svg +4 -0
- package/assets/general/calendar.svg +12 -0
- package/assets/general/chevron.svg +3 -0
- package/assets/general/clock.svg +4 -0
- package/assets/general/closed-chevron.png +0 -0
- package/assets/general/college-calendar.svg +12 -0
- package/assets/general/comment-icon.svg +12 -0
- package/assets/general/dialogX.png +0 -0
- package/assets/general/errorOwl.png +0 -0
- package/assets/general/green-x.svg +4 -0
- package/assets/general/grey-chevron.svg +3 -0
- package/assets/general/keyboardLink.svg +15 -0
- package/assets/general/logo.png +0 -0
- package/assets/general/noCollectionsMessage.svg +59 -0
- package/assets/general/open-chevron.png +0 -0
- package/assets/general/owl-logo.svg +98 -0
- package/assets/general/secondary-x.svg +3 -0
- package/assets/general/user.svg +15 -0
- package/assets/general/white-chevron.svg +3 -0
- package/assets/quiz/greenHeaderArrow.svg +12 -0
- package/assets/quiz/greyHeaderArrow.svg +12 -0
- package/assets/quiz/happyOwl.svg +126 -0
- package/assets/quiz/sadOwl.svg +94 -0
- package/assets/quiz/skip.svg +5 -0
- package/assets/shared/atoms/inputs/herum-inputs.component.scss +56 -0
- package/assets/shared/atoms/selects/herum-selects.component.scss +141 -0
- package/assets/shared/atoms/uploadingStatuses/error.svg +8 -0
- package/assets/shared/atoms/uploadingStatuses/information.svg +6 -0
- package/assets/shared/atoms/uploadingStatuses/success.svg +9 -0
- package/assets/shared/audio-images/gray-pause.svg +4 -0
- package/assets/shared/audio-images/gray-play.svg +3 -0
- package/assets/shared/audio-images/next15.svg +7 -0
- package/assets/shared/audio-images/pause.svg +4 -0
- package/assets/shared/audio-images/play.svg +3 -0
- package/assets/shared/audio-images/previous15.svg +7 -0
- package/assets/shared/background/cubes.png +0 -0
- package/assets/shared/background/cubes.svg +1900 -0
- package/assets/shared/icons/V.svg +3 -0
- package/assets/shared/icons/X.svg +3 -0
- package/assets/shared/icons/active-clipboard.svg +7 -0
- package/assets/shared/icons/active-drag.svg +44 -0
- package/assets/shared/icons/active-upload.svg +3 -0
- package/assets/shared/icons/add.svg +3 -0
- package/assets/shared/icons/attachUsers.png +0 -0
- package/assets/shared/icons/big-no-result-owl.png +0 -0
- package/assets/shared/icons/bigV.svg +3 -0
- package/assets/shared/icons/celeb-owl.png +0 -0
- package/assets/shared/icons/clock.svg +3 -0
- package/assets/shared/icons/drag.svg +44 -0
- package/assets/shared/icons/edit.svg +3 -0
- package/assets/shared/icons/editCollection.png +0 -0
- package/assets/shared/icons/femaleAvatar.svg +80 -0
- package/assets/shared/icons/inactive-clipboard.svg +7 -0
- package/assets/shared/icons/input/X.png +0 -0
- package/assets/shared/icons/input/X.svg +3 -0
- package/assets/shared/icons/input/drag.svg +6 -0
- package/assets/shared/icons/input/green-search.png +0 -0
- package/assets/shared/icons/input/grey-search.png +0 -0
- package/assets/shared/icons/input/search.svg +4 -0
- package/assets/shared/icons/maleAvatar.svg +55 -0
- package/assets/shared/icons/no-result-owl.png +0 -0
- package/assets/shared/icons/resources.svg +6 -0
- package/assets/shared/icons/secondary-x.svg +3 -0
- package/assets/shared/icons/settings.png +0 -0
- package/assets/shared/icons/stepper/white-v.svg +3 -0
- package/assets/shared/icons/table/edit.svg +3 -0
- package/assets/shared/icons/target.png +0 -0
- package/assets/shared/icons/upload.png +0 -0
- package/assets/shared/icons/upload.svg +7 -0
- package/assets/shared/icons/user.svg +8 -0
- package/assets/shared/icons/video/Play.PNG +0 -0
- package/assets/shared/icons/video/back10.PNG +0 -0
- package/assets/shared/icons/video/back10.svg +7 -0
- package/assets/shared/icons/video/download.PNG +0 -0
- package/assets/shared/icons/video/download.svg +4 -0
- package/assets/shared/icons/video/fullScreen.PNG +0 -0
- package/assets/shared/icons/video/fullScreen.svg +7 -0
- package/assets/shared/icons/video/minimize.png +0 -0
- package/assets/shared/icons/video/mute.png +0 -0
- package/assets/shared/icons/video/mute.svg +7 -0
- package/assets/shared/icons/video/next10.PNG +0 -0
- package/assets/shared/icons/video/next10.svg +7 -0
- package/assets/shared/icons/video/pause.PNG +0 -0
- package/assets/shared/icons/video/pause.svg +5 -0
- package/assets/shared/icons/video/pictureInPicture.png +0 -0
- package/assets/shared/icons/video/pictureInPicture.svg +5 -0
- package/assets/shared/icons/video/pictureInPictureOff.svg +7 -0
- package/assets/shared/icons/video/play.svg +4 -0
- package/assets/shared/icons/video/primary-play.png +0 -0
- package/assets/shared/icons/video/primaryPlay.svg +22 -0
- package/assets/shared/icons/video/sound.svg +8 -0
- package/assets/shared/icons/video/speaker.PNG +0 -0
- package/assets/shared/trackChanges/edit.svg +11 -0
- package/assets/shared/trackChanges/message-plus.svg +14 -0
- package/assets/shared/trackChanges/show-comments.svg +5 -0
- package/assets/shared/trackChanges/text-reference.svg +3 -0
- package/assets/shared/trackChanges/trash.svg +9 -0
- package/atoms/index.d.ts +836 -0
- package/constants/index.d.ts +795 -0
- package/decorators/index.d.ts +3 -0
- package/dialogs/index.d.ts +41 -0
- package/directives/index.d.ts +55 -0
- package/environment/index.d.ts +129 -0
- package/errors/index.d.ts +26 -0
- package/fesm2022/herum-shared-animations.mjs +41 -0
- package/fesm2022/herum-shared-animations.mjs.map +1 -0
- package/fesm2022/herum-shared-atoms.mjs +2919 -0
- package/fesm2022/herum-shared-atoms.mjs.map +1 -0
- package/fesm2022/herum-shared-constants.mjs +711 -0
- package/fesm2022/herum-shared-constants.mjs.map +1 -0
- package/fesm2022/herum-shared-decorators.mjs +12 -0
- package/fesm2022/herum-shared-decorators.mjs.map +1 -0
- package/fesm2022/herum-shared-dialogs.mjs +113 -0
- package/fesm2022/herum-shared-dialogs.mjs.map +1 -0
- package/fesm2022/herum-shared-directives.mjs +226 -0
- package/fesm2022/herum-shared-directives.mjs.map +1 -0
- package/fesm2022/herum-shared-environment.mjs +10 -0
- package/fesm2022/herum-shared-environment.mjs.map +1 -0
- package/fesm2022/herum-shared-errors.mjs +71 -0
- package/fesm2022/herum-shared-errors.mjs.map +1 -0
- package/fesm2022/herum-shared-fetched-message.mjs +118 -0
- package/fesm2022/herum-shared-fetched-message.mjs.map +1 -0
- package/fesm2022/herum-shared-herum-types.mjs +106 -0
- package/fesm2022/herum-shared-herum-types.mjs.map +1 -0
- package/fesm2022/herum-shared-molecules.mjs +1530 -0
- package/fesm2022/herum-shared-molecules.mjs.map +1 -0
- package/fesm2022/herum-shared-mongo-molecules.mjs +269 -0
- package/fesm2022/herum-shared-mongo-molecules.mjs.map +1 -0
- package/fesm2022/herum-shared-mongo-services.mjs +441 -0
- package/fesm2022/herum-shared-mongo-services.mjs.map +1 -0
- package/fesm2022/herum-shared-mongo.mjs +729 -0
- package/fesm2022/herum-shared-mongo.mjs.map +1 -0
- package/fesm2022/herum-shared-objectsExample.mjs +190 -0
- package/fesm2022/herum-shared-objectsExample.mjs.map +1 -0
- package/fesm2022/herum-shared-pipes.mjs +406 -0
- package/fesm2022/herum-shared-pipes.mjs.map +1 -0
- package/fesm2022/herum-shared-services.mjs +1107 -0
- package/fesm2022/herum-shared-services.mjs.map +1 -0
- package/fesm2022/herum-shared-static-services.mjs +140 -0
- package/fesm2022/herum-shared-static-services.mjs.map +1 -0
- package/fesm2022/herum-shared-table.mjs +837 -0
- package/fesm2022/herum-shared-table.mjs.map +1 -0
- package/fesm2022/herum-shared-testsObjects.mjs +5722 -0
- package/fesm2022/herum-shared-testsObjects.mjs.map +1 -0
- package/fesm2022/herum-shared-tokens.mjs +13 -0
- package/fesm2022/herum-shared-tokens.mjs.map +1 -0
- package/fesm2022/herum-shared-utils.mjs +380 -0
- package/fesm2022/herum-shared-utils.mjs.map +1 -0
- package/fesm2022/herum-shared-validators.mjs +76 -0
- package/fesm2022/herum-shared-validators.mjs.map +1 -0
- package/fesm2022/herum-shared.mjs +11709 -0
- package/fesm2022/herum-shared.mjs.map +1 -0
- package/fetched-message/index.d.ts +49 -0
- package/herum-types/index.d.ts +198 -0
- package/index.d.ts +2946 -0
- package/molecules/index.d.ts +458 -0
- package/mongo/index.d.ts +175 -0
- package/mongo/molecules/index.d.ts +76 -0
- package/mongo/services/index.d.ts +98 -0
- package/objectsExample/index.d.ts +11 -0
- package/package.json +128 -0
- package/pipes/index.d.ts +93 -0
- package/services/index.d.ts +266 -0
- package/static-services/index.d.ts +25 -0
- package/styles/_mixin.scss +86 -0
- package/styles/collection-wizard-layout.component.scss +70 -0
- package/styles/dialogs.scss +49 -0
- package/styles/forms.scss +18 -0
- package/styles/overView.scss +115 -0
- package/styles/variables/_colors.college.scss +65 -0
- package/styles/variables/_colors.scss +161 -0
- package/styles/variables/_sizes.scss +73 -0
- package/styles/wizard-steps-layout.scss +21 -0
- package/table/index.d.ts +233 -0
- package/testsObjects/index.d.ts +91 -0
- package/tokens/index.d.ts +8 -0
- package/utils/index.d.ts +92 -0
- package/validators/index.d.ts +20 -0
|
@@ -0,0 +1,1530 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, EventEmitter, HostListener, ViewChildren, ViewChild, Output, Input, Optional, Self, forwardRef, Inject, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i2 from '@angular/material/tooltip';
|
|
6
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
7
|
+
import * as i5 from 'herum-shared/pipes';
|
|
8
|
+
import { PipesModule } from 'herum-shared/pipes';
|
|
9
|
+
import { openClose } from 'herum-shared/animations';
|
|
10
|
+
import * as i1$1 from '@angular/forms';
|
|
11
|
+
import { NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
12
|
+
import * as i3 from '@angular/cdk/bidi';
|
|
13
|
+
import * as i2$1 from 'herum-shared/atoms';
|
|
14
|
+
import { AtomsModule } from 'herum-shared/atoms';
|
|
15
|
+
import * as i1$2 from 'herum-shared/services';
|
|
16
|
+
import { DateRange, MatDatepickerModule } from '@angular/material/datepicker';
|
|
17
|
+
import { regexExpressions, startEndDateError, minDateError, formatError, timestampError, svgsStrings, resourcesFilesSuffixes, filesSuffixes, anySubFileTypeWildCard, system } from 'herum-shared/constants';
|
|
18
|
+
import { HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';
|
|
19
|
+
import { isTruncatedTitleElement, getAssignmentStateDisplayName } from 'herum-shared/utils';
|
|
20
|
+
import * as i2$2 from '@angular/material/menu';
|
|
21
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
22
|
+
import { StepStatus } from 'herum-shared/herum-types';
|
|
23
|
+
import { MatNativeDateModule, MAT_DATE_LOCALE } from '@angular/material/core';
|
|
24
|
+
import { ClipboardModule } from '@angular/cdk/clipboard';
|
|
25
|
+
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
26
|
+
import { MatChipsModule } from '@angular/material/chips';
|
|
27
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
28
|
+
import { MatInputModule } from '@angular/material/input';
|
|
29
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
30
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
31
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
32
|
+
import { MatSliderModule } from '@angular/material/slider';
|
|
33
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
34
|
+
|
|
35
|
+
class HerumActiveLinkComponent {
|
|
36
|
+
constructor() { }
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
}
|
|
39
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumActiveLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumActiveLinkComponent, isStandalone: false, selector: "app-herum-active-link", ngImport: i0, template: "<p>herum-active-link works!</p>\r\n", styles: [""] });
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumActiveLinkComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{ standalone: false, selector: 'app-herum-active-link', template: "<p>herum-active-link works!</p>\r\n" }]
|
|
45
|
+
}], ctorParameters: () => [] });
|
|
46
|
+
|
|
47
|
+
class HerumActiveMenuComponent {
|
|
48
|
+
elementRef;
|
|
49
|
+
changeDetectorRef;
|
|
50
|
+
useIcons = true;
|
|
51
|
+
view = "wide";
|
|
52
|
+
activeColor = "";
|
|
53
|
+
activeTextColor = "";
|
|
54
|
+
secondaryTextColor = "";
|
|
55
|
+
menuItems = [];
|
|
56
|
+
selectedItem;
|
|
57
|
+
selectById = false;
|
|
58
|
+
isBlock = false;
|
|
59
|
+
dragEvent;
|
|
60
|
+
selectionIndex = new EventEmitter();
|
|
61
|
+
tabsContainer;
|
|
62
|
+
tabsElement;
|
|
63
|
+
onResize() {
|
|
64
|
+
this.setTabElementWidth();
|
|
65
|
+
}
|
|
66
|
+
currentItemIndex = 0;
|
|
67
|
+
hostElement;
|
|
68
|
+
constructor(elementRef, changeDetectorRef) {
|
|
69
|
+
this.elementRef = elementRef;
|
|
70
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
71
|
+
this.hostElement = this.elementRef.nativeElement;
|
|
72
|
+
}
|
|
73
|
+
ngOnChanges(changes) {
|
|
74
|
+
if (changes['activeColor']?.currentValue)
|
|
75
|
+
this.setCSSVariable('--active-menu-background', this.activeColor);
|
|
76
|
+
if (changes['activeTextColor']?.currentValue)
|
|
77
|
+
this.setCSSVariable('--active-menu-text-color', this.activeTextColor);
|
|
78
|
+
if (changes['secondaryTextColor']?.currentValue)
|
|
79
|
+
this.setCSSVariable('--active-menu-secondary-text-color', this.secondaryTextColor);
|
|
80
|
+
if (changes['menuItems']?.currentValue.length) {
|
|
81
|
+
this.changeDetectorRef.detectChanges();
|
|
82
|
+
this.setTabElementWidth();
|
|
83
|
+
}
|
|
84
|
+
if (changes['dragEvent']?.currentValue)
|
|
85
|
+
this.setTabElementWidth();
|
|
86
|
+
}
|
|
87
|
+
setCSSVariable(variable, value) {
|
|
88
|
+
this.hostElement.style.setProperty(variable, value);
|
|
89
|
+
}
|
|
90
|
+
ngAfterViewInit() {
|
|
91
|
+
this.setTabElementWidth();
|
|
92
|
+
}
|
|
93
|
+
_onSelectTab(selection) {
|
|
94
|
+
this.currentItemIndex = selection;
|
|
95
|
+
if (!this.isBlock)
|
|
96
|
+
this.selectionIndex.emit(selection);
|
|
97
|
+
}
|
|
98
|
+
setTabElementWidth() {
|
|
99
|
+
if (!this.tabsElement?.length || !this.menuItems.length)
|
|
100
|
+
return;
|
|
101
|
+
const tabsContainerWidth = this.tabsContainer.nativeElement.clientWidth;
|
|
102
|
+
this.tabsElement.forEach(tab => {
|
|
103
|
+
const width = (tabsContainerWidth / this.menuItems.length) > 150 ? '150px' : `${tabsContainerWidth / this.menuItems.length}px`;
|
|
104
|
+
tab.nativeElement.style.width = width;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumActiveMenuComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
108
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumActiveMenuComponent, isStandalone: false, selector: "herum-active-menu", inputs: { useIcons: "useIcons", view: "view", activeColor: "activeColor", activeTextColor: "activeTextColor", secondaryTextColor: "secondaryTextColor", menuItems: "menuItems", selectedItem: "selectedItem", selectById: "selectById", isBlock: "isBlock", dragEvent: "dragEvent" }, outputs: { selectionIndex: "selectionIndex" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true }, { propertyName: "tabsElement", predicate: ["tabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ul #tabsContainer class=\"tabs group\" [ngClass]=\"view\" [class.isBlock]=\"isBlock\">\r\n <li #tabs *ngFor=\"let menuItem of menuItems; let i = index\"\r\n [class.active]=\"selectById ? menuItem?.id === selectedItem?.id : (currentItemIndex === i || menuItem === selectedItem)\">\r\n <a (click)=\"_onSelectTab(i)\" [userAction]=\"menuItem.label\">\r\n <span *ngIf=\"useIcons\" [innerHTML]=\"menuItem.icon | safeHtml\"\r\n [ngClass]=\"i == currentItemIndex ? 'active-icon' : 'non-active-icon'\">\r\n </span>\r\n\r\n <p class=\"m-0 truncate\" [matTooltip]=\"menuItem.label\">\r\n {{ menuItem.label }}\r\n </p>\r\n </a>\r\n </li>\r\n</ul>", styles: ["a{cursor:pointer;display:flex;width:100%;gap:8px;align-items:center;justify-content:center;z-index:3}a .active-icon{stroke:var(--active-menu-background, var(--icons-color))}a .active-icon,a .non-active-icon{z-index:3;width:24px}a .non-active-icon{stroke:var(--active-menu-secondary-text-color, #ffffff)}.narrow a{flex-direction:column}.narrow a span{height:18px}.narrow a p{font-size:14px;margin-right:0}#content{background-color:#fff;position:relative;overflow:hidden;min-height:400px}.tabs{list-style:none;width:100%}.tabs li{float:left;height:40px;position:relative}.tabs a{float:left;padding-inline:10px;background-color:var(--active-menu-background);height:100%}.tabs a p{text-decoration:none;font-size:16px;font-weight:500;color:var(--active-menu-secondary-text-color, #ffffff);z-index:3}.isBlock a p{color:gray}.active a{border-top-left-radius:12px;border-top-right-radius:12px}.active a p{color:var(--active-menu-text-color, var(--icons-color))}.tabs .active{z-index:3}.tabs .active a{background-color:#fff;color:var(--icons-color)}.tabs li:before,.tabs li:after,.tabs li a:before,.tabs li a:after{position:absolute;bottom:0}.tabs li:last-child:after,.tabs li:last-child a:after,.tabs li:first-child:before,.tabs li:first-child a:before,.tabs .active:after,.tabs .active:before,.tabs .active a:after,.tabs .active a:before{content:\"\"}.tabs .active:before,.tabs .active:after{background-color:#fff;z-index:1}.tabs li:before,.tabs li:after{background-color:var(--active-menu-background, var(--icons-color));width:12px;height:12px}.tabs li:before{left:-12px}.tabs li:after{right:-12px}.tabs li a:after,.tabs li a:before{width:20px;height:20px;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;background-color:var(--active-menu-background, var(--icons-color));z-index:2}.tabs .active a:after,.tabs .active a:before{background-color:var(--active-menu-background, var(--icons-color))}.tabs li:first-child.active a:before,.tabs li:last-child.active a:after{background-color:var(--active-menu-background, var(--icons-color))}.tabs li a:before{left:-20px}.tabs li a:after{right:-20px}ul{background-color:var(--active-menu-background, var(--icons-color));height:52px;margin:0;padding-top:12px;justify-content:flex-start;display:flex}\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: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i5.SafeHtmlPipe, name: "safeHtml" }] });
|
|
109
|
+
}
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumActiveMenuComponent, decorators: [{
|
|
111
|
+
type: Component,
|
|
112
|
+
args: [{ standalone: false, selector: 'herum-active-menu', template: "<ul #tabsContainer class=\"tabs group\" [ngClass]=\"view\" [class.isBlock]=\"isBlock\">\r\n <li #tabs *ngFor=\"let menuItem of menuItems; let i = index\"\r\n [class.active]=\"selectById ? menuItem?.id === selectedItem?.id : (currentItemIndex === i || menuItem === selectedItem)\">\r\n <a (click)=\"_onSelectTab(i)\" [userAction]=\"menuItem.label\">\r\n <span *ngIf=\"useIcons\" [innerHTML]=\"menuItem.icon | safeHtml\"\r\n [ngClass]=\"i == currentItemIndex ? 'active-icon' : 'non-active-icon'\">\r\n </span>\r\n\r\n <p class=\"m-0 truncate\" [matTooltip]=\"menuItem.label\">\r\n {{ menuItem.label }}\r\n </p>\r\n </a>\r\n </li>\r\n</ul>", styles: ["a{cursor:pointer;display:flex;width:100%;gap:8px;align-items:center;justify-content:center;z-index:3}a .active-icon{stroke:var(--active-menu-background, var(--icons-color))}a .active-icon,a .non-active-icon{z-index:3;width:24px}a .non-active-icon{stroke:var(--active-menu-secondary-text-color, #ffffff)}.narrow a{flex-direction:column}.narrow a span{height:18px}.narrow a p{font-size:14px;margin-right:0}#content{background-color:#fff;position:relative;overflow:hidden;min-height:400px}.tabs{list-style:none;width:100%}.tabs li{float:left;height:40px;position:relative}.tabs a{float:left;padding-inline:10px;background-color:var(--active-menu-background);height:100%}.tabs a p{text-decoration:none;font-size:16px;font-weight:500;color:var(--active-menu-secondary-text-color, #ffffff);z-index:3}.isBlock a p{color:gray}.active a{border-top-left-radius:12px;border-top-right-radius:12px}.active a p{color:var(--active-menu-text-color, var(--icons-color))}.tabs .active{z-index:3}.tabs .active a{background-color:#fff;color:var(--icons-color)}.tabs li:before,.tabs li:after,.tabs li a:before,.tabs li a:after{position:absolute;bottom:0}.tabs li:last-child:after,.tabs li:last-child a:after,.tabs li:first-child:before,.tabs li:first-child a:before,.tabs .active:after,.tabs .active:before,.tabs .active a:after,.tabs .active a:before{content:\"\"}.tabs .active:before,.tabs .active:after{background-color:#fff;z-index:1}.tabs li:before,.tabs li:after{background-color:var(--active-menu-background, var(--icons-color));width:12px;height:12px}.tabs li:before{left:-12px}.tabs li:after{right:-12px}.tabs li a:after,.tabs li a:before{width:20px;height:20px;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;background-color:var(--active-menu-background, var(--icons-color));z-index:2}.tabs .active a:after,.tabs .active a:before{background-color:var(--active-menu-background, var(--icons-color))}.tabs li:first-child.active a:before,.tabs li:last-child.active a:after{background-color:var(--active-menu-background, var(--icons-color))}.tabs li a:before{left:-20px}.tabs li a:after{right:-20px}ul{background-color:var(--active-menu-background, var(--icons-color));height:52px;margin:0;padding-top:12px;justify-content:flex-start;display:flex}\n"] }]
|
|
113
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { useIcons: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], view: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], activeColor: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], activeTextColor: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], secondaryTextColor: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], menuItems: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], selectedItem: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], selectById: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], isBlock: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], dragEvent: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], selectionIndex: [{
|
|
134
|
+
type: Output
|
|
135
|
+
}], tabsContainer: [{
|
|
136
|
+
type: ViewChild,
|
|
137
|
+
args: ['tabsContainer']
|
|
138
|
+
}], tabsElement: [{
|
|
139
|
+
type: ViewChildren,
|
|
140
|
+
args: ['tabs']
|
|
141
|
+
}], onResize: [{
|
|
142
|
+
type: HostListener,
|
|
143
|
+
args: ['window:resize']
|
|
144
|
+
}] } });
|
|
145
|
+
|
|
146
|
+
class HerumAutocompleteComponent {
|
|
147
|
+
ngControl;
|
|
148
|
+
options = [];
|
|
149
|
+
displayBy = 'name';
|
|
150
|
+
subTitleBy;
|
|
151
|
+
placeholder = 'הקלד/י לחיפוש...';
|
|
152
|
+
noResultsText = 'אויש, נראה שאין תוצאות מתאימות...';
|
|
153
|
+
disabled = false;
|
|
154
|
+
isLoadingInput = false;
|
|
155
|
+
debounceTime = 0;
|
|
156
|
+
selectedOption = null;
|
|
157
|
+
isBlurred = false;
|
|
158
|
+
filterTextEmitter = new EventEmitter();
|
|
159
|
+
selectedOptionEmitter = new EventEmitter();
|
|
160
|
+
filterInput;
|
|
161
|
+
containerRef;
|
|
162
|
+
onWindowClick(event) {
|
|
163
|
+
if (!this.isDropdownOpen)
|
|
164
|
+
return;
|
|
165
|
+
const target = event.target;
|
|
166
|
+
const host = this.containerRef?.nativeElement;
|
|
167
|
+
if (host && !host.contains(target))
|
|
168
|
+
this.isDropdownOpen = false;
|
|
169
|
+
}
|
|
170
|
+
currentSearchedItem = '';
|
|
171
|
+
filteredOptions = [];
|
|
172
|
+
isDropdownOpen = false;
|
|
173
|
+
isWaitingForResults = false;
|
|
174
|
+
skeletonRows = [1, 2, 3, 4, 5];
|
|
175
|
+
skeletonWidths = [200, 180, 160, 180, 170];
|
|
176
|
+
constructor(ngControl) {
|
|
177
|
+
this.ngControl = ngControl;
|
|
178
|
+
if (this.ngControl)
|
|
179
|
+
this.ngControl.valueAccessor = this;
|
|
180
|
+
}
|
|
181
|
+
ngOnChanges(changes) {
|
|
182
|
+
if (changes['options']) {
|
|
183
|
+
this.filterOptions(this.currentSearchedItem);
|
|
184
|
+
this.isWaitingForResults = false;
|
|
185
|
+
}
|
|
186
|
+
if (changes['selectedOption'] && this.selectedOption) {
|
|
187
|
+
const displayText = this.selectedOption?.[this.displayBy]?.toString() ?? '';
|
|
188
|
+
this.currentSearchedItem = displayText;
|
|
189
|
+
this.onChange(displayText);
|
|
190
|
+
if (this.filterInput)
|
|
191
|
+
this.filterInput.inputValue = displayText;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
_onInputClick(event) {
|
|
195
|
+
event.stopPropagation();
|
|
196
|
+
if (!this.disabled)
|
|
197
|
+
this.isDropdownOpen = true;
|
|
198
|
+
}
|
|
199
|
+
_inputChange(rawText) {
|
|
200
|
+
if (!this.disabled)
|
|
201
|
+
this.isDropdownOpen = true;
|
|
202
|
+
const text = !!rawText ? rawText.toString().trim() : '';
|
|
203
|
+
this.currentSearchedItem = text;
|
|
204
|
+
this.isWaitingForResults = true;
|
|
205
|
+
this.onChange(this.currentSearchedItem);
|
|
206
|
+
this.filterTextEmitter.emit(text);
|
|
207
|
+
this.filterOptions(text);
|
|
208
|
+
}
|
|
209
|
+
_onSelectOption(option) {
|
|
210
|
+
const selectedDisplayText = (option?.[this.displayBy] ?? '').toString();
|
|
211
|
+
this.currentSearchedItem = '';
|
|
212
|
+
this.onChange(this.currentSearchedItem);
|
|
213
|
+
this.onTouched();
|
|
214
|
+
this.selectedOptionEmitter.emit(option);
|
|
215
|
+
this.isDropdownOpen = false;
|
|
216
|
+
if (this.filterInput)
|
|
217
|
+
this.filterInput.inputValue = selectedDisplayText;
|
|
218
|
+
}
|
|
219
|
+
_getSkeletonWidth(index) {
|
|
220
|
+
return this.skeletonWidths[index % this.skeletonWidths.length];
|
|
221
|
+
}
|
|
222
|
+
onChange = () => { };
|
|
223
|
+
onTouched = () => { };
|
|
224
|
+
writeValue(value) {
|
|
225
|
+
this.currentSearchedItem = value || '';
|
|
226
|
+
this.filterOptions(this.currentSearchedItem);
|
|
227
|
+
}
|
|
228
|
+
registerOnChange(fn) {
|
|
229
|
+
this.onChange = fn;
|
|
230
|
+
}
|
|
231
|
+
registerOnTouched(fn) {
|
|
232
|
+
this.onTouched = fn;
|
|
233
|
+
}
|
|
234
|
+
setDisabledState(isDisabled) {
|
|
235
|
+
this.disabled = isDisabled;
|
|
236
|
+
}
|
|
237
|
+
filterOptions(text) {
|
|
238
|
+
const options = Array.isArray(this.options) ? this.options : [];
|
|
239
|
+
if (!options?.length) {
|
|
240
|
+
this.filteredOptions = [];
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (!text) {
|
|
244
|
+
this.filteredOptions = [...options];
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
const normalizedSearchText = (text || '').toString().toLocaleLowerCase();
|
|
248
|
+
this.filteredOptions = options.filter(option => {
|
|
249
|
+
const optionDisplayValue = option[this.displayBy];
|
|
250
|
+
if (!optionDisplayValue)
|
|
251
|
+
return false;
|
|
252
|
+
const normalizedOptionText = optionDisplayValue.toString().toLowerCase();
|
|
253
|
+
return normalizedOptionText.includes(normalizedSearchText);
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumAutocompleteComponent, deps: [{ token: i1$1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
257
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumAutocompleteComponent, isStandalone: false, selector: "herum-autocomplete", inputs: { options: "options", displayBy: "displayBy", subTitleBy: "subTitleBy", placeholder: "placeholder", noResultsText: "noResultsText", disabled: "disabled", isLoadingInput: "isLoadingInput", debounceTime: "debounceTime", selectedOption: "selectedOption", isBlurred: "isBlurred" }, outputs: { filterTextEmitter: "filterTextEmitter", selectedOptionEmitter: "selectedOptionEmitter" }, host: { listeners: { "window:click": "onWindowClick($event)" } }, viewQueries: [{ propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"autocomplete-container\" dir=\"rtl\" [class.disabled]=\"disabled\">\r\n <herum-input-field #filterInput class=\"autocomplete-input internal\" \r\n [type]=\"isBlurred ? 'search-blur' : 'search'\" [placeholder]=\"placeholder\"\r\n [debounceTime]=\"debounceTime\" [disabled]=\"disabled\" [inputValue]=\"currentSearchedItem\"\r\n (click)=\"_onInputClick($event)\" (inputValueEmitter)=\"_inputChange($event)\">\r\n </herum-input-field>\r\n\r\n <div class=\"autocomplete-dropdown\" [@openClose]=\"isDropdownOpen ? 'openDown' : 'closeUp'\" \r\n [class.hidden]=\"!isDropdownOpen\" [class.glass]=\"isBlurred\">\r\n <ng-container *ngIf=\"isLoadingInput || isWaitingForResults; else optionsList\">\r\n <div *ngFor=\"let _ of skeletonRows; let i = index\" class=\"autocomplete-option loading-state\">\r\n <span class=\"skeleton-text skeleton\" [ngStyle]=\"{width: _getSkeletonWidth(i) + 'px'}\"> </span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #optionsList>\r\n <ng-container *ngIf=\"filteredOptions?.length; else noResults\">\r\n <a class=\"autocomplete-option\" *ngFor=\"let option of filteredOptions\" (click)=\"_onSelectOption(option)\">\r\n <div class=\"option-main\">\r\n <ng-container *ngIf=\"option.iconUrl; else defaultLeadingIcon\">\r\n <img [src]=\"option.iconUrl\" class=\"option-icon-img\" />\r\n </ng-container>\r\n \r\n <ng-template #defaultLeadingIcon>\r\n <img src=\"assets/hadracha/general/plus.svg\" class=\"option-icon\">\r\n </ng-template>\r\n\r\n <span [highlightText]=\"option[displayBy]\" [herumHighlight]=\"currentSearchedItem\"></span>\r\n </div>\r\n\r\n <span class=\"option-subtitle\" *ngIf=\"subTitleBy && option[subTitleBy]\">\r\n {{ option[subTitleBy] }}\r\n </span>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #noResults>\r\n <a *ngIf=\"!(isLoadingInput || isWaitingForResults)\"\r\n class=\"autocomplete-option text-center no-results-blurred\">\r\n {{ noResultsText }}\r\n </a>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [":host{--option-icon-size: 14px;--option-item-size: 28px;--autocomplete-visible-options: 5;--autocomplete-option-padding-vertical: 8px;--autocomplete-option-height: calc(var(--option-item-size) + 2 * var(--autocomplete-option-padding-vertical));--dropdown-height: calc(var(--autocomplete-option-height) * var(--autocomplete-visible-options));--loading-state-padding-vertical: calc((var(--option-item-size) + var(--autocomplete-option-padding-vertical)) / 2)}.autocomplete-container{position:relative;width:100%;direction:rtl}.autocomplete-container.disabled{opacity:.6;pointer-events:none}.autocomplete-container .autocomplete-input{width:100%;display:block}.autocomplete-container .autocomplete-dropdown{position:absolute;top:100%;left:0;right:0;z-index:10;max-height:var(--dropdown-height);overflow-y:auto;overflow-x:hidden;line-height:var(--option-item-size)}.autocomplete-container .autocomplete-dropdown.hidden{pointer-events:none}.autocomplete-container .autocomplete-dropdown:not(.glass){background-color:var(--light-background-color);border-radius:var(--border-radius);box-shadow:0 2px 4px #00000029}.autocomplete-container .autocomplete-dropdown.glass .no-results-blurred{color:var(--text-color)!important}.autocomplete-container .autocomplete-dropdown .autocomplete-option{display:flex;align-items:center;justify-content:flex-start;padding:var(--autocomplete-option-padding-vertical) 16px;cursor:pointer;font-size:14px;color:var(--text-color);text-decoration:none}.autocomplete-container .autocomplete-dropdown .autocomplete-option .option-main{display:flex;align-items:center;gap:8px;min-width:0}.autocomplete-container .autocomplete-dropdown .autocomplete-option .option-subtitle{margin-inline-start:auto;white-space:nowrap;opacity:.75;font-size:12px}.autocomplete-container .autocomplete-dropdown .autocomplete-option .option-icon{width:var(--option-icon-size);height:var(--option-icon-size);margin-left:4px}.autocomplete-container .autocomplete-dropdown .autocomplete-option .option-icon-img{width:var(--option-item-size);height:var(--option-item-size);margin-left:8px;border-radius:16px}.autocomplete-container .autocomplete-dropdown .autocomplete-option.autocomplete-option{border-top:1px solid var(--divider-color)}.autocomplete-container .autocomplete-dropdown .autocomplete-option:hover{background-color:var(--hover-background)}.autocomplete-container .autocomplete-dropdown .autocomplete-option.text-center{cursor:default;color:var(--homepage-separator)}.autocomplete-container .autocomplete-dropdown .autocomplete-option.loading-state{padding-top:var(--loading-state-padding-vertical);padding-bottom:var(--loading-state-padding-vertical)}\n"], dependencies: [{ 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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i2$1.HerumInputFieldComponent, selector: "herum-input-field", inputs: ["type", "placeholder", "disabled", "isBlocked", "isValid", "errorMsg", "showErrorMsgGap", "inputValue", "isLoading", "id", "debounceTime", "minValue", "maxValue", "isBlurred", "touched", "ltrMode", "preventMacroKeysPressEvent"], outputs: ["inputValueEmitter"] }], animations: [openClose] });
|
|
258
|
+
}
|
|
259
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumAutocompleteComponent, decorators: [{
|
|
260
|
+
type: Component,
|
|
261
|
+
args: [{ standalone: false, selector: 'herum-autocomplete', animations: [openClose], template: "<div #container class=\"autocomplete-container\" dir=\"rtl\" [class.disabled]=\"disabled\">\r\n <herum-input-field #filterInput class=\"autocomplete-input internal\" \r\n [type]=\"isBlurred ? 'search-blur' : 'search'\" [placeholder]=\"placeholder\"\r\n [debounceTime]=\"debounceTime\" [disabled]=\"disabled\" [inputValue]=\"currentSearchedItem\"\r\n (click)=\"_onInputClick($event)\" (inputValueEmitter)=\"_inputChange($event)\">\r\n </herum-input-field>\r\n\r\n <div class=\"autocomplete-dropdown\" [@openClose]=\"isDropdownOpen ? 'openDown' : 'closeUp'\" \r\n [class.hidden]=\"!isDropdownOpen\" [class.glass]=\"isBlurred\">\r\n <ng-container *ngIf=\"isLoadingInput || isWaitingForResults; else optionsList\">\r\n <div *ngFor=\"let _ of skeletonRows; let i = index\" class=\"autocomplete-option loading-state\">\r\n <span class=\"skeleton-text skeleton\" [ngStyle]=\"{width: _getSkeletonWidth(i) + 'px'}\"> </span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #optionsList>\r\n <ng-container *ngIf=\"filteredOptions?.length; else noResults\">\r\n <a class=\"autocomplete-option\" *ngFor=\"let option of filteredOptions\" (click)=\"_onSelectOption(option)\">\r\n <div class=\"option-main\">\r\n <ng-container *ngIf=\"option.iconUrl; else defaultLeadingIcon\">\r\n <img [src]=\"option.iconUrl\" class=\"option-icon-img\" />\r\n </ng-container>\r\n \r\n <ng-template #defaultLeadingIcon>\r\n <img src=\"assets/hadracha/general/plus.svg\" class=\"option-icon\">\r\n </ng-template>\r\n\r\n <span [highlightText]=\"option[displayBy]\" [herumHighlight]=\"currentSearchedItem\"></span>\r\n </div>\r\n\r\n <span class=\"option-subtitle\" *ngIf=\"subTitleBy && option[subTitleBy]\">\r\n {{ option[subTitleBy] }}\r\n </span>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #noResults>\r\n <a *ngIf=\"!(isLoadingInput || isWaitingForResults)\"\r\n class=\"autocomplete-option text-center no-results-blurred\">\r\n {{ noResultsText }}\r\n </a>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [":host{--option-icon-size: 14px;--option-item-size: 28px;--autocomplete-visible-options: 5;--autocomplete-option-padding-vertical: 8px;--autocomplete-option-height: calc(var(--option-item-size) + 2 * var(--autocomplete-option-padding-vertical));--dropdown-height: calc(var(--autocomplete-option-height) * var(--autocomplete-visible-options));--loading-state-padding-vertical: calc((var(--option-item-size) + var(--autocomplete-option-padding-vertical)) / 2)}.autocomplete-container{position:relative;width:100%;direction:rtl}.autocomplete-container.disabled{opacity:.6;pointer-events:none}.autocomplete-container .autocomplete-input{width:100%;display:block}.autocomplete-container .autocomplete-dropdown{position:absolute;top:100%;left:0;right:0;z-index:10;max-height:var(--dropdown-height);overflow-y:auto;overflow-x:hidden;line-height:var(--option-item-size)}.autocomplete-container .autocomplete-dropdown.hidden{pointer-events:none}.autocomplete-container .autocomplete-dropdown:not(.glass){background-color:var(--light-background-color);border-radius:var(--border-radius);box-shadow:0 2px 4px #00000029}.autocomplete-container .autocomplete-dropdown.glass .no-results-blurred{color:var(--text-color)!important}.autocomplete-container .autocomplete-dropdown .autocomplete-option{display:flex;align-items:center;justify-content:flex-start;padding:var(--autocomplete-option-padding-vertical) 16px;cursor:pointer;font-size:14px;color:var(--text-color);text-decoration:none}.autocomplete-container .autocomplete-dropdown .autocomplete-option .option-main{display:flex;align-items:center;gap:8px;min-width:0}.autocomplete-container .autocomplete-dropdown .autocomplete-option .option-subtitle{margin-inline-start:auto;white-space:nowrap;opacity:.75;font-size:12px}.autocomplete-container .autocomplete-dropdown .autocomplete-option .option-icon{width:var(--option-icon-size);height:var(--option-icon-size);margin-left:4px}.autocomplete-container .autocomplete-dropdown .autocomplete-option .option-icon-img{width:var(--option-item-size);height:var(--option-item-size);margin-left:8px;border-radius:16px}.autocomplete-container .autocomplete-dropdown .autocomplete-option.autocomplete-option{border-top:1px solid var(--divider-color)}.autocomplete-container .autocomplete-dropdown .autocomplete-option:hover{background-color:var(--hover-background)}.autocomplete-container .autocomplete-dropdown .autocomplete-option.text-center{cursor:default;color:var(--homepage-separator)}.autocomplete-container .autocomplete-dropdown .autocomplete-option.loading-state{padding-top:var(--loading-state-padding-vertical);padding-bottom:var(--loading-state-padding-vertical)}\n"] }]
|
|
262
|
+
}], ctorParameters: () => [{ type: i1$1.NgControl, decorators: [{
|
|
263
|
+
type: Optional
|
|
264
|
+
}, {
|
|
265
|
+
type: Self
|
|
266
|
+
}] }], propDecorators: { options: [{
|
|
267
|
+
type: Input
|
|
268
|
+
}], displayBy: [{
|
|
269
|
+
type: Input
|
|
270
|
+
}], subTitleBy: [{
|
|
271
|
+
type: Input
|
|
272
|
+
}], placeholder: [{
|
|
273
|
+
type: Input
|
|
274
|
+
}], noResultsText: [{
|
|
275
|
+
type: Input
|
|
276
|
+
}], disabled: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}], isLoadingInput: [{
|
|
279
|
+
type: Input
|
|
280
|
+
}], debounceTime: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], selectedOption: [{
|
|
283
|
+
type: Input
|
|
284
|
+
}], isBlurred: [{
|
|
285
|
+
type: Input
|
|
286
|
+
}], filterTextEmitter: [{
|
|
287
|
+
type: Output
|
|
288
|
+
}], selectedOptionEmitter: [{
|
|
289
|
+
type: Output
|
|
290
|
+
}], filterInput: [{
|
|
291
|
+
type: ViewChild,
|
|
292
|
+
args: ['filterInput']
|
|
293
|
+
}], containerRef: [{
|
|
294
|
+
type: ViewChild,
|
|
295
|
+
args: ['container']
|
|
296
|
+
}], onWindowClick: [{
|
|
297
|
+
type: HostListener,
|
|
298
|
+
args: ['window:click', ['$event']]
|
|
299
|
+
}] } });
|
|
300
|
+
|
|
301
|
+
const CUSTOM_CLOSED_LIST_MULTI_SELECT_CONTROL_VALUE_ACCESSOR = {
|
|
302
|
+
provide: NG_VALUE_ACCESSOR,
|
|
303
|
+
useExisting: forwardRef(() => HerumClosedListMultiSelectComponent),
|
|
304
|
+
multi: true,
|
|
305
|
+
};
|
|
306
|
+
class HerumClosedListMultiSelectComponent {
|
|
307
|
+
commonGraphqlRequestsService;
|
|
308
|
+
closedListName;
|
|
309
|
+
placeholder = 'בחר/י...';
|
|
310
|
+
disabled = false;
|
|
311
|
+
isDropDownInPositionFixed = false;
|
|
312
|
+
size = 'default';
|
|
313
|
+
dropDownDirection = 'downwards';
|
|
314
|
+
selectedClosedListOptionalValues;
|
|
315
|
+
selectedClosedListValueEmitter = new EventEmitter();
|
|
316
|
+
closedListValues = [];
|
|
317
|
+
constructor(commonGraphqlRequestsService) {
|
|
318
|
+
this.commonGraphqlRequestsService = commonGraphqlRequestsService;
|
|
319
|
+
}
|
|
320
|
+
ngOnChanges(changes) {
|
|
321
|
+
if (changes['closedListName']?.currentValue)
|
|
322
|
+
this.setClosedListValues();
|
|
323
|
+
}
|
|
324
|
+
setClosedListValues() {
|
|
325
|
+
this.commonGraphqlRequestsService.getClosedLists([this.closedListName])
|
|
326
|
+
.subscribe((closedList) => {
|
|
327
|
+
this.closedListValues = closedList[0].optionalValues?.map(optionalValue => ({ name: optionalValue.displayName, id: optionalValue.id }));
|
|
328
|
+
this.syncIdsBetweenSelectedValuesToValues();
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
_selectedOptionsEmitter(selectedClosedListValue) {
|
|
332
|
+
this.selectedClosedListValueEmitter.emit(selectedClosedListValue);
|
|
333
|
+
this.onChange(selectedClosedListValue);
|
|
334
|
+
}
|
|
335
|
+
onChange = () => { };
|
|
336
|
+
onTouched = () => { };
|
|
337
|
+
writeValue(selectedClosedListOptionalValues) {
|
|
338
|
+
if (!selectedClosedListOptionalValues)
|
|
339
|
+
return;
|
|
340
|
+
this.selectedClosedListOptionalValues = selectedClosedListOptionalValues;
|
|
341
|
+
this.syncIdsBetweenSelectedValuesToValues();
|
|
342
|
+
}
|
|
343
|
+
syncIdsBetweenSelectedValuesToValues() {
|
|
344
|
+
if (!this.closedListValues?.length || !this.selectedClosedListOptionalValues)
|
|
345
|
+
return;
|
|
346
|
+
this.closedListValues.forEach(closedListValue => {
|
|
347
|
+
const selectedClosedListOptionalValue = this.selectedClosedListOptionalValues.find(section => section.name === closedListValue.name);
|
|
348
|
+
if (selectedClosedListOptionalValue)
|
|
349
|
+
closedListValue.id = selectedClosedListOptionalValue.id;
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
registerOnChange(fn) {
|
|
353
|
+
this.onChange = fn;
|
|
354
|
+
}
|
|
355
|
+
registerOnTouched(fn) {
|
|
356
|
+
this.onTouched = fn;
|
|
357
|
+
}
|
|
358
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumClosedListMultiSelectComponent, deps: [{ token: i1$2.CommonGraphqlRequestsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
359
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumClosedListMultiSelectComponent, isStandalone: false, selector: "herum-closed-list-multi-select", inputs: { closedListName: "closedListName", placeholder: "placeholder", disabled: "disabled", isDropDownInPositionFixed: "isDropDownInPositionFixed", size: "size", dropDownDirection: "dropDownDirection", selectedClosedListOptionalValues: "selectedClosedListOptionalValues" }, outputs: { selectedClosedListValueEmitter: "selectedClosedListValueEmitter" }, providers: [CUSTOM_CLOSED_LIST_MULTI_SELECT_CONTROL_VALUE_ACCESSOR], usesOnChanges: true, ngImport: i0, template: "<herum-multi-select [placeholder]=\"placeholder\" [options]=\"closedListValues\"\r\n [selectedOptionsInput]=\"selectedClosedListOptionalValues\" [disabled]=\"disabled\"\r\n [isDropDownInPositionFixed]=\"isDropDownInPositionFixed\" [size]=\"size\" [dropDownDirection]=\"dropDownDirection\"\r\n (selectedOptions)=\"_selectedOptionsEmitter($event)\">\r\n</herum-multi-select>", styles: [""], dependencies: [{ kind: "component", type: i2$1.HerumMultiSelectComponent, selector: "herum-multi-select", inputs: ["placeholder", "options", "titledOptionsList", "recursiveTitledOption", "selectedOptionsInput", "maxChips", "disabled", "size", "isDropDownInPositionFixed", "dropDownDirection", "isMultiHeads"], outputs: ["selectedOptions", "selectedRecursiveOptions"] }] });
|
|
360
|
+
}
|
|
361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumClosedListMultiSelectComponent, decorators: [{
|
|
362
|
+
type: Component,
|
|
363
|
+
args: [{ standalone: false, selector: 'herum-closed-list-multi-select', providers: [CUSTOM_CLOSED_LIST_MULTI_SELECT_CONTROL_VALUE_ACCESSOR], template: "<herum-multi-select [placeholder]=\"placeholder\" [options]=\"closedListValues\"\r\n [selectedOptionsInput]=\"selectedClosedListOptionalValues\" [disabled]=\"disabled\"\r\n [isDropDownInPositionFixed]=\"isDropDownInPositionFixed\" [size]=\"size\" [dropDownDirection]=\"dropDownDirection\"\r\n (selectedOptions)=\"_selectedOptionsEmitter($event)\">\r\n</herum-multi-select>" }]
|
|
364
|
+
}], ctorParameters: () => [{ type: i1$2.CommonGraphqlRequestsService }], propDecorators: { closedListName: [{
|
|
365
|
+
type: Input
|
|
366
|
+
}], placeholder: [{
|
|
367
|
+
type: Input
|
|
368
|
+
}], disabled: [{
|
|
369
|
+
type: Input
|
|
370
|
+
}], isDropDownInPositionFixed: [{
|
|
371
|
+
type: Input
|
|
372
|
+
}], size: [{
|
|
373
|
+
type: Input
|
|
374
|
+
}], dropDownDirection: [{
|
|
375
|
+
type: Input
|
|
376
|
+
}], selectedClosedListOptionalValues: [{
|
|
377
|
+
type: Input
|
|
378
|
+
}], selectedClosedListValueEmitter: [{
|
|
379
|
+
type: Output
|
|
380
|
+
}] } });
|
|
381
|
+
|
|
382
|
+
const CUSTOM_CLOSED_LIST_SELECT_CONTROL_VALUE_ACCESSOR = {
|
|
383
|
+
provide: NG_VALUE_ACCESSOR,
|
|
384
|
+
useExisting: forwardRef(() => HerumClosedListSelectComponent),
|
|
385
|
+
multi: true,
|
|
386
|
+
};
|
|
387
|
+
class HerumClosedListSelectComponent {
|
|
388
|
+
commonGraphqlRequestsService;
|
|
389
|
+
closedListName;
|
|
390
|
+
placeholder = 'בחר/י...';
|
|
391
|
+
closedListOptionalValueName;
|
|
392
|
+
disabled = false;
|
|
393
|
+
isDropDownInPositionFixed = false;
|
|
394
|
+
iconPath = '';
|
|
395
|
+
isAutoComplete = false;
|
|
396
|
+
title = '';
|
|
397
|
+
size = 'default';
|
|
398
|
+
displayLoadingMode = false;
|
|
399
|
+
isLoadingInput = false;
|
|
400
|
+
dropDownDirection = 'downwards';
|
|
401
|
+
filterPlaceholder = "חפש/י...";
|
|
402
|
+
selectedClosedListValueEmitter = new EventEmitter();
|
|
403
|
+
filterTextEmitter = new EventEmitter();
|
|
404
|
+
closedListValues = [];
|
|
405
|
+
selectedClosedListOptionalValue;
|
|
406
|
+
constructor(commonGraphqlRequestsService) {
|
|
407
|
+
this.commonGraphqlRequestsService = commonGraphqlRequestsService;
|
|
408
|
+
}
|
|
409
|
+
ngOnChanges(changes) {
|
|
410
|
+
if (changes['closedListName']?.currentValue)
|
|
411
|
+
this.setClosedListValues();
|
|
412
|
+
if (changes['closedListOptionalValueName']?.currentValue)
|
|
413
|
+
this.handleClosedListValueId();
|
|
414
|
+
}
|
|
415
|
+
setClosedListValues() {
|
|
416
|
+
this.commonGraphqlRequestsService.getClosedLists([this.closedListName])
|
|
417
|
+
.subscribe((closedList) => {
|
|
418
|
+
this.closedListValues = closedList[0].optionalValues?.map(optionalValue => ({ name: optionalValue.displayName, id: optionalValue.id }));
|
|
419
|
+
this.handleClosedListValueId();
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
handleClosedListValueId() {
|
|
423
|
+
if (!this.closedListOptionalValueName) {
|
|
424
|
+
this.selectedClosedListOptionalValue = undefined;
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
this.selectedClosedListOptionalValue = { name: this.closedListOptionalValueName, id: this.closedListValues?.find(closedListValue => closedListValue.name === this.closedListOptionalValueName)?.id };
|
|
428
|
+
}
|
|
429
|
+
_selectedOptionEmitter(selectedClosedListValue) {
|
|
430
|
+
this.selectedClosedListValueEmitter.emit(selectedClosedListValue);
|
|
431
|
+
this.onChange(selectedClosedListValue);
|
|
432
|
+
}
|
|
433
|
+
_filterTextEmitter(text) {
|
|
434
|
+
this.filterTextEmitter.emit(text);
|
|
435
|
+
}
|
|
436
|
+
onChange = () => { };
|
|
437
|
+
onTouched = () => { };
|
|
438
|
+
writeValue(closedListOptionalValueName) {
|
|
439
|
+
if (!closedListOptionalValueName)
|
|
440
|
+
return;
|
|
441
|
+
this.closedListOptionalValueName = closedListOptionalValueName;
|
|
442
|
+
this.handleClosedListValueId();
|
|
443
|
+
}
|
|
444
|
+
registerOnChange(fn) {
|
|
445
|
+
this.onChange = fn;
|
|
446
|
+
}
|
|
447
|
+
registerOnTouched(fn) {
|
|
448
|
+
this.onTouched = fn;
|
|
449
|
+
}
|
|
450
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumClosedListSelectComponent, deps: [{ token: i1$2.CommonGraphqlRequestsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
451
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumClosedListSelectComponent, isStandalone: false, selector: "herum-closed-list-select", inputs: { closedListName: ["formControlName", "closedListName"], placeholder: "placeholder", closedListOptionalValueName: "closedListOptionalValueName", disabled: "disabled", isDropDownInPositionFixed: "isDropDownInPositionFixed", iconPath: "iconPath", isAutoComplete: "isAutoComplete", title: "title", size: "size", displayLoadingMode: "displayLoadingMode", isLoadingInput: "isLoadingInput", dropDownDirection: "dropDownDirection", filterPlaceholder: "filterPlaceholder" }, outputs: { selectedClosedListValueEmitter: "selectedClosedListValueEmitter", filterTextEmitter: "filterTextEmitter" }, providers: [CUSTOM_CLOSED_LIST_SELECT_CONTROL_VALUE_ACCESSOR], usesOnChanges: true, ngImport: i0, template: "<herum-select\r\n[options]=\"closedListValues\"\r\n[placeholder]=\"placeholder\"\r\n[selectedOption]=\"selectedClosedListOptionalValue\"\r\n[disabled]=\"disabled\"\r\n[isDropDownInPositionFixed]=\"isDropDownInPositionFixed\"\r\n[iconPath]=\"iconPath\"\r\n[isAutoComplete]=\"isAutoComplete\"\r\n[title]=\"title\"\r\n[size]=\"size\"\r\n[displayLoadingMode]=\"displayLoadingMode\"\r\n[isLoadingInput]=\"isLoadingInput\"\r\n[dropDownDirection]=\"dropDownDirection\"\r\n[filterPlaceholder]=\"filterPlaceholder\"\r\n(selectedOptionEmitter)=\"_selectedOptionEmitter($event)\"\r\n(filterTextEmitter)=\"_filterTextEmitter($event)\"\r\n>\r\n</herum-select>", dependencies: [{ kind: "component", type: i2$1.HerumSelectComponent, selector: "herum-select", inputs: ["options", "displayBy", "placeholder", "selectedOption", "disabled", "isDropDownInPositionFixed", "iconPath", "isAutoComplete", "title", "size", "displayLoadingMode", "isLoadingInput", "dropDownDirection", "filterPlaceholder", "debounceTime"], outputs: ["selectedOptionEmitter", "filterTextEmitter"] }] });
|
|
452
|
+
}
|
|
453
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumClosedListSelectComponent, decorators: [{
|
|
454
|
+
type: Component,
|
|
455
|
+
args: [{ standalone: false, selector: 'herum-closed-list-select', providers: [CUSTOM_CLOSED_LIST_SELECT_CONTROL_VALUE_ACCESSOR], template: "<herum-select\r\n[options]=\"closedListValues\"\r\n[placeholder]=\"placeholder\"\r\n[selectedOption]=\"selectedClosedListOptionalValue\"\r\n[disabled]=\"disabled\"\r\n[isDropDownInPositionFixed]=\"isDropDownInPositionFixed\"\r\n[iconPath]=\"iconPath\"\r\n[isAutoComplete]=\"isAutoComplete\"\r\n[title]=\"title\"\r\n[size]=\"size\"\r\n[displayLoadingMode]=\"displayLoadingMode\"\r\n[isLoadingInput]=\"isLoadingInput\"\r\n[dropDownDirection]=\"dropDownDirection\"\r\n[filterPlaceholder]=\"filterPlaceholder\"\r\n(selectedOptionEmitter)=\"_selectedOptionEmitter($event)\"\r\n(filterTextEmitter)=\"_filterTextEmitter($event)\"\r\n>\r\n</herum-select>" }]
|
|
456
|
+
}], ctorParameters: () => [{ type: i1$2.CommonGraphqlRequestsService }], propDecorators: { closedListName: [{
|
|
457
|
+
type: Input,
|
|
458
|
+
args: ['formControlName']
|
|
459
|
+
}], placeholder: [{
|
|
460
|
+
type: Input
|
|
461
|
+
}], closedListOptionalValueName: [{
|
|
462
|
+
type: Input
|
|
463
|
+
}], disabled: [{
|
|
464
|
+
type: Input
|
|
465
|
+
}], isDropDownInPositionFixed: [{
|
|
466
|
+
type: Input
|
|
467
|
+
}], iconPath: [{
|
|
468
|
+
type: Input
|
|
469
|
+
}], isAutoComplete: [{
|
|
470
|
+
type: Input
|
|
471
|
+
}], title: [{
|
|
472
|
+
type: Input
|
|
473
|
+
}], size: [{
|
|
474
|
+
type: Input
|
|
475
|
+
}], displayLoadingMode: [{
|
|
476
|
+
type: Input
|
|
477
|
+
}], isLoadingInput: [{
|
|
478
|
+
type: Input
|
|
479
|
+
}], dropDownDirection: [{
|
|
480
|
+
type: Input
|
|
481
|
+
}], filterPlaceholder: [{
|
|
482
|
+
type: Input
|
|
483
|
+
}], selectedClosedListValueEmitter: [{
|
|
484
|
+
type: Output
|
|
485
|
+
}], filterTextEmitter: [{
|
|
486
|
+
type: Output
|
|
487
|
+
}] } });
|
|
488
|
+
|
|
489
|
+
class HerumDateTimeInputComponent {
|
|
490
|
+
placeholder = '';
|
|
491
|
+
inputValue = '';
|
|
492
|
+
minDate;
|
|
493
|
+
showSeconds;
|
|
494
|
+
rangeMode;
|
|
495
|
+
dateChange = new EventEmitter();
|
|
496
|
+
timeChange = new EventEmitter();
|
|
497
|
+
disableChange = new EventEmitter();
|
|
498
|
+
errorMessage = '';
|
|
499
|
+
isValid = true;
|
|
500
|
+
debounceTime = 300;
|
|
501
|
+
ltrMode = true;
|
|
502
|
+
ngOnChanges(changes) {
|
|
503
|
+
if (changes['inputValue']?.currentValue)
|
|
504
|
+
this._valueChange(this.inputValue);
|
|
505
|
+
}
|
|
506
|
+
_valueChange(dateString) {
|
|
507
|
+
this.isValid = true;
|
|
508
|
+
if (this.rangeMode) {
|
|
509
|
+
this.handleDateRangeTimeRangeMode(dateString);
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
512
|
+
this.handleDateTimeMode(dateString);
|
|
513
|
+
}
|
|
514
|
+
handleDateRangeTimeRangeMode(dateString) {
|
|
515
|
+
const pattern = this.showSeconds ? regexExpressions.fullRangeDateTime : regexExpressions.rangeDateTimeWithoutSeconds;
|
|
516
|
+
this.isValid = this.patternValidation(dateString, pattern);
|
|
517
|
+
if (!this.isValid) {
|
|
518
|
+
this.disableChange.emit(true);
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
const splittedDate = dateString.split('-');
|
|
522
|
+
const startDateString = splittedDate[0];
|
|
523
|
+
const endDateString = splittedDate[1];
|
|
524
|
+
this.handleDateRangeTimeRangeValidations(startDateString, endDateString);
|
|
525
|
+
if (!this.isValid) {
|
|
526
|
+
this.disableChange.emit(true);
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
const startDate = this.createDateTime(startDateString).date;
|
|
530
|
+
const endDate = this.createDateTime(endDateString).date;
|
|
531
|
+
const dateRange = new DateRange(startDate, endDate);
|
|
532
|
+
this.dateChange.emit(dateRange);
|
|
533
|
+
this.disableChange.emit(false);
|
|
534
|
+
}
|
|
535
|
+
handleDateRangeTimeRangeValidations(startDateString, endDateString) {
|
|
536
|
+
this.isValid = this.timestampValidation(startDateString) && this.timestampValidation(endDateString) &&
|
|
537
|
+
this.minDateValidation(startDateString) && this.startEndDateValidation(startDateString, endDateString);
|
|
538
|
+
}
|
|
539
|
+
;
|
|
540
|
+
startEndDateValidation(startDateString, endDateString) {
|
|
541
|
+
const startDate = this.createDateTime(startDateString).date;
|
|
542
|
+
const endDate = this.createDateTime(endDateString).date;
|
|
543
|
+
const isStartEndDateValid = endDate.getTime() >= startDate.getTime();
|
|
544
|
+
if (!isStartEndDateValid)
|
|
545
|
+
this.errorMessage = startEndDateError;
|
|
546
|
+
return isStartEndDateValid;
|
|
547
|
+
}
|
|
548
|
+
handleDateTimeMode(dateString) {
|
|
549
|
+
this.handleDateTimeValidations(dateString);
|
|
550
|
+
if (!this.isValid) {
|
|
551
|
+
this.disableChange.emit(true);
|
|
552
|
+
return;
|
|
553
|
+
}
|
|
554
|
+
const { date, time } = this.createDateTime(dateString);
|
|
555
|
+
this.dateChange.emit(date);
|
|
556
|
+
this.timeChange.emit(time);
|
|
557
|
+
this.disableChange.emit(false);
|
|
558
|
+
}
|
|
559
|
+
createDateTime(dateString) {
|
|
560
|
+
const dateParts = dateString.split(' ');
|
|
561
|
+
const year = dateParts[0].split('/').reverse().join('-');
|
|
562
|
+
const time = dateParts[1];
|
|
563
|
+
const dateTime = `${year}T${time}`;
|
|
564
|
+
const date = new Date(dateTime);
|
|
565
|
+
return { date, time };
|
|
566
|
+
}
|
|
567
|
+
handleDateTimeValidations(value) {
|
|
568
|
+
const pattern = this.showSeconds ? regexExpressions.fullDateTime : regexExpressions.dateTimeWithoutSeconds;
|
|
569
|
+
this.isValid = this.patternValidation(value, pattern) && this.timestampValidation(value) && this.minDateValidation(value);
|
|
570
|
+
}
|
|
571
|
+
minDateValidation(value) {
|
|
572
|
+
if (!this.minDate)
|
|
573
|
+
return true;
|
|
574
|
+
const parts = value.split(' ');
|
|
575
|
+
const year = parts[0].split('/').reverse().join('-');
|
|
576
|
+
const isDateValid = new Date(year).getTime() >= this.minDate.getTime();
|
|
577
|
+
if (!isDateValid)
|
|
578
|
+
this.errorMessage = minDateError;
|
|
579
|
+
return isDateValid;
|
|
580
|
+
}
|
|
581
|
+
patternValidation(value, pattern) {
|
|
582
|
+
const isPatternValid = pattern.test(value);
|
|
583
|
+
if (!isPatternValid)
|
|
584
|
+
this.errorMessage = formatError + ' ' + this.placeholder;
|
|
585
|
+
return isPatternValid;
|
|
586
|
+
}
|
|
587
|
+
timestampValidation(date) {
|
|
588
|
+
const dateTimeParts = date.split(' ');
|
|
589
|
+
const timeParts = dateTimeParts[1].split(':');
|
|
590
|
+
const dateParts = dateTimeParts[0].split('/');
|
|
591
|
+
const year = parseInt(dateParts[2]);
|
|
592
|
+
const month = parseInt(dateParts[1]);
|
|
593
|
+
const day = parseInt(dateParts[0]);
|
|
594
|
+
const hours = parseInt(timeParts[0]);
|
|
595
|
+
const minutes = parseInt(timeParts[1]);
|
|
596
|
+
const seconds = timeParts[2] !== undefined ? parseInt(timeParts[2]) : 0;
|
|
597
|
+
const lastDayInMonth = new Date(year, month, 0).getDate();
|
|
598
|
+
const isValidDate = month >= 1 && month <= 12 && day >= 1 && day <= lastDayInMonth;
|
|
599
|
+
const isValidTime = hours >= 0 && hours <= 24 && minutes >= 0 && minutes <= 60 && seconds >= 0 && seconds <= 60;
|
|
600
|
+
if (!isValidDate || !isValidTime)
|
|
601
|
+
this.errorMessage = timestampError;
|
|
602
|
+
return isValidDate && isValidTime;
|
|
603
|
+
}
|
|
604
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumDateTimeInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
605
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumDateTimeInputComponent, isStandalone: false, selector: "herum-date-time-input", inputs: { placeholder: "placeholder", inputValue: "inputValue", minDate: "minDate", showSeconds: "showSeconds", rangeMode: "rangeMode" }, outputs: { dateChange: "dateChange", timeChange: "timeChange", disableChange: "disableChange" }, usesOnChanges: true, ngImport: i0, template: "<herum-input-field [placeholder]=\"placeholder\" [errorMsg]=\"errorMessage\" [isValid]=\"isValid\" [isBlurred]=\"true\"\r\n [inputValue]=\"inputValue\" [debounceTime]=\"debounceTime\" [ltrMode]=\"ltrMode\"\r\n (inputValueEmitter)=\"_valueChange($event)\">\r\n</herum-input-field>", dependencies: [{ kind: "component", type: i2$1.HerumInputFieldComponent, selector: "herum-input-field", inputs: ["type", "placeholder", "disabled", "isBlocked", "isValid", "errorMsg", "showErrorMsgGap", "inputValue", "isLoading", "id", "debounceTime", "minValue", "maxValue", "isBlurred", "touched", "ltrMode", "preventMacroKeysPressEvent"], outputs: ["inputValueEmitter"] }] });
|
|
606
|
+
}
|
|
607
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumDateTimeInputComponent, decorators: [{
|
|
608
|
+
type: Component,
|
|
609
|
+
args: [{ standalone: false, selector: 'herum-date-time-input', template: "<herum-input-field [placeholder]=\"placeholder\" [errorMsg]=\"errorMessage\" [isValid]=\"isValid\" [isBlurred]=\"true\"\r\n [inputValue]=\"inputValue\" [debounceTime]=\"debounceTime\" [ltrMode]=\"ltrMode\"\r\n (inputValueEmitter)=\"_valueChange($event)\">\r\n</herum-input-field>" }]
|
|
610
|
+
}], propDecorators: { placeholder: [{
|
|
611
|
+
type: Input
|
|
612
|
+
}], inputValue: [{
|
|
613
|
+
type: Input
|
|
614
|
+
}], minDate: [{
|
|
615
|
+
type: Input
|
|
616
|
+
}], showSeconds: [{
|
|
617
|
+
type: Input
|
|
618
|
+
}], rangeMode: [{
|
|
619
|
+
type: Input
|
|
620
|
+
}], dateChange: [{
|
|
621
|
+
type: Output
|
|
622
|
+
}], timeChange: [{
|
|
623
|
+
type: Output
|
|
624
|
+
}], disableChange: [{
|
|
625
|
+
type: Output
|
|
626
|
+
}] } });
|
|
627
|
+
|
|
628
|
+
class HerumDateTimePickerComponent {
|
|
629
|
+
elementRef;
|
|
630
|
+
showDatePicker = true;
|
|
631
|
+
showTimePicker = true;
|
|
632
|
+
showTimeSelect = false;
|
|
633
|
+
selectedTime;
|
|
634
|
+
selectedDate;
|
|
635
|
+
rangeMode = false;
|
|
636
|
+
minDate;
|
|
637
|
+
timePickerHoverColor = '';
|
|
638
|
+
timePickerActiveColor = '';
|
|
639
|
+
widthDatePicker = '';
|
|
640
|
+
heightTimePicker = '';
|
|
641
|
+
datePickerHoverColor = '';
|
|
642
|
+
datePickerActiveColor = '';
|
|
643
|
+
showSeconds = true;
|
|
644
|
+
timePickerItemSize = '39px';
|
|
645
|
+
timeChange = new EventEmitter();
|
|
646
|
+
dateChange = new EventEmitter();
|
|
647
|
+
hostElement;
|
|
648
|
+
constructor(elementRef) {
|
|
649
|
+
this.elementRef = elementRef;
|
|
650
|
+
this.hostElement = this.elementRef.nativeElement;
|
|
651
|
+
}
|
|
652
|
+
ngOnChanges(changes) {
|
|
653
|
+
if (this.hostElement) {
|
|
654
|
+
if (changes['widthDatePicker']?.currentValue)
|
|
655
|
+
this.hostElement.style.setProperty('--width-date-picker', this.widthDatePicker);
|
|
656
|
+
if (changes['heightTimePicker']?.currentValue)
|
|
657
|
+
this.hostElement.style.setProperty('--height-time-picker', this.heightTimePicker);
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
_timeChange(time) {
|
|
661
|
+
this.timeChange.emit(time);
|
|
662
|
+
}
|
|
663
|
+
_dateChange(date) {
|
|
664
|
+
this.dateChange.emit(date);
|
|
665
|
+
}
|
|
666
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumDateTimePickerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
667
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumDateTimePickerComponent, isStandalone: false, selector: "herum-date-time-picker", inputs: { showDatePicker: "showDatePicker", showTimePicker: "showTimePicker", showTimeSelect: "showTimeSelect", selectedTime: "selectedTime", selectedDate: "selectedDate", rangeMode: "rangeMode", minDate: "minDate", timePickerHoverColor: "timePickerHoverColor", timePickerActiveColor: "timePickerActiveColor", widthDatePicker: "widthDatePicker", heightTimePicker: "heightTimePicker", datePickerHoverColor: "datePickerHoverColor", datePickerActiveColor: "datePickerActiveColor", showSeconds: "showSeconds", timePickerItemSize: "timePickerItemSize" }, outputs: { timeChange: "timeChange", dateChange: "dateChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"date-time-picker\" [ngClass]=\"{'flex-column':showTimeSelect && rangeMode}\">\r\n <herum-date-picker *ngIf=\"showDatePicker\" [rangeMode]=\"rangeMode\" [minDate]=\"minDate\"\r\n [hoverColor]=\"datePickerHoverColor\" [activeColor]=\"datePickerActiveColor\" [selectedDate]=\"selectedDate\"\r\n (dateChange)=\"_dateChange($event)\"></herum-date-picker>\r\n\r\n <herum-time-picker *ngIf=\"showTimePicker\" [ngClass]=\"{'me-5':showDatePicker}\" [selectedTime]=\"selectedTime\"\r\n [showSeconds]=\"showSeconds\" [itemSize]=\"timePickerItemSize\" [hoverColor]=\"timePickerHoverColor\"\r\n [activeColor]=\"timePickerActiveColor\" (timeChange)=\"_timeChange($event)\"></herum-time-picker>\r\n</div>", styles: [":host{--width-date-picker: 320px;--height-time-picker: 325px}.date-time-picker{display:flex;justify-content:center}herum-date-picker{width:var(--width-date-picker)}herum-time-picker{height:var(--height-time-picker)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.HerumDatePickerComponent, selector: "herum-date-picker", inputs: ["activeColor", "hoverColor", "minDate", "rangeMode", "selectedDate"], outputs: ["dateChange"] }, { kind: "component", type: i2$1.HerumTimePickerComponent, selector: "herum-time-picker", inputs: ["activeColor", "hoverColor", "itemSize", "selectedTime", "showSeconds"], outputs: ["timeChange"] }] });
|
|
668
|
+
}
|
|
669
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumDateTimePickerComponent, decorators: [{
|
|
670
|
+
type: Component,
|
|
671
|
+
args: [{ standalone: false, selector: 'herum-date-time-picker', template: "<div class=\"date-time-picker\" [ngClass]=\"{'flex-column':showTimeSelect && rangeMode}\">\r\n <herum-date-picker *ngIf=\"showDatePicker\" [rangeMode]=\"rangeMode\" [minDate]=\"minDate\"\r\n [hoverColor]=\"datePickerHoverColor\" [activeColor]=\"datePickerActiveColor\" [selectedDate]=\"selectedDate\"\r\n (dateChange)=\"_dateChange($event)\"></herum-date-picker>\r\n\r\n <herum-time-picker *ngIf=\"showTimePicker\" [ngClass]=\"{'me-5':showDatePicker}\" [selectedTime]=\"selectedTime\"\r\n [showSeconds]=\"showSeconds\" [itemSize]=\"timePickerItemSize\" [hoverColor]=\"timePickerHoverColor\"\r\n [activeColor]=\"timePickerActiveColor\" (timeChange)=\"_timeChange($event)\"></herum-time-picker>\r\n</div>", styles: [":host{--width-date-picker: 320px;--height-time-picker: 325px}.date-time-picker{display:flex;justify-content:center}herum-date-picker{width:var(--width-date-picker)}herum-time-picker{height:var(--height-time-picker)}\n"] }]
|
|
672
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { showDatePicker: [{
|
|
673
|
+
type: Input
|
|
674
|
+
}], showTimePicker: [{
|
|
675
|
+
type: Input
|
|
676
|
+
}], showTimeSelect: [{
|
|
677
|
+
type: Input
|
|
678
|
+
}], selectedTime: [{
|
|
679
|
+
type: Input
|
|
680
|
+
}], selectedDate: [{
|
|
681
|
+
type: Input
|
|
682
|
+
}], rangeMode: [{
|
|
683
|
+
type: Input
|
|
684
|
+
}], minDate: [{
|
|
685
|
+
type: Input
|
|
686
|
+
}], timePickerHoverColor: [{
|
|
687
|
+
type: Input
|
|
688
|
+
}], timePickerActiveColor: [{
|
|
689
|
+
type: Input
|
|
690
|
+
}], widthDatePicker: [{
|
|
691
|
+
type: Input
|
|
692
|
+
}], heightTimePicker: [{
|
|
693
|
+
type: Input
|
|
694
|
+
}], datePickerHoverColor: [{
|
|
695
|
+
type: Input
|
|
696
|
+
}], datePickerActiveColor: [{
|
|
697
|
+
type: Input
|
|
698
|
+
}], showSeconds: [{
|
|
699
|
+
type: Input
|
|
700
|
+
}], timePickerItemSize: [{
|
|
701
|
+
type: Input
|
|
702
|
+
}], timeChange: [{
|
|
703
|
+
type: Output
|
|
704
|
+
}], dateChange: [{
|
|
705
|
+
type: Output
|
|
706
|
+
}] } });
|
|
707
|
+
|
|
708
|
+
const iconsFolderPath = 'assets/files-icons/';
|
|
709
|
+
const defaultFileIconPath = iconsFolderPath + 'generic-file.svg';
|
|
710
|
+
const requiredFieldMessage = 'חובה לעלות קובץ';
|
|
711
|
+
class HerumDropZoneComponent {
|
|
712
|
+
environmentConfig;
|
|
713
|
+
selectedFiles = [];
|
|
714
|
+
placeholder = 'העלה או גרור לכאן קובץ';
|
|
715
|
+
numberOfAllowedFiles = 1;
|
|
716
|
+
allowedFileTypes = [];
|
|
717
|
+
supportedFilesMimes = [];
|
|
718
|
+
supportedFilesTypes = [];
|
|
719
|
+
requiredField = false;
|
|
720
|
+
directionPreview = 'column';
|
|
721
|
+
type = 'column';
|
|
722
|
+
grow = false;
|
|
723
|
+
fillContainer = false;
|
|
724
|
+
uploadFileSvg = svgsStrings.greyUploadFile;
|
|
725
|
+
previewImageUrl;
|
|
726
|
+
allowToDeleteImage = true;
|
|
727
|
+
filesDataEvent = new EventEmitter();
|
|
728
|
+
fileInput;
|
|
729
|
+
filesList = [];
|
|
730
|
+
isLoading = false;
|
|
731
|
+
isDownloadInProgress = false;
|
|
732
|
+
hasExceededNumberOfAllowedFiles = false;
|
|
733
|
+
filesSuffixes = resourcesFilesSuffixes;
|
|
734
|
+
isValidUpload = true;
|
|
735
|
+
isSupportedFileType = true;
|
|
736
|
+
parsedAllowedFileTypes = '';
|
|
737
|
+
errorMessages = [
|
|
738
|
+
{ condition: () => !this.isSupportedFileType && this.isValidUpload, message: 'סוג הקובץ אינו נתמך' },
|
|
739
|
+
{ condition: () => !this.isValidUpload, message: 'סוג הקובץ אינו תקין' },
|
|
740
|
+
{
|
|
741
|
+
condition: () => this.hasExceededNumberOfAllowedFiles && this.numberOfAllowedFiles > 1,
|
|
742
|
+
message: `ניתן להעלות עד ${this.numberOfAllowedFiles} קבצים`
|
|
743
|
+
},
|
|
744
|
+
];
|
|
745
|
+
constructor(environmentConfig) {
|
|
746
|
+
this.environmentConfig = environmentConfig;
|
|
747
|
+
}
|
|
748
|
+
ngOnChanges(changes) {
|
|
749
|
+
if (changes['selectedFiles'] && Array.isArray(this.selectedFiles))
|
|
750
|
+
this.filesList = this.selectedFiles;
|
|
751
|
+
if (changes['requiredField'])
|
|
752
|
+
this.addOrRemoveRequiredFieldError();
|
|
753
|
+
if (changes['allowedFileTypes'])
|
|
754
|
+
this.parsedAllowedFileTypes = this.parseAllowedFileTypes(this.allowedFileTypes);
|
|
755
|
+
}
|
|
756
|
+
_onRemoveFile(index, event) {
|
|
757
|
+
event.stopPropagation();
|
|
758
|
+
this.filesList.splice(index, 1);
|
|
759
|
+
if (this.filesList.length <= this.numberOfAllowedFiles)
|
|
760
|
+
this.hasExceededNumberOfAllowedFiles = false;
|
|
761
|
+
this.filesDataEvent.emit(this.filesList);
|
|
762
|
+
}
|
|
763
|
+
_onRemoveImage() {
|
|
764
|
+
if (this.allowToDeleteImage) {
|
|
765
|
+
this.filesDataEvent.emit([]);
|
|
766
|
+
return;
|
|
767
|
+
}
|
|
768
|
+
this.fileInput.nativeElement.click();
|
|
769
|
+
}
|
|
770
|
+
_onUploadDroppedFiles(event) {
|
|
771
|
+
event.stopPropagation();
|
|
772
|
+
event.preventDefault();
|
|
773
|
+
const files = Array.from(event.dataTransfer.files);
|
|
774
|
+
this.uploadFiles(files);
|
|
775
|
+
}
|
|
776
|
+
_onPreventDefault(event) {
|
|
777
|
+
event.preventDefault();
|
|
778
|
+
}
|
|
779
|
+
_onDownloadMediaConvertor(event) {
|
|
780
|
+
event.stopPropagation();
|
|
781
|
+
}
|
|
782
|
+
_onUploadFiles(event) {
|
|
783
|
+
event.preventDefault();
|
|
784
|
+
const files = event.target.files;
|
|
785
|
+
if (!files.length)
|
|
786
|
+
return;
|
|
787
|
+
this.uploadFiles(Array.from(files));
|
|
788
|
+
}
|
|
789
|
+
_onClickFileInput() {
|
|
790
|
+
this.fileInput.nativeElement.click();
|
|
791
|
+
}
|
|
792
|
+
uploadFiles(files) {
|
|
793
|
+
if (this.allowedFileTypes?.length)
|
|
794
|
+
this.isValidUpload = this.filesTypeValidation(files);
|
|
795
|
+
if (this.supportedFilesMimes?.length)
|
|
796
|
+
this.isSupportedFileType = this.supportedFilesValidation(files);
|
|
797
|
+
if (!this.isValidUpload || !this.isSupportedFileType)
|
|
798
|
+
return;
|
|
799
|
+
this.isExceededFilesLength(files);
|
|
800
|
+
if (this.filesList.length === this.numberOfAllowedFiles && files.length < this.numberOfAllowedFiles)
|
|
801
|
+
this.filesList = [...files, ...this.filesList.slice(files.length)];
|
|
802
|
+
else if (files.length === this.numberOfAllowedFiles)
|
|
803
|
+
this.filesList = files;
|
|
804
|
+
else if (files.length > this.numberOfAllowedFiles) {
|
|
805
|
+
this.filesList = [];
|
|
806
|
+
this.filesList.push(...files.slice(0, this.numberOfAllowedFiles));
|
|
807
|
+
}
|
|
808
|
+
else
|
|
809
|
+
files.forEach((file) => this.filesList.push(file));
|
|
810
|
+
this.filesDataEvent.emit(this.filesList);
|
|
811
|
+
}
|
|
812
|
+
supportedFilesValidation(files) {
|
|
813
|
+
return files.some((file) => this.supportedFilesMimes.some(supportedFileType => file.type.includes(supportedFileType)));
|
|
814
|
+
}
|
|
815
|
+
filesTypeValidation(files) {
|
|
816
|
+
if (files.some((file) => file.type === '' || file.type === undefined))
|
|
817
|
+
return false;
|
|
818
|
+
return files.some((file) => this.allowedFileTypes.some((splitFileType) => file.type.includes(splitFileType)));
|
|
819
|
+
}
|
|
820
|
+
isExceededFilesLength(files) {
|
|
821
|
+
if (files.length + this.filesList.length > this.numberOfAllowedFiles)
|
|
822
|
+
this.hasExceededNumberOfAllowedFiles = true;
|
|
823
|
+
else
|
|
824
|
+
this.hasExceededNumberOfAllowedFiles = false;
|
|
825
|
+
}
|
|
826
|
+
getIconPath(file) {
|
|
827
|
+
let filePath = '';
|
|
828
|
+
const uploadedFileSuffix = '.' + file?.name.split('.').pop();
|
|
829
|
+
Object.values(resourcesFilesSuffixes).forEach(fileSuffix => {
|
|
830
|
+
if (fileSuffix === uploadedFileSuffix)
|
|
831
|
+
filePath = iconsFolderPath + fileSuffix + '.svg';
|
|
832
|
+
});
|
|
833
|
+
for (const [fileSuffixKey, fileSuffixValue] of Object.entries(filesSuffixes))
|
|
834
|
+
if (fileSuffixValue.includes(uploadedFileSuffix.slice(1)))
|
|
835
|
+
filePath = iconsFolderPath + '.' + fileSuffixKey + '.svg';
|
|
836
|
+
return filePath ? filePath : defaultFileIconPath;
|
|
837
|
+
}
|
|
838
|
+
get convertorMediaPath() {
|
|
839
|
+
return `${this.environmentConfig?.environment?.s3ServerPath}${this.environmentConfig?.buckets?.GeneralFiles}XMediaRecode.exe`;
|
|
840
|
+
}
|
|
841
|
+
parseAllowedFileTypes(allowedFileTypes) {
|
|
842
|
+
if (!allowedFileTypes || !allowedFileTypes?.length)
|
|
843
|
+
return '';
|
|
844
|
+
return allowedFileTypes.map(allowedFileType => allowedFileType + anySubFileTypeWildCard).join(', ');
|
|
845
|
+
}
|
|
846
|
+
addOrRemoveRequiredFieldError() {
|
|
847
|
+
if (this.requiredField) {
|
|
848
|
+
this.errorMessages.push({
|
|
849
|
+
condition: () => !this.filesList.length,
|
|
850
|
+
message: requiredFieldMessage
|
|
851
|
+
});
|
|
852
|
+
return;
|
|
853
|
+
}
|
|
854
|
+
this.errorMessages = this.errorMessages.filter(errorMessage => errorMessage.message !== requiredFieldMessage);
|
|
855
|
+
}
|
|
856
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumDropZoneComponent, deps: [{ token: HERUM_SHARED_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
857
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumDropZoneComponent, isStandalone: false, selector: "herum-drop-zone", inputs: { selectedFiles: "selectedFiles", placeholder: "placeholder", numberOfAllowedFiles: "numberOfAllowedFiles", allowedFileTypes: "allowedFileTypes", supportedFilesMimes: "supportedFilesMimes", supportedFilesTypes: "supportedFilesTypes", requiredField: "requiredField", directionPreview: "directionPreview", type: "type", grow: "grow", fillContainer: "fillContainer", uploadFileSvg: "uploadFileSvg", previewImageUrl: "previewImageUrl", allowToDeleteImage: "allowToDeleteImage" }, outputs: { filesDataEvent: "filesDataEvent" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<button class=\"dropzone\" [class.not-displayed]=\"previewImageUrl\" [class.fill-container]=\"fillContainer\"\r\n [style.height]=\"grow ? '100%' : ''\" (drop)=\"_onUploadDroppedFiles($event)\" (click)=\"_onClickFileInput()\"\r\n (dragover)=\"_onPreventDefault($event)\">\r\n <div svgOnHover class=\"dropzone-content upload-file-border\" [style.height]=\"grow ? '100%' : '130px'\"\r\n [ngClass]=\"{'row-dropzone':type=='row'}\"\r\n [ngStyle]=\"{'justify-content': (filesList?.length || type == 'row') ? 'start' : 'center'}\">\r\n <div class=\"center-icon\" [ngClass]=\"{'upload-file-row-preview':directionPreview==='row' }\"\r\n *ngIf=\"!filesList?.length\">\r\n <span class=\"upload-file-image mb-2\" [style.height]=\"grow ? '60px' : ''\" [style.width]=\"grow ? '60px' : ''\"\r\n [innerHTML]=\"uploadFileSvg | safeHtml\">\r\n </span>\r\n\r\n <div class=\"dropzone-text\" [style.fontSize]=\"grow ? 'large' : ''\"> {{ placeholder }} </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"filesList?.length > 0\">\r\n <div class=\"files-container\" *ngFor=\"let file of filesList; index as i\">\r\n <img [src]=\"getIconPath(file)\" alt=\"#{{i+1}} picture\" />\r\n\r\n <span class=\"file-name truncate\"> {{ file?.name }}</span>\r\n\r\n <div class=\"delete-container\" (click)=\"_onRemoveFile(i, $event)\">\r\n <img class=\"delete-button\" src=\"assets/general/secondary-x.svg\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let error of errorMessages\">\r\n <span *ngIf=\"error.condition()\" class=\"error-msg\"\r\n [matTooltip]=\"!isSupportedFileType ? '\u05E1\u05D5\u05D2\u05D9 \u05D4\u05E7\u05D1\u05E6\u05D9\u05DD \u05D4\u05E0\u05EA\u05DE\u05DB\u05D9\u05DD: ' + supportedFilesTypes : ''\">\r\n {{ error.message }}\r\n </span>\r\n </div>\r\n\r\n <span (click)=\"$event.stopPropagation()\">\r\n <herum-download-file *ngIf=\"!isSupportedFileType\" [filePath]=\"convertorMediaPath\"\r\n linkText=\"\u05DC\u05D4\u05D5\u05E8\u05D3\u05D4 \u05EA\u05D5\u05DB\u05E0\u05EA \u05D4\u05DE\u05E8\u05EA \u05DE\u05D3\u05D9\u05D4\">\r\n </herum-download-file>\r\n </span>\r\n </div>\r\n</button>\r\n\r\n<div *ngIf=\"previewImageUrl\" class=\"preview-wrapper\">\r\n <div class=\"image-container\">\r\n <img [src]=\"previewImageUrl\" alt=\"Preview\" class=\"preview-image\">\r\n\r\n <button type=\"button\" class=\"remove-btn\" aria-label=\"Remove image\" (click)=\"_onRemoveImage()\">\r\n <img class=\"remove-icon\" src=\"assets/general/secondary-x.svg\" alt=Remove />\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<input #fileInput class=\"d-none\" type=\"file\" [accept]=\"parsedAllowedFileTypes\" (change)=\"_onUploadFiles($event)\"\r\n multiple>", styles: [":host{--close-button-size: 12px;display:flex}.dropzone{display:flex;align-items:center;flex-direction:column;overflow-y:auto;flex:1;border:none;background-color:transparent}.dropzone .dropzone-content{width:100%;display:flex;height:100%;justify-content:center;flex-direction:column;align-items:center}.row-dropzone{display:flex;align-items:center;flex-direction:row!important;gap:8px!important;height:unset!important;padding:8px!important}.upload-file-row-preview{display:flex;gap:8px}.center-icon{align-items:center;display:flex;justify-content:center;flex-direction:column}.dropzone-content:hover{background:var(--item-hover-color);border-color:var(--secondary-color)}.dropzone-content:active{transform:scale(.96)}.dropzone-text{text-align:center}.files-container{display:flex;padding-block-start:10px;gap:10px;width:95%;height:50px;padding:5px;align-items:center}.file-name{width:90%;line-height:1}.delete-container{display:flex;align-items:center;height:100%;width:24px;z-index:3}.delete-button{height:12px;width:12px;position:relative}.upload-file-image{display:flex;align-items:center;justify-content:center;cursor:pointer}.fill-container,.fill-container .dropzone-content{height:100%!important}.not-displayed{display:none}.preview-wrapper{display:inline-block;height:100%;width:100%}.preview-wrapper .image-container{position:relative;display:inline-block;height:100%;width:100%}.preview-wrapper .image-container .preview-image{width:100%;height:100%;border-radius:var(--upload-file-border-radius);object-fit:cover;display:block;position:relative;transition:filter .4s ease}.preview-wrapper .image-container .remove-btn{position:absolute;top:8px;left:8px;background:var(--dark-overlay);border:none;width:var(--close-button-size);height:var(--close-button-size);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.8;transition:opacity .2s ease}.preview-wrapper .image-container .remove-btn:hover{opacity:1}.preview-wrapper .image-container .remove-btn .remove-icon{height:var(--close-button-size);width:var(--close-button-size);filter:brightness(0) invert(1)}.preview-wrapper .image-container:hover .preview-image{filter:brightness(50%)}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i2$1.HerumDownloadFileComponent, selector: "herum-download-file", inputs: ["fileId", "filePath", "linkText"], outputs: ["downloadFile"] }, { kind: "pipe", type: i5.SafeHtmlPipe, name: "safeHtml" }] });
|
|
858
|
+
}
|
|
859
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumDropZoneComponent, decorators: [{
|
|
860
|
+
type: Component,
|
|
861
|
+
args: [{ standalone: false, selector: 'herum-drop-zone', template: "<button class=\"dropzone\" [class.not-displayed]=\"previewImageUrl\" [class.fill-container]=\"fillContainer\"\r\n [style.height]=\"grow ? '100%' : ''\" (drop)=\"_onUploadDroppedFiles($event)\" (click)=\"_onClickFileInput()\"\r\n (dragover)=\"_onPreventDefault($event)\">\r\n <div svgOnHover class=\"dropzone-content upload-file-border\" [style.height]=\"grow ? '100%' : '130px'\"\r\n [ngClass]=\"{'row-dropzone':type=='row'}\"\r\n [ngStyle]=\"{'justify-content': (filesList?.length || type == 'row') ? 'start' : 'center'}\">\r\n <div class=\"center-icon\" [ngClass]=\"{'upload-file-row-preview':directionPreview==='row' }\"\r\n *ngIf=\"!filesList?.length\">\r\n <span class=\"upload-file-image mb-2\" [style.height]=\"grow ? '60px' : ''\" [style.width]=\"grow ? '60px' : ''\"\r\n [innerHTML]=\"uploadFileSvg | safeHtml\">\r\n </span>\r\n\r\n <div class=\"dropzone-text\" [style.fontSize]=\"grow ? 'large' : ''\"> {{ placeholder }} </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"filesList?.length > 0\">\r\n <div class=\"files-container\" *ngFor=\"let file of filesList; index as i\">\r\n <img [src]=\"getIconPath(file)\" alt=\"#{{i+1}} picture\" />\r\n\r\n <span class=\"file-name truncate\"> {{ file?.name }}</span>\r\n\r\n <div class=\"delete-container\" (click)=\"_onRemoveFile(i, $event)\">\r\n <img class=\"delete-button\" src=\"assets/general/secondary-x.svg\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let error of errorMessages\">\r\n <span *ngIf=\"error.condition()\" class=\"error-msg\"\r\n [matTooltip]=\"!isSupportedFileType ? '\u05E1\u05D5\u05D2\u05D9 \u05D4\u05E7\u05D1\u05E6\u05D9\u05DD \u05D4\u05E0\u05EA\u05DE\u05DB\u05D9\u05DD: ' + supportedFilesTypes : ''\">\r\n {{ error.message }}\r\n </span>\r\n </div>\r\n\r\n <span (click)=\"$event.stopPropagation()\">\r\n <herum-download-file *ngIf=\"!isSupportedFileType\" [filePath]=\"convertorMediaPath\"\r\n linkText=\"\u05DC\u05D4\u05D5\u05E8\u05D3\u05D4 \u05EA\u05D5\u05DB\u05E0\u05EA \u05D4\u05DE\u05E8\u05EA \u05DE\u05D3\u05D9\u05D4\">\r\n </herum-download-file>\r\n </span>\r\n </div>\r\n</button>\r\n\r\n<div *ngIf=\"previewImageUrl\" class=\"preview-wrapper\">\r\n <div class=\"image-container\">\r\n <img [src]=\"previewImageUrl\" alt=\"Preview\" class=\"preview-image\">\r\n\r\n <button type=\"button\" class=\"remove-btn\" aria-label=\"Remove image\" (click)=\"_onRemoveImage()\">\r\n <img class=\"remove-icon\" src=\"assets/general/secondary-x.svg\" alt=Remove />\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<input #fileInput class=\"d-none\" type=\"file\" [accept]=\"parsedAllowedFileTypes\" (change)=\"_onUploadFiles($event)\"\r\n multiple>", styles: [":host{--close-button-size: 12px;display:flex}.dropzone{display:flex;align-items:center;flex-direction:column;overflow-y:auto;flex:1;border:none;background-color:transparent}.dropzone .dropzone-content{width:100%;display:flex;height:100%;justify-content:center;flex-direction:column;align-items:center}.row-dropzone{display:flex;align-items:center;flex-direction:row!important;gap:8px!important;height:unset!important;padding:8px!important}.upload-file-row-preview{display:flex;gap:8px}.center-icon{align-items:center;display:flex;justify-content:center;flex-direction:column}.dropzone-content:hover{background:var(--item-hover-color);border-color:var(--secondary-color)}.dropzone-content:active{transform:scale(.96)}.dropzone-text{text-align:center}.files-container{display:flex;padding-block-start:10px;gap:10px;width:95%;height:50px;padding:5px;align-items:center}.file-name{width:90%;line-height:1}.delete-container{display:flex;align-items:center;height:100%;width:24px;z-index:3}.delete-button{height:12px;width:12px;position:relative}.upload-file-image{display:flex;align-items:center;justify-content:center;cursor:pointer}.fill-container,.fill-container .dropzone-content{height:100%!important}.not-displayed{display:none}.preview-wrapper{display:inline-block;height:100%;width:100%}.preview-wrapper .image-container{position:relative;display:inline-block;height:100%;width:100%}.preview-wrapper .image-container .preview-image{width:100%;height:100%;border-radius:var(--upload-file-border-radius);object-fit:cover;display:block;position:relative;transition:filter .4s ease}.preview-wrapper .image-container .remove-btn{position:absolute;top:8px;left:8px;background:var(--dark-overlay);border:none;width:var(--close-button-size);height:var(--close-button-size);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.8;transition:opacity .2s ease}.preview-wrapper .image-container .remove-btn:hover{opacity:1}.preview-wrapper .image-container .remove-btn .remove-icon{height:var(--close-button-size);width:var(--close-button-size);filter:brightness(0) invert(1)}.preview-wrapper .image-container:hover .preview-image{filter:brightness(50%)}\n"] }]
|
|
862
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
863
|
+
type: Inject,
|
|
864
|
+
args: [HERUM_SHARED_CONFIG_TOKEN]
|
|
865
|
+
}] }], propDecorators: { selectedFiles: [{
|
|
866
|
+
type: Input
|
|
867
|
+
}], placeholder: [{
|
|
868
|
+
type: Input
|
|
869
|
+
}], numberOfAllowedFiles: [{
|
|
870
|
+
type: Input
|
|
871
|
+
}], allowedFileTypes: [{
|
|
872
|
+
type: Input
|
|
873
|
+
}], supportedFilesMimes: [{
|
|
874
|
+
type: Input
|
|
875
|
+
}], supportedFilesTypes: [{
|
|
876
|
+
type: Input
|
|
877
|
+
}], requiredField: [{
|
|
878
|
+
type: Input
|
|
879
|
+
}], directionPreview: [{
|
|
880
|
+
type: Input
|
|
881
|
+
}], type: [{
|
|
882
|
+
type: Input
|
|
883
|
+
}], grow: [{
|
|
884
|
+
type: Input
|
|
885
|
+
}], fillContainer: [{
|
|
886
|
+
type: Input
|
|
887
|
+
}], uploadFileSvg: [{
|
|
888
|
+
type: Input
|
|
889
|
+
}], previewImageUrl: [{
|
|
890
|
+
type: Input
|
|
891
|
+
}], allowToDeleteImage: [{
|
|
892
|
+
type: Input
|
|
893
|
+
}], filesDataEvent: [{
|
|
894
|
+
type: Output
|
|
895
|
+
}], fileInput: [{
|
|
896
|
+
type: ViewChild,
|
|
897
|
+
args: ['fileInput']
|
|
898
|
+
}] } });
|
|
899
|
+
|
|
900
|
+
class HerumExpendablePanelComponent {
|
|
901
|
+
title;
|
|
902
|
+
isBoldTitle = false;
|
|
903
|
+
isContentDisplayed = true;
|
|
904
|
+
_onToggleContentDisplay(event) {
|
|
905
|
+
event.stopPropagation();
|
|
906
|
+
this.isContentDisplayed = !this.isContentDisplayed;
|
|
907
|
+
}
|
|
908
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumExpendablePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
909
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumExpendablePanelComponent, isStandalone: false, selector: "herum-expendable-panel", inputs: { title: "title", isBoldTitle: "isBoldTitle" }, ngImport: i0, template: "<div class=\"collection-priority-expendable-panel-container\">\r\n <p class=\"expendable-panel-title m-0\"\r\n [ngClass]=\"{'displayed': isContentDisplayed, 'not-displayed': !isContentDisplayed,'bold': isBoldTitle}\"\r\n (click)=\"_onToggleContentDisplay($event)\">\r\n {{title}}\r\n </p>\r\n\r\n <ng-content *ngIf=\"isContentDisplayed\"></ng-content>\r\n</div>", styles: [".collection-priority-expendable-panel-container{position:relative;display:flex;flex-direction:column;gap:4px;margin-block:12px}.expendable-panel-title{padding-right:30px;color:#000;font-size:var(--standard-font-size);cursor:pointer}.collection-priority-expendable-panel-container .expendable-panel-title:before{position:absolute;display:inline-block;width:8px;height:8px;right:12px;border-top:2px solid var(--icons-color);border-right:2px solid var(--icons-color);transform-origin:center;transition:transform .3s ease}.not-displayed:before{content:\"\";top:5px;transform:rotate(225deg)}.displayed:before{content:\"\";top:3px;transform:rotate(135deg)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
910
|
+
}
|
|
911
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumExpendablePanelComponent, decorators: [{
|
|
912
|
+
type: Component,
|
|
913
|
+
args: [{ standalone: false, selector: 'herum-expendable-panel', template: "<div class=\"collection-priority-expendable-panel-container\">\r\n <p class=\"expendable-panel-title m-0\"\r\n [ngClass]=\"{'displayed': isContentDisplayed, 'not-displayed': !isContentDisplayed,'bold': isBoldTitle}\"\r\n (click)=\"_onToggleContentDisplay($event)\">\r\n {{title}}\r\n </p>\r\n\r\n <ng-content *ngIf=\"isContentDisplayed\"></ng-content>\r\n</div>", styles: [".collection-priority-expendable-panel-container{position:relative;display:flex;flex-direction:column;gap:4px;margin-block:12px}.expendable-panel-title{padding-right:30px;color:#000;font-size:var(--standard-font-size);cursor:pointer}.collection-priority-expendable-panel-container .expendable-panel-title:before{position:absolute;display:inline-block;width:8px;height:8px;right:12px;border-top:2px solid var(--icons-color);border-right:2px solid var(--icons-color);transform-origin:center;transition:transform .3s ease}.not-displayed:before{content:\"\";top:5px;transform:rotate(225deg)}.displayed:before{content:\"\";top:3px;transform:rotate(135deg)}\n"] }]
|
|
914
|
+
}], propDecorators: { title: [{
|
|
915
|
+
type: Input
|
|
916
|
+
}], isBoldTitle: [{
|
|
917
|
+
type: Input
|
|
918
|
+
}] } });
|
|
919
|
+
|
|
920
|
+
class HerumFilesViewerComponent {
|
|
921
|
+
environmentConfig;
|
|
922
|
+
fileData;
|
|
923
|
+
showDeleteFileButton = false;
|
|
924
|
+
downloadFile = new EventEmitter();
|
|
925
|
+
deleteFile = new EventEmitter();
|
|
926
|
+
srcPath;
|
|
927
|
+
fileType;
|
|
928
|
+
constructor(environmentConfig) {
|
|
929
|
+
this.environmentConfig = environmentConfig;
|
|
930
|
+
}
|
|
931
|
+
ngOnChanges(changes) {
|
|
932
|
+
if (changes['fileData']?.currentValue) {
|
|
933
|
+
const fileToDisplay = this.fileData.file?.size === 0;
|
|
934
|
+
if (this.fileData.file && !fileToDisplay) {
|
|
935
|
+
const type = this.fileData.file.type;
|
|
936
|
+
const typeIndex = type.includes('pdf') ? 1 : 0;
|
|
937
|
+
this.fileType = type.split("/")[typeIndex];
|
|
938
|
+
this.srcPath = URL.createObjectURL(this.fileData.file);
|
|
939
|
+
return;
|
|
940
|
+
}
|
|
941
|
+
const type = this.fileData.type;
|
|
942
|
+
const typeIndex = type?.includes('pdf') ? 1 : 0;
|
|
943
|
+
this.fileType = type?.split("/")[typeIndex];
|
|
944
|
+
this.srcPath = this.environmentConfig?.environment?.s3ServerPath + this.fileData.bucket + "/" + this.fileData.key;
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
_onDeleteFile() {
|
|
948
|
+
this.deleteFile.emit(this.fileData);
|
|
949
|
+
}
|
|
950
|
+
_downloadFile() {
|
|
951
|
+
this.downloadFile.emit(this.fileData);
|
|
952
|
+
}
|
|
953
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumFilesViewerComponent, deps: [{ token: HERUM_SHARED_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
954
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumFilesViewerComponent, isStandalone: false, selector: "herum-files-viewer", inputs: { fileData: "fileData", showDeleteFileButton: "showDeleteFileButton" }, outputs: { downloadFile: "downloadFile", deleteFile: "deleteFile" }, usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"fileType\">\r\n <div class=\"image-container\" *ngSwitchCase=\"'image'\">\r\n <img [style.background-image]=\"'url(' + srcPath + ')'\" [class.image-hover]=\"showDeleteFileButton\">\r\n </div>\r\n\r\n <herum-video-player *ngSwitchCase=\"'video'\" [srcPath]=\"srcPath\" [isResourceInWideMode]=\"true\"></herum-video-player>\r\n\r\n <herum-pdf-viewer *ngSwitchCase=\"'pdf'\" [srcPath]=\"srcPath\" [isResourceInWideMode]=\"true\"></herum-pdf-viewer>\r\n\r\n <herum-audio-player *ngSwitchCase=\"'audio'\" [id]=\"fileData.key\" [bucketName]=\"fileData.bucket\"\r\n [audioFile]=\"fileData.file\">\r\n </herum-audio-player>\r\n\r\n <herum-download-file *ngSwitchDefault linkText=\"\u05D4\u05E7\u05D5\u05D1\u05E5 \u05D0\u05D9\u05E0\u05D5 \u05E0\u05EA\u05DE\u05DA, \u05E0\u05D9\u05EA\u05DF \u05DC\u05D4\u05D5\u05E8\u05D3\u05D5\" (downloadFile)=\"_downloadFile()\">\r\n </herum-download-file>\r\n</ng-container>\r\n\r\n<button *ngIf=\"showDeleteFileButton\" class=\"delete-file-button\" (click)=\"_onDeleteFile()\">\r\n <img src=\"assets/general/secondary-x.svg\" />\r\n</button>", styles: [":host{flex:1;display:flex;position:relative}herum-video-player,herum-pdf-viewer,herum-audio-player,herum-download-file{flex:1}herum-video-player{display:flex}herum-download-file{display:flex;align-items:center;justify-content:center;background-color:var(--icons-color-light-2);border-radius:var(--border-radius);padding:var(--standard-padding)}.image-container{display:flex;flex:1;justify-content:center}.image-container img{background-repeat:no-repeat;background-size:cover;background-position:center;width:100%;height:100%;border-radius:var(--border-radius);filter:brightness(100%);transition:filter .5s ease}.image-container .image-hover:hover{filter:brightness(50%)}.delete-file-button{background-color:transparent;border:none;position:absolute;top:var(--standard-padding);left:var(--standard-padding)}.delete-file-button img{height:14px;filter:brightness(0) invert(1)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2$1.HerumDownloadFileComponent, selector: "herum-download-file", inputs: ["fileId", "filePath", "linkText"], outputs: ["downloadFile"] }] });
|
|
955
|
+
}
|
|
956
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumFilesViewerComponent, decorators: [{
|
|
957
|
+
type: Component,
|
|
958
|
+
args: [{ standalone: false, selector: 'herum-files-viewer', template: "<ng-container [ngSwitch]=\"fileType\">\r\n <div class=\"image-container\" *ngSwitchCase=\"'image'\">\r\n <img [style.background-image]=\"'url(' + srcPath + ')'\" [class.image-hover]=\"showDeleteFileButton\">\r\n </div>\r\n\r\n <herum-video-player *ngSwitchCase=\"'video'\" [srcPath]=\"srcPath\" [isResourceInWideMode]=\"true\"></herum-video-player>\r\n\r\n <herum-pdf-viewer *ngSwitchCase=\"'pdf'\" [srcPath]=\"srcPath\" [isResourceInWideMode]=\"true\"></herum-pdf-viewer>\r\n\r\n <herum-audio-player *ngSwitchCase=\"'audio'\" [id]=\"fileData.key\" [bucketName]=\"fileData.bucket\"\r\n [audioFile]=\"fileData.file\">\r\n </herum-audio-player>\r\n\r\n <herum-download-file *ngSwitchDefault linkText=\"\u05D4\u05E7\u05D5\u05D1\u05E5 \u05D0\u05D9\u05E0\u05D5 \u05E0\u05EA\u05DE\u05DA, \u05E0\u05D9\u05EA\u05DF \u05DC\u05D4\u05D5\u05E8\u05D3\u05D5\" (downloadFile)=\"_downloadFile()\">\r\n </herum-download-file>\r\n</ng-container>\r\n\r\n<button *ngIf=\"showDeleteFileButton\" class=\"delete-file-button\" (click)=\"_onDeleteFile()\">\r\n <img src=\"assets/general/secondary-x.svg\" />\r\n</button>", styles: [":host{flex:1;display:flex;position:relative}herum-video-player,herum-pdf-viewer,herum-audio-player,herum-download-file{flex:1}herum-video-player{display:flex}herum-download-file{display:flex;align-items:center;justify-content:center;background-color:var(--icons-color-light-2);border-radius:var(--border-radius);padding:var(--standard-padding)}.image-container{display:flex;flex:1;justify-content:center}.image-container img{background-repeat:no-repeat;background-size:cover;background-position:center;width:100%;height:100%;border-radius:var(--border-radius);filter:brightness(100%);transition:filter .5s ease}.image-container .image-hover:hover{filter:brightness(50%)}.delete-file-button{background-color:transparent;border:none;position:absolute;top:var(--standard-padding);left:var(--standard-padding)}.delete-file-button img{height:14px;filter:brightness(0) invert(1)}\n"] }]
|
|
959
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
960
|
+
type: Inject,
|
|
961
|
+
args: [HERUM_SHARED_CONFIG_TOKEN]
|
|
962
|
+
}] }], propDecorators: { fileData: [{
|
|
963
|
+
type: Input
|
|
964
|
+
}], showDeleteFileButton: [{
|
|
965
|
+
type: Input
|
|
966
|
+
}], downloadFile: [{
|
|
967
|
+
type: Output
|
|
968
|
+
}], deleteFile: [{
|
|
969
|
+
type: Output
|
|
970
|
+
}] } });
|
|
971
|
+
|
|
972
|
+
class HerumHierarchyTreeNodeComponent {
|
|
973
|
+
changeDetectorRef;
|
|
974
|
+
environmentConfig;
|
|
975
|
+
treeNodeData;
|
|
976
|
+
size = 'regular';
|
|
977
|
+
expandedMode = 'none';
|
|
978
|
+
showArrow = true;
|
|
979
|
+
showAssignmentsDetails = true;
|
|
980
|
+
nodeMenuItems = [];
|
|
981
|
+
onNodeSelected = new EventEmitter();
|
|
982
|
+
onMenuItemSelected = new EventEmitter();
|
|
983
|
+
onExpand = new EventEmitter();
|
|
984
|
+
isExpand = true;
|
|
985
|
+
constructor(changeDetectorRef, environmentConfig) {
|
|
986
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
987
|
+
this.environmentConfig = environmentConfig;
|
|
988
|
+
}
|
|
989
|
+
ngOnChanges(changes) {
|
|
990
|
+
if (changes['treeNodeData']?.currentValue)
|
|
991
|
+
this.changeDetectorRef.detectChanges();
|
|
992
|
+
}
|
|
993
|
+
_isTruncatedTitleElement(element) {
|
|
994
|
+
return isTruncatedTitleElement(element);
|
|
995
|
+
}
|
|
996
|
+
_onExpand() {
|
|
997
|
+
this.isExpand = !this.isExpand;
|
|
998
|
+
this.onExpand.emit(this.isExpand);
|
|
999
|
+
}
|
|
1000
|
+
_onNodeSelected() {
|
|
1001
|
+
this.onNodeSelected.emit(true);
|
|
1002
|
+
}
|
|
1003
|
+
_onMenuItemSelected(item) {
|
|
1004
|
+
item.additionalData = this.treeNodeData;
|
|
1005
|
+
this.onMenuItemSelected.emit(item);
|
|
1006
|
+
}
|
|
1007
|
+
get toRPActualAssignmentsDisplayText() {
|
|
1008
|
+
return 'תקנים בפועל';
|
|
1009
|
+
}
|
|
1010
|
+
get expectedAssignmentsDisplayText() {
|
|
1011
|
+
return 'פוטנציאל אג"תי';
|
|
1012
|
+
}
|
|
1013
|
+
get invalidAssignmentsDisplayText() {
|
|
1014
|
+
return 'תקנים אכ"אים';
|
|
1015
|
+
}
|
|
1016
|
+
get negativePercentage() {
|
|
1017
|
+
if (!this.showAssignmentsDetails)
|
|
1018
|
+
return 0;
|
|
1019
|
+
return (this.treeNodeData.totals?.invalidAssignments / this.treeNodeData.totals?.toRPExpectedAssignments) * 100;
|
|
1020
|
+
}
|
|
1021
|
+
get smallChevronSvg() {
|
|
1022
|
+
return svgsStrings.smallChevron;
|
|
1023
|
+
}
|
|
1024
|
+
get systemIdentifier() {
|
|
1025
|
+
return this.environmentConfig?.environment?.systemIdentifier;
|
|
1026
|
+
}
|
|
1027
|
+
get isHerum() {
|
|
1028
|
+
return this.environmentConfig?.environment?.systemIdentifier == system.herum;
|
|
1029
|
+
}
|
|
1030
|
+
get isHadracha() {
|
|
1031
|
+
return this.environmentConfig?.environment?.systemIdentifier == system.hadracha;
|
|
1032
|
+
}
|
|
1033
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumHierarchyTreeNodeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: HERUM_SHARED_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
1034
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumHierarchyTreeNodeComponent, isStandalone: false, selector: "herum-hierarchy-tree-node", inputs: { treeNodeData: "treeNodeData", size: "size", expandedMode: "expandedMode", showArrow: "showArrow", showAssignmentsDetails: "showAssignmentsDetails", nodeMenuItems: "nodeMenuItems" }, outputs: { onNodeSelected: "onNodeSelected", onMenuItemSelected: "onMenuItemSelected", onExpand: "onExpand" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"node-container\" [class]=\"systemIdentifier\" [id]=\"'tree-node-container-' + treeNodeData.id\"\r\n *ngIf=\"treeNodeData\" [ngClass]=\"treeNodeData.status + ' ' + size + ' ' + expandedMode\" #nodeTitle appHerumToolTip>\r\n <div class=\"decorative-line\"></div>\r\n\r\n <div class=\"menu-icon-container\" *ngIf=\"nodeMenuItems?.length > 0\">\r\n <img src=\"/assets/hadracha/general/menu-button.svg\" [matMenuTriggerFor]=\"menu\">\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item *ngFor=\"let nodeMenuItem of nodeMenuItems\"\r\n (click)=\"_onMenuItemSelected(nodeMenuItem)\">\r\n <img src=\"/assets/hadracha/structs/{{nodeMenuItem.iconName}}.svg\">\r\n {{ nodeMenuItem.displayText }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n\r\n <p #treeNodeDataTitle [id]=\"'tree-node-title-' + treeNodeData.id\"\r\n [matTooltip]=\"_isTruncatedTitleElement(nodeTitle) ? treeNodeData.title : ''\" (click)=\"_onNodeSelected()\">\r\n {{treeNodeData.title | ellipsis:treeNodeDataTitle }}\r\n </p>\r\n\r\n <p class=\"totals\" *ngIf=\"showAssignmentsDetails\">\r\n <ng-container *ngIf=\"isHerum\">\r\n <span [matTooltip]='toRPActualAssignmentsDisplayText'> {{this.treeNodeData.totals?.toRPActualAssignments}}\r\n </span> /\r\n <span [matTooltip]='expectedAssignmentsDisplayText'> {{this.treeNodeData.totals?.toRPExpectedAssignments}}\r\n </span>\r\n <span class=\"invalid-assignments\" [ngClass]=\"{'green':this.treeNodeData.totals?.invalidAssignments == 0}\"\r\n [matTooltip]='invalidAssignmentsDisplayText'>\r\n +{{this.treeNodeData.totals?.invalidAssignments}}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isHadracha\">\r\n <div class=\"total-value\">\r\n {{this.treeNodeData.totals.total}}\r\n </div>\r\n <p class=\"total-text\">\u05D7\u05E0\u05D9\u05DB\u05D9\u05DD</p>\r\n </ng-container>\r\n </p>\r\n\r\n <br *ngIf=\"!showAssignmentsDetails\">\r\n\r\n <div class=\"row\">\r\n <herum-progress-bar *ngIf=\"!isHadracha\" [percentage]=\"treeNodeData.percentage ? treeNodeData.percentage:0 \"\r\n [negativePercentage]=\"negativePercentage\" [type]=\"'solid'\" [size]=\"'tight'\">\r\n </herum-progress-bar>\r\n\r\n <span class=\"chevron\" *ngIf=\"showArrow\" [ngStyle]=\"{transform: isExpand ? 'rotate(180deg)' : 'none'}\"\r\n [innerHTML]=\"smallChevronSvg | safeHtml\" (click)=\"_onExpand()\">\r\n </span>\r\n </div>\r\n</div>", styles: [":host{border-radius:0 0 var(--border-radius) var(--border-radius)}.node-container{box-shadow:0 0 var(--box-shadow-blur) #00000029!important;display:flex;flex-direction:column;width:170px;gap:4px;padding:4px;border-radius:var(--border-radius);background-color:#fff}.node-container p{margin:0;font-weight:700;font-size:14px}.node-container .row{justify-content:center;align-items:center;position:relative}.node-container .row .chevron{position:absolute;bottom:-20px;background-color:#fff;border-radius:50%;box-shadow:0 0 var(--box-shadow-blur) #00000029!important;width:20px;cursor:pointer;height:20px;z-index:99;padding:1px;stroke:var(--icons-color)}.node-container .totals{font-size:12px;direction:ltr;margin-bottom:8px}.node-container .totals .invalid-assignments{color:var(--error-color);margin-left:8px}.competency-cluster-container{width:100%;display:flex;justify-content:center;align-items:center;padding-bottom:8px}.regular{width:170px}.small{width:140px!important}.close .row .chevron,.open .row .chevron{display:block}.d-flex{justify-content:space-between}.none .row .chevron{display:none}.high{border-top:4px solid var(--icons-color)}.medium{border-top:4px solid orange}.low{border-top:4px solid var(--error-color)}.green{color:var(--icons-color)!important}.decorative-line,.menu-icon-container{display:none}.mat-menu-item{font-family:heebo;font-size:14px;font-weight:400;color:var(--icons-color)}.mat-menu-item:not(:last-child){border-bottom:1px solid var(--divider-color)}::ng-deep .mat-menu-panel{border-radius:var(--border-radius)!important}::ng-deep .mat-menu-content{padding-top:0!important;padding-bottom:0!important}::ng-deep .mat-menu-content button{display:flex;align-items:center;gap:8px;height:36px}.hadracha:hover .menu-icon-container{display:block;height:10px;position:absolute;top:4px;left:12px;z-index:1}.hadracha:hover .menu-icon-container img{height:14px}.hadracha{border-top:none!important;border-radius:0 0 var(--border-radius) var(--border-radius);position:relative}.hadracha .decorative-line{display:block;width:100%;height:4px;background-color:var(--icons-color);border-radius:10px;position:absolute;top:-6px;left:0;z-index:1}.hadracha .totals{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0}.hadracha .totals .total-value{padding:4px;width:33px;height:33px;background-color:var(--icons-color-light-2);border-radius:var(--border-radius);display:flex;align-items:center;justify-content:center}.hadracha .totals p.total-text{font-size:12px;font-weight:400;text-align:center;margin:0}.hadracha .node-container:hover .totals .total-value{background-color:var(--divider-color)!important}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i2$1.HerumProgressBarComponent, selector: "herum-progress-bar", inputs: ["percentage", "invalidPercentage", "showPercentage", "percentagePosition", "type", "size", "color", "borderRadius", "total", "showBorder", "thickness"] }, { kind: "pipe", type: i5.SafeHtmlPipe, name: "safeHtml" }, { kind: "pipe", type: i5.EllipsisPipe, name: "ellipsis" }] });
|
|
1035
|
+
}
|
|
1036
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumHierarchyTreeNodeComponent, decorators: [{
|
|
1037
|
+
type: Component,
|
|
1038
|
+
args: [{ standalone: false, selector: 'herum-hierarchy-tree-node', template: "<div class=\"node-container\" [class]=\"systemIdentifier\" [id]=\"'tree-node-container-' + treeNodeData.id\"\r\n *ngIf=\"treeNodeData\" [ngClass]=\"treeNodeData.status + ' ' + size + ' ' + expandedMode\" #nodeTitle appHerumToolTip>\r\n <div class=\"decorative-line\"></div>\r\n\r\n <div class=\"menu-icon-container\" *ngIf=\"nodeMenuItems?.length > 0\">\r\n <img src=\"/assets/hadracha/general/menu-button.svg\" [matMenuTriggerFor]=\"menu\">\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item *ngFor=\"let nodeMenuItem of nodeMenuItems\"\r\n (click)=\"_onMenuItemSelected(nodeMenuItem)\">\r\n <img src=\"/assets/hadracha/structs/{{nodeMenuItem.iconName}}.svg\">\r\n {{ nodeMenuItem.displayText }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n\r\n <p #treeNodeDataTitle [id]=\"'tree-node-title-' + treeNodeData.id\"\r\n [matTooltip]=\"_isTruncatedTitleElement(nodeTitle) ? treeNodeData.title : ''\" (click)=\"_onNodeSelected()\">\r\n {{treeNodeData.title | ellipsis:treeNodeDataTitle }}\r\n </p>\r\n\r\n <p class=\"totals\" *ngIf=\"showAssignmentsDetails\">\r\n <ng-container *ngIf=\"isHerum\">\r\n <span [matTooltip]='toRPActualAssignmentsDisplayText'> {{this.treeNodeData.totals?.toRPActualAssignments}}\r\n </span> /\r\n <span [matTooltip]='expectedAssignmentsDisplayText'> {{this.treeNodeData.totals?.toRPExpectedAssignments}}\r\n </span>\r\n <span class=\"invalid-assignments\" [ngClass]=\"{'green':this.treeNodeData.totals?.invalidAssignments == 0}\"\r\n [matTooltip]='invalidAssignmentsDisplayText'>\r\n +{{this.treeNodeData.totals?.invalidAssignments}}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isHadracha\">\r\n <div class=\"total-value\">\r\n {{this.treeNodeData.totals.total}}\r\n </div>\r\n <p class=\"total-text\">\u05D7\u05E0\u05D9\u05DB\u05D9\u05DD</p>\r\n </ng-container>\r\n </p>\r\n\r\n <br *ngIf=\"!showAssignmentsDetails\">\r\n\r\n <div class=\"row\">\r\n <herum-progress-bar *ngIf=\"!isHadracha\" [percentage]=\"treeNodeData.percentage ? treeNodeData.percentage:0 \"\r\n [negativePercentage]=\"negativePercentage\" [type]=\"'solid'\" [size]=\"'tight'\">\r\n </herum-progress-bar>\r\n\r\n <span class=\"chevron\" *ngIf=\"showArrow\" [ngStyle]=\"{transform: isExpand ? 'rotate(180deg)' : 'none'}\"\r\n [innerHTML]=\"smallChevronSvg | safeHtml\" (click)=\"_onExpand()\">\r\n </span>\r\n </div>\r\n</div>", styles: [":host{border-radius:0 0 var(--border-radius) var(--border-radius)}.node-container{box-shadow:0 0 var(--box-shadow-blur) #00000029!important;display:flex;flex-direction:column;width:170px;gap:4px;padding:4px;border-radius:var(--border-radius);background-color:#fff}.node-container p{margin:0;font-weight:700;font-size:14px}.node-container .row{justify-content:center;align-items:center;position:relative}.node-container .row .chevron{position:absolute;bottom:-20px;background-color:#fff;border-radius:50%;box-shadow:0 0 var(--box-shadow-blur) #00000029!important;width:20px;cursor:pointer;height:20px;z-index:99;padding:1px;stroke:var(--icons-color)}.node-container .totals{font-size:12px;direction:ltr;margin-bottom:8px}.node-container .totals .invalid-assignments{color:var(--error-color);margin-left:8px}.competency-cluster-container{width:100%;display:flex;justify-content:center;align-items:center;padding-bottom:8px}.regular{width:170px}.small{width:140px!important}.close .row .chevron,.open .row .chevron{display:block}.d-flex{justify-content:space-between}.none .row .chevron{display:none}.high{border-top:4px solid var(--icons-color)}.medium{border-top:4px solid orange}.low{border-top:4px solid var(--error-color)}.green{color:var(--icons-color)!important}.decorative-line,.menu-icon-container{display:none}.mat-menu-item{font-family:heebo;font-size:14px;font-weight:400;color:var(--icons-color)}.mat-menu-item:not(:last-child){border-bottom:1px solid var(--divider-color)}::ng-deep .mat-menu-panel{border-radius:var(--border-radius)!important}::ng-deep .mat-menu-content{padding-top:0!important;padding-bottom:0!important}::ng-deep .mat-menu-content button{display:flex;align-items:center;gap:8px;height:36px}.hadracha:hover .menu-icon-container{display:block;height:10px;position:absolute;top:4px;left:12px;z-index:1}.hadracha:hover .menu-icon-container img{height:14px}.hadracha{border-top:none!important;border-radius:0 0 var(--border-radius) var(--border-radius);position:relative}.hadracha .decorative-line{display:block;width:100%;height:4px;background-color:var(--icons-color);border-radius:10px;position:absolute;top:-6px;left:0;z-index:1}.hadracha .totals{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0}.hadracha .totals .total-value{padding:4px;width:33px;height:33px;background-color:var(--icons-color-light-2);border-radius:var(--border-radius);display:flex;align-items:center;justify-content:center}.hadracha .totals p.total-text{font-size:12px;font-weight:400;text-align:center;margin:0}.hadracha .node-container:hover .totals .total-value{background-color:var(--divider-color)!important}\n"] }]
|
|
1039
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
1040
|
+
type: Inject,
|
|
1041
|
+
args: [HERUM_SHARED_CONFIG_TOKEN]
|
|
1042
|
+
}] }], propDecorators: { treeNodeData: [{
|
|
1043
|
+
type: Input
|
|
1044
|
+
}], size: [{
|
|
1045
|
+
type: Input
|
|
1046
|
+
}], expandedMode: [{
|
|
1047
|
+
type: Input
|
|
1048
|
+
}], showArrow: [{
|
|
1049
|
+
type: Input
|
|
1050
|
+
}], showAssignmentsDetails: [{
|
|
1051
|
+
type: Input
|
|
1052
|
+
}], nodeMenuItems: [{
|
|
1053
|
+
type: Input
|
|
1054
|
+
}], onNodeSelected: [{
|
|
1055
|
+
type: Output
|
|
1056
|
+
}], onMenuItemSelected: [{
|
|
1057
|
+
type: Output
|
|
1058
|
+
}], onExpand: [{
|
|
1059
|
+
type: Output
|
|
1060
|
+
}] } });
|
|
1061
|
+
|
|
1062
|
+
class HerumMultiProgressBarComponent {
|
|
1063
|
+
progressBarsSections;
|
|
1064
|
+
constructor() { }
|
|
1065
|
+
ngOnInit() {
|
|
1066
|
+
}
|
|
1067
|
+
getBorderRadius(sectionIndex, progressBarIndex) {
|
|
1068
|
+
if (this.progressBarsSections.length == 1 && this.progressBarsSections[0].progressBars.length == 1)
|
|
1069
|
+
return 'both';
|
|
1070
|
+
switch (sectionIndex) {
|
|
1071
|
+
case 0:
|
|
1072
|
+
return progressBarIndex == 0 ? 'left' : 'none';
|
|
1073
|
+
case this.progressBarsSections.length - 1:
|
|
1074
|
+
return progressBarIndex == this.progressBarsSections[sectionIndex].progressBars.length - 1 ? 'right' : 'none';
|
|
1075
|
+
default:
|
|
1076
|
+
return 'none';
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumMultiProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1080
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumMultiProgressBarComponent, isStandalone: false, selector: "herum-multi-progress-bar", inputs: { progressBarsSections: "progressBarsSections" }, ngImport: i0, template: "<div class=\"sections-bars-container\">\r\n <div class=\"progress-bars-container\" *ngFor=\"let section of progressBarsSections; let sectionIndex = index\"\r\n [ngStyle]=\"{'width':(section.percentage + '%')}\">\r\n <herum-progress-bar *ngFor=\"let progressBar of section.progressBars; let progressBarIndex = index\"\r\n [color]=\"progressBar.color\" [percentage]=\"progressBar.value\" [borderRadius]=\"getBorderRadius(sectionIndex,progressBarIndex)\"\r\n [ngStyle]=\"{'width':(progressBar.percentage + '%')}\"></herum-progress-bar>\r\n </div>\r\n</div>", styles: [".sections-bars-container,.sections-bars-container .progress-bars-container{display:flex;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$1.HerumProgressBarComponent, selector: "herum-progress-bar", inputs: ["percentage", "invalidPercentage", "showPercentage", "percentagePosition", "type", "size", "color", "borderRadius", "total", "showBorder", "thickness"] }] });
|
|
1081
|
+
}
|
|
1082
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumMultiProgressBarComponent, decorators: [{
|
|
1083
|
+
type: Component,
|
|
1084
|
+
args: [{ standalone: false, selector: 'herum-multi-progress-bar', template: "<div class=\"sections-bars-container\">\r\n <div class=\"progress-bars-container\" *ngFor=\"let section of progressBarsSections; let sectionIndex = index\"\r\n [ngStyle]=\"{'width':(section.percentage + '%')}\">\r\n <herum-progress-bar *ngFor=\"let progressBar of section.progressBars; let progressBarIndex = index\"\r\n [color]=\"progressBar.color\" [percentage]=\"progressBar.value\" [borderRadius]=\"getBorderRadius(sectionIndex,progressBarIndex)\"\r\n [ngStyle]=\"{'width':(progressBar.percentage + '%')}\"></herum-progress-bar>\r\n </div>\r\n</div>", styles: [".sections-bars-container,.sections-bars-container .progress-bars-container{display:flex;flex-direction:row-reverse}\n"] }]
|
|
1085
|
+
}], ctorParameters: () => [], propDecorators: { progressBarsSections: [{
|
|
1086
|
+
type: Input
|
|
1087
|
+
}] } });
|
|
1088
|
+
|
|
1089
|
+
class HerumNavigatorComponent {
|
|
1090
|
+
isFirstItem = false;
|
|
1091
|
+
isLastItem = false;
|
|
1092
|
+
nextButtonText = 'לשיעור הבא';
|
|
1093
|
+
previousButtonText = 'לשיעור הקודם';
|
|
1094
|
+
isNextButtonDisable = false;
|
|
1095
|
+
isBackButtonDisable = false;
|
|
1096
|
+
currentItemIndex;
|
|
1097
|
+
updatedItemIndex = new EventEmitter();
|
|
1098
|
+
_onPreviousItem(currentItemIndex) {
|
|
1099
|
+
this.updatedItemIndex.emit(--currentItemIndex);
|
|
1100
|
+
}
|
|
1101
|
+
_onNextItem(currentItemIndex) {
|
|
1102
|
+
this.updatedItemIndex.emit(++currentItemIndex);
|
|
1103
|
+
}
|
|
1104
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumNavigatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1105
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumNavigatorComponent, isStandalone: false, selector: "herum-navigator", inputs: { isFirstItem: "isFirstItem", isLastItem: "isLastItem", nextButtonText: "nextButtonText", previousButtonText: "previousButtonText", isNextButtonDisable: "isNextButtonDisable", isBackButtonDisable: "isBackButtonDisable", currentItemIndex: "currentItemIndex" }, outputs: { updatedItemIndex: "updatedItemIndex" }, ngImport: i0, template: "<div class=\"buttons-container\">\r\n <herum-button *ngIf=\"!isFirstItem\" [size]=\"'medium'\" [type]=\"'ghost'\" [disabled]=\"isBackButtonDisable\" id=\"prev\"\r\n (click)=\"_onPreviousItem(currentItemIndex)\">\r\n {{previousButtonText}}\r\n </herum-button>\r\n\r\n <herum-button *ngIf=\"!isLastItem\" [size]=\"'medium'\" [disabled]=\"isNextButtonDisable\" id=\"next\"\r\n (click)=\"_onNextItem(currentItemIndex)\">\r\n {{nextButtonText}}\r\n </herum-button>\r\n</div>", styles: [".buttons-container{display:flex;gap:10px;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.HerumButtonComponent, selector: "herum-button", inputs: ["type", "color", "size", "roundedCorners", "disabled", "isLoading", "name"] }] });
|
|
1106
|
+
}
|
|
1107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumNavigatorComponent, decorators: [{
|
|
1108
|
+
type: Component,
|
|
1109
|
+
args: [{ standalone: false, selector: 'herum-navigator', template: "<div class=\"buttons-container\">\r\n <herum-button *ngIf=\"!isFirstItem\" [size]=\"'medium'\" [type]=\"'ghost'\" [disabled]=\"isBackButtonDisable\" id=\"prev\"\r\n (click)=\"_onPreviousItem(currentItemIndex)\">\r\n {{previousButtonText}}\r\n </herum-button>\r\n\r\n <herum-button *ngIf=\"!isLastItem\" [size]=\"'medium'\" [disabled]=\"isNextButtonDisable\" id=\"next\"\r\n (click)=\"_onNextItem(currentItemIndex)\">\r\n {{nextButtonText}}\r\n </herum-button>\r\n</div>", styles: [".buttons-container{display:flex;gap:10px;justify-content:flex-end}\n"] }]
|
|
1110
|
+
}], propDecorators: { isFirstItem: [{
|
|
1111
|
+
type: Input
|
|
1112
|
+
}], isLastItem: [{
|
|
1113
|
+
type: Input
|
|
1114
|
+
}], nextButtonText: [{
|
|
1115
|
+
type: Input
|
|
1116
|
+
}], previousButtonText: [{
|
|
1117
|
+
type: Input
|
|
1118
|
+
}], isNextButtonDisable: [{
|
|
1119
|
+
type: Input
|
|
1120
|
+
}], isBackButtonDisable: [{
|
|
1121
|
+
type: Input
|
|
1122
|
+
}], currentItemIndex: [{
|
|
1123
|
+
type: Input
|
|
1124
|
+
}], updatedItemIndex: [{
|
|
1125
|
+
type: Output
|
|
1126
|
+
}] } });
|
|
1127
|
+
|
|
1128
|
+
class HerumStepNavigatorComponent {
|
|
1129
|
+
steps;
|
|
1130
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumStepNavigatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1131
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumStepNavigatorComponent, isStandalone: false, selector: "herum-step-navigator", inputs: { steps: "steps" }, ngImport: i0, template: "<div class=\"steps\">\r\n <div *ngFor=\"let step of steps\" class=\"stepper-item\"\r\n [ngClass]=\"{'completed-step': step.status === 0, 'active-step': step.status === 1}\">\r\n <herum-radio-button [options]=\"[{id:step.index, name:step.label}]\" [selectedOption]=\"step.index\"\r\n [isBlocked]=\"true\" [type]=\"step.status === 0 ? 'completed' : step.status === 2 ? 'disabled' :'checked'\">\r\n </herum-radio-button>\r\n </div>\r\n</div>", styles: [".steps{display:flex;gap:8px;position:relative}.steps .stepper-item{margin-block-end:8px;width:168px}.steps .stepper-item ::ng-deep herum-radio-button .option-name{font-size:14px}.steps .stepper-item ::ng-deep herum-radio-button .option-name[type=disabled]{color:var(--disabled-border-color)}.steps .stepper-item ::ng-deep herum-radio-button .option-name[type=completed]{color:var(--icons-color)}.steps .stepper-item ::ng-deep herum-radio-button .option-name[type=checked]{color:var(--secondary-color)}.steps .stepper-item ::ng-deep herum-radio-button .checked-border{border-color:var(--secondary-color)}.steps .stepper-item ::ng-deep herum-radio-button .checked-background{background-color:var(--secondary-color)}.steps .stepper-item ::ng-deep herum-radio-button .completed-background{background-color:var(--icons-color)}.steps .stepper-item ::ng-deep herum-radio-button .disabled-background{background:var(--disabled-border-color)}.steps .stepper-item ::ng-deep herum-radio-button .disabled-border{border-color:var(--disabled-border-color)}.steps .stepper-item:before{content:\"\";display:block;border:4px solid var(--disabled-border-color);border-radius:var(--border-radius);width:100%}.steps .stepper-item.completed-step:before{border-color:var(--icons-color)}.steps .stepper-item.active-step:before{border-color:var(--secondary-color)}\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: "component", type: i2$1.HerumRadioButtonComponent, selector: "herum-radio-button", inputs: ["options", "isValid", "errorMsg", "isVertical", "isBlocked", "type", "selectedOption", "additionalOptionsText", "showAdditionalOptionsText", "secondarySelectedOption"], outputs: ["selectOptionEmitter"] }] });
|
|
1132
|
+
}
|
|
1133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumStepNavigatorComponent, decorators: [{
|
|
1134
|
+
type: Component,
|
|
1135
|
+
args: [{ standalone: false, selector: 'herum-step-navigator', template: "<div class=\"steps\">\r\n <div *ngFor=\"let step of steps\" class=\"stepper-item\"\r\n [ngClass]=\"{'completed-step': step.status === 0, 'active-step': step.status === 1}\">\r\n <herum-radio-button [options]=\"[{id:step.index, name:step.label}]\" [selectedOption]=\"step.index\"\r\n [isBlocked]=\"true\" [type]=\"step.status === 0 ? 'completed' : step.status === 2 ? 'disabled' :'checked'\">\r\n </herum-radio-button>\r\n </div>\r\n</div>", styles: [".steps{display:flex;gap:8px;position:relative}.steps .stepper-item{margin-block-end:8px;width:168px}.steps .stepper-item ::ng-deep herum-radio-button .option-name{font-size:14px}.steps .stepper-item ::ng-deep herum-radio-button .option-name[type=disabled]{color:var(--disabled-border-color)}.steps .stepper-item ::ng-deep herum-radio-button .option-name[type=completed]{color:var(--icons-color)}.steps .stepper-item ::ng-deep herum-radio-button .option-name[type=checked]{color:var(--secondary-color)}.steps .stepper-item ::ng-deep herum-radio-button .checked-border{border-color:var(--secondary-color)}.steps .stepper-item ::ng-deep herum-radio-button .checked-background{background-color:var(--secondary-color)}.steps .stepper-item ::ng-deep herum-radio-button .completed-background{background-color:var(--icons-color)}.steps .stepper-item ::ng-deep herum-radio-button .disabled-background{background:var(--disabled-border-color)}.steps .stepper-item ::ng-deep herum-radio-button .disabled-border{border-color:var(--disabled-border-color)}.steps .stepper-item:before{content:\"\";display:block;border:4px solid var(--disabled-border-color);border-radius:var(--border-radius);width:100%}.steps .stepper-item.completed-step:before{border-color:var(--icons-color)}.steps .stepper-item.active-step:before{border-color:var(--secondary-color)}\n"] }]
|
|
1136
|
+
}], propDecorators: { steps: [{
|
|
1137
|
+
type: Input
|
|
1138
|
+
}] } });
|
|
1139
|
+
|
|
1140
|
+
class HerumStepperComponent {
|
|
1141
|
+
color = 'primary';
|
|
1142
|
+
useDymanicSize = false;
|
|
1143
|
+
steps = [
|
|
1144
|
+
{
|
|
1145
|
+
index: 1,
|
|
1146
|
+
label: "פרטים",
|
|
1147
|
+
status: StepStatus.Complete,
|
|
1148
|
+
},
|
|
1149
|
+
{
|
|
1150
|
+
index: 2,
|
|
1151
|
+
label: "שיוך מארזים",
|
|
1152
|
+
status: StepStatus.Complete,
|
|
1153
|
+
},
|
|
1154
|
+
{
|
|
1155
|
+
index: 1,
|
|
1156
|
+
label: "הנוכחי",
|
|
1157
|
+
status: StepStatus.Current,
|
|
1158
|
+
},
|
|
1159
|
+
{
|
|
1160
|
+
index: 1,
|
|
1161
|
+
label: "סיכום",
|
|
1162
|
+
status: StepStatus.Incomplete,
|
|
1163
|
+
}
|
|
1164
|
+
];
|
|
1165
|
+
current = this.steps.length;
|
|
1166
|
+
getStepItemStyle(index) {
|
|
1167
|
+
if (!this.useDymanicSize)
|
|
1168
|
+
return null;
|
|
1169
|
+
if (index > this.current)
|
|
1170
|
+
return { 'opacity': Math.max((1 - (index - this.current) / index) + 0.1, 1 - (index / this.steps.length)) };
|
|
1171
|
+
if (index < this.current)
|
|
1172
|
+
return { 'opacity': Math.max((index / this.current) + 0.1, (index / this.steps.length)) };
|
|
1173
|
+
}
|
|
1174
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1175
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumStepperComponent, isStandalone: false, selector: "herum-stepper", inputs: { color: "color", useDymanicSize: "useDymanicSize", steps: "steps", current: "current" }, ngImport: i0, template: "<div class=\"stepper-wrapper\" [ngStyle]=\"{'gap': color=='white' ? '24px' : '0', 'margin-bottom': color=='white' ? '0' : '20px'}\">\r\n <ng-container *ngFor=\"let step of steps; let i = index\">\r\n <ng-container *ngIf=\"!step.iconPath\">\r\n <ng-container [ngSwitch]=\"step.status\">\r\n <div *ngSwitchCase=\"0\" class=\"stepper-item completed\">\r\n <div class=\"step-counter\">\r\n <img src=\"assets/shared/icons/stepper/white-v.svg\" width=\"15px\" alt=\"checked\" />\r\n </div>\r\n <div class=\"step-name\">{{step.label}}</div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"1\" class=\"stepper-item active\">\r\n <div class=\"step-counter\">\r\n <div class=\"current-inner-circle\"></div>\r\n </div>\r\n <div class=\"step-name\">{{step.label}}</div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"2\" class=\"stepper-item\">\r\n <div class=\"step-counter\">\r\n <div class=\"current-inner-circle\"></div>\r\n </div>\r\n <div class=\"step-name\">{{step.label}}</div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"step.iconPath\">\r\n <div class=\"stepper-item white\" [ngStyle]=\"getStepItemStyle(i)\">\r\n <div class=\"step-counter\" [ngStyle]=\"{ 'transform': i == current ? 'scale(1.5)' : '' }\">\r\n <img [src]=\"step.iconPath\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</div>", styles: [".stepper-wrapper{margin-top:auto;display:flex;justify-content:space-between;margin-bottom:20px}.stepper-item{position:relative;display:flex;flex-direction:column;align-items:center;flex:1}@media (max-width: 768px){.stepper-item{font-size:12px}}.stepper-item:before{position:absolute;content:\"\";border-bottom:2px solid var(--inactive-border-color);width:100%;top:14px;left:-50%;z-index:2}.stepper-item:after{position:absolute;content:\"\";border-bottom:2px solid var(--inactive-border-color);width:100%;top:14px;left:50%;z-index:2}.stepper-item.white:before{left:-75%}.stepper-item.white:after{left:75%}.stepper-item .step-counter{position:relative;z-index:5;display:flex;justify-content:center;align-items:center;width:28px;height:28px;border-radius:50%;background:#ccc;margin-bottom:6px}.stepper-item:not(.completed) .step-counter{border:3px solid var(--inactive-border-color);background-color:#fff}.stepper-item:not(.completed) .step-counter .current-inner-circle{background-color:var(--inactive-border-color);width:12px;height:12px;border-radius:50%}.stepper-item.active{font-weight:700}.stepper-item.active .step-counter{border:3px solid var(--icons-color);background-color:#fff}.stepper-item.active .step-counter .current-inner-circle{background-color:var(--icons-color);width:12px;height:12px;border-radius:50%}.stepper-item.white{font-weight:700}.stepper-item.white .step-counter{border:3px solid white;background-color:#fff}.stepper-item.white .step-counter .current-inner-circle{background-color:#fff;width:12px;height:12px;border-radius:50%}.stepper-item.white:before{border-bottom-color:#fff}.stepper-item.white:after{border-bottom-color:#fff}.stepper-item.active:after{position:absolute;content:\"\";border-bottom:2px solid var(--icons-color);width:100%;top:14px;left:50%;z-index:3}.stepper-item.completed .step-counter{background:var(--primary-color);color:var(--light-text-color)}.stepper-item.completed:after{position:absolute;content:\"\";border-bottom:2px solid var(--icons-color);width:100%;top:14px;left:50%;z-index:3}.stepper-item:first-child:after{content:none}.stepper-item:last-child:before{content:none}\n"], dependencies: [{ 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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
|
|
1176
|
+
}
|
|
1177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumStepperComponent, decorators: [{
|
|
1178
|
+
type: Component,
|
|
1179
|
+
args: [{ standalone: false, selector: 'herum-stepper', template: "<div class=\"stepper-wrapper\" [ngStyle]=\"{'gap': color=='white' ? '24px' : '0', 'margin-bottom': color=='white' ? '0' : '20px'}\">\r\n <ng-container *ngFor=\"let step of steps; let i = index\">\r\n <ng-container *ngIf=\"!step.iconPath\">\r\n <ng-container [ngSwitch]=\"step.status\">\r\n <div *ngSwitchCase=\"0\" class=\"stepper-item completed\">\r\n <div class=\"step-counter\">\r\n <img src=\"assets/shared/icons/stepper/white-v.svg\" width=\"15px\" alt=\"checked\" />\r\n </div>\r\n <div class=\"step-name\">{{step.label}}</div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"1\" class=\"stepper-item active\">\r\n <div class=\"step-counter\">\r\n <div class=\"current-inner-circle\"></div>\r\n </div>\r\n <div class=\"step-name\">{{step.label}}</div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"2\" class=\"stepper-item\">\r\n <div class=\"step-counter\">\r\n <div class=\"current-inner-circle\"></div>\r\n </div>\r\n <div class=\"step-name\">{{step.label}}</div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"step.iconPath\">\r\n <div class=\"stepper-item white\" [ngStyle]=\"getStepItemStyle(i)\">\r\n <div class=\"step-counter\" [ngStyle]=\"{ 'transform': i == current ? 'scale(1.5)' : '' }\">\r\n <img [src]=\"step.iconPath\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</div>", styles: [".stepper-wrapper{margin-top:auto;display:flex;justify-content:space-between;margin-bottom:20px}.stepper-item{position:relative;display:flex;flex-direction:column;align-items:center;flex:1}@media (max-width: 768px){.stepper-item{font-size:12px}}.stepper-item:before{position:absolute;content:\"\";border-bottom:2px solid var(--inactive-border-color);width:100%;top:14px;left:-50%;z-index:2}.stepper-item:after{position:absolute;content:\"\";border-bottom:2px solid var(--inactive-border-color);width:100%;top:14px;left:50%;z-index:2}.stepper-item.white:before{left:-75%}.stepper-item.white:after{left:75%}.stepper-item .step-counter{position:relative;z-index:5;display:flex;justify-content:center;align-items:center;width:28px;height:28px;border-radius:50%;background:#ccc;margin-bottom:6px}.stepper-item:not(.completed) .step-counter{border:3px solid var(--inactive-border-color);background-color:#fff}.stepper-item:not(.completed) .step-counter .current-inner-circle{background-color:var(--inactive-border-color);width:12px;height:12px;border-radius:50%}.stepper-item.active{font-weight:700}.stepper-item.active .step-counter{border:3px solid var(--icons-color);background-color:#fff}.stepper-item.active .step-counter .current-inner-circle{background-color:var(--icons-color);width:12px;height:12px;border-radius:50%}.stepper-item.white{font-weight:700}.stepper-item.white .step-counter{border:3px solid white;background-color:#fff}.stepper-item.white .step-counter .current-inner-circle{background-color:#fff;width:12px;height:12px;border-radius:50%}.stepper-item.white:before{border-bottom-color:#fff}.stepper-item.white:after{border-bottom-color:#fff}.stepper-item.active:after{position:absolute;content:\"\";border-bottom:2px solid var(--icons-color);width:100%;top:14px;left:50%;z-index:3}.stepper-item.completed .step-counter{background:var(--primary-color);color:var(--light-text-color)}.stepper-item.completed:after{position:absolute;content:\"\";border-bottom:2px solid var(--icons-color);width:100%;top:14px;left:50%;z-index:3}.stepper-item:first-child:after{content:none}.stepper-item:last-child:before{content:none}\n"] }]
|
|
1180
|
+
}], propDecorators: { color: [{
|
|
1181
|
+
type: Input
|
|
1182
|
+
}], useDymanicSize: [{
|
|
1183
|
+
type: Input
|
|
1184
|
+
}], steps: [{
|
|
1185
|
+
type: Input
|
|
1186
|
+
}], current: [{
|
|
1187
|
+
type: Input
|
|
1188
|
+
}] } });
|
|
1189
|
+
|
|
1190
|
+
class HerumTimeSelectComponent {
|
|
1191
|
+
showSeconds = true;
|
|
1192
|
+
minutesPlaceholder = 'דקות';
|
|
1193
|
+
secondsPlaceholder = 'שניות';
|
|
1194
|
+
hoursPlaceholder = 'שעות';
|
|
1195
|
+
selectedTime = '00:00:00';
|
|
1196
|
+
label = '';
|
|
1197
|
+
timeChange = new EventEmitter();
|
|
1198
|
+
selectedHour;
|
|
1199
|
+
selectedMinute;
|
|
1200
|
+
selectedSecond;
|
|
1201
|
+
hours = this.generateIdentifiedEntityTimeArray(24);
|
|
1202
|
+
minutes = this.generateIdentifiedEntityTimeArray(60);
|
|
1203
|
+
seconds = this.generateIdentifiedEntityTimeArray(60);
|
|
1204
|
+
ngOnChanges(changes) {
|
|
1205
|
+
if (changes['selectedTime'].currentValue)
|
|
1206
|
+
this.selectedTimeToSelectedIdentifiedEntities(this.selectedTime);
|
|
1207
|
+
}
|
|
1208
|
+
_selectedSecondOptionChange(updatedSecond) {
|
|
1209
|
+
this.selectedSecond = updatedSecond;
|
|
1210
|
+
this.emitSelectedTime();
|
|
1211
|
+
}
|
|
1212
|
+
_selectedMinuteOptionChange(updatedMinute) {
|
|
1213
|
+
this.selectedMinute = updatedMinute;
|
|
1214
|
+
this.emitSelectedTime();
|
|
1215
|
+
}
|
|
1216
|
+
_selectedHourOptionChange(updatedHour) {
|
|
1217
|
+
this.selectedHour = updatedHour;
|
|
1218
|
+
this.emitSelectedTime();
|
|
1219
|
+
}
|
|
1220
|
+
emitSelectedTime() {
|
|
1221
|
+
const formattedTime = this.formatTime(this.selectedHour.name, this.selectedMinute.name, this.selectedSecond?.name);
|
|
1222
|
+
this.selectedTime = formattedTime;
|
|
1223
|
+
this.timeChange.emit(formattedTime);
|
|
1224
|
+
}
|
|
1225
|
+
formatTime(hours, minutes, seconds) {
|
|
1226
|
+
const hoursAndMinutes = `${hours.padStart(2, '0')}:${minutes.padStart(2, '0')}`;
|
|
1227
|
+
return !this.showSeconds ? hoursAndMinutes : hoursAndMinutes + `:${seconds?.padStart(2, '0')}`;
|
|
1228
|
+
}
|
|
1229
|
+
selectedTimeToSelectedIdentifiedEntities(selectedTime) {
|
|
1230
|
+
[this.selectedHour, this.selectedMinute, this.selectedSecond] = selectedTime.split(':').map((value) => ({ id: value, name: value }));
|
|
1231
|
+
}
|
|
1232
|
+
generateIdentifiedEntityTimeArray(length) {
|
|
1233
|
+
return Array.from({ length }, (_, index) => ({
|
|
1234
|
+
id: String(index).padStart(2, '0'),
|
|
1235
|
+
name: String(index).padStart(2, '0')
|
|
1236
|
+
}));
|
|
1237
|
+
}
|
|
1238
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumTimeSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1239
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumTimeSelectComponent, isStandalone: false, selector: "herum-time-select", inputs: { showSeconds: "showSeconds", minutesPlaceholder: "minutesPlaceholder", secondsPlaceholder: "secondsPlaceholder", hoursPlaceholder: "hoursPlaceholder", selectedTime: "selectedTime", label: "label" }, outputs: { timeChange: "timeChange" }, usesOnChanges: true, ngImport: i0, template: "<div>\r\n <label class=\"input-title\">{{label}}</label>\r\n\r\n <div class=\"time-container\">\r\n <ng-container *ngIf=\"showSeconds\">\r\n <herum-select [options]=\"seconds\" [selectedOption]=\"selectedSecond\" size='min'\r\n [placeholder]=\"secondsPlaceholder\" [label]=\"start\"\r\n (selectedOptionEmitter)=\"_selectedSecondOptionChange($event)\"></herum-select>\r\n\r\n <span class=\"seperator\">:</span>\r\n </ng-container>\r\n\r\n <herum-select [options]=\"minutes\" size='min' [selectedOption]=\"selectedMinute\"\r\n [placeholder]=\"minutesPlaceholder\"\r\n (selectedOptionEmitter)=\"_selectedMinuteOptionChange($event)\"></herum-select>\r\n\r\n <span class=\"seperator\">:</span>\r\n\r\n <herum-select [options]=\"hours\" size='min' [selectedOption]=\"selectedHour\" [placeholder]=\"hoursPlaceholder\"\r\n (selectedOptionEmitter)=\"_selectedHourOptionChange($event)\"></herum-select>\r\n </div>\r\n</div>", styles: [".time-container{display:flex;align-items:center;justify-content:center;gap:8px}label{font-size:var(--standard-font-size)}.seperator{font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.HerumSelectComponent, selector: "herum-select", inputs: ["options", "displayBy", "placeholder", "selectedOption", "disabled", "isDropDownInPositionFixed", "iconPath", "isAutoComplete", "title", "size", "displayLoadingMode", "isLoadingInput", "dropDownDirection", "filterPlaceholder", "debounceTime"], outputs: ["selectedOptionEmitter", "filterTextEmitter"] }] });
|
|
1240
|
+
}
|
|
1241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumTimeSelectComponent, decorators: [{
|
|
1242
|
+
type: Component,
|
|
1243
|
+
args: [{ standalone: false, selector: 'herum-time-select', template: "<div>\r\n <label class=\"input-title\">{{label}}</label>\r\n\r\n <div class=\"time-container\">\r\n <ng-container *ngIf=\"showSeconds\">\r\n <herum-select [options]=\"seconds\" [selectedOption]=\"selectedSecond\" size='min'\r\n [placeholder]=\"secondsPlaceholder\" [label]=\"start\"\r\n (selectedOptionEmitter)=\"_selectedSecondOptionChange($event)\"></herum-select>\r\n\r\n <span class=\"seperator\">:</span>\r\n </ng-container>\r\n\r\n <herum-select [options]=\"minutes\" size='min' [selectedOption]=\"selectedMinute\"\r\n [placeholder]=\"minutesPlaceholder\"\r\n (selectedOptionEmitter)=\"_selectedMinuteOptionChange($event)\"></herum-select>\r\n\r\n <span class=\"seperator\">:</span>\r\n\r\n <herum-select [options]=\"hours\" size='min' [selectedOption]=\"selectedHour\" [placeholder]=\"hoursPlaceholder\"\r\n (selectedOptionEmitter)=\"_selectedHourOptionChange($event)\"></herum-select>\r\n </div>\r\n</div>", styles: [".time-container{display:flex;align-items:center;justify-content:center;gap:8px}label{font-size:var(--standard-font-size)}.seperator{font-weight:700}\n"] }]
|
|
1244
|
+
}], propDecorators: { showSeconds: [{
|
|
1245
|
+
type: Input
|
|
1246
|
+
}], minutesPlaceholder: [{
|
|
1247
|
+
type: Input
|
|
1248
|
+
}], secondsPlaceholder: [{
|
|
1249
|
+
type: Input
|
|
1250
|
+
}], hoursPlaceholder: [{
|
|
1251
|
+
type: Input
|
|
1252
|
+
}], selectedTime: [{
|
|
1253
|
+
type: Input
|
|
1254
|
+
}], label: [{
|
|
1255
|
+
type: Input
|
|
1256
|
+
}], timeChange: [{
|
|
1257
|
+
type: Output
|
|
1258
|
+
}] } });
|
|
1259
|
+
|
|
1260
|
+
class HerumUserProfileComponent {
|
|
1261
|
+
userData;
|
|
1262
|
+
mode = 'vertical';
|
|
1263
|
+
titleSize = 'big';
|
|
1264
|
+
imageSize = 'image-default-size';
|
|
1265
|
+
get userFullName() {
|
|
1266
|
+
return this.userData?.firstName + ' ' + this.userData?.lastName;
|
|
1267
|
+
}
|
|
1268
|
+
get fullHierarchyName() {
|
|
1269
|
+
if (!this.userData.assignments || !this.userData.assignments.length)
|
|
1270
|
+
return this.userData.profession;
|
|
1271
|
+
return this.userData.assignments[0].structPreview.fullHierarchyName;
|
|
1272
|
+
}
|
|
1273
|
+
get assignmentStateDisplayName() {
|
|
1274
|
+
if (!this.userData.assignments || this.userData.assignments.length == 0)
|
|
1275
|
+
return '';
|
|
1276
|
+
return getAssignmentStateDisplayName(this.userData.assignments[0].assignmentMetadata.state);
|
|
1277
|
+
}
|
|
1278
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumUserProfileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1279
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumUserProfileComponent, isStandalone: false, selector: "herum-user-profile", inputs: { userData: "userData", mode: "mode", titleSize: "titleSize", imageSize: "imageSize" }, ngImport: i0, template: "<div class=\"profile-top-conatiner\" [ngClass]=\"mode\" *ngIf=\"userData\">\r\n <user-profile-image [user]=\"userData\" [imageSize]=\"imageSize\" [mode]=\"mode\"></user-profile-image>\r\n\r\n <div class=\"profile-name-container\">\r\n <p\r\n [ngClass]=\"{'section-header-title': titleSize === 'medium','profile-title': titleSize === 'big','section-title': titleSize === 'small'}\">\r\n {{userFullName}}\r\n\r\n <herum-chip *ngIf=\"userData.assignments?.length > 0\"\r\n [type]=\"userData.assignments[0].assignmentMetadata?.state == 2 ? 'negative':'positive'\"\r\n [title]=\"assignmentStateDisplayName\" [isDeleteButtonNeeded]=\"false\"></herum-chip>\r\n </p>\r\n <p class=\"profile-subtitle\">{{fullHierarchyName}}</p>\r\n <p class=\"profile-description\" *ngIf=\"mode=='horizontal'\">{{userData.profession}}</p>\r\n </div>\r\n</div>", styles: [".profile-top-conatiner{display:flex;gap:24px;align-items:center;flex-direction:column;text-align:center}.profile-top-conatiner .profile-title{font-size:22px;font-weight:700;margin:0;width:fit-content}.profile-top-conatiner .profile-subtitle{font-size:14px;margin:0;width:fit-content}.vertical{flex-direction:column}.vertical .profile-title{width:unset;display:flex;justify-content:center;align-items:center;gap:12px}.vertical .profile-subtitle{width:unset}.horizontal{flex-direction:row;padding-bottom:8px}.horizontal .profile-subtitle{width:fit-content}.horizontal .profile-description{width:fit-content;color:gray}.profile-image-for-fallback{display:none;width:0px;height:0px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.HerumChipComponent, selector: "herum-chip", inputs: ["title", "isDeleteButtonNeeded", "isActive", "isMenuMode", "type"], outputs: ["remove", "chipsActivation"] }, { kind: "component", type: i2$1.UserProfileImageComponent, selector: "user-profile-image", inputs: ["imageSize", "mode", "user", "isLoadingUser", "isUserClickAble"], outputs: ["userClicked"] }] });
|
|
1280
|
+
}
|
|
1281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumUserProfileComponent, decorators: [{
|
|
1282
|
+
type: Component,
|
|
1283
|
+
args: [{ standalone: false, selector: 'herum-user-profile', template: "<div class=\"profile-top-conatiner\" [ngClass]=\"mode\" *ngIf=\"userData\">\r\n <user-profile-image [user]=\"userData\" [imageSize]=\"imageSize\" [mode]=\"mode\"></user-profile-image>\r\n\r\n <div class=\"profile-name-container\">\r\n <p\r\n [ngClass]=\"{'section-header-title': titleSize === 'medium','profile-title': titleSize === 'big','section-title': titleSize === 'small'}\">\r\n {{userFullName}}\r\n\r\n <herum-chip *ngIf=\"userData.assignments?.length > 0\"\r\n [type]=\"userData.assignments[0].assignmentMetadata?.state == 2 ? 'negative':'positive'\"\r\n [title]=\"assignmentStateDisplayName\" [isDeleteButtonNeeded]=\"false\"></herum-chip>\r\n </p>\r\n <p class=\"profile-subtitle\">{{fullHierarchyName}}</p>\r\n <p class=\"profile-description\" *ngIf=\"mode=='horizontal'\">{{userData.profession}}</p>\r\n </div>\r\n</div>", styles: [".profile-top-conatiner{display:flex;gap:24px;align-items:center;flex-direction:column;text-align:center}.profile-top-conatiner .profile-title{font-size:22px;font-weight:700;margin:0;width:fit-content}.profile-top-conatiner .profile-subtitle{font-size:14px;margin:0;width:fit-content}.vertical{flex-direction:column}.vertical .profile-title{width:unset;display:flex;justify-content:center;align-items:center;gap:12px}.vertical .profile-subtitle{width:unset}.horizontal{flex-direction:row;padding-bottom:8px}.horizontal .profile-subtitle{width:fit-content}.horizontal .profile-description{width:fit-content;color:gray}.profile-image-for-fallback{display:none;width:0px;height:0px}\n"] }]
|
|
1284
|
+
}], propDecorators: { userData: [{
|
|
1285
|
+
type: Input
|
|
1286
|
+
}], mode: [{
|
|
1287
|
+
type: Input
|
|
1288
|
+
}], titleSize: [{
|
|
1289
|
+
type: Input
|
|
1290
|
+
}], imageSize: [{
|
|
1291
|
+
type: Input
|
|
1292
|
+
}] } });
|
|
1293
|
+
|
|
1294
|
+
class HerumUserProgressComponent {
|
|
1295
|
+
title = 'מדד כשירות כללי';
|
|
1296
|
+
percentage = 65;
|
|
1297
|
+
type = 'gradient';
|
|
1298
|
+
get percentageLabel() {
|
|
1299
|
+
return this.percentage < 40 ?
|
|
1300
|
+
'כשירות נמוכה' : this.percentage < 80 ?
|
|
1301
|
+
'כשירות בינונית' : this.percentage < 99 ?
|
|
1302
|
+
'כשירות טובה מאוד' : 'כשירות מושלמת! כל הכבוד!';
|
|
1303
|
+
}
|
|
1304
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumUserProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1305
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: HerumUserProgressComponent, isStandalone: false, selector: "app-herum-user-progress", inputs: { title: "title", percentage: "percentage", type: "type" }, ngImport: i0, template: "<div class=\"user-progress-container\" [ngClass]=\"{'p-0':type == 'solid'}\">\r\n <div class=\"mb-2 row\">\r\n <div class=\"col-7 section-title\">{{ title }}</div>\r\n <div class=\"col-5 section-title left\">{{ percentageLabel }}</div>\r\n </div>\r\n\r\n <herum-progress-bar [percentage]=\"percentage\" [type]=\"'solid'\"></herum-progress-bar>\r\n</div>", styles: [".user-progress-container{padding:10px;gap:10px;display:flex;flex-direction:column}.left{text-align:left}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2$1.HerumProgressBarComponent, selector: "herum-progress-bar", inputs: ["percentage", "invalidPercentage", "showPercentage", "percentagePosition", "type", "size", "color", "borderRadius", "total", "showBorder", "thickness"] }] });
|
|
1306
|
+
}
|
|
1307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: HerumUserProgressComponent, decorators: [{
|
|
1308
|
+
type: Component,
|
|
1309
|
+
args: [{ standalone: false, selector: 'app-herum-user-progress', template: "<div class=\"user-progress-container\" [ngClass]=\"{'p-0':type == 'solid'}\">\r\n <div class=\"mb-2 row\">\r\n <div class=\"col-7 section-title\">{{ title }}</div>\r\n <div class=\"col-5 section-title left\">{{ percentageLabel }}</div>\r\n </div>\r\n\r\n <herum-progress-bar [percentage]=\"percentage\" [type]=\"'solid'\"></herum-progress-bar>\r\n</div>", styles: [".user-progress-container{padding:10px;gap:10px;display:flex;flex-direction:column}.left{text-align:left}\n"] }]
|
|
1310
|
+
}], propDecorators: { title: [{
|
|
1311
|
+
type: Input
|
|
1312
|
+
}], percentage: [{
|
|
1313
|
+
type: Input
|
|
1314
|
+
}], type: [{
|
|
1315
|
+
type: Input
|
|
1316
|
+
}] } });
|
|
1317
|
+
|
|
1318
|
+
class KeyValueListComponent {
|
|
1319
|
+
items = [];
|
|
1320
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: KeyValueListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1321
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: KeyValueListComponent, isStandalone: false, selector: "key-value-list", inputs: { items: "items" }, ngImport: i0, template: "\r\n<div class=\"item-contianer mb-1\" *ngFor=\"let item of items\">\r\n <div *ngIf=\"item.iconPath\" class=\"col-1\">\r\n <img *ngIf=\"item.iconPath\" [src]=\"item.iconPath\">\r\n </div>\r\n <div class=\"key col-4 bold\">{{item.key}}</div>\r\n <div class=\"value col-7 truncate\" [matTooltip]=\"item.value\">{{item.value}}</div>\r\n</div>", styles: [".item-contianer{display:flex;gap:8px}.bold{font-weight:700}img{width:16px}\n"], dependencies: [{ 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: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
1322
|
+
}
|
|
1323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: KeyValueListComponent, decorators: [{
|
|
1324
|
+
type: Component,
|
|
1325
|
+
args: [{ standalone: false, selector: 'key-value-list', template: "\r\n<div class=\"item-contianer mb-1\" *ngFor=\"let item of items\">\r\n <div *ngIf=\"item.iconPath\" class=\"col-1\">\r\n <img *ngIf=\"item.iconPath\" [src]=\"item.iconPath\">\r\n </div>\r\n <div class=\"key col-4 bold\">{{item.key}}</div>\r\n <div class=\"value col-7 truncate\" [matTooltip]=\"item.value\">{{item.value}}</div>\r\n</div>", styles: [".item-contianer{display:flex;gap:8px}.bold{font-weight:700}img{width:16px}\n"] }]
|
|
1326
|
+
}], propDecorators: { items: [{
|
|
1327
|
+
type: Input
|
|
1328
|
+
}] } });
|
|
1329
|
+
|
|
1330
|
+
class LabelsWithIconsListComponent {
|
|
1331
|
+
items = [];
|
|
1332
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LabelsWithIconsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1333
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: LabelsWithIconsListComponent, isStandalone: false, selector: "labels-with-icons-list", inputs: { items: "items" }, ngImport: i0, template: "<div class=\"label-item\" *ngFor=\"let item of items\">\r\n <img [src]=\"item.iconPath\" alt=\" \" />\r\n <p>{{ item.label }}</p>\r\n</div>", styles: [".label-item{display:flex;gap:8px;align-items:center;padding:12px 8px;font-size:14px;border-bottom:1px solid var(--chips-divider-color)}.label-item:last-child{border-bottom:none}p{margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
1334
|
+
}
|
|
1335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LabelsWithIconsListComponent, decorators: [{
|
|
1336
|
+
type: Component,
|
|
1337
|
+
args: [{ standalone: false, selector: 'labels-with-icons-list', template: "<div class=\"label-item\" *ngFor=\"let item of items\">\r\n <img [src]=\"item.iconPath\" alt=\" \" />\r\n <p>{{ item.label }}</p>\r\n</div>", styles: [".label-item{display:flex;gap:8px;align-items:center;padding:12px 8px;font-size:14px;border-bottom:1px solid var(--chips-divider-color)}.label-item:last-child{border-bottom:none}p{margin:0}\n"] }]
|
|
1338
|
+
}], propDecorators: { items: [{
|
|
1339
|
+
type: Input
|
|
1340
|
+
}] } });
|
|
1341
|
+
|
|
1342
|
+
class ProgressesOverViewComponent {
|
|
1343
|
+
titleSize = 'section-header-title';
|
|
1344
|
+
circularProgressSize = 'big-size';
|
|
1345
|
+
progressesOverView = [];
|
|
1346
|
+
progressOverViewDirection = 'row';
|
|
1347
|
+
containerProgressesOverViewDirection = 'column';
|
|
1348
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ProgressesOverViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1349
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: ProgressesOverViewComponent, isStandalone: false, selector: "progresses-over-view", inputs: { titleSize: "titleSize", circularProgressSize: "circularProgressSize", progressesOverView: "progressesOverView", progressOverViewDirection: "progressOverViewDirection", containerProgressesOverViewDirection: "containerProgressesOverViewDirection" }, ngImport: i0, template: "<div class=\"layout\">\r\n <div class=\"progresses-container\"\r\n [ngClass]=\"{'row-progresses-container':containerProgressesOverViewDirection === 'row'}\">\r\n <div class=\"progress-over-view\" [ngClass]=\"{'flex-direction-column':progressOverViewDirection === 'column'}\"\r\n *ngFor=\"let progressOverView of progressesOverView\">\r\n <herum-circular-progress-bar [fill]=\"false\" [showPercentage]=\"progressOverView.showPercentage\"\r\n [percentage]=\"progressOverView.progress\" [displayedContent]=\"progressOverView.displayedContent\"\r\n [displayedContentColorMatchesGradientColor]=\"progressOverView.displayedContentColorMatchesGradientColor\"\r\n [firstGradient]=\"progressOverView.firstGradient\" [size]=\"circularProgressSize\">\r\n </herum-circular-progress-bar>\r\n\r\n <div class=\"progress-labels\" [ngClass]=\"{'align-items-center':progressOverViewDirection === 'column'}\">\r\n <h2 class=\"section-header-title m-0 p-0\" [ngClass]=\"[titleSize]\">\r\n {{ progressOverView.title }}\r\n </h2>\r\n\r\n <span *ngIf=\"progressOverView.description\" class=\"w-100 text-align-right\">\r\n {{ progressOverView.description }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".progresses-container.row-progresses-container{flex-direction:row;justify-content:space-between}.progresses-container{display:flex;flex-direction:column}.progresses-container .progress-over-view{display:flex;align-items:center;gap:var(--standard-medium-padding)}.progresses-container .progress-over-view .progress-labels{display:flex;flex-direction:column;gap:4px}.flex-direction-column{flex-direction:column}\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: "component", type: i2$1.HerumCircularProgressBarComponent, selector: "herum-circular-progress-bar", inputs: ["percentage", "fill", "size", "firstGradient", "fillColor", "showPercentage", "displayedContent", "displayedContentColorMatchesGradientColor"] }] });
|
|
1350
|
+
}
|
|
1351
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ProgressesOverViewComponent, decorators: [{
|
|
1352
|
+
type: Component,
|
|
1353
|
+
args: [{ standalone: false, selector: 'progresses-over-view', template: "<div class=\"layout\">\r\n <div class=\"progresses-container\"\r\n [ngClass]=\"{'row-progresses-container':containerProgressesOverViewDirection === 'row'}\">\r\n <div class=\"progress-over-view\" [ngClass]=\"{'flex-direction-column':progressOverViewDirection === 'column'}\"\r\n *ngFor=\"let progressOverView of progressesOverView\">\r\n <herum-circular-progress-bar [fill]=\"false\" [showPercentage]=\"progressOverView.showPercentage\"\r\n [percentage]=\"progressOverView.progress\" [displayedContent]=\"progressOverView.displayedContent\"\r\n [displayedContentColorMatchesGradientColor]=\"progressOverView.displayedContentColorMatchesGradientColor\"\r\n [firstGradient]=\"progressOverView.firstGradient\" [size]=\"circularProgressSize\">\r\n </herum-circular-progress-bar>\r\n\r\n <div class=\"progress-labels\" [ngClass]=\"{'align-items-center':progressOverViewDirection === 'column'}\">\r\n <h2 class=\"section-header-title m-0 p-0\" [ngClass]=\"[titleSize]\">\r\n {{ progressOverView.title }}\r\n </h2>\r\n\r\n <span *ngIf=\"progressOverView.description\" class=\"w-100 text-align-right\">\r\n {{ progressOverView.description }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".progresses-container.row-progresses-container{flex-direction:row;justify-content:space-between}.progresses-container{display:flex;flex-direction:column}.progresses-container .progress-over-view{display:flex;align-items:center;gap:var(--standard-medium-padding)}.progresses-container .progress-over-view .progress-labels{display:flex;flex-direction:column;gap:4px}.flex-direction-column{flex-direction:column}\n"] }]
|
|
1354
|
+
}], propDecorators: { titleSize: [{
|
|
1355
|
+
type: Input
|
|
1356
|
+
}], circularProgressSize: [{
|
|
1357
|
+
type: Input
|
|
1358
|
+
}], progressesOverView: [{
|
|
1359
|
+
type: Input
|
|
1360
|
+
}], progressOverViewDirection: [{
|
|
1361
|
+
type: Input
|
|
1362
|
+
}], containerProgressesOverViewDirection: [{
|
|
1363
|
+
type: Input
|
|
1364
|
+
}] } });
|
|
1365
|
+
|
|
1366
|
+
class MoleculesModule {
|
|
1367
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: MoleculesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1368
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.17", ngImport: i0, type: MoleculesModule, declarations: [HerumActiveLinkComponent,
|
|
1369
|
+
HerumActiveMenuComponent,
|
|
1370
|
+
HerumAutocompleteComponent,
|
|
1371
|
+
HerumClosedListMultiSelectComponent,
|
|
1372
|
+
HerumClosedListSelectComponent,
|
|
1373
|
+
HerumDateTimeInputComponent,
|
|
1374
|
+
HerumDateTimePickerComponent,
|
|
1375
|
+
HerumDropZoneComponent,
|
|
1376
|
+
HerumExpendablePanelComponent,
|
|
1377
|
+
HerumFilesViewerComponent,
|
|
1378
|
+
HerumHierarchyTreeNodeComponent,
|
|
1379
|
+
HerumMultiProgressBarComponent,
|
|
1380
|
+
HerumNavigatorComponent,
|
|
1381
|
+
HerumStepNavigatorComponent,
|
|
1382
|
+
HerumStepperComponent,
|
|
1383
|
+
HerumTimeSelectComponent,
|
|
1384
|
+
HerumUserProfileComponent,
|
|
1385
|
+
HerumUserProgressComponent,
|
|
1386
|
+
KeyValueListComponent,
|
|
1387
|
+
LabelsWithIconsListComponent,
|
|
1388
|
+
ProgressesOverViewComponent], imports: [CommonModule,
|
|
1389
|
+
ReactiveFormsModule,
|
|
1390
|
+
FormsModule,
|
|
1391
|
+
MatMenuModule,
|
|
1392
|
+
ClipboardModule,
|
|
1393
|
+
MatAutocompleteModule,
|
|
1394
|
+
MatChipsModule,
|
|
1395
|
+
MatFormFieldModule,
|
|
1396
|
+
MatTooltipModule,
|
|
1397
|
+
MatInputModule,
|
|
1398
|
+
MatSelectModule,
|
|
1399
|
+
MatIconModule,
|
|
1400
|
+
MatCheckboxModule,
|
|
1401
|
+
MatSliderModule,
|
|
1402
|
+
DragDropModule,
|
|
1403
|
+
MatDatepickerModule,
|
|
1404
|
+
MatNativeDateModule,
|
|
1405
|
+
PipesModule,
|
|
1406
|
+
AtomsModule], exports: [HerumActiveLinkComponent,
|
|
1407
|
+
HerumActiveMenuComponent,
|
|
1408
|
+
HerumAutocompleteComponent,
|
|
1409
|
+
HerumClosedListMultiSelectComponent,
|
|
1410
|
+
HerumClosedListSelectComponent,
|
|
1411
|
+
HerumDateTimeInputComponent,
|
|
1412
|
+
HerumDateTimePickerComponent,
|
|
1413
|
+
HerumDropZoneComponent,
|
|
1414
|
+
HerumExpendablePanelComponent,
|
|
1415
|
+
HerumFilesViewerComponent,
|
|
1416
|
+
HerumHierarchyTreeNodeComponent,
|
|
1417
|
+
HerumMultiProgressBarComponent,
|
|
1418
|
+
HerumNavigatorComponent,
|
|
1419
|
+
HerumStepNavigatorComponent,
|
|
1420
|
+
HerumStepperComponent,
|
|
1421
|
+
HerumTimeSelectComponent,
|
|
1422
|
+
HerumUserProfileComponent,
|
|
1423
|
+
HerumUserProgressComponent,
|
|
1424
|
+
KeyValueListComponent,
|
|
1425
|
+
LabelsWithIconsListComponent,
|
|
1426
|
+
ProgressesOverViewComponent] });
|
|
1427
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: MoleculesModule, providers: [
|
|
1428
|
+
{ provide: MAT_DATE_LOCALE, useValue: 'he-IL' },
|
|
1429
|
+
], imports: [CommonModule,
|
|
1430
|
+
ReactiveFormsModule,
|
|
1431
|
+
FormsModule,
|
|
1432
|
+
MatMenuModule,
|
|
1433
|
+
ClipboardModule,
|
|
1434
|
+
MatAutocompleteModule,
|
|
1435
|
+
MatChipsModule,
|
|
1436
|
+
MatFormFieldModule,
|
|
1437
|
+
MatTooltipModule,
|
|
1438
|
+
MatInputModule,
|
|
1439
|
+
MatSelectModule,
|
|
1440
|
+
MatIconModule,
|
|
1441
|
+
MatCheckboxModule,
|
|
1442
|
+
MatSliderModule,
|
|
1443
|
+
DragDropModule,
|
|
1444
|
+
MatDatepickerModule,
|
|
1445
|
+
MatNativeDateModule,
|
|
1446
|
+
PipesModule,
|
|
1447
|
+
AtomsModule] });
|
|
1448
|
+
}
|
|
1449
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: MoleculesModule, decorators: [{
|
|
1450
|
+
type: NgModule,
|
|
1451
|
+
args: [{
|
|
1452
|
+
declarations: [
|
|
1453
|
+
HerumActiveLinkComponent,
|
|
1454
|
+
HerumActiveMenuComponent,
|
|
1455
|
+
HerumAutocompleteComponent,
|
|
1456
|
+
HerumClosedListMultiSelectComponent,
|
|
1457
|
+
HerumClosedListSelectComponent,
|
|
1458
|
+
HerumDateTimeInputComponent,
|
|
1459
|
+
HerumDateTimePickerComponent,
|
|
1460
|
+
HerumDropZoneComponent,
|
|
1461
|
+
HerumExpendablePanelComponent,
|
|
1462
|
+
HerumFilesViewerComponent,
|
|
1463
|
+
HerumHierarchyTreeNodeComponent,
|
|
1464
|
+
HerumMultiProgressBarComponent,
|
|
1465
|
+
HerumNavigatorComponent,
|
|
1466
|
+
HerumStepNavigatorComponent,
|
|
1467
|
+
HerumStepperComponent,
|
|
1468
|
+
HerumTimeSelectComponent,
|
|
1469
|
+
HerumUserProfileComponent,
|
|
1470
|
+
HerumUserProgressComponent,
|
|
1471
|
+
KeyValueListComponent,
|
|
1472
|
+
LabelsWithIconsListComponent,
|
|
1473
|
+
ProgressesOverViewComponent
|
|
1474
|
+
],
|
|
1475
|
+
exports: [
|
|
1476
|
+
HerumActiveLinkComponent,
|
|
1477
|
+
HerumActiveMenuComponent,
|
|
1478
|
+
HerumAutocompleteComponent,
|
|
1479
|
+
HerumClosedListMultiSelectComponent,
|
|
1480
|
+
HerumClosedListSelectComponent,
|
|
1481
|
+
HerumDateTimeInputComponent,
|
|
1482
|
+
HerumDateTimePickerComponent,
|
|
1483
|
+
HerumDropZoneComponent,
|
|
1484
|
+
HerumExpendablePanelComponent,
|
|
1485
|
+
HerumFilesViewerComponent,
|
|
1486
|
+
HerumHierarchyTreeNodeComponent,
|
|
1487
|
+
HerumMultiProgressBarComponent,
|
|
1488
|
+
HerumNavigatorComponent,
|
|
1489
|
+
HerumStepNavigatorComponent,
|
|
1490
|
+
HerumStepperComponent,
|
|
1491
|
+
HerumTimeSelectComponent,
|
|
1492
|
+
HerumUserProfileComponent,
|
|
1493
|
+
HerumUserProgressComponent,
|
|
1494
|
+
KeyValueListComponent,
|
|
1495
|
+
LabelsWithIconsListComponent,
|
|
1496
|
+
ProgressesOverViewComponent
|
|
1497
|
+
],
|
|
1498
|
+
imports: [
|
|
1499
|
+
CommonModule,
|
|
1500
|
+
ReactiveFormsModule,
|
|
1501
|
+
FormsModule,
|
|
1502
|
+
MatMenuModule,
|
|
1503
|
+
ClipboardModule,
|
|
1504
|
+
MatAutocompleteModule,
|
|
1505
|
+
MatChipsModule,
|
|
1506
|
+
MatFormFieldModule,
|
|
1507
|
+
MatTooltipModule,
|
|
1508
|
+
MatInputModule,
|
|
1509
|
+
MatSelectModule,
|
|
1510
|
+
MatIconModule,
|
|
1511
|
+
MatCheckboxModule,
|
|
1512
|
+
MatSliderModule,
|
|
1513
|
+
DragDropModule,
|
|
1514
|
+
MatDatepickerModule,
|
|
1515
|
+
MatNativeDateModule,
|
|
1516
|
+
PipesModule,
|
|
1517
|
+
AtomsModule
|
|
1518
|
+
],
|
|
1519
|
+
providers: [
|
|
1520
|
+
{ provide: MAT_DATE_LOCALE, useValue: 'he-IL' },
|
|
1521
|
+
]
|
|
1522
|
+
}]
|
|
1523
|
+
}] });
|
|
1524
|
+
|
|
1525
|
+
/**
|
|
1526
|
+
* Generated bundle index. Do not edit.
|
|
1527
|
+
*/
|
|
1528
|
+
|
|
1529
|
+
export { HerumActiveLinkComponent, HerumActiveMenuComponent, HerumAutocompleteComponent, HerumClosedListMultiSelectComponent, HerumClosedListSelectComponent, HerumDateTimeInputComponent, HerumDateTimePickerComponent, HerumDropZoneComponent, HerumExpendablePanelComponent, HerumFilesViewerComponent, HerumHierarchyTreeNodeComponent, HerumMultiProgressBarComponent, HerumNavigatorComponent, HerumStepNavigatorComponent, HerumStepperComponent, HerumTimeSelectComponent, HerumUserProfileComponent, HerumUserProgressComponent, KeyValueListComponent, LabelsWithIconsListComponent, MoleculesModule, ProgressesOverViewComponent };
|
|
1530
|
+
//# sourceMappingURL=herum-shared-molecules.mjs.map
|