@agorapulse/ui-components 17.3.6 → 17.3.7
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/agorapulse-ui-components-17.3.7.tgz +0 -0
- package/esm2022/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-add-comment.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-badge.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-confirm-modal.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-counter.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-dot-stepper.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-form-field.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-form-message.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-infobox.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-input-group.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-input.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-labels-selector.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-labels.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-input.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-select.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-modal.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-notification.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-password-input.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-phone-number-input.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-radio.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-select.mjs +2 -2
- package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-slide-toggle.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-status-card.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-status.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-stepper.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-text-measurement.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-textarea.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
- package/package.json +24 -24
- package/agorapulse-ui-components-17.3.6.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-components-modal.mjs","sources":["../../../libs/ui-components/modal/src/modal.component.ts","../../../libs/ui-components/modal/src/modal.component.html","../../../libs/ui-components/modal/src/agorapulse-ui-components-modal.ts"],"sourcesContent":["import { ButtonComponent } from '@agorapulse/ui-components/button';\nimport { IconButtonComponent } from '@agorapulse/ui-components/icon-button';\nimport { apClose, SymbolComponent, SymbolRegistry } from '@agorapulse/ui-symbol';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\n\nexport interface ModalConfig<T = unknown> extends ModalConfigBase<T> {\n closable?: boolean;\n headerBottomBorderEnabled?: boolean;\n}\n\nexport interface ModalConfigBase<T> {\n backdropCloseEnable?: boolean;\n matDialogConfig?: MatDialogConfig<T>;\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-modal',\n templateUrl: 'modal.component.html',\n standalone: true,\n imports: [SymbolComponent, NgStyle, NgClass, ButtonComponent, NgTemplateOutlet, IconButtonComponent],\n styleUrls: ['modal.component.scss'],\n})\nexport class ModalComponent {\n static readonly PANEL_CLASS = 'modal-container';\n\n constructor(\n public dialogRef: MatDialogRef<ComponentType<any>>,\n public symbolRegistry: SymbolRegistry\n ) {\n dialogRef.disableClose = true;\n this.symbolRegistry.registerSymbols([apClose]);\n }\n\n @Input() closable = false;\n @Input() headerBottomBorderEnabled = false;\n @Input() footerTemplate: TemplateRef<any> | undefined = undefined;\n @Input() footerVisible = true;\n @Input() headerTemplate: TemplateRef<any> | undefined = undefined;\n @Input() headerVisible = true;\n @Input({\n required: true,\n })\n mainTemplate!: TemplateRef<any>;\n @Input() sidePaneTemplate: TemplateRef<any> | undefined = undefined;\n @Input() sidePaneStyle: { [arg: string]: string } | undefined = {};\n @Input() containerStyle: { [arg: string]: string } | undefined = {};\n @Input() headerStyle: { [arg: string]: string } | undefined = {};\n @Input() contentStyle: { [arg: string]: string } | undefined = {};\n @Input() footerStyle: { [arg: string]: string } | undefined = {};\n @Input() defaultLayout = true;\n\n /**\n * Use it to open a modal containing the {@link componentType} component, with the right configuration.\n */\n static openWithComponent<T, Y>(\n matDialog: MatDialog,\n config: ModalConfigBase<Y> | undefined,\n componentType: ComponentType<T>\n ): MatDialogRef<T> {\n let matDialogConfig: MatDialogConfig<Y> | undefined;\n if (config) {\n matDialogConfig = config.matDialogConfig;\n if (matDialogConfig && config.matDialogConfig) {\n matDialogConfig.panelClass = Array.isArray(config.matDialogConfig.panelClass)\n ? [...config.matDialogConfig.panelClass, ModalComponent.PANEL_CLASS] // in case where the panelClass is an array\n : [config.matDialogConfig.panelClass ?? '', ModalComponent.PANEL_CLASS]; // in the other case, it's a String\n } else {\n matDialogConfig = { panelClass: ModalComponent.PANEL_CLASS };\n }\n } else {\n matDialogConfig = {\n panelClass: ModalComponent.PANEL_CLASS,\n };\n }\n matDialogConfig.autoFocus = false; // Prevent first button to be focused\n\n const dialogRef = matDialog.open(componentType, matDialogConfig);\n if (config?.backdropCloseEnable === true) {\n dialogRef.disableClose = false;\n }\n return dialogRef;\n }\n\n /**\n * Use it to open a modal containing the provided templates, with the right configuration.\n */\n static openWithTemplates<T>(\n matDialog: MatDialog,\n headerTemplate: TemplateRef<any> | undefined,\n mainTemplate: TemplateRef<any>,\n footerTemplate?: TemplateRef<any> | undefined,\n config?: ModalConfig<T>,\n sidePaneTemplate?: TemplateRef<any> | undefined\n ): MatDialogRef<ModalComponent> {\n const dialogRef = ModalComponent.openWithComponent(matDialog, config, ModalComponent);\n dialogRef.componentInstance.closable = config && config.closable ? config.closable : false;\n dialogRef.componentInstance.headerBottomBorderEnabled =\n config && config.headerBottomBorderEnabled ? config.headerBottomBorderEnabled : false;\n dialogRef.componentInstance.headerTemplate = headerTemplate;\n dialogRef.componentInstance.mainTemplate = mainTemplate;\n dialogRef.componentInstance.footerTemplate = footerTemplate;\n dialogRef.componentInstance.sidePaneTemplate = sidePaneTemplate;\n return dialogRef;\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","@if (sidePaneTemplate) {\n <div\n [ngStyle]=\"sidePaneStyle\"\n [ngClass]=\"{ pane: defaultLayout }\">\n <ng-template [ngTemplateOutlet]=\"sidePaneTemplate\" />\n </div>\n}\n\n<div\n class=\"modal-wrapper\"\n [ngStyle]=\"containerStyle\"\n [class.default-layout]=\"defaultLayout\">\n @if (closable) {\n <ap-icon-button\n class=\"close-button\"\n ariaLabel=\"Close button\"\n name=\"close-button\"\n color=\"none\"\n type=\"flat\"\n (onClick)=\"close()\">\n <ap-symbol symbolId=\"close\" />\n </ap-icon-button>\n }\n @if (headerTemplate && headerVisible) {\n <div\n [ngStyle]=\"headerStyle\"\n [ngClass]=\"{ header: defaultLayout }\"\n [class.border-bottom]=\"headerBottomBorderEnabled\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\" />\n </div>\n }\n @if (mainTemplate) {\n <div\n [ngStyle]=\"contentStyle\"\n [class.content]=\"defaultLayout\">\n <ng-template [ngTemplateOutlet]=\"mainTemplate\" />\n </div>\n }\n @if (footerTemplate && footerVisible) {\n <div\n [ngStyle]=\"footerStyle\"\n [ngClass]=\"{ footer: defaultLayout }\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\" />\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-modal.mjs","sources":["../../../libs/ui-components/modal/src/modal.component.ts","../../../libs/ui-components/modal/src/modal.component.html","../../../libs/ui-components/modal/src/agorapulse-ui-components-modal.ts"],"sourcesContent":["import { ButtonComponent } from '@agorapulse/ui-components/button';\nimport { IconButtonComponent } from '@agorapulse/ui-components/icon-button';\nimport { apClose, SymbolComponent, SymbolRegistry } from '@agorapulse/ui-symbol';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\n\nexport interface ModalConfig<T = unknown> extends ModalConfigBase<T> {\n closable?: boolean;\n headerBottomBorderEnabled?: boolean;\n}\n\nexport interface ModalConfigBase<T> {\n backdropCloseEnable?: boolean;\n matDialogConfig?: MatDialogConfig<T>;\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-modal',\n templateUrl: 'modal.component.html',\n standalone: true,\n imports: [SymbolComponent, NgStyle, NgClass, ButtonComponent, NgTemplateOutlet, IconButtonComponent],\n styleUrls: ['modal.component.scss'],\n})\nexport class ModalComponent {\n static readonly PANEL_CLASS = 'modal-container';\n\n constructor(\n public dialogRef: MatDialogRef<ComponentType<any>>,\n public symbolRegistry: SymbolRegistry\n ) {\n dialogRef.disableClose = true;\n this.symbolRegistry.registerSymbols([apClose]);\n }\n\n @Input() closable = false;\n @Input() headerBottomBorderEnabled = false;\n @Input() footerTemplate: TemplateRef<any> | undefined = undefined;\n @Input() footerVisible = true;\n @Input() headerTemplate: TemplateRef<any> | undefined = undefined;\n @Input() headerVisible = true;\n @Input({\n required: true,\n })\n mainTemplate!: TemplateRef<any>;\n @Input() sidePaneTemplate: TemplateRef<any> | undefined = undefined;\n @Input() sidePaneStyle: { [arg: string]: string } | undefined = {};\n @Input() containerStyle: { [arg: string]: string } | undefined = {};\n @Input() headerStyle: { [arg: string]: string } | undefined = {};\n @Input() contentStyle: { [arg: string]: string } | undefined = {};\n @Input() footerStyle: { [arg: string]: string } | undefined = {};\n @Input() defaultLayout = true;\n\n /**\n * Use it to open a modal containing the {@link componentType} component, with the right configuration.\n */\n static openWithComponent<T, Y>(\n matDialog: MatDialog,\n config: ModalConfigBase<Y> | undefined,\n componentType: ComponentType<T>\n ): MatDialogRef<T> {\n let matDialogConfig: MatDialogConfig<Y> | undefined;\n if (config) {\n matDialogConfig = config.matDialogConfig;\n if (matDialogConfig && config.matDialogConfig) {\n matDialogConfig.panelClass = Array.isArray(config.matDialogConfig.panelClass)\n ? [...config.matDialogConfig.panelClass, ModalComponent.PANEL_CLASS] // in case where the panelClass is an array\n : [config.matDialogConfig.panelClass ?? '', ModalComponent.PANEL_CLASS]; // in the other case, it's a String\n } else {\n matDialogConfig = { panelClass: ModalComponent.PANEL_CLASS };\n }\n } else {\n matDialogConfig = {\n panelClass: ModalComponent.PANEL_CLASS,\n };\n }\n matDialogConfig.autoFocus = false; // Prevent first button to be focused\n\n const dialogRef = matDialog.open(componentType, matDialogConfig);\n if (config?.backdropCloseEnable === true) {\n dialogRef.disableClose = false;\n }\n return dialogRef;\n }\n\n /**\n * Use it to open a modal containing the provided templates, with the right configuration.\n */\n static openWithTemplates<T>(\n matDialog: MatDialog,\n headerTemplate: TemplateRef<any> | undefined,\n mainTemplate: TemplateRef<any>,\n footerTemplate?: TemplateRef<any> | undefined,\n config?: ModalConfig<T>,\n sidePaneTemplate?: TemplateRef<any> | undefined\n ): MatDialogRef<ModalComponent> {\n const dialogRef = ModalComponent.openWithComponent(matDialog, config, ModalComponent);\n dialogRef.componentInstance.closable = config && config.closable ? config.closable : false;\n dialogRef.componentInstance.headerBottomBorderEnabled =\n config && config.headerBottomBorderEnabled ? config.headerBottomBorderEnabled : false;\n dialogRef.componentInstance.headerTemplate = headerTemplate;\n dialogRef.componentInstance.mainTemplate = mainTemplate;\n dialogRef.componentInstance.footerTemplate = footerTemplate;\n dialogRef.componentInstance.sidePaneTemplate = sidePaneTemplate;\n return dialogRef;\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","@if (sidePaneTemplate) {\n <div\n [ngStyle]=\"sidePaneStyle\"\n [ngClass]=\"{ pane: defaultLayout }\">\n <ng-template [ngTemplateOutlet]=\"sidePaneTemplate\" />\n </div>\n}\n\n<div\n class=\"modal-wrapper\"\n [ngStyle]=\"containerStyle\"\n [class.default-layout]=\"defaultLayout\">\n @if (closable) {\n <ap-icon-button\n class=\"close-button\"\n ariaLabel=\"Close button\"\n name=\"close-button\"\n color=\"none\"\n type=\"flat\"\n (onClick)=\"close()\">\n <ap-symbol symbolId=\"close\" />\n </ap-icon-button>\n }\n @if (headerTemplate && headerVisible) {\n <div\n [ngStyle]=\"headerStyle\"\n [ngClass]=\"{ header: defaultLayout }\"\n [class.border-bottom]=\"headerBottomBorderEnabled\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\" />\n </div>\n }\n @if (mainTemplate) {\n <div\n [ngStyle]=\"contentStyle\"\n [class.content]=\"defaultLayout\">\n <ng-template [ngTemplateOutlet]=\"mainTemplate\" />\n </div>\n }\n @if (footerTemplate && footerVisible) {\n <div\n [ngStyle]=\"footerStyle\"\n [ngClass]=\"{ footer: defaultLayout }\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\" />\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-components-neo-datepicker.mjs","sources":["../../../libs/ui-components/neo-datepicker/src/day-disabled.pipe.ts","../../../libs/ui-components/neo-datepicker/src/neo-datepicker.component.ts","../../../libs/ui-components/neo-datepicker/src/neo-datepicker.component.html","../../../libs/ui-components/neo-datepicker/src/agorapulse-ui-components-neo-datepicker.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { DayDetail } from './day-detail.model';\n\n@Pipe({\n name: 'dayDisabled',\n pure: true,\n standalone: true,\n})\nexport class DayDisabledPipe implements PipeTransform {\n transform(day: DayDetail, todayTimestamp: number, minDateTimestamp?: number, maxDateTimestamp?: number): boolean {\n return (\n day.month !== 0 ||\n (day.timestamp < todayTimestamp && !minDateTimestamp) ||\n (!!minDateTimestamp && day.timestamp < minDateTimestamp) ||\n (!!maxDateTimestamp && day.timestamp > maxDateTimestamp)\n );\n }\n}\n","import { ButtonComponent } from '@agorapulse/ui-components/button';\nimport { IconButtonComponent } from '@agorapulse/ui-components/icon-button';\nimport { SymbolComponent, SymbolRegistry, apArrowButtonLeft, apArrowButtonRight } from '@agorapulse/ui-symbol';\nimport { AsyncPipe, NgTemplateOutlet, SlicePipe, TitleCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, TemplateRef, inject } from '@angular/core';\nimport dayjs from 'dayjs';\nimport 'dayjs/locale/de';\nimport 'dayjs/locale/en';\nimport 'dayjs/locale/es';\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/pt';\nimport localeData from 'dayjs/plugin/localeData';\nimport { injectDestroy } from 'ngxtension/inject-destroy';\nimport { BehaviorSubject, filter } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { DayDetail } from './day-detail.model';\nimport { DayDisabledPipe } from './day-disabled.pipe';\n\nexport type NeoDatePickerMode = 'single' | 'multiple';\nexport type NeoDatePickerStartsOn = 'monday' | 'sunday';\nexport type NeoDatePickerLocale = 'en' | 'es' | 'fr' | 'pt' | 'de';\n\n@Component({\n selector: 'ap-neo-date-picker',\n styleUrls: ['neo-datepicker.component.scss'],\n templateUrl: 'neo-datepicker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DayDisabledPipe],\n imports: [\n SymbolComponent,\n TitleCasePipe,\n ButtonComponent,\n SlicePipe,\n NgTemplateOutlet,\n DayDisabledPipe,\n AsyncPipe,\n IconButtonComponent,\n ],\n standalone: true,\n})\nexport class NeoDatepickerComponent implements OnInit {\n readonly ONE_DAY: number = 60 * 60 * 24 * 1000;\n readonly TODAY_TIMESTAMP: number = Date.now() - (Date.now() % this.ONE_DAY) + new Date().getTimezoneOffset() * 1000 * 60;\n\n @Input() dayTemplate: TemplateRef<{ day: DayDetail }> | undefined = undefined;\n @Input() locale: NeoDatePickerLocale = 'en';\n\n private _maxDate: dayjs.Dayjs | undefined;\n\n @Input() set maxDate(maxDate: dayjs.Dayjs) {\n this._maxDate = maxDate;\n this.maxDateTimestamp = maxDate.toDate().getTime();\n }\n get maxDate(): dayjs.Dayjs | undefined {\n return this._maxDate;\n }\n\n private _minDate: dayjs.Dayjs | undefined;\n @Input() set minDate(minDate: dayjs.Dayjs) {\n this._minDate = minDate;\n this.minDateTimestamp = minDate.toDate().getTime();\n }\n get minDate(): dayjs.Dayjs | undefined {\n return this._minDate;\n }\n\n previousMonthAvailable: boolean = true;\n\n private _mode: NeoDatePickerMode = 'single';\n @Input() set mode(mode: NeoDatePickerMode) {\n this._mode = mode;\n if (this._mode === 'single') {\n this._selectedDates = this._selectedDates.slice(0, 1);\n this.selectedDaysTimestamp = new Set(Array.from(this.selectedDaysTimestamp).slice(0, 1));\n }\n }\n get mode(): NeoDatePickerMode {\n return this._mode;\n }\n\n private _selectedDates: dayjs.Dayjs[] = [];\n @Input() set selectedDates(dates: dayjs.Dayjs[]) {\n if (this._mode === 'single') {\n dates = dates.slice(0, 1);\n }\n this.selectedDaysTimestamp = new Set();\n this._selectedDates = dates;\n if (this._selectedDates.length) {\n this._selectedDates.forEach(day => {\n this.selectedDaysTimestamp.add(day.toDate().getTime());\n });\n }\n }\n\n get selectedDates(): dayjs.Dayjs[] {\n return this._selectedDates;\n }\n\n @Input() startsOn: NeoDatePickerStartsOn = 'monday';\n\n @Output() datesSelected: EventEmitter<dayjs.Dayjs[]> = new EventEmitter<dayjs.Dayjs[]>();\n @Output() nextMonth: EventEmitter<void> = new EventEmitter<void>();\n @Output() previousMonth: EventEmitter<void> = new EventEmitter<void>();\n\n currentYear!: number;\n currentMonth!: number;\n currentMonthDates$: BehaviorSubject<DayDetail[]> = new BehaviorSubject<DayDetail[]>([]);\n minDateTimestamp: number | undefined = undefined;\n maxDateTimestamp: number | undefined = undefined;\n months: string[] = [];\n selectedDaysTimestamp: Set<number> = new Set();\n weekDays: string[] = [];\n\n dayDisabledPipe: DayDisabledPipe = inject(DayDisabledPipe);\n\n private destroy$ = injectDestroy();\n\n constructor(public symbolRegistry: SymbolRegistry) {\n this.symbolRegistry.registerSymbols([apArrowButtonLeft, apArrowButtonRight]);\n }\n\n ngOnInit(): void {\n dayjs.extend(localeData);\n const date = new Date();\n this.currentYear = date.getFullYear();\n this.currentMonth = date.getMonth();\n if (this.locale) {\n dayjs.locale(this.locale);\n }\n this.months = dayjs.months();\n this.weekDays = [...dayjs.weekdays()];\n\n if (this.startsOn === 'monday') {\n const sunday = this.weekDays.slice(0, 1);\n this.weekDays.splice(0, 1);\n this.weekDays = this.weekDays.concat(sunday);\n }\n this.currentMonthDates$.next(this.getMonthDetails(this.currentYear, this.currentMonth));\n this.currentMonthDates$\n .pipe(\n distinctUntilChanged(),\n filter(() => !!this.minDateTimestamp),\n takeUntil(this.destroy$)\n )\n .subscribe(currentMonthDates => {\n const minDateInPreviousMonth = this.minDateTimestamp\n ? new Date(this.minDateTimestamp).getMonth() < this.currentMonth\n : undefined;\n this.previousMonthAvailable =\n !currentMonthDates.some(dayDetail => dayDetail.timestamp === this.minDateTimestamp) || !!minDateInPreviousMonth;\n });\n }\n\n getDayDetails(index: number, firstDay: number, month: number, numberOfDays: number, year: number): DayDetail {\n const date = index - firstDay;\n const day = index % 7;\n let prevMonth = month - 1;\n let prevYear = year;\n if (prevMonth < 0) {\n prevMonth = 11;\n prevYear--;\n }\n const prevMonthNumberOfDays = this.getNumberOfDays(prevYear, prevMonth);\n const _date = (date < 0 ? prevMonthNumberOfDays + date : date % numberOfDays) + 1;\n const _month = date < 0 ? -1 : date >= numberOfDays ? 1 : 0;\n const newDate = new Date(year, _month + month, _date);\n const timestamp = newDate.getTime();\n const dayString = this.weekDays[day];\n return {\n date: _date,\n day,\n month: _month,\n timestamp,\n dayString,\n dayjs: dayjs(newDate),\n };\n }\n\n getNumberOfDays(year: number, month: number): number {\n return 40 - new Date(year, month, 40).getDate();\n }\n\n getMonthDetails(year: number, month: number): DayDetail[] {\n let firstDay = new Date(year, month).getDay();\n if (this.startsOn === 'monday') {\n firstDay -= 1;\n }\n // If the first day is below 0 it means the sunday is the first day of the month so we need to show the last month\n if (firstDay < 0) {\n firstDay = 6;\n }\n const numberOfDays = this.getNumberOfDays(year, month);\n const monthArray = [];\n const rows = 6;\n let currentDay = null;\n let index = 0;\n const cols = 7;\n\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < cols; col++) {\n currentDay = this.getDayDetails(index, firstDay, month, numberOfDays, year);\n monthArray.push(currentDay);\n index++;\n }\n }\n return monthArray;\n }\n\n onPreviousMonth(): void {\n if (this.previousMonthAvailable) {\n this.previousMonth.emit();\n this.currentMonth -= 1;\n if (this.currentMonth === -1) {\n this.currentMonth = 11;\n this.currentYear -= 1;\n }\n this.currentMonthDates$.next(this.getMonthDetails(this.currentYear, this.currentMonth));\n }\n }\n\n onNextMonth(): void {\n this.nextMonth.emit();\n this.currentMonth += 1;\n if (this.currentMonth === 12) {\n this.currentMonth = 0;\n this.currentYear += 1;\n }\n this.currentMonthDates$.next(this.getMonthDetails(this.currentYear, this.currentMonth));\n }\n\n onSelectDay(dayDetail: DayDetail): void {\n const dayDisabled = this.dayDisabledPipe.transform(dayDetail, this.TODAY_TIMESTAMP, this.minDateTimestamp, this.maxDateTimestamp);\n if (!dayDisabled) {\n if (this.mode === 'single') {\n this.selectedDaysTimestamp.clear();\n }\n if (this.minDate && dayDetail.dayjs.isBefore(dayjs(this.minDate))) {\n return;\n }\n if (this.maxDate && dayDetail.dayjs.isAfter(dayjs(this.maxDate))) {\n return;\n }\n if (this.selectedDaysTimestamp.has(dayDetail.timestamp)) {\n this.selectedDaysTimestamp.delete(dayDetail.timestamp);\n } else {\n this.selectedDaysTimestamp.add(dayDetail.timestamp);\n }\n this.datesSelected.emit(Array.from(this.selectedDaysTimestamp).map(timestamp => dayjs(timestamp)));\n }\n }\n}\n","<div class=\"date-picker-container\">\n <div class=\"date-picker\">\n <div class=\"month-navigation\">\n <ap-icon-button\n name=\"neo-date-picker-previous-month\"\n [disabled]=\"!previousMonthAvailable\"\n (click)=\"onPreviousMonth()\">\n <ap-symbol\n symbolId=\"arrow-left\"\n size=\"sm\" />\n </ap-icon-button>\n <span>{{ months[currentMonth] | titlecase }} {{ currentYear }}</span>\n <ap-icon-button\n name=\"neo-date-picker-next-month\"\n (click)=\"onNextMonth()\">\n <ap-symbol\n symbolId=\"arrow-right\"\n size=\"sm\" />\n </ap-icon-button>\n </div>\n <div class=\"week-header\">\n @for (day of weekDays; track day) {\n <div class=\"day\">\n {{ day | slice: 0 : 2 | titlecase }}\n </div>\n }\n </div>\n <div class=\"days-container\">\n @for (day of currentMonthDates$ | async; track day) {\n @if (dayTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"dayTemplate\"\n [ngTemplateOutletContext]=\"{ day: day }\" />\n }\n @if (!dayTemplate) {\n <div\n class=\"day\"\n [class.disabled]=\"day | dayDisabled: TODAY_TIMESTAMP : minDateTimestamp : maxDateTimestamp\"\n [class.today]=\"day.timestamp === TODAY_TIMESTAMP\"\n [class.selected]=\"selectedDaysTimestamp.has(day.timestamp)\"\n (click)=\"onSelectDay(day)\">\n <span>\n {{ day.date }}\n </span>\n </div>\n }\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-neo-datepicker.mjs","sources":["../../../libs/ui-components/neo-datepicker/src/day-disabled.pipe.ts","../../../libs/ui-components/neo-datepicker/src/neo-datepicker.component.ts","../../../libs/ui-components/neo-datepicker/src/neo-datepicker.component.html","../../../libs/ui-components/neo-datepicker/src/agorapulse-ui-components-neo-datepicker.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { DayDetail } from './day-detail.model';\n\n@Pipe({\n name: 'dayDisabled',\n pure: true,\n standalone: true,\n})\nexport class DayDisabledPipe implements PipeTransform {\n transform(day: DayDetail, todayTimestamp: number, minDateTimestamp?: number, maxDateTimestamp?: number): boolean {\n return (\n day.month !== 0 ||\n (day.timestamp < todayTimestamp && !minDateTimestamp) ||\n (!!minDateTimestamp && day.timestamp < minDateTimestamp) ||\n (!!maxDateTimestamp && day.timestamp > maxDateTimestamp)\n );\n }\n}\n","import { ButtonComponent } from '@agorapulse/ui-components/button';\nimport { IconButtonComponent } from '@agorapulse/ui-components/icon-button';\nimport { SymbolComponent, SymbolRegistry, apArrowButtonLeft, apArrowButtonRight } from '@agorapulse/ui-symbol';\nimport { AsyncPipe, NgTemplateOutlet, SlicePipe, TitleCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, TemplateRef, inject } from '@angular/core';\nimport dayjs from 'dayjs';\nimport 'dayjs/locale/de';\nimport 'dayjs/locale/en';\nimport 'dayjs/locale/es';\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/pt';\nimport localeData from 'dayjs/plugin/localeData';\nimport { injectDestroy } from 'ngxtension/inject-destroy';\nimport { BehaviorSubject, filter } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { DayDetail } from './day-detail.model';\nimport { DayDisabledPipe } from './day-disabled.pipe';\n\nexport type NeoDatePickerMode = 'single' | 'multiple';\nexport type NeoDatePickerStartsOn = 'monday' | 'sunday';\nexport type NeoDatePickerLocale = 'en' | 'es' | 'fr' | 'pt' | 'de';\n\n@Component({\n selector: 'ap-neo-date-picker',\n styleUrls: ['neo-datepicker.component.scss'],\n templateUrl: 'neo-datepicker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DayDisabledPipe],\n imports: [\n SymbolComponent,\n TitleCasePipe,\n ButtonComponent,\n SlicePipe,\n NgTemplateOutlet,\n DayDisabledPipe,\n AsyncPipe,\n IconButtonComponent,\n ],\n standalone: true,\n})\nexport class NeoDatepickerComponent implements OnInit {\n readonly ONE_DAY: number = 60 * 60 * 24 * 1000;\n readonly TODAY_TIMESTAMP: number = Date.now() - (Date.now() % this.ONE_DAY) + new Date().getTimezoneOffset() * 1000 * 60;\n\n @Input() dayTemplate: TemplateRef<{ day: DayDetail }> | undefined = undefined;\n @Input() locale: NeoDatePickerLocale = 'en';\n\n private _maxDate: dayjs.Dayjs | undefined;\n\n @Input() set maxDate(maxDate: dayjs.Dayjs) {\n this._maxDate = maxDate;\n this.maxDateTimestamp = maxDate.toDate().getTime();\n }\n get maxDate(): dayjs.Dayjs | undefined {\n return this._maxDate;\n }\n\n private _minDate: dayjs.Dayjs | undefined;\n @Input() set minDate(minDate: dayjs.Dayjs) {\n this._minDate = minDate;\n this.minDateTimestamp = minDate.toDate().getTime();\n }\n get minDate(): dayjs.Dayjs | undefined {\n return this._minDate;\n }\n\n previousMonthAvailable: boolean = true;\n\n private _mode: NeoDatePickerMode = 'single';\n @Input() set mode(mode: NeoDatePickerMode) {\n this._mode = mode;\n if (this._mode === 'single') {\n this._selectedDates = this._selectedDates.slice(0, 1);\n this.selectedDaysTimestamp = new Set(Array.from(this.selectedDaysTimestamp).slice(0, 1));\n }\n }\n get mode(): NeoDatePickerMode {\n return this._mode;\n }\n\n private _selectedDates: dayjs.Dayjs[] = [];\n @Input() set selectedDates(dates: dayjs.Dayjs[]) {\n if (this._mode === 'single') {\n dates = dates.slice(0, 1);\n }\n this.selectedDaysTimestamp = new Set();\n this._selectedDates = dates;\n if (this._selectedDates.length) {\n this._selectedDates.forEach(day => {\n this.selectedDaysTimestamp.add(day.toDate().getTime());\n });\n }\n }\n\n get selectedDates(): dayjs.Dayjs[] {\n return this._selectedDates;\n }\n\n @Input() startsOn: NeoDatePickerStartsOn = 'monday';\n\n @Output() datesSelected: EventEmitter<dayjs.Dayjs[]> = new EventEmitter<dayjs.Dayjs[]>();\n @Output() nextMonth: EventEmitter<void> = new EventEmitter<void>();\n @Output() previousMonth: EventEmitter<void> = new EventEmitter<void>();\n\n currentYear!: number;\n currentMonth!: number;\n currentMonthDates$: BehaviorSubject<DayDetail[]> = new BehaviorSubject<DayDetail[]>([]);\n minDateTimestamp: number | undefined = undefined;\n maxDateTimestamp: number | undefined = undefined;\n months: string[] = [];\n selectedDaysTimestamp: Set<number> = new Set();\n weekDays: string[] = [];\n\n dayDisabledPipe: DayDisabledPipe = inject(DayDisabledPipe);\n\n private destroy$ = injectDestroy();\n\n constructor(public symbolRegistry: SymbolRegistry) {\n this.symbolRegistry.registerSymbols([apArrowButtonLeft, apArrowButtonRight]);\n }\n\n ngOnInit(): void {\n dayjs.extend(localeData);\n const date = new Date();\n this.currentYear = date.getFullYear();\n this.currentMonth = date.getMonth();\n if (this.locale) {\n dayjs.locale(this.locale);\n }\n this.months = dayjs.months();\n this.weekDays = [...dayjs.weekdays()];\n\n if (this.startsOn === 'monday') {\n const sunday = this.weekDays.slice(0, 1);\n this.weekDays.splice(0, 1);\n this.weekDays = this.weekDays.concat(sunday);\n }\n this.currentMonthDates$.next(this.getMonthDetails(this.currentYear, this.currentMonth));\n this.currentMonthDates$\n .pipe(\n distinctUntilChanged(),\n filter(() => !!this.minDateTimestamp),\n takeUntil(this.destroy$)\n )\n .subscribe(currentMonthDates => {\n const minDateInPreviousMonth = this.minDateTimestamp\n ? new Date(this.minDateTimestamp).getMonth() < this.currentMonth\n : undefined;\n this.previousMonthAvailable =\n !currentMonthDates.some(dayDetail => dayDetail.timestamp === this.minDateTimestamp) || !!minDateInPreviousMonth;\n });\n }\n\n getDayDetails(index: number, firstDay: number, month: number, numberOfDays: number, year: number): DayDetail {\n const date = index - firstDay;\n const day = index % 7;\n let prevMonth = month - 1;\n let prevYear = year;\n if (prevMonth < 0) {\n prevMonth = 11;\n prevYear--;\n }\n const prevMonthNumberOfDays = this.getNumberOfDays(prevYear, prevMonth);\n const _date = (date < 0 ? prevMonthNumberOfDays + date : date % numberOfDays) + 1;\n const _month = date < 0 ? -1 : date >= numberOfDays ? 1 : 0;\n const newDate = new Date(year, _month + month, _date);\n const timestamp = newDate.getTime();\n const dayString = this.weekDays[day];\n return {\n date: _date,\n day,\n month: _month,\n timestamp,\n dayString,\n dayjs: dayjs(newDate),\n };\n }\n\n getNumberOfDays(year: number, month: number): number {\n return 40 - new Date(year, month, 40).getDate();\n }\n\n getMonthDetails(year: number, month: number): DayDetail[] {\n let firstDay = new Date(year, month).getDay();\n if (this.startsOn === 'monday') {\n firstDay -= 1;\n }\n // If the first day is below 0 it means the sunday is the first day of the month so we need to show the last month\n if (firstDay < 0) {\n firstDay = 6;\n }\n const numberOfDays = this.getNumberOfDays(year, month);\n const monthArray = [];\n const rows = 6;\n let currentDay = null;\n let index = 0;\n const cols = 7;\n\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < cols; col++) {\n currentDay = this.getDayDetails(index, firstDay, month, numberOfDays, year);\n monthArray.push(currentDay);\n index++;\n }\n }\n return monthArray;\n }\n\n onPreviousMonth(): void {\n if (this.previousMonthAvailable) {\n this.previousMonth.emit();\n this.currentMonth -= 1;\n if (this.currentMonth === -1) {\n this.currentMonth = 11;\n this.currentYear -= 1;\n }\n this.currentMonthDates$.next(this.getMonthDetails(this.currentYear, this.currentMonth));\n }\n }\n\n onNextMonth(): void {\n this.nextMonth.emit();\n this.currentMonth += 1;\n if (this.currentMonth === 12) {\n this.currentMonth = 0;\n this.currentYear += 1;\n }\n this.currentMonthDates$.next(this.getMonthDetails(this.currentYear, this.currentMonth));\n }\n\n onSelectDay(dayDetail: DayDetail): void {\n const dayDisabled = this.dayDisabledPipe.transform(dayDetail, this.TODAY_TIMESTAMP, this.minDateTimestamp, this.maxDateTimestamp);\n if (!dayDisabled) {\n if (this.mode === 'single') {\n this.selectedDaysTimestamp.clear();\n }\n if (this.minDate && dayDetail.dayjs.isBefore(dayjs(this.minDate))) {\n return;\n }\n if (this.maxDate && dayDetail.dayjs.isAfter(dayjs(this.maxDate))) {\n return;\n }\n if (this.selectedDaysTimestamp.has(dayDetail.timestamp)) {\n this.selectedDaysTimestamp.delete(dayDetail.timestamp);\n } else {\n this.selectedDaysTimestamp.add(dayDetail.timestamp);\n }\n this.datesSelected.emit(Array.from(this.selectedDaysTimestamp).map(timestamp => dayjs(timestamp)));\n }\n }\n}\n","<div class=\"date-picker-container\">\n <div class=\"date-picker\">\n <div class=\"month-navigation\">\n <ap-icon-button\n name=\"neo-date-picker-previous-month\"\n [disabled]=\"!previousMonthAvailable\"\n (click)=\"onPreviousMonth()\">\n <ap-symbol\n symbolId=\"arrow-left\"\n size=\"sm\" />\n </ap-icon-button>\n <span>{{ months[currentMonth] | titlecase }} {{ currentYear }}</span>\n <ap-icon-button\n name=\"neo-date-picker-next-month\"\n (click)=\"onNextMonth()\">\n <ap-symbol\n symbolId=\"arrow-right\"\n size=\"sm\" />\n </ap-icon-button>\n </div>\n <div class=\"week-header\">\n @for (day of weekDays; track day) {\n <div class=\"day\">\n {{ day | slice: 0 : 2 | titlecase }}\n </div>\n }\n </div>\n <div class=\"days-container\">\n @for (day of currentMonthDates$ | async; track day) {\n @if (dayTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"dayTemplate\"\n [ngTemplateOutletContext]=\"{ day: day }\" />\n }\n @if (!dayTemplate) {\n <div\n class=\"day\"\n [class.disabled]=\"day | dayDisabled: TODAY_TIMESTAMP : minDateTimestamp : maxDateTimestamp\"\n [class.today]=\"day.timestamp === TODAY_TIMESTAMP\"\n [class.selected]=\"selectedDaysTimestamp.has(day.timestamp)\"\n (click)=\"onSelectDay(day)\">\n <span>\n {{ day.date }}\n </span>\n </div>\n }\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-components-notification.mjs","sources":["../../../libs/ui-components/notification/src/notification.component.ts","../../../libs/ui-components/notification/src/notification.component.html","../../../libs/ui-components/notification/src/agorapulse-ui-components-notification.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ap-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass],\n standalone: true,\n})\nexport class NotificationComponent {\n @Input() type: 'info' | 'warning' | 'error' | 'success' = 'info';\n}\n","<div\n class=\"main\"\n [ngClass]=\"{ warning: type === 'warning', error: type === 'error', success: type === 'success' }\">\n <span class=\"border\"></span>\n <span class=\"icon\">\n <ng-content select=\"[icon]\" />\n </span>\n <ng-content select=\"[text]\" />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAWa,qBAAqB,CAAA;IACrB,IAAI,GAA6C,MAAM
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-notification.mjs","sources":["../../../libs/ui-components/notification/src/notification.component.ts","../../../libs/ui-components/notification/src/notification.component.html","../../../libs/ui-components/notification/src/agorapulse-ui-components-notification.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ap-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass],\n standalone: true,\n})\nexport class NotificationComponent {\n @Input() type: 'info' | 'warning' | 'error' | 'success' = 'info';\n}\n","<div\n class=\"main\"\n [ngClass]=\"{ warning: type === 'warning', error: type === 'error', success: type === 'success' }\">\n <span class=\"border\"></span>\n <span class=\"icon\">\n <ng-content select=\"[icon]\" />\n </span>\n <ng-content select=\"[text]\" />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAWa,qBAAqB,CAAA;IACrB,IAAI,GAA6C,MAAM;uGADvD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXlC,0SASA,EAAA,MAAA,EAAA,CAAA,ogMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGR,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;+BACI,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,WACtC,CAAC,OAAO,CAAC,EAAA,UAAA,EACN,IAAI,EAAA,QAAA,EAAA,0SAAA,EAAA,MAAA,EAAA,CAAA,ogMAAA,CAAA,EAAA;8BAGP,IAAI,EAAA,CAAA;sBAAZ;;;AEZL;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-components-paginator.mjs","sources":["../../../libs/ui-components/paginator/src/paginator-button/paginator-button.component.ts","../../../libs/ui-components/paginator/src/paginator-button/paginator-button.component.html","../../../libs/ui-components/paginator/src/paginator.component.ts","../../../libs/ui-components/paginator/src/paginator.component.html","../../../libs/ui-components/paginator/src/agorapulse-ui-components-paginator.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'ap-paginator-button',\n templateUrl: './paginator-button.component.html',\n styleUrls: ['./paginator-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class PaginatorButtonComponent {\n @ViewChild('button') button!: ElementRef<HTMLButtonElement>;\n\n @Input() ariaLabel: string = '';\n @Input() disabled = false;\n @Input() pageIndex = 0;\n @Input() selectedPageIndex = 0;\n\n @Output() selectPage = new EventEmitter<number>();\n\n focused: boolean = false;\n\n onClickHandle(pageIndex: number): void {\n this.button.nativeElement.blur();\n this.selectPage.emit(pageIndex);\n }\n\n onBlurHandle() {\n this.focused = false;\n }\n\n onFocusHandle() {\n this.focused = true;\n }\n\n @HostListener('window:keyup.space', ['$event'])\n onSpaceKeyUp(event: KeyboardEvent) {\n if (this.focused) {\n event.preventDefault();\n console.log('this.button.nativeElement', this.button.nativeElement);\n this.button.nativeElement.click();\n }\n }\n}\n","<button\n #button\n class=\"square-button\"\n role=\"button\"\n type=\"button\"\n [id]=\"'paginator-button-' + pageIndex\"\n [class.active]=\"selectedPageIndex === pageIndex\"\n [attr.aria-label]=\"ariaLabel || null\"\n (click)=\"onClickHandle(pageIndex)\"\n (blur)=\"onBlurHandle()\"\n (focus)=\"onFocusHandle()\">\n <span>\n {{ pageIndex + 1 }}\n </span>\n</button>\n","import { ButtonComponent } from '@agorapulse/ui-components/button';\nimport { IconButtonComponent } from '@agorapulse/ui-components/icon-button';\nimport { SymbolComponent, SymbolRegistry, apArrowLeft, apArrowRight } from '@agorapulse/ui-symbol';\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, OnDestroy, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BehaviorSubject, Subject, combineLatest, distinctUntilChanged, takeUntil } from 'rxjs';\nimport { PaginatorButtonComponent } from './paginator-button/paginator-button.component';\n\n@Component({\n selector: 'ap-paginator',\n templateUrl: './paginator.component.html',\n styleUrls: ['./paginator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SymbolComponent, ButtonComponent, PaginatorButtonComponent, IconButtonComponent, ReactiveFormsModule, FormsModule],\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n})\nexport class PaginatorComponent implements OnDestroy {\n readonly DEFAULT_MIDDLE_SIZE = 3;\n readonly DEFAULT_ITEM_COUNT = 0;\n readonly DEFAULT_ITEM_COUNT_PER_PAGE = 10;\n readonly DEFAULT_CURRENT_PAGE_INDEX = 0;\n readonly DEFAULT_EDGE_SIZE = 5;\n\n @Input() set currentPageIndex(value: number) {\n this._currentPageIndex.next(value ?? this.DEFAULT_CURRENT_PAGE_INDEX);\n }\n\n get currentPageIndex(): number {\n return this._currentPageIndex.getValue();\n }\n\n @Input() displayGoTo = false;\n @Input() edgeSize: number = this.DEFAULT_EDGE_SIZE;\n @Input() goToLabel: string = 'Go to';\n @Input() set itemCount(value: number) {\n this._itemCount.next(value ?? this.DEFAULT_ITEM_COUNT);\n }\n\n get itemCount(): number {\n return this._itemCount.getValue();\n }\n @Input() set itemCountPerPage(value: number) {\n this._itemCountPerPage.next(value ?? this.DEFAULT_ITEM_COUNT_PER_PAGE);\n }\n\n get itemCountPerPage(): number {\n return this._itemCountPerPage.getValue();\n }\n\n private _middleSize!: number;\n @Input() set middleSize(value: number) {\n // make sure middle size is an odd number\n if (value && value % 2 === 0) {\n value++;\n }\n this._middleSize = value ?? this.DEFAULT_MIDDLE_SIZE;\n }\n\n get middleSize(): number {\n return this._middleSize;\n }\n\n @Output() currentPageIndexChange = new EventEmitter<number>();\n\n pageInput: string = '';\n pageCount = 0;\n firstPageDisplayed = true;\n lastPageDisplayed = true;\n private destroy$: Subject<void> = new Subject<void>();\n\n private _itemCount: BehaviorSubject<number> = new BehaviorSubject<number>(this.DEFAULT_ITEM_COUNT);\n private _itemCountPerPage: BehaviorSubject<number> = new BehaviorSubject<number>(this.DEFAULT_ITEM_COUNT_PER_PAGE);\n private _currentPageIndex: BehaviorSubject<number> = new BehaviorSubject<number>(this.DEFAULT_CURRENT_PAGE_INDEX);\n\n constructor(public symbolRegistry: SymbolRegistry) {\n this.symbolRegistry.registerSymbols([apArrowLeft, apArrowRight]);\n combineLatest([this._itemCount, this._itemCountPerPage, this._currentPageIndex])\n .pipe(\n distinctUntilChanged(\n (\n [previousItemCount, previousItemCountPerPage, previousCurrentPageIndex],\n [itemCount, itemCountPerPage, currentPageIndex]\n ) => {\n return (\n previousItemCount === itemCount &&\n previousItemCountPerPage === itemCountPerPage &&\n previousCurrentPageIndex === currentPageIndex\n );\n }\n ),\n takeUntil(this.destroy$)\n )\n .subscribe(([itemCount, itemCountPerPage, currentPageIndex]) => {\n this.pageCount = Math.ceil(itemCount / itemCountPerPage);\n // make sure page index is between min and max page index\n this._currentPageIndex.next(Math.max(0, Math.min(this.pageCount - 1, currentPageIndex)));\n this.firstPageDisplayed = this.currentPageIndex === 0;\n this.lastPageDisplayed = this.currentPageIndex === this.pageCount - 1;\n });\n }\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n @HostListener('keydown.enter')\n onEnterKeydownPressed() {\n if (this.pageInput && !isNaN(+this.pageInput) && +this.pageInput > 0 && +this.pageInput <= this.pageCount) {\n this.onSelectPage(+this.pageInput - 1);\n }\n this.pageInput = '';\n }\n\n onSelectPage(pageIndex: number): void {\n this._currentPageIndex.next(pageIndex);\n this.currentPageIndexChange.emit(pageIndex);\n }\n}\n","<div class=\"item-index-overview\">\n {{ currentPageIndex * itemCountPerPage + 1 }}\n - {{ lastPageDisplayed ? itemCount : (currentPageIndex + 1) * itemCountPerPage }} of {{ itemCount }}\n</div>\n\n<div class=\"pages\">\n <button\n class=\"navigation-button\"\n ariaLabel=\"Select Previous Page button\"\n [disabled]=\"firstPageDisplayed\"\n (click)=\"onSelectPage(currentPageIndex - 1)\">\n <ap-symbol size=\"sm\" symbolId=\"arrow-left\" />\n </button>\n @if (pageCount > edgeSize + 1) {\n @if (currentPageIndex >= edgeSize - 1) {\n @if (currentPageIndex <= pageCount - edgeSize) {\n <ap-paginator-button\n [pageIndex]=\"0\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n <span class=\"ellipsis\">...</span>\n @for (dummy of [].constructor(middleSize); track dummy; let i = $index) {\n <ap-paginator-button\n [pageIndex]=\"currentPageIndex + i - (middleSize - 1) / 2\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n <span class=\"ellipsis\">...</span>\n <ap-paginator-button\n [pageIndex]=\"pageCount - 1\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n } @else {\n <ap-paginator-button\n [pageIndex]=\"0\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n <span class=\"ellipsis\">...</span>\n @for (dummy of [].constructor(edgeSize); track dummy; let i = $index) {\n <ap-paginator-button\n [pageIndex]=\"pageCount - edgeSize + i\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n }\n } @else {\n @for (dummy of [].constructor(edgeSize); track dummy; let i = $index) {\n <ap-paginator-button\n [pageIndex]=\"i\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n <span class=\"ellipsis\">...</span>\n <ap-paginator-button\n [pageIndex]=\"pageCount - 1\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n } @else {\n @for (dummy of [].constructor(pageCount); track dummy; let i = $index) {\n <ap-paginator-button\n [pageIndex]=\"i\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n }\n <button\n class=\"navigation-button\"\n ariaLabel=\"Select Next Page button\"\n [disabled]=\"lastPageDisplayed\"\n (click)=\"onSelectPage(currentPageIndex + 1)\">\n <ap-symbol size=\"sm\" symbolId=\"arrow-right\" />\n </button>\n</div>\n<div class=\"go-to\">\n @if (displayGoTo) {\n <span>{{ goToLabel }}</span>\n }\n @if (displayGoTo) {\n <input\n type=\"number\"\n [(ngModel)]=\"pageInput\" />\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-paginator.mjs","sources":["../../../libs/ui-components/paginator/src/paginator-button/paginator-button.component.ts","../../../libs/ui-components/paginator/src/paginator-button/paginator-button.component.html","../../../libs/ui-components/paginator/src/paginator.component.ts","../../../libs/ui-components/paginator/src/paginator.component.html","../../../libs/ui-components/paginator/src/agorapulse-ui-components-paginator.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'ap-paginator-button',\n templateUrl: './paginator-button.component.html',\n styleUrls: ['./paginator-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class PaginatorButtonComponent {\n @ViewChild('button') button!: ElementRef<HTMLButtonElement>;\n\n @Input() ariaLabel: string = '';\n @Input() disabled = false;\n @Input() pageIndex = 0;\n @Input() selectedPageIndex = 0;\n\n @Output() selectPage = new EventEmitter<number>();\n\n focused: boolean = false;\n\n onClickHandle(pageIndex: number): void {\n this.button.nativeElement.blur();\n this.selectPage.emit(pageIndex);\n }\n\n onBlurHandle() {\n this.focused = false;\n }\n\n onFocusHandle() {\n this.focused = true;\n }\n\n @HostListener('window:keyup.space', ['$event'])\n onSpaceKeyUp(event: KeyboardEvent) {\n if (this.focused) {\n event.preventDefault();\n console.log('this.button.nativeElement', this.button.nativeElement);\n this.button.nativeElement.click();\n }\n }\n}\n","<button\n #button\n class=\"square-button\"\n role=\"button\"\n type=\"button\"\n [id]=\"'paginator-button-' + pageIndex\"\n [class.active]=\"selectedPageIndex === pageIndex\"\n [attr.aria-label]=\"ariaLabel || null\"\n (click)=\"onClickHandle(pageIndex)\"\n (blur)=\"onBlurHandle()\"\n (focus)=\"onFocusHandle()\">\n <span>\n {{ pageIndex + 1 }}\n </span>\n</button>\n","import { ButtonComponent } from '@agorapulse/ui-components/button';\nimport { IconButtonComponent } from '@agorapulse/ui-components/icon-button';\nimport { SymbolComponent, SymbolRegistry, apArrowLeft, apArrowRight } from '@agorapulse/ui-symbol';\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, OnDestroy, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BehaviorSubject, Subject, combineLatest, distinctUntilChanged, takeUntil } from 'rxjs';\nimport { PaginatorButtonComponent } from './paginator-button/paginator-button.component';\n\n@Component({\n selector: 'ap-paginator',\n templateUrl: './paginator.component.html',\n styleUrls: ['./paginator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SymbolComponent, ButtonComponent, PaginatorButtonComponent, IconButtonComponent, ReactiveFormsModule, FormsModule],\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n})\nexport class PaginatorComponent implements OnDestroy {\n readonly DEFAULT_MIDDLE_SIZE = 3;\n readonly DEFAULT_ITEM_COUNT = 0;\n readonly DEFAULT_ITEM_COUNT_PER_PAGE = 10;\n readonly DEFAULT_CURRENT_PAGE_INDEX = 0;\n readonly DEFAULT_EDGE_SIZE = 5;\n\n @Input() set currentPageIndex(value: number) {\n this._currentPageIndex.next(value ?? this.DEFAULT_CURRENT_PAGE_INDEX);\n }\n\n get currentPageIndex(): number {\n return this._currentPageIndex.getValue();\n }\n\n @Input() displayGoTo = false;\n @Input() edgeSize: number = this.DEFAULT_EDGE_SIZE;\n @Input() goToLabel: string = 'Go to';\n @Input() set itemCount(value: number) {\n this._itemCount.next(value ?? this.DEFAULT_ITEM_COUNT);\n }\n\n get itemCount(): number {\n return this._itemCount.getValue();\n }\n @Input() set itemCountPerPage(value: number) {\n this._itemCountPerPage.next(value ?? this.DEFAULT_ITEM_COUNT_PER_PAGE);\n }\n\n get itemCountPerPage(): number {\n return this._itemCountPerPage.getValue();\n }\n\n private _middleSize!: number;\n @Input() set middleSize(value: number) {\n // make sure middle size is an odd number\n if (value && value % 2 === 0) {\n value++;\n }\n this._middleSize = value ?? this.DEFAULT_MIDDLE_SIZE;\n }\n\n get middleSize(): number {\n return this._middleSize;\n }\n\n @Output() currentPageIndexChange = new EventEmitter<number>();\n\n pageInput: string = '';\n pageCount = 0;\n firstPageDisplayed = true;\n lastPageDisplayed = true;\n private destroy$: Subject<void> = new Subject<void>();\n\n private _itemCount: BehaviorSubject<number> = new BehaviorSubject<number>(this.DEFAULT_ITEM_COUNT);\n private _itemCountPerPage: BehaviorSubject<number> = new BehaviorSubject<number>(this.DEFAULT_ITEM_COUNT_PER_PAGE);\n private _currentPageIndex: BehaviorSubject<number> = new BehaviorSubject<number>(this.DEFAULT_CURRENT_PAGE_INDEX);\n\n constructor(public symbolRegistry: SymbolRegistry) {\n this.symbolRegistry.registerSymbols([apArrowLeft, apArrowRight]);\n combineLatest([this._itemCount, this._itemCountPerPage, this._currentPageIndex])\n .pipe(\n distinctUntilChanged(\n (\n [previousItemCount, previousItemCountPerPage, previousCurrentPageIndex],\n [itemCount, itemCountPerPage, currentPageIndex]\n ) => {\n return (\n previousItemCount === itemCount &&\n previousItemCountPerPage === itemCountPerPage &&\n previousCurrentPageIndex === currentPageIndex\n );\n }\n ),\n takeUntil(this.destroy$)\n )\n .subscribe(([itemCount, itemCountPerPage, currentPageIndex]) => {\n this.pageCount = Math.ceil(itemCount / itemCountPerPage);\n // make sure page index is between min and max page index\n this._currentPageIndex.next(Math.max(0, Math.min(this.pageCount - 1, currentPageIndex)));\n this.firstPageDisplayed = this.currentPageIndex === 0;\n this.lastPageDisplayed = this.currentPageIndex === this.pageCount - 1;\n });\n }\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n @HostListener('keydown.enter')\n onEnterKeydownPressed() {\n if (this.pageInput && !isNaN(+this.pageInput) && +this.pageInput > 0 && +this.pageInput <= this.pageCount) {\n this.onSelectPage(+this.pageInput - 1);\n }\n this.pageInput = '';\n }\n\n onSelectPage(pageIndex: number): void {\n this._currentPageIndex.next(pageIndex);\n this.currentPageIndexChange.emit(pageIndex);\n }\n}\n","<div class=\"item-index-overview\">\n {{ currentPageIndex * itemCountPerPage + 1 }}\n - {{ lastPageDisplayed ? itemCount : (currentPageIndex + 1) * itemCountPerPage }} of {{ itemCount }}\n</div>\n\n<div class=\"pages\">\n <button\n class=\"navigation-button\"\n ariaLabel=\"Select Previous Page button\"\n [disabled]=\"firstPageDisplayed\"\n (click)=\"onSelectPage(currentPageIndex - 1)\">\n <ap-symbol size=\"sm\" symbolId=\"arrow-left\" />\n </button>\n @if (pageCount > edgeSize + 1) {\n @if (currentPageIndex >= edgeSize - 1) {\n @if (currentPageIndex <= pageCount - edgeSize) {\n <ap-paginator-button\n [pageIndex]=\"0\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n <span class=\"ellipsis\">...</span>\n @for (dummy of [].constructor(middleSize); track dummy; let i = $index) {\n <ap-paginator-button\n [pageIndex]=\"currentPageIndex + i - (middleSize - 1) / 2\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n <span class=\"ellipsis\">...</span>\n <ap-paginator-button\n [pageIndex]=\"pageCount - 1\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n } @else {\n <ap-paginator-button\n [pageIndex]=\"0\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n <span class=\"ellipsis\">...</span>\n @for (dummy of [].constructor(edgeSize); track dummy; let i = $index) {\n <ap-paginator-button\n [pageIndex]=\"pageCount - edgeSize + i\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n }\n } @else {\n @for (dummy of [].constructor(edgeSize); track dummy; let i = $index) {\n <ap-paginator-button\n [pageIndex]=\"i\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n <span class=\"ellipsis\">...</span>\n <ap-paginator-button\n [pageIndex]=\"pageCount - 1\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n } @else {\n @for (dummy of [].constructor(pageCount); track dummy; let i = $index) {\n <ap-paginator-button\n [pageIndex]=\"i\"\n [selectedPageIndex]=\"currentPageIndex\"\n (selectPage)=\"onSelectPage($event)\" />\n }\n }\n <button\n class=\"navigation-button\"\n ariaLabel=\"Select Next Page button\"\n [disabled]=\"lastPageDisplayed\"\n (click)=\"onSelectPage(currentPageIndex + 1)\">\n <ap-symbol size=\"sm\" symbolId=\"arrow-right\" />\n </button>\n</div>\n<div class=\"go-to\">\n @if (displayGoTo) {\n <span>{{ goToLabel }}</span>\n }\n @if (displayGoTo) {\n <input\n type=\"number\"\n [(ngModel)]=\"pageInput\" />\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-components-password-input.mjs","sources":["../../../libs/ui-components/password-input/src/password-input.component.ts","../../../libs/ui-components/password-input/src/password-input.component.html","../../../libs/ui-components/password-input/src/agorapulse-ui-components-password-input.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { SymbolComponent, SymbolRegistry, apViewOff, apViewOn } from '@agorapulse/ui-symbol';\nimport { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nexport const PASSWORD_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PasswordInputComponent),\n multi: true,\n};\n\n@Component({\n selector: 'ap-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss'],\n providers: [PASSWORD_CONTROL_VALUE_ACCESSOR],\n imports: [SymbolComponent, NgClass, ReactiveFormsModule],\n standalone: true,\n})\nexport class PasswordInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\n static type = ['text', 'password'];\n inputType: (typeof PasswordInputComponent.type)[number] = PasswordInputComponent.type[1];\n\n @Input() name = '';\n @Input() placeholder = '';\n @Input() fullWidth: boolean = false;\n disabled: boolean = false;\n\n @ViewChild('passwordInput') passwordInput!: ElementRef;\n\n controler: FormControl = new FormControl('');\n changes!: Subscription;\n\n constructor(public symbolRegistry: SymbolRegistry) {\n this.symbolRegistry.registerSymbols([apViewOff, apViewOn]);\n }\n /**\n * Change between visible and hidden password\n */\n toggleInputType(): void {\n this.inputType = PasswordInputComponent.type[PasswordInputComponent.type.indexOf(this.inputType) == 0 ? 1 : 0];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange = (password: string) => {};\n\n onTouch = () => {};\n\n writeValue(obj: string): void {\n this.controler.setValue(obj);\n }\n\n registerOnChange(fn: (password: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnInit(): void {\n this.changes = this.controler.valueChanges.subscribe((val: string) => {\n if (this.onChange) {\n this.onChange(val);\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this.changes) {\n this.changes.unsubscribe();\n }\n }\n}\n","<div\n class=\"input-group\"\n [ngClass]=\"{ disabled: disabled, 'full-width': fullWidth }\">\n <input\n #passwordInput\n autocomplete=\"password\"\n [type]=\"inputType\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [formControl]=\"controler\"\n (blur)=\"onTouch()\" />\n <ap-symbol\n class=\"input-group-append\"\n size=\"sm\"\n state=\"full\"\n [symbolId]=\"inputType === 'text' ? 'view-on' : 'view-off'\"\n (click)=\"toggleInputType()\" />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;AAAA;AAOa,MAAA,+BAA+B,GAAQ;AAChD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,IAAA,KAAK,EAAE,IAAI
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-password-input.mjs","sources":["../../../libs/ui-components/password-input/src/password-input.component.ts","../../../libs/ui-components/password-input/src/password-input.component.html","../../../libs/ui-components/password-input/src/agorapulse-ui-components-password-input.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { SymbolComponent, SymbolRegistry, apViewOff, apViewOn } from '@agorapulse/ui-symbol';\nimport { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nexport const PASSWORD_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PasswordInputComponent),\n multi: true,\n};\n\n@Component({\n selector: 'ap-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss'],\n providers: [PASSWORD_CONTROL_VALUE_ACCESSOR],\n imports: [SymbolComponent, NgClass, ReactiveFormsModule],\n standalone: true,\n})\nexport class PasswordInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\n static type = ['text', 'password'];\n inputType: (typeof PasswordInputComponent.type)[number] = PasswordInputComponent.type[1];\n\n @Input() name = '';\n @Input() placeholder = '';\n @Input() fullWidth: boolean = false;\n disabled: boolean = false;\n\n @ViewChild('passwordInput') passwordInput!: ElementRef;\n\n controler: FormControl = new FormControl('');\n changes!: Subscription;\n\n constructor(public symbolRegistry: SymbolRegistry) {\n this.symbolRegistry.registerSymbols([apViewOff, apViewOn]);\n }\n /**\n * Change between visible and hidden password\n */\n toggleInputType(): void {\n this.inputType = PasswordInputComponent.type[PasswordInputComponent.type.indexOf(this.inputType) == 0 ? 1 : 0];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange = (password: string) => {};\n\n onTouch = () => {};\n\n writeValue(obj: string): void {\n this.controler.setValue(obj);\n }\n\n registerOnChange(fn: (password: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnInit(): void {\n this.changes = this.controler.valueChanges.subscribe((val: string) => {\n if (this.onChange) {\n this.onChange(val);\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this.changes) {\n this.changes.unsubscribe();\n }\n }\n}\n","<div\n class=\"input-group\"\n [ngClass]=\"{ disabled: disabled, 'full-width': fullWidth }\">\n <input\n #passwordInput\n autocomplete=\"password\"\n [type]=\"inputType\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [formControl]=\"controler\"\n (blur)=\"onTouch()\" />\n <ap-symbol\n class=\"input-group-append\"\n size=\"sm\"\n state=\"full\"\n [symbolId]=\"inputType === 'text' ? 'view-on' : 'view-off'\"\n (click)=\"toggleInputType()\" />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-components-phone-number-input.mjs","sources":["../../../libs/ui-components/phone-number-input/src/phone-number-input.component.ts","../../../libs/ui-components/phone-number-input/src/phone-number-input.component.html","../../../libs/ui-components/phone-number-input/src/agorapulse-ui-components-phone-number-input.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport {Component, DestroyRef, EventEmitter, forwardRef, inject, Input, OnInit, Output, ViewEncapsulation} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n Validators,\n} from '@angular/forms';\nimport {CommonModule, NgOptimizedImage} from '@angular/common';\nimport {NgSelectModule} from '@ng-select/ng-select';\nimport {InputGroupComponent, InputPrefixComponent} from \"@agorapulse/ui-components/input-group\";\nimport {DropdownItemSingleOneLineComponent, DropdownSearchFormComponent, SelectBaseDirective} from \"@agorapulse/ui-components/select\";\nimport {InputDirective} from \"@agorapulse/ui-components/input\";\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { apCheck, SymbolRegistry } from '@agorapulse/ui-symbol';\n\nexport interface PhoneNumberInfo {\n countryCode: string;\n countryName: string;\n phoneNumberCode: string;\n}\n\nexport interface Phone {\n phoneNumber: string;\n phoneNumberCode: string;\n}\n\nconst NUMBER_ONLY_PATTERN = /[0-9]/;\n\n@Component({\n selector: 'ap-phone-number-input',\n templateUrl: 'phone-number-input.component.html',\n styleUrls: ['phone-number-input.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n NgSelectModule,\n InputGroupComponent,\n SelectBaseDirective,\n InputDirective,\n InputPrefixComponent,\n DropdownItemSingleOneLineComponent,\n ReactiveFormsModule,\n NgOptimizedImage,\n DropdownSearchFormComponent\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PhoneNumberInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PhoneNumberInputComponent),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PhoneNumberInputComponent implements ControlValueAccessor, Validator, OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n @Input() set errorsDisplayForced(errorsDisplayForced: boolean) {\n if (errorsDisplayForced) {\n this.formGroup.markAllAsTouched();\n Object.values(this.formGroup.controls).forEach((control) => control.markAsDirty());\n this.formGroup.updateValueAndValidity();\n }\n }\n @Input({ required: true }) flagsBucketUrl!: string;\n @Input({ required: true }) set phoneNumberInfos(phoneNumberInfos: PhoneNumberInfo[]) {\n this.codeNumberInfos = phoneNumberInfos ?? [];\n if (phoneNumberInfos.length > 0) {\n // DS Behavior: select by default the first phone number code\n const defaultValue = phoneNumberInfos[0].phoneNumberCode;\n this.formGroup.controls.phoneNumberCode.setValue(defaultValue);\n this.phoneNumberCode = defaultValue;\n }\n }\n @Input() set initialCountryCode(initialCountryCode: string) {\n const firstValue = this.codeNumberInfos.find((codeInfo) => codeInfo.countryCode === initialCountryCode)?.phoneNumberCode;\n if (firstValue) {\n this.formGroup.patchValue({ phoneNumberCode: firstValue });\n }\n }\n codeNumberInfos: PhoneNumberInfo[] = [];\n @Input({ required: true }) name!: string;\n @Input({ required: true }) placeholder!: string;\n @Input({ required: true }) searchPlaceholder!: string;\n @Input() set phoneNumber(phoneNumber: string) {\n this.formGroup.controls.phoneNumber.setValue(phoneNumber);\n }\n @Input() set phoneNumberCode(phoneNumberCode: string) {\n this.formGroup.controls.phoneNumberCode.setValue(phoneNumberCode);\n }\n\n @Output() changePhoneNumber: EventEmitter<string> = new EventEmitter<string>();\n @Output() changePhoneNumberCode: EventEmitter<string> = new EventEmitter<string>();\n\n formGroup = new FormGroup({\n phoneNumberCode: new FormControl<string>('', [Validators.required]),\n phoneNumber: new FormControl<string>('', [Validators.required]),\n });\n\n public onTouched: any = () => {};\n public onChange: any = () => {};\n\n constructor(symbolRegistry: SymbolRegistry) {\n symbolRegistry.registerSymbols([apCheck]);\n }\n\n ngOnInit(): void {\n // Subscribe to form changes to propagate them to the parent component\n this.formGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\n if (this.onChange) {\n this.onChange(value);\n }\n if (value.phoneNumber !== this.phoneNumber) {\n this.changePhoneNumber.emit(value.phoneNumber ?? '');\n }\n if (value.phoneNumberCode !== this.phoneNumberCode) {\n this.changePhoneNumberCode.emit(value.phoneNumberCode ?? '');\n }\n });\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(): ValidationErrors | null {\n return this.formGroup.valid ? null : { phoneNumber: 'invalid', ...this.formGroup.errors };\n }\n\n writeValue(phone: Phone | null): void {\n // Avoid setting an empty value for the phone number code, it should always have a value\n if (phone === null || !phone.phoneNumberCode) {\n this.formGroup.patchValue({phoneNumber: phone?.phoneNumberCode ?? ''});\n } else {\n this.formGroup.patchValue(phone);\n }\n }\n\n phoneNumberCodeSearchFn(term: string, item: PhoneNumberInfo): boolean {\n const termCased = term.toLocaleLowerCase();\n return item.countryName.toLocaleLowerCase().indexOf(termCased) > -1 || item.countryCode.toLocaleLowerCase().indexOf(termCased) > -1;\n }\n\n markAsTouched(): void {\n this.formGroup.markAllAsTouched();\n }\n\n /**\n * Filter the phone number input to only allow numbers\n */\n filterChars(event: InputEvent): void {\n if (event.inputType !== 'insertText') {\n return;\n }\n const inputChar: string | null = event.data;\n if (inputChar && !NUMBER_ONLY_PATTERN.test(inputChar)) {\n event.preventDefault();\n }\n }\n}\n","<ng-container [formGroup]=\"formGroup\">\n <ng-select\n #select\n apSelectSingle\n data-test=\"subscription-billing-infos-phoneNumberCode\"\n class=\"ap-phone-number-code-select ap-select\"\n bindLabel=\"countryName\"\n bindValue=\"phoneNumberCode\"\n notFoundText=\"\"\n formControlName=\"phoneNumberCode\"\n appendTo=\"body\"\n [clearable]=\"false\"\n [items]=\"codeNumberInfos\"\n [searchFn]=\"phoneNumberCodeSearchFn\"\n (blur)=\"onTouched()\">\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n @if (item && item.countryCode) {\n <div class=\"flag\">\n @if (!!flagsBucketUrl) {\n <img\n width=\"24\"\n height=\"16\"\n alt=\"flag\"\n [ngSrc]=\"flagsBucketUrl + '/' + item.countryCode.toUpperCase() + '.png'\" />\n } @else {\n <span>{{ item.countryCode }}</span>\n }\n </div>\n }\n </ng-template>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n <ap-dropdown-item-single-one-line\n [text]=\"item.phoneNumberCode + ' ' + item.countryName\"\n [avatarUrl]=\"flagsBucketUrl + '/' + item.countryCode.toUpperCase() + '.png'\"\n [selected]=\"item$.selected\"\n [roundedAvatar]=\"false\"\n />\n </ng-template>\n <ng-template\n let-searchTerm=\"searchTerm\"\n ng-header-tmp>\n <ap-dropdown-search-form\n [searchPlaceholder]=\"searchPlaceholder\"\n [select]=\"select\"\n />\n </ng-template>\n </ng-select>\n <ap-input-group class=\"phone-number-input-group\">\n <ap-input-prefix>{{formGroup.controls.phoneNumberCode.value}}</ap-input-prefix>\n <input\n apInput\n class=\"phone-field\"\n data-test=\"subscription-billing-infos-phoneNumberInput\"\n type=\"text\"\n data-recurly=\"phone\"\n formControlName=\"phoneNumber\"\n [placeholder]=\"placeholder\"\n [attr.name]=\"name\"\n (beforeinput)=\"filterChars($event)\"\n (blur)=\"onTouched()\"\n />\n </ap-input-group>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-phone-number-input.mjs","sources":["../../../libs/ui-components/phone-number-input/src/phone-number-input.component.ts","../../../libs/ui-components/phone-number-input/src/phone-number-input.component.html","../../../libs/ui-components/phone-number-input/src/agorapulse-ui-components-phone-number-input.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport {Component, DestroyRef, EventEmitter, forwardRef, inject, Input, OnInit, Output, ViewEncapsulation} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n Validators,\n} from '@angular/forms';\nimport {CommonModule, NgOptimizedImage} from '@angular/common';\nimport {NgSelectModule} from '@ng-select/ng-select';\nimport {InputGroupComponent, InputPrefixComponent} from \"@agorapulse/ui-components/input-group\";\nimport {DropdownItemSingleOneLineComponent, DropdownSearchFormComponent, SelectBaseDirective} from \"@agorapulse/ui-components/select\";\nimport {InputDirective} from \"@agorapulse/ui-components/input\";\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { apCheck, SymbolRegistry } from '@agorapulse/ui-symbol';\n\nexport interface PhoneNumberInfo {\n countryCode: string;\n countryName: string;\n phoneNumberCode: string;\n}\n\nexport interface Phone {\n phoneNumber: string;\n phoneNumberCode: string;\n}\n\nconst NUMBER_ONLY_PATTERN = /[0-9]/;\n\n@Component({\n selector: 'ap-phone-number-input',\n templateUrl: 'phone-number-input.component.html',\n styleUrls: ['phone-number-input.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n NgSelectModule,\n InputGroupComponent,\n SelectBaseDirective,\n InputDirective,\n InputPrefixComponent,\n DropdownItemSingleOneLineComponent,\n ReactiveFormsModule,\n NgOptimizedImage,\n DropdownSearchFormComponent\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PhoneNumberInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PhoneNumberInputComponent),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PhoneNumberInputComponent implements ControlValueAccessor, Validator, OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n @Input() set errorsDisplayForced(errorsDisplayForced: boolean) {\n if (errorsDisplayForced) {\n this.formGroup.markAllAsTouched();\n Object.values(this.formGroup.controls).forEach((control) => control.markAsDirty());\n this.formGroup.updateValueAndValidity();\n }\n }\n @Input({ required: true }) flagsBucketUrl!: string;\n @Input({ required: true }) set phoneNumberInfos(phoneNumberInfos: PhoneNumberInfo[]) {\n this.codeNumberInfos = phoneNumberInfos ?? [];\n if (phoneNumberInfos.length > 0) {\n // DS Behavior: select by default the first phone number code\n const defaultValue = phoneNumberInfos[0].phoneNumberCode;\n this.formGroup.controls.phoneNumberCode.setValue(defaultValue);\n this.phoneNumberCode = defaultValue;\n }\n }\n @Input() set initialCountryCode(initialCountryCode: string) {\n const firstValue = this.codeNumberInfos.find((codeInfo) => codeInfo.countryCode === initialCountryCode)?.phoneNumberCode;\n if (firstValue) {\n this.formGroup.patchValue({ phoneNumberCode: firstValue });\n }\n }\n codeNumberInfos: PhoneNumberInfo[] = [];\n @Input({ required: true }) name!: string;\n @Input({ required: true }) placeholder!: string;\n @Input({ required: true }) searchPlaceholder!: string;\n @Input() set phoneNumber(phoneNumber: string) {\n this.formGroup.controls.phoneNumber.setValue(phoneNumber);\n }\n @Input() set phoneNumberCode(phoneNumberCode: string) {\n this.formGroup.controls.phoneNumberCode.setValue(phoneNumberCode);\n }\n\n @Output() changePhoneNumber: EventEmitter<string> = new EventEmitter<string>();\n @Output() changePhoneNumberCode: EventEmitter<string> = new EventEmitter<string>();\n\n formGroup = new FormGroup({\n phoneNumberCode: new FormControl<string>('', [Validators.required]),\n phoneNumber: new FormControl<string>('', [Validators.required]),\n });\n\n public onTouched: any = () => {};\n public onChange: any = () => {};\n\n constructor(symbolRegistry: SymbolRegistry) {\n symbolRegistry.registerSymbols([apCheck]);\n }\n\n ngOnInit(): void {\n // Subscribe to form changes to propagate them to the parent component\n this.formGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\n if (this.onChange) {\n this.onChange(value);\n }\n if (value.phoneNumber !== this.phoneNumber) {\n this.changePhoneNumber.emit(value.phoneNumber ?? '');\n }\n if (value.phoneNumberCode !== this.phoneNumberCode) {\n this.changePhoneNumberCode.emit(value.phoneNumberCode ?? '');\n }\n });\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(): ValidationErrors | null {\n return this.formGroup.valid ? null : { phoneNumber: 'invalid', ...this.formGroup.errors };\n }\n\n writeValue(phone: Phone | null): void {\n // Avoid setting an empty value for the phone number code, it should always have a value\n if (phone === null || !phone.phoneNumberCode) {\n this.formGroup.patchValue({phoneNumber: phone?.phoneNumberCode ?? ''});\n } else {\n this.formGroup.patchValue(phone);\n }\n }\n\n phoneNumberCodeSearchFn(term: string, item: PhoneNumberInfo): boolean {\n const termCased = term.toLocaleLowerCase();\n return item.countryName.toLocaleLowerCase().indexOf(termCased) > -1 || item.countryCode.toLocaleLowerCase().indexOf(termCased) > -1;\n }\n\n markAsTouched(): void {\n this.formGroup.markAllAsTouched();\n }\n\n /**\n * Filter the phone number input to only allow numbers\n */\n filterChars(event: InputEvent): void {\n if (event.inputType !== 'insertText') {\n return;\n }\n const inputChar: string | null = event.data;\n if (inputChar && !NUMBER_ONLY_PATTERN.test(inputChar)) {\n event.preventDefault();\n }\n }\n}\n","<ng-container [formGroup]=\"formGroup\">\n <ng-select\n #select\n apSelectSingle\n data-test=\"subscription-billing-infos-phoneNumberCode\"\n class=\"ap-phone-number-code-select ap-select\"\n bindLabel=\"countryName\"\n bindValue=\"phoneNumberCode\"\n notFoundText=\"\"\n formControlName=\"phoneNumberCode\"\n appendTo=\"body\"\n [clearable]=\"false\"\n [items]=\"codeNumberInfos\"\n [searchFn]=\"phoneNumberCodeSearchFn\"\n (blur)=\"onTouched()\">\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n @if (item && item.countryCode) {\n <div class=\"flag\">\n @if (!!flagsBucketUrl) {\n <img\n width=\"24\"\n height=\"16\"\n alt=\"flag\"\n [ngSrc]=\"flagsBucketUrl + '/' + item.countryCode.toUpperCase() + '.png'\" />\n } @else {\n <span>{{ item.countryCode }}</span>\n }\n </div>\n }\n </ng-template>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n <ap-dropdown-item-single-one-line\n [text]=\"item.phoneNumberCode + ' ' + item.countryName\"\n [avatarUrl]=\"flagsBucketUrl + '/' + item.countryCode.toUpperCase() + '.png'\"\n [selected]=\"item$.selected\"\n [roundedAvatar]=\"false\"\n />\n </ng-template>\n <ng-template\n let-searchTerm=\"searchTerm\"\n ng-header-tmp>\n <ap-dropdown-search-form\n [searchPlaceholder]=\"searchPlaceholder\"\n [select]=\"select\"\n />\n </ng-template>\n </ng-select>\n <ap-input-group class=\"phone-number-input-group\">\n <ap-input-prefix>{{formGroup.controls.phoneNumberCode.value}}</ap-input-prefix>\n <input\n apInput\n class=\"phone-field\"\n data-test=\"subscription-billing-infos-phoneNumberInput\"\n type=\"text\"\n data-recurly=\"phone\"\n formControlName=\"phoneNumber\"\n [placeholder]=\"placeholder\"\n [attr.name]=\"name\"\n (beforeinput)=\"filterChars($event)\"\n (blur)=\"onTouched()\"\n />\n </ap-input-group>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|