{"version":3,"file":"chunk-kj49l4jz.js","sources":["packages/vanilla/lib/shared/forms/src/monthly-view/monthly-view.component.html","packages/vanilla/lib/shared/forms/src/monthly-view/monthly-view.component.ts"],"sourcesContent":["
\n
\n
\n
\n \n
\n
\n
\n
\n
\n @if (!itemsObj.items?.length && selectedPeriod?.type === 0 && !loadingData && !hideNoItemsFoundMessage) {\n
\n
\n
\n }\n @if (displayGotoDesktopMessage) {\n
\n
\n
\n }\n
\n\n@if (displayMonthPagination) {\n
\n
\n \n
\n}\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ApiBase, IntlService, MessageQueueService, WINDOW, WindowEvent, trackByProp } from '@frontend/vanilla/core';\nimport { IconCustomComponent } from '@frontend/vanilla/shared/icons';\nimport { debounce } from 'lodash-es';\n\nimport { DropdownValue } from '../models/dropdown-value.model';\n\n/**\n * @whatItDoes Provides functionality of displaying dropdown with month names and years, restrict months and years,\n * previous and next buttons and displaying data from provided api object and endpoint name. Will be removed in version 4.\n *\n * @howToUse ``\n *\n * @stable\n */\n@Component({\n standalone: true,\n imports: [CommonModule, FormsModule, IconCustomComponent],\n selector: 'lh-monthly-view',\n templateUrl: 'monthly-view.component.html',\n})\nexport class MonthlyViewComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() cutOffYear: any;\n @Input() cutOffMonth: any;\n @Input() pageSize: number;\n @Input() dateCollectionLastYear: any;\n @Input() amountOfDisplayedSingleMonths: number;\n @Input() api: ApiBase;\n @Input() endpoint: string;\n @Input() content: any;\n @Input() additionalDropdownItem: any;\n @Input() itemsObj: any;\n @Output() itemsObjChange = new EventEmitter();\n\n readonly trackById = trackByProp('id');\n dropdownValues: DropdownValue[] = [];\n datesCollection: any[] = [];\n selectedPeriod: DropdownValue | undefined;\n displayMonthPagination: boolean;\n currentDatePeriodId = 0;\n loadingData: boolean;\n displayGotoDesktopMessage: boolean;\n hideNoItemsFoundMessage: boolean;\n disableNext: boolean;\n disablePrevious: boolean;\n noItemsFound: string;\n\n private months: string[];\n private nextPage = 0;\n private noItemsFoundTemplate: string;\n private delta = 1200; // Scroll delta. Increase to load earlier\n private currentDate = new Date();\n private currentMonth: number = this.currentDate.getMonth();\n private currentYear: number = this.currentDate.getFullYear();\n\n private elementRef = inject(ElementRef);\n private messageQueue = inject(MessageQueueService);\n private intlService = inject(IntlService);\n readonly #window = inject(WINDOW);\n private readonly _doc = inject(DOCUMENT);\n\n ngOnInit() {\n if (!this.itemsObj) {\n this.itemsObj = {};\n }\n\n this.months = this.intlService.getMonths().map((m) => {\n return m.shortName;\n });\n\n this.createDatesCollection();\n\n if (!this.content.messages.NoEntriesFound) {\n this.content.messages.NoEntriesFound = '';\n }\n\n // can handle sitecore strings with and without placeholder for current month and year\n this.noItemsFoundTemplate =\n this.content.messages.NoEntriesFound.indexOf('{0}') === -1\n ? this.content.messages.NoEntriesFound + ' {0}'\n : this.content.messages.NoEntriesFound;\n\n this.createDropdownContent();\n\n this.selectedPeriod = this.dropdownValues[0];\n this.currentDatePeriodId = this.dropdownValues[0]?.id || 0;\n\n if (this.selectedPeriod?.year && this.selectedPeriod?.month !== null) {\n this.fetchItemsData(true, this.nextPage, this.pageSize, +this.selectedPeriod.year, +this.selectedPeriod.month);\n }\n }\n\n ngAfterViewInit() {\n this.#window.addEventListener(\n WindowEvent.Scroll,\n debounce(() => this.onScroll(), 250),\n false,\n );\n }\n\n ngOnDestroy() {\n this.#window.removeEventListener(\n WindowEvent.Scroll,\n debounce(() => this.onScroll(), 250),\n false,\n );\n }\n\n getItems(resetPage: boolean, resetCurrentMonth: boolean) {\n if (resetPage) {\n this.nextPage = 0;\n }\n\n //reset current month for paging months\n if (resetCurrentMonth) {\n this.currentDatePeriodId = this.selectedPeriod?.id || 0;\n }\n\n // stop condition, infinitive scroll (no more data)\n if (this.nextPage === -1) {\n return;\n }\n\n // clear previous messages\n this.messageQueue.clear({ clearPersistent: true });\n\n if (this.selectedPeriod?.type === 0) {\n this.fetchItemsData(\n resetPage,\n this.nextPage,\n this.pageSize,\n this.datesCollection[this.currentDatePeriodId].year,\n this.datesCollection[this.currentDatePeriodId].month,\n );\n }\n\n if (this.additionalDropdownItem) {\n if (this.additionalDropdownItem.type === this.selectedPeriod?.type) {\n this.displayMonthPagination = false;\n this.additionalDropdownItem.callbackShow(this);\n } else {\n this.additionalDropdownItem.callbackHide(this);\n }\n }\n }\n\n navigateMonths(goForward: boolean, disabled: boolean) {\n //no next or previous month\n if (disabled) {\n return;\n }\n\n if (goForward) {\n this.currentDatePeriodId--;\n } else {\n this.currentDatePeriodId++;\n }\n\n //sets the dropdown option to the same value as current month when reached trough next/previous navigation\n //for the configured options, but not for getsummary\n //as long as there are dropdown values to display (stop at OlderEntries)\n if (this.currentDatePeriodId <= this.amountOfDisplayedSingleMonths) {\n this.selectedPeriod = this.dropdownValues[this.currentDatePeriodId];\n }\n\n this.getItems(true, false);\n }\n\n private createDatesCollection() {\n let key = 0;\n //lastyear fallback 1996 (bet and win as founded 1997)\n const lastYear = Math.max(this.cutOffYear || 0, this.dateCollectionLastYear || 1996);\n\n while (\n this.currentYear > lastYear ||\n (this.currentYear === lastYear && (this.cutOffMonth === undefined || this.currentMonth >= this.cutOffMonth))\n ) {\n let nextMonth, previousMonth;\n\n if (this.currentMonth < 0) {\n this.currentMonth = 11;\n this.currentYear--;\n }\n\n nextMonth = this.months[this.currentMonth + 1];\n previousMonth = this.months[this.currentMonth - 1];\n\n if (this.currentMonth === 0) {\n previousMonth = this.months[11];\n }\n\n if (this.currentMonth === 11) {\n nextMonth = this.months[0];\n }\n\n this.datesCollection.push({\n id: key,\n type: 0,\n month: this.currentMonth,\n year: this.currentYear,\n date: new Date(this.currentYear, this.currentMonth, 1),\n selectText: this.months[this.currentMonth] + ' ' + this.currentYear,\n shortText: this.months[this.currentMonth] + ' ' + this.currentYear,\n nextMonth,\n previousMonth,\n });\n\n this.currentMonth--;\n key++;\n }\n if (this.datesCollection.length === 0) {\n // if currentYear is prior to last year, add default item\n this.datesCollection.push({\n id: 0,\n type: 0,\n selectText: this.content.messages['OlderEntries'],\n });\n }\n }\n\n private fetchItemsData(resetPage: boolean, pageIndex: number, pageSize: number, year: number, month: number) {\n // create no items found message with info about selected month and year\n this.createNoItemsMessage(year, month);\n\n if (this.loadingData) {\n // there is already a previous request\n return;\n }\n\n this.displayMonthPagination = false;\n //reset flag from compareDatesForMessageDisplay helper function to avoid different displaytimes in case of two messages\n this.displayGotoDesktopMessage = false;\n\n this.loadingData = true;\n const queryParams = {\n pageIndex: pageIndex,\n pageSize: pageSize,\n year: year,\n month: month !== undefined ? month + 1 : null,\n };\n this.api.get(this.endpoint, queryParams, { showSpinner: true }).subscribe({\n next: (data: any) => {\n if (!data?.[this.endpoint]) {\n this.itemsObj.items = [];\n } else if (data[this.endpoint].length > 0) {\n if (resetPage) {\n this.itemsObj = data;\n this.itemsObj.items = [];\n }\n\n this.itemsObj.items.push.apply(this.itemsObj.items, data[this.endpoint]);\n this.nextPage = data.nextPage;\n this.itemsObjChange.emit(this.itemsObj);\n\n if (this.nextPage === -1 && this.selectedPeriod?.type === 0) {\n this.displayMonthPaginationFn();\n }\n } else {\n if (data.nextPage === -1) {\n this.itemsObj.items = [];\n }\n\n this.nextPage = -1;\n }\n\n //monthIndex-1 because it was previously increased for the request\n this.compareDatesForMessageDisplay(year, month);\n\n this.loadingData = false;\n },\n error: () => {\n this.itemsObj.items = [];\n this.loadingData = false;\n },\n });\n }\n\n private displayMonthPaginationFn() {\n this.disableNext = this.currentDatePeriodId === 0;\n this.disablePrevious = this.currentDatePeriodId >= this.datesCollection.length - 1;\n this.displayMonthPagination = true;\n }\n\n private compareDatesForMessageDisplay(year: number, month: number) {\n if (this.cutOffYear === undefined || this.cutOffMonth === undefined) {\n return;\n }\n\n const cutOffDate = new Date(this.cutOffYear, this.cutOffMonth, 1),\n requestDate = new Date(year, month, 1);\n this.displayGotoDesktopMessage = false;\n\n if (requestDate <= cutOffDate) {\n this.displayGotoDesktopMessage = true;\n this.hideNoItemsFoundMessage = true;\n\n //display hideNoItemsFoundMessage if its the same month as the cutOffMonth\n if (requestDate.getTime() === cutOffDate.getTime()) {\n this.hideNoItemsFoundMessage = false;\n }\n }\n }\n\n private createDropdownContent() {\n //slice the appropriate amount of items from the datesCollection array for display in the dropdown\n const amountOfMonths =\n this.amountOfDisplayedSingleMonths != null\n ? Math.min(this.amountOfDisplayedSingleMonths + 1, this.datesCollection.length)\n : this.datesCollection.length;\n this.dropdownValues = this.datesCollection.slice(0, amountOfMonths);\n this.dropdownValues = this.dropdownValues.map((value, index) =>\n index === amountOfMonths - 1\n ? {\n ...value,\n selectText: this.content.messages.OlderEntries,\n }\n : value,\n );\n\n //transactions: add twelve month summary for enabled labels\n if (this.additionalDropdownItem) {\n this.dropdownValues.push({\n id: null,\n type: this.additionalDropdownItem.type,\n month: null,\n year: null,\n selectText: this.additionalDropdownItem.text,\n shortText: null,\n });\n }\n }\n\n private createNoItemsMessage(requestedYear: number, requestedMonth: number) {\n const periodString = requestedYear || requestedMonth ? `(${this.months[requestedMonth]} ${requestedYear})` : '';\n this.noItemsFound = this.noItemsFoundTemplate.replace('{0}', periodString);\n }\n\n /**\n * Handles the scroll event to load more items when the user scrolls near the bottom of the page.\n * Calculates the remaining scroll distance and triggers data fetching if necessary.\n */\n private onScroll() {\n const element = this.elementRef.nativeElement.querySelector('.message-panel + *') || this._doc.body;\n\n const spaceOfElementAndPage = this._doc.documentElement.scrollHeight - element.scrollHeight;\n const scrollToBottom = element.scrollHeight - this.#window.innerHeight - this.#window.scrollY + spaceOfElementAndPage;\n\n if (!this.loadingData && this.selectedPeriod?.type === 0 && scrollToBottom < this.delta) {\n this.getItems(false, false);\n }\n }\n}\n"],"names":["ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","value_r1","ɵɵadvance","ɵɵtextInterpolate","selectText","ɵɵelement","ctx_r1","noItemsFound","ɵɵsanitizeHtml","p","content","messages","GoToDesktopForOlderEntries","k","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","navigateMonths","disablePrevious","disableNext","datesCollection","currentDatePeriodId","shortText","ɵɵclassProp","ɵɵtextInterpolate1","previousMonth","nextMonth","MonthlyViewComponent","_window","constructor","__privateAdd","itemsObjChange","EventEmitter","trackById","trackByProp","dropdownValues","nextPage","delta","currentDate","Date","currentMonth","getMonth","currentYear","getFullYear","elementRef","inject","ElementRef","messageQueue","MessageQueueService","intlService","IntlService","__privateSet","WINDOW","_doc","DOCUMENT","ngOnInit","itemsObj","months","getMonths","map","m","shortName","createDatesCollection","NoEntriesFound","noItemsFoundTemplate","indexOf","createDropdownContent","selectedPeriod","id","year","month","fetchItemsData","pageSize","ngAfterViewInit","__privateGet","addEventListener","WindowEvent","Scroll","debounce","onScroll","ngOnDestroy","removeEventListener","getItems","resetPage","resetCurrentMonth","clear","clearPersistent","type","additionalDropdownItem","displayMonthPagination","callbackShow","callbackHide","goForward","disabled","amountOfDisplayedSingleMonths","key","lastYear","Math","max","cutOffYear","dateCollectionLastYear","cutOffMonth","undefined","push","date","length","pageIndex","createNoItemsMessage","loadingData","displayGotoDesktopMessage","queryParams","api","get","endpoint","showSpinner","subscribe","next","data","items","apply","emit","displayMonthPaginationFn","compareDatesForMessageDisplay","error","cutOffDate","requestDate","hideNoItemsFoundMessage","getTime","amountOfMonths","min","slice","value","index","__spreadProps","__spreadValues","OlderEntries","text","requestedYear","requestedMonth","periodString","replace","element","nativeElement","querySelector","body","spaceOfElementAndPage","documentElement","scrollHeight","scrollToBottom","innerHeight","scrollY","T","selectors","inputs","outputs","standalone","features","ɵɵStandaloneFeature","ngContentSelectors","_c0","decls","vars","consts","template","rf","ctx","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵrepeaterCreate","MonthlyViewComponent_For_6_Template","ɵɵtemplate","MonthlyViewComponent_Conditional_8_Template","MonthlyViewComponent_Conditional_9_Template","ɵɵprojection","MonthlyViewComponent_Conditional_11_Template","ɵɵtwoWayProperty","ɵɵrepeater","ɵɵconditional","CommonModule","FormsModule","NgSelectOption","ɵNgSelectMultipleOption","SelectControlValueAccessor","NgControlStatus","NgModel","IconCustomComponent","encapsulation","_MonthlyViewComponent"],"mappings":"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"}