ngx-simple-countdown
Version:
The most simple way to display a countdown in angular 20 (standalone and ngModule)
1 lines • 25.3 kB
Source Map (JSON)
{"version":3,"file":"ngx-simple-countdown.mjs","sources":["../../../projects/ngx-simple-countdown/src/lib/utils.ts","../../../projects/ngx-simple-countdown/src/lib/ngx-simple-countdown.directive.ts","../../../projects/ngx-simple-countdown/src/lib/ngx-simple-timeago.directive.ts","../../../projects/ngx-simple-countdown/src/lib/ngx-simple-countdown.module.ts","../../../projects/ngx-simple-countdown/src/lib/ngx-simple-countdown-standalone.directive.ts","../../../projects/ngx-simple-countdown/src/public_api.ts","../../../projects/ngx-simple-countdown/src/ngx-simple-countdown.ts"],"sourcesContent":["import { CountdownResult, CountdownKeywords } from './models/';\n\nexport const getDateNow = () => {\n return Math.floor(Date.now() / 1000);\n};\n\nexport const getCountdownResult = (secondes: number): CountdownResult => {\n return {\n seconds: Math.floor((secondes / 1) % 60),\n minutes: Math.floor((secondes / 1 / 60) % 60),\n hours: Math.floor((secondes / (1 * 60 * 60)) % 24),\n day: Math.floor(secondes / (1 * 60 * 60 * 24))\n };\n};\n\nexport const getLanguage = (language: string): CountdownKeywords => {\n if (language === 'fr') {\n return {\n timeago: 'il y a',\n now: \"à l'instant\",\n seconds: 's',\n minutes: 'm',\n hours: 'h',\n day: 'j'\n };\n } else if (language === 'de') {\n return {\n timeago: 'vor',\n now: 'gerade jetzt',\n seconds: 'z',\n minutes: 'm',\n hours: 's',\n day: 't'\n };\n } else if (language === 'pt') {\n return {\n timeago: 'há',\n now: 'agora mesmo',\n seconds: 's',\n minutes: 'm',\n hours: 's',\n day: 'd'\n };\n } else if (language === 'es') {\n return {\n timeago: 'hace',\n now: 'en este momento',\n seconds: 's',\n minutes: 'm',\n hours: 's',\n day: 'd'\n };\n } else if (language === 'cs') {\n return {\n timeago: 'před',\n now: 'právě teď',\n seconds: 's',\n minutes: 'm',\n hours: 'h',\n day: 'd'\n };\n } else if (language === 'pl') {\n return {\n timeago: 'jest',\n now: 'właśnie',\n seconds: 's',\n minutes: 'm',\n hours: 'g',\n day: 'd'\n };\n } else if (language === 'ge') {\n return {\n timeago: 'დასრულდა',\n now: 'დროა',\n seconds: 'წმ',\n minutes: 'წთ',\n hours: 'სთ',\n day: 'დღე'\n };\n } else {\n return {\n timeago: 'there is',\n now: 'just now',\n seconds: 's',\n minutes: 'm',\n hours: 'h',\n day: 'd'\n };\n }\n};\n","import {\n Directive,\n Input,\n ElementRef,\n OnDestroy,\n OnInit,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { interval, Observable, ReplaySubject } from 'rxjs';\nimport { tap, takeUntil, filter } from 'rxjs/operators';\n\nimport { CountdownResult, CountdownKeywords } from './models';\nimport { getDateNow, getCountdownResult, getLanguage } from './utils';\n@Directive({\n selector: '[simpleCountdown]',\n standalone: false\n})\nexport class NgxSimpleCountdownDirective implements OnInit, OnDestroy {\n @Input() dateTo: number;\n @Input() endMessage = 'countdown finish';\n @Input() language = 'en';\n @Input() reactive = true;\n @Input() styles =\n 'font-size:20px;color:#FFF;background-color:#000;padding:10px 5px;font-weight:bold;min-width:40px;text-align:center;';\n\n @Output() finish: EventEmitter<void> = new EventEmitter();\n\n public countdownResult: CountdownResult;\n public dateNow: number;\n public interval$: Observable<number>;\n public keywords: CountdownKeywords;\n public totalSecondes: number;\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnInit() {\n this.dateNow = getDateNow();\n this.keywords = getLanguage(this.language);\n this.initSimpleCountdown();\n }\n\n ngOnDestroy() {}\n\n private initSimpleCountdown(): void {\n this.totalSecondes = this.dateTo - this.dateNow;\n this.updateSimpleCountdown(this.totalSecondes);\n\n this.interval$ = interval(1000).pipe(\n takeUntil(this.componentDestroyed(this)),\n filter((_) => this.reactive && this.totalSecondes > 0),\n tap((_) => {\n this.totalSecondes--;\n this.updateSimpleCountdown(this.totalSecondes);\n })\n );\n\n if (this.reactive) {\n this.interval$.subscribe();\n }\n }\n\n private createHTML(data: CountdownResult): void {\n const { day, hours, minutes, seconds } = data;\n let o = '';\n\n if (this.totalSecondes > 0) {\n o = '<div style=\"display:flex;\">';\n\n if (day > 0) {\n o += `<div style=\"${this.styles}\">\n ${day}${this.keywords.day}\n </div>`;\n }\n\n if (hours > 0 || day > 0) {\n o += `<div style=\"${this.styles}\">\n ${hours}${this.keywords.hours}\n </div>`;\n }\n\n if ((minutes > 0 || hours > 0 || day > 0) && this.reactive) {\n o += `<div style=\"${this.styles}\">\n ${minutes}${this.keywords.minutes}\n </div>`;\n }\n\n if (\n (seconds > 0 || minutes > 0 || hours > 0 || day > 0) &&\n this.reactive\n ) {\n o += `<div style=\"${this.styles}\">\n ${seconds}${this.keywords.seconds}\n </div>`;\n }\n o += '</div>';\n } else {\n this.finish.emit();\n if (this.endMessage !== '') {\n o += `<div style=\"${this.styles}\">${this.endMessage}</div>`;\n }\n }\n\n this.elementRef.nativeElement.innerHTML = o;\n }\n\n private updateSimpleCountdown(secondes: number): void {\n const countdownResult = getCountdownResult(secondes);\n this.createHTML(countdownResult);\n }\n\n private componentDestroyed(component: OnDestroy) {\n const oldNgOnDestroy = component.ngOnDestroy;\n const destroyed$ = new ReplaySubject<void>(1);\n component.ngOnDestroy = () => {\n oldNgOnDestroy.apply(component);\n destroyed$.next(undefined);\n destroyed$.complete();\n };\n return destroyed$;\n }\n}\n","import { Directive, Input, ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { interval, Observable, ReplaySubject } from 'rxjs';\nimport { tap, takeUntil, filter } from 'rxjs/operators';\n\nimport { CountdownResult, CountdownKeywords } from './models';\nimport { getCountdownResult, getDateNow, getLanguage } from './utils';\n\n@Directive({\n selector: '[simpleTimeago]',\n standalone: false\n})\nexport class NgxSimpleTimeagoDirective implements OnInit, OnDestroy {\n @Input() date: number;\n @Input() language = 'en';\n @Input() reactive = true;\n\n public dateNow: number;\n public interval$: Observable<number>;\n public keywords: CountdownKeywords;\n public totalSecondes: number;\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnInit() {\n this.dateNow = getDateNow();\n this.keywords = getLanguage(this.language);\n this.initSimpleCountdown();\n }\n\n ngOnDestroy() {}\n\n private initSimpleCountdown(): void {\n this.totalSecondes = this.dateNow - this.date;\n this.updateSimpleCountdown(this.totalSecondes);\n\n this.interval$ = interval(20000).pipe(\n takeUntil(this.componentDestroyed(this)),\n filter(() => this.reactive && this.totalSecondes > 0),\n tap(() => {\n this.totalSecondes += 20;\n this.updateSimpleCountdown(this.totalSecondes);\n })\n );\n\n if (this.reactive) {\n this.interval$.subscribe();\n }\n }\n\n private createHTML(data: CountdownResult): void {\n const { day, hours, minutes } = data;\n let o = '';\n\n if (this.totalSecondes > 0) {\n if (this.totalSecondes <= 60) {\n o += this.keywords.now;\n } else {\n o += `${this.keywords.timeago} `;\n if (data.day > 0) {\n o += `${data.day}${this.keywords.day} `;\n }\n if (hours > 0 || day > 0) {\n o += `${hours}${this.keywords.hours} `;\n }\n if (minutes > 0 || hours > 0 || day > 0) {\n o += `${minutes}${this.keywords.minutes} `;\n }\n }\n }\n\n this.elementRef.nativeElement.innerHTML = o;\n }\n\n private updateSimpleCountdown(secondes: number): void {\n const countdownResult: CountdownResult = getCountdownResult(secondes);\n this.createHTML(countdownResult);\n }\n\n private componentDestroyed(component: OnDestroy) {\n const oldNgOnDestroy = component.ngOnDestroy;\n const destroyed$ = new ReplaySubject<void>(1);\n\n component.ngOnDestroy = () => {\n oldNgOnDestroy.apply(component);\n destroyed$.next(undefined);\n destroyed$.complete();\n };\n\n return destroyed$;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NgxSimpleCountdownDirective } from \"./ngx-simple-countdown.directive\";\nimport { NgxSimpleTimeagoDirective } from \"./ngx-simple-timeago.directive\";\n\n@NgModule({\n declarations: [NgxSimpleCountdownDirective, NgxSimpleTimeagoDirective],\n imports: [],\n exports: [NgxSimpleCountdownDirective, NgxSimpleTimeagoDirective]\n})\nexport class NgxSimpleCountdownModule {}\n","import {\n Directive,\n Input,\n ElementRef,\n OnDestroy,\n OnInit,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { interval, Observable, ReplaySubject } from 'rxjs';\nimport { tap, takeUntil, filter } from 'rxjs/operators';\n\nimport { CountdownResult, CountdownKeywords } from './models';\nimport { getDateNow, getCountdownResult, getLanguage } from './utils';\n@Directive({\n selector: '[simpleCountdown]',\n standalone: true\n})\nexport class NgxSimpleCountdownStandaloneDirective\n implements OnInit, OnDestroy\n{\n @Input() dateTo: number;\n @Input() endMessage = 'countdown finish';\n @Input() language = 'en';\n @Input() reactive = true;\n @Input() styles =\n 'font-size:20px;color:#FFF;background-color:#000;padding:10px 5px;font-weight:bold;min-width:40px;text-align:center;';\n\n @Output() finish: EventEmitter<void> = new EventEmitter();\n\n public countdownResult: CountdownResult;\n public dateNow: number;\n public interval$: Observable<number>;\n public keywords: CountdownKeywords;\n public totalSecondes: number;\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnInit() {\n this.dateNow = getDateNow();\n this.keywords = getLanguage(this.language);\n this.initSimpleCountdown();\n }\n\n ngOnDestroy() {}\n\n private initSimpleCountdown(): void {\n this.totalSecondes = this.dateTo - this.dateNow;\n this.updateSimpleCountdown(this.totalSecondes);\n\n this.interval$ = interval(1000).pipe(\n takeUntil(this.componentDestroyed(this)),\n filter((_) => this.reactive && this.totalSecondes > 0),\n tap((_) => {\n this.totalSecondes--;\n this.updateSimpleCountdown(this.totalSecondes);\n })\n );\n\n if (this.reactive) {\n this.interval$.subscribe();\n }\n }\n\n private createHTML(data: CountdownResult): void {\n const { day, hours, minutes, seconds } = data;\n let o = '';\n\n if (this.totalSecondes > 0) {\n o = '<div style=\"display:flex;\">';\n\n if (day > 0) {\n o += `<div style=\"${this.styles}\">\n ${day}${this.keywords.day}\n </div>`;\n }\n\n if (hours > 0 || day > 0) {\n o += `<div style=\"${this.styles}\">\n ${hours}${this.keywords.hours}\n </div>`;\n }\n\n if ((minutes > 0 || hours > 0 || day > 0) && this.reactive) {\n o += `<div style=\"${this.styles}\">\n ${minutes}${this.keywords.minutes}\n </div>`;\n }\n\n if (\n (seconds > 0 || minutes > 0 || hours > 0 || day > 0) &&\n this.reactive\n ) {\n o += `<div style=\"${this.styles}\">\n ${seconds}${this.keywords.seconds}\n </div>`;\n }\n o += '</div>';\n } else {\n this.finish.emit();\n if (this.endMessage !== '') {\n o += `<div style=\"${this.styles}\">${this.endMessage}</div>`;\n }\n }\n\n this.elementRef.nativeElement.innerHTML = o;\n }\n\n private updateSimpleCountdown(secondes: number): void {\n const countdownResult = getCountdownResult(secondes);\n this.createHTML(countdownResult);\n }\n\n private componentDestroyed(component: OnDestroy) {\n const oldNgOnDestroy = component.ngOnDestroy;\n const destroyed$ = new ReplaySubject<void>(1);\n component.ngOnDestroy = () => {\n oldNgOnDestroy.apply(component);\n destroyed$.next(undefined);\n destroyed$.complete();\n };\n return destroyed$;\n }\n}\n","/*\n * Public API Surface of ngx-simple-countdown\n */\n\n// ngModule\nexport * from './lib/ngx-simple-countdown.module';\nexport * from './lib/ngx-simple-countdown.directive';\nexport * from './lib/ngx-simple-timeago.directive';\n\n// standalone\nexport * from './lib/ngx-simple-countdown-standalone.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}