@yuuvis/material 2.4.1 → 2.4.2
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.
|
@@ -746,10 +746,10 @@ class DatepickerComponent {
|
|
|
746
746
|
this.#locale.set(event.lang);
|
|
747
747
|
this.#dateAdapter.setLocale(this.#locale());
|
|
748
748
|
});
|
|
749
|
-
effect(() => {
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
});
|
|
749
|
+
// effect(() => {
|
|
750
|
+
// this.#value();
|
|
751
|
+
// untracked(() => console.log('DatepickerComponent.value: ', this.value));
|
|
752
|
+
// });
|
|
753
753
|
}
|
|
754
754
|
// implemented as part of ControlValueAccessor interface
|
|
755
755
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-material.mjs","sources":["../../../../../libs/yuuvis/material/src/lib/services/ymt-mat-icon-registry.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-datepicker-intl.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-date-adapter.service.ts","../../../../../libs/yuuvis/material/src/lib/services/device.interface.ts","../../../../../libs/yuuvis/material/src/lib/services/device.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-mat-paginator-intl.service.ts","../../../../../libs/yuuvis/material/src/lib/providers/material.providers.ts","../../../../../libs/yuuvis/material/src/lib/directives/icon-button/ymt-icon-button.model.ts","../../../../../libs/yuuvis/material/src/lib/directives/icon-button/ymt-icon-button.directive.ts","../../../../../libs/yuuvis/material/src/lib/directives/button/ymt-button.model.ts","../../../../../libs/yuuvis/material/src/lib/directives/button/ymt-button.directive.ts","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker.component.ts","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker.component.html","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker-toggle.component.ts","../../../../../libs/yuuvis/material/src/yuuvis-material.ts"],"sourcesContent":["import { ErrorHandler, Inject, Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { HttpClient } from '@angular/common/http';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DOCUMENT } from '@angular/common';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class YmtMatIconRegistryService extends MatIconRegistry {\n #ymtFontSetClassNames = ['material-symbols-sharp'];\n\n constructor(_httpClient: HttpClient, _sanitizer: DomSanitizer, @Inject(DOCUMENT) document: any, _errorHandler: ErrorHandler) {\n super(_httpClient, _sanitizer, document, _errorHandler);\n this.setDefaultFontSetClass();\n }\n\n override setDefaultFontSetClass(...classnames: string[]) {\n const merged = [...new Set([...classnames, ...this.#ymtFontSetClassNames])];\n super.setDefaultFontSetClass(...merged);\n return this;\n }\n\n static isFontIcon(input: string | null) {\n if (typeof input === 'string') {\n const parser = new DOMParser();\n const doc = parser.parseFromString(input, 'image/svg+xml');\n return coerceBooleanProperty(doc.querySelector('parsererror'));\n }\n return false;\n }\n}\n","import { MatDatepickerIntl } from '@angular/material/datepicker';\nimport { TranslateService } from '@ngx-translate/core';\nimport { inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable({ providedIn: 'root' })\nexport class YmtDatepickerIntlService extends MatDatepickerIntl {\n #translate = inject(TranslateService);\n \n constructor() {\n super();\n \n this.translateLabels();\n this.#translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => {\n this.translateLabels();\n });\n }\n \n translateLabels() {\n this.openCalendarLabel = this.#translate.instant('ymt.datepicker.openCalendarLabel');\n this.closeCalendarLabel = this.#translate.instant('ymt.datepicker.closeCalendarLabel');\n this.calendarLabel = this.#translate.instant('ymt.datepicker.calendarLabel');\n this.comparisonDateLabel = this.#translate.instant('ymt.datepicker.comparisonDateLabel');\n this.prevMonthLabel = this.#translate.instant('ymt.datepicker.prevMonthLabel');\n this.nextMonthLabel = this.#translate.instant('ymt.datepicker.nextMonthLabel');\n this.prevYearLabel = this.#translate.instant('ymt.datepicker.prevYearLabel');\n this.nextYearLabel = this.#translate.instant('ymt.datepicker.nextYearLabel');\n this.prevMultiYearLabel = this.#translate.instant('ymt.datepicker.prevMultiYearLabel');\n this.nextMultiYearLabel = this.#translate.instant('ymt.datepicker.nextMultiYearLabel');\n this.switchToMonthViewLabel = this.#translate.instant('ymt.datepicker.switchToMonthViewLabel');\n this.switchToMultiYearViewLabel = this.#translate.instant('ymt.datepicker.switchToMultiYearViewLabel');\n this.startDateLabel = this.#translate.instant('ymt.datepicker.startDateLabel');\n this.endDateLabel = this.#translate.instant('ymt.datepicker.endDateLabel');\n this.changes.next();\n }\n \n override formatYearRange(start: string, end: string): string {\n return super.formatYearRange(start, end);\n }\n \n override formatYearRangeLabel(start: string, end: string): string {\n return super.formatYearRangeLabel(start, end);\n }\n}\n","import { inject, Injectable, Provider } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS, MatDateFormats, NativeDateAdapter } from '@angular/material/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport const YMT_DATE_FROMATS: MatDateFormats = {\n ...MAT_NATIVE_DATE_FORMATS,\n parse: {\n dateInput: null,\n timeInput: null\n }\n};\n\nexport function provideYmtDateAdapter(formats: MatDateFormats = YMT_DATE_FROMATS): Provider[] {\n return [\n { provide: DateAdapter, useClass: YmtDateAdapterService },\n { provide: MAT_DATE_FORMATS, useValue: formats }\n ];\n}\n\ninterface IParseFormats {\n separator: '.' | '/' | '-' | string;\n order: 'mdy' | 'dmy' | 'ymd';\n}\n\n@Injectable()\nexport class YmtDateAdapterService extends NativeDateAdapter {\n #translateService = inject(TranslateService);\n\n override locale = this.#translateService.currentLang;\n\n constructor() {\n super();\n }\n\n override parse(value: any, parseFormat: any = ''): Date | null {\n // categories: { separators: ['.','/','-'], order: ['mdy','dmy','ymd'] }\n let date: Date | null = null;\n if (typeof value === 'string') {\n switch (this.locale) {\n case 'en':\n date = this.parseDateString(value, { separator: '/', order: 'mdy' });\n break;\n case 'de':\n date = this.parseDateString(value, { separator: '.', order: 'dmy' });\n break;\n case 'fi':\n date = this.parseDateString(value, { separator: '.', order: 'dmy' });\n break;\n }\n }\n return super.parse(date, parseFormat);\n }\n\n parseDateString(value: string, config: IParseFormats): Date {\n const { separator, order } = config;\n const dateStrArr = value.split(separator); // DD.MM.YYYY => { separator: '.', order: 'dmy' }\n const day = Number(dateStrArr[order.indexOf('d')]);\n const month = Number(dateStrArr[order.indexOf('m')]) - 1;\n const year = Number(dateStrArr[order.indexOf('y')]);\n const date = new Date(year, month, day);\n const debugObject = {\n config: { separator, order },\n dateStrArr,\n day,\n month,\n year,\n date\n };\n\n return date;\n }\n}\n","export enum DeviceScreenOrientation {\n PORTRAIT = 'portrait',\n LANDSCAPE = 'landscape'\n}\n\n\nexport interface DeviceScreen {\n size: ScreenSize;\n orientation: DeviceScreenOrientation\n width: number;\n height: number;\n}\n\nexport interface DeviceScreenBounds {\n width: number;\n height: number;\n}\n\nexport type ScreenSize = 's' | 'm' | 'l' | 'xl';\n\n\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DeviceDetectorService, DeviceInfo } from 'ngx-device-detector';\nimport { debounceTime, fromEvent, Observable, ReplaySubject } from 'rxjs';\nimport { DeviceScreen, DeviceScreenBounds, DeviceScreenOrientation, ScreenSize } from './device.interface';\n/**\n * This service is used to adapt styles and designs of the client to\n * different devices and screen sizes.\n *\n * Using `screenChange$` observable you are able to monitor changes to\n * the screen size and act upon it.\n *\n * This service will also adds attributes to the body tag that reflect the\n * current screen/device state. This way you can apply secific styles in your\n * css files for different screen resolutions and orientations.\n *\n * Attributes applied to the body tag are:\n *\n * - `data-screen` - [s, m, l, xl] - for different screen sizes\n * (s: for mobile phone like screen sizes, m: for tablet like screen\n * sizes, 'l': for desktop like screen sizes, 'xl': for screen sizes exceeding\n * the desktop screen size).\n *\n * - `data-orientation` - [portrait, landscape] - for the current screen orientation\n *\n * - `data-touch-enabled` - [true] - if the device has touch capabilities (won't be added if the device doesn't have touch capabilities)\n *\n * ```html\n * <body data-screen-size=\"s\" data-screen-orientation=\"portrait\" data-touch-enabled=\"true\">\n * ...\n * </body>\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceService {\n #deviceDetectorService = inject(DeviceDetectorService);\n\n #upperScreenBoundary = {\n small: 600,\n mediumPortrait: 900,\n mediumLandscape: 1200,\n large: 1800\n };\n\n #resize$ = fromEvent(window, 'resize').pipe(debounceTime(this.#getDebounceTime()));\n #screen?: DeviceScreen;\n #screenSource = new ReplaySubject<DeviceScreen>(1);\n screenChange$: Observable<DeviceScreen> = this.#screenSource.asObservable();\n\n /**\n * Signal to indicate if the screen size is small (e.g. mobile phone).\n * This will only be triggered if `supportsSmallScreens` is set to true.\n * Major components will use this metric to adapt to 'small screen behavior' and so can you\n */\n smallScreenLayout = signal<boolean>(false);\n #supportsSmallScreens = signal<boolean>(false);\n\n /**\n * if the device is a mobile device (android / iPhone / windows-phone etc)\n */\n isMobile: boolean = this.#deviceDetectorService.isMobile();\n /**\n * if the device us a tablet (iPad etc)\n */\n isTablet: boolean = this.#deviceDetectorService.isTablet();\n /**\n * if the app is running on a Desktop browser\n */\n isDesktop: boolean = this.#deviceDetectorService.isDesktop();\n info?: DeviceInfo = this.#deviceDetectorService.getDeviceInfo();\n isTouchEnabled = this.#isTouchEnabled();\n\n constructor() {\n this.#resize$.subscribe((e: Event) => {\n this.#setScreen();\n });\n }\n\n init(supportsSmallScreens: boolean = false): void {\n this.#supportsSmallScreens.set(supportsSmallScreens);\n this.#setScreen();\n }\n\n #isTouchEnabled() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n #setScreen(): void {\n const bounds: DeviceScreenBounds = {\n width: window.innerWidth,\n height: window.innerHeight\n };\n let orientation: DeviceScreenOrientation = bounds.width >= bounds.height ? DeviceScreenOrientation.LANDSCAPE : DeviceScreenOrientation.PORTRAIT;\n\n if (this.isMobile && window.screen['orientation']) {\n const screenOrientation = window.screen['orientation'].type;\n if (screenOrientation === 'landscape-primary' || screenOrientation === 'landscape-secondary') {\n orientation = DeviceScreenOrientation.LANDSCAPE;\n } else if (screenOrientation === 'portrait-primary' || screenOrientation === 'portrait-secondary') {\n orientation = DeviceScreenOrientation.PORTRAIT;\n }\n }\n this.#screen = {\n size: this.#getScreenSize(bounds, orientation),\n orientation,\n width: bounds.width,\n height: bounds.height\n };\n this.#screenSource.next(this.#screen);\n this.smallScreenLayout.set(this.#supportsSmallScreens() && this.#screen.size === 's' && this.#screen.orientation === 'portrait');\n this.#setupDOM(this.#screen);\n // force change detection because resize will not be recognized by Angular in some cases\n // TODO: check: causes recursive ticks in some cases ...\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setTimeout(() => {}, 0);\n }\n\n #setupDOM(screen: DeviceScreen) {\n const body: HTMLBodyElement = document.querySelector('body') as HTMLBodyElement;\n body.setAttribute('data-screen-size', screen.size);\n body.setAttribute('data-screen-orientation', screen.orientation);\n if (this.isTouchEnabled) body.setAttribute('data-touch-enabled', 'true');\n else body.removeAttribute('data-touch-enabled');\n }\n\n #getScreenSize(bounds: DeviceScreenBounds, orientation: DeviceScreenOrientation): ScreenSize {\n if (this.#isBelow(this.#upperScreenBoundary.small, bounds)) {\n return 's';\n } else if (this.#isBelow(orientation === 'landscape' ? this.#upperScreenBoundary.mediumLandscape : this.#upperScreenBoundary.mediumPortrait, bounds)) {\n return 'm';\n } else if (this.#isBelow(this.#upperScreenBoundary.large, bounds)) {\n return 'l';\n } else {\n return 'xl';\n }\n }\n\n #isBelow(size: number, bounds: DeviceScreenBounds): boolean {\n const landscape = bounds.width < this.#upperScreenBoundary.large ? bounds.width >= bounds.height : false;\n return (landscape && bounds.height < size) || (!landscape && bounds.width < size);\n }\n\n #getDebounceTime() {\n // on mobile devices resize only happens when rotating the device or when\n // keyboard appears, so we dont't need to debounce\n return this.isMobile ? 0 : 500;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { TranslateService } from '@ngx-translate/core';\n\n/* Draft */\n@Injectable()\nexport class YmtMatPaginatorIntlService extends MatPaginatorIntl {\n #translate = inject(TranslateService);\n rangeLabelSeparator: string = this.#translate.instant('ymt.paginator.rangeLabelSeparator');\n \n override getRangeLabel = (\n page: number,\n pageSize: number,\n length: number\n ) => {\n if (length === 0 || pageSize === 0) {\n return `0 ${this.rangeLabelSeparator} ${length}`;\n }\n \n length = Math.max(length, 0);\n const startIndex = page * pageSize;\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex = startIndex < length ?\n Math.min(startIndex + pageSize, length) :\n startIndex + pageSize;\n return `${startIndex + 1} - ${endIndex} ${this.rangeLabelSeparator} ${length}`;\n };\n \n //=== Proposal =========================================================\n \n injectTranslateService(translate: TranslateService) {\n this.#translate = translate;\n \n this.#translate.onLangChange.subscribe(() => {\n this.translateLabels();\n });\n \n this.translateLabels();\n }\n \n translateLabels() {\n this.itemsPerPageLabel = this.#translate.instant('ymt.paginator.itemsPerPageLabel');\n this.nextPageLabel = this.#translate.instant('ymt.paginator.nextPageLabel');\n this.previousPageLabel = this.#translate.instant('ymt.paginator.previousPageLabel');\n this.firstPageLabel = this.#translate.instant('ymt.paginator.firstPageLabel');\n this.lastPageLabel = this.#translate.instant('ymt.paginator.lastPageLabel');\n this.rangeLabelSeparator = this.#translate.instant('ymt.paginator.rangeLabelSeparator');\n this.changes.next();\n }\n \n //=== Proposal END =====================================================\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_RIPPLE_GLOBAL_OPTIONS, RippleGlobalOptions } from '@angular/material/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldDefaultOptions } from '@angular/material/form-field';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MAT_TABS_CONFIG, MatTabsConfig } from '@angular/material/tabs';\nimport { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions } from '@angular/material/tooltip';\nimport { TranslateService } from '@ngx-translate/core';\nimport { YMT_DATE_FROMATS } from '../services';\nimport { YmtMatIconRegistryService } from '../services/ymt-mat-icon-registry.service';\nimport { YmtMatPaginatorIntlService } from '../services/ymt-mat-paginator-intl.service';\n\nexport const provideYmtMaterial = (): EnvironmentProviders => {\n const providers: Provider[] = [\n /**\n * Material Date Locale Default\n */\n { provide: MAT_DATE_LOCALE, useFactory: (translate: TranslateService) => translate.defaultLang, deps: [TranslateService] },\n { provide: MAT_DATE_FORMATS, useValue: YMT_DATE_FROMATS },\n\n /**\n * Material Datepicker Internationalization Service Override\n */\n /*{\n provide: MatDatepickerIntl,\n useClass: YmtDatepickerIntlService,\n deps: [TranslateService],\n },*/\n /*{\n provide: MatDatepickerIntl,\n deps: [[new Optional(), new SkipSelf(), MatDatepickerIntl]],\n useFactory: (parentIntl: MatDatepickerIntl)=> {\n return parentIntl || new YmtDatepickerIntlService();\n },\n },*/\n\n /**\n * Material Date Adapter\n */\n // provideYmtDateAdapter(),\n\n /**\n * Material Icon Registry Service Override\n */\n { provide: MatIconRegistry, useClass: YmtMatIconRegistryService },\n\n /**\n * Material Ripple Config\n */\n { provide: MAT_RIPPLE_GLOBAL_OPTIONS, useValue: { disabled: true } as RippleGlobalOptions },\n\n {\n provide: MAT_DIALOG_DEFAULT_OPTIONS,\n useValue: {\n ...new MatDialogConfig(),\n closeOnNavigation: false\n }\n },\n\n /**\n * Material Paginator Internationalization Service Override\n */\n {\n provide: MatPaginatorIntl,\n useFactory: (translate: TranslateService) => {\n const service = new YmtMatPaginatorIntlService();\n service.injectTranslateService(translate);\n return service;\n },\n deps: [TranslateService]\n },\n\n /**\n * Material Tooltip Config\n */\n {\n provide: MAT_TOOLTIP_DEFAULT_OPTIONS,\n useValue: {\n showDelay: 500,\n positionAtOrigin: true,\n disableTooltipInteractivity: true\n } as MatTooltipDefaultOptions\n },\n\n /**\n * Material Form Field Config\n */\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n appearance: 'outline',\n floatLabel: 'always',\n subscriptSizing: 'dynamic'\n } as MatFormFieldDefaultOptions\n },\n\n /**\n * Material Tab Config\n */\n {\n provide: MAT_TABS_CONFIG,\n useValue: {\n animationDuration: '0',\n stretchTabs: false,\n alignTabs: 'start'\n } as MatTabsConfig\n }\n ];\n return makeEnvironmentProviders(providers);\n};\n","export enum YMT_ICON_BUTTON_SIZE {\n small = 'small',\n medium = 'medium'\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n booleanAttribute,\n ComponentRef,\n createComponent,\n Directive,\n effect,\n ElementRef,\n EnvironmentInjector,\n inject,\n input\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { YMT_ICON_BUTTON_SIZE } from './ymt-icon-button.model';\n\n@Directive({\n selector: 'button[ymtIconButton],button[ymt-icon-button],a[ymtIconButton],a[ymt-icon-button]',\n standalone: true,\n host: {\n 'mat-icon-button': ''\n }\n})\nexport class YmtIconButtonDirective implements AfterViewInit {\n disabled = input(false, { transform: booleanAttribute });\n disableRipple = input(false, { transform: booleanAttribute });\n ariaDisabled = input(false, { transform: booleanAttribute, alias: 'aria-disabled' });\n disabledInteractive = input(false, { transform: booleanAttribute });\n size = input<'small' | 'medium' | YMT_ICON_BUTTON_SIZE>(YMT_ICON_BUTTON_SIZE.medium, { alias: 'icon-button-size' });\n\n #elRef = inject(ElementRef);\n #host = this.#elRef.nativeElement;\n #injector = inject(EnvironmentInjector);\n #appRef = inject(ApplicationRef);\n #MatIconButtonComponentRef: ComponentRef<MatIconButton> | null = null;\n #materialIconButtonInputs = [\n { name: 'disabled', signal: this.disabled },\n { name: 'disableRipple', signal: this.disableRipple },\n { name: 'aria-disabled', signal: this.ariaDisabled },\n { name: 'disabledInteractive', signal: this.disabledInteractive }\n ];\n\n constructor() {\n effect(() => this.#applySizeClass());\n effect(() => this.#setMaterialInputs());\n }\n\n ngAfterViewInit() {\n this.#MatIconButtonComponentRef = this.#createComponent();\n this.#setMaterialInputs();\n }\n\n #applySizeClass() {\n this.size() === YMT_ICON_BUTTON_SIZE.small ? this.#host.classList.add(`ymt-icon-button--size-s`) : this.#host.classList.remove(`ymt-icon-button--size-s`);\n this.size() === YMT_ICON_BUTTON_SIZE.medium ? this.#host.classList.add(`ymt-icon-button--size-m`) : this.#host.classList.remove(`ymt-icon-button--size-m`);\n }\n\n #setMaterialInputs() {\n this.#materialIconButtonInputs.forEach(({ name, signal }) => this.#MatIconButtonComponentRef?.setInput(name, signal()));\n }\n\n #createComponent() {\n const matIcon = this.#host.querySelector('mat-icon'); //todo support also upcoming yuv-icon\n const environmentInjector = this.#injector;\n const hostElement = this.#host;\n const componentRef = createComponent(MatIconButton, { hostElement, projectableNodes: [[matIcon]], environmentInjector });\n this.#appRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n return componentRef;\n }\n}\n","export enum YMT_BUTTON_SIZE {\n small = 'small',\n medium = 'medium'\n}\n","import {\n ApplicationRef,\n createComponent,\n Directive,\n ElementRef,\n EnvironmentInjector,\n input,\n OnInit,\n AfterViewInit,\n inject,\n effect,\n ComponentRef,\n booleanAttribute\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { YMT_BUTTON_SIZE } from './ymt-button.model';\n\ntype ButtonType = keyof typeof MatButtonAttributeEnum;\nenum MatButtonAttributeEnum {\n primary = 'mat-flat-button',\n secondary = 'mat-stroked-button',\n tertiary = 'mat-button'\n}\n\n@Directive({\n selector: 'button[ymtButton], a[ymtButton]',\n standalone: true\n})\nexport class YmtButtonDirective implements OnInit, AfterViewInit {\n ymtButton = input<ButtonType>('primary');\n disabled = input(false, { transform: booleanAttribute });\n ariaDisabled = input(false, { alias: 'aria-disabled', transform: booleanAttribute });\n disableRipple = input(false, { transform: booleanAttribute });\n disabledInteractive = input(false, { transform: booleanAttribute });\n size = input<'small' | 'medium' | YMT_BUTTON_SIZE>(YMT_BUTTON_SIZE.medium, { alias: 'button-size' });\n // Todo: Add input \"isBusy\" as \"busy inactive state\": not clickable and with mat-spinner in button\n\n #environmentInjector = inject(EnvironmentInjector);\n #applicationRef = inject(ApplicationRef);\n #hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n #matButtonComponentRef: ComponentRef<MatButton> | null = null;\n\n #iconPrefix: Element[] = [];\n #noneIconNodes: Node[] = [];\n #iconSuffix: Element[] = [];\n\n #matButtonAttribute = MatButtonAttributeEnum;\n\n constructor() {\n effect(() => {\n const disabled = this.disabled();\n const ariaDisabled = this.ariaDisabled();\n const disableRipple = this.disableRipple();\n const disabledInteractive = this.disabledInteractive();\n this.#updateInputs(disabled, ariaDisabled, disableRipple, disabledInteractive);\n });\n\n effect(() => {\n this.#applySizeClass();\n });\n }\n\n ngOnInit() {\n this.#iconPrefix = this.#getIconPrefixElements();\n this.#noneIconNodes = this.#getNoneIconNodes();\n this.#iconSuffix = this.#getIconSuffixElements();\n this.#matButtonComponentRef = this.#createMatButtonComponent();\n }\n\n ngAfterViewInit() {\n this.#updateInputs();\n }\n\n #updateInputs(\n disabled: boolean = this.disabled(),\n ariaDisabled: boolean = this.ariaDisabled(),\n disableRipple: boolean = this.disableRipple(),\n disabledInteractive: boolean = this.disabledInteractive()\n ) {\n this.#matButtonComponentRef?.setInput('disabled', disabled);\n this.#matButtonComponentRef?.setInput('aria-disabled', ariaDisabled);\n this.#matButtonComponentRef?.setInput('disableRipple', disableRipple);\n this.#matButtonComponentRef?.setInput('disabledInteractive', disabledInteractive);\n }\n\n #createMatButtonComponent(\n hostElement: HTMLElement = this.#hostElement,\n environmentInjector: EnvironmentInjector = this.#environmentInjector,\n iconPrefix: Element[] = this.#iconPrefix,\n noneIconNodes: Node[] = this.#noneIconNodes,\n iconSuffix: Element[] = this.#iconSuffix\n ) {\n this.#setInitialAttributesToHost();\n const componentRef = createComponent(MatButton, {\n environmentInjector,\n hostElement,\n projectableNodes: [[...iconPrefix], [...noneIconNodes], [...iconSuffix]]\n });\n this.#applicationRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n return componentRef;\n }\n\n #setInitialAttributesToHost() {\n this.#hostElement.setAttribute(this.#matButtonAttribute[this.ymtButton()], '');\n }\n\n #getIconPrefixElements() {\n return Array.from(this.#hostElement.querySelectorAll('mat-icon:not([iconPositionEnd])'));\n }\n\n #getIconSuffixElements() {\n return Array.from(this.#hostElement.querySelectorAll('mat-icon[iconPositionEnd]'));\n }\n\n #getNoneIconNodes() {\n const iter = document.createNodeIterator(this.#hostElement, NodeFilter.SHOW_ALL, (node) => {\n return node.nodeName.toLowerCase() !== 'mat-icon' && node.parentElement === this.#hostElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n });\n let currentNode: Node | null;\n const filteredNodes: Node[] = [];\n while ((currentNode = iter.nextNode())) {\n filteredNodes.push(currentNode);\n }\n return filteredNodes;\n }\n\n #applySizeClass() {\n this.size() === YMT_BUTTON_SIZE.small ? this.#hostElement.classList.add(`ymt-button--size-s`) : this.#hostElement.classList.remove(`ymt-button--size-s`);\n this.size() === YMT_BUTTON_SIZE.medium ? this.#hostElement.classList.add(`ymt-button--size-m`) : this.#hostElement.classList.remove(`ymt-button--size-m`);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n HostBinding,\n HostListener,\n inject,\n Input,\n input,\n OnDestroy, Renderer2,\n signal,\n untracked,\n viewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatInput } from '@angular/material/input';\nimport {\n AbstractControlDirective,\n ControlValueAccessor, FormControlStatus, FormGroup, FormsModule,\n NgControl,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { MatFormField, MatFormFieldControl } from '@angular/material/form-field';\nimport { TranslateService } from '@ngx-translate/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerIntl,\n MatDateRangeInput,\n MatDateRangePicker,\n MatEndDate,\n MatStartDate\n} from '@angular/material/datepicker';\nimport { MatTimepicker, MatTimepickerInput } from '@angular/material/timepicker';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n DateAdapter,\n MAT_DATE_FORMATS,\n MAT_DATE_LOCALE,\n MAT_NATIVE_DATE_FORMATS,\n MatDateFormats,\n NativeDateModule\n} from '@angular/material/core';\nimport { YmtDatepickerIntlService } from '../../services/ymt-datepicker-intl.service';\nimport { provideYmtDateAdapter, YMT_DATE_FROMATS } from '../../services';\n\ntype DatepickerValue = DatetimeValue;\ntype DatetimeValue = Date | string | null;\ntype MultiDateValue = Set<Date> | null; // not implemented yet!\ntype DateRangeValue = IRangeValue<DatetimeValue> | null; // not implemented yet!\nexport type DatepickerMode = keyof typeof EnumDatepickerMode;\nenum EnumDatepickerMode {\n DATE = 'DATE',\n // MULTI_DATE = 'MULTI_DATE', // not implemented yet!\n DATE_RANGE = 'DATE_RANGE',\n TIME = 'TIME',\n}\ninterface IRangeValue<T = unknown> {\n start: T;\n end: T;\n}\nexport interface DateRangePlaceholder { startDate: string; endDate: string; }\n\n@Component({\n selector: 'ymt-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.scss',\n standalone: true,\n imports: [CommonModule, MatInput, FormsModule, ReactiveFormsModule, MatDatepicker, MatDatepickerInput, MatTimepicker, MatTimepickerInput, MatDateRangeInput, MatDateRangePicker, MatEndDate, MatStartDate, NativeDateModule],\n providers: [\n { provide: MatFormFieldControl, useExisting: DatepickerComponent },\n /*{\n provide: MAT_DATE_FORMATS,\n useValue: {\n ...MAT_NATIVE_DATE_FORMATS,\n display: {\n ...MAT_NATIVE_DATE_FORMATS.display,\n dateInput: {\n ...MAT_NATIVE_DATE_FORMATS.display.dateInput,\n day: 'numeric' as Intl.DateTimeFormatOptions['day'] // has effect\n }\n }\n } as MatDateFormats,\n },*/\n { provide: MatDatepickerIntl, useClass: YmtDatepickerIntlService },\n provideYmtDateAdapter()\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerComponent implements MatFormFieldControl<DatepickerValue>, ControlValueAccessor, AfterViewInit, OnDestroy {\n // Todo: Refactoring: Write BaseMatFormFieldControlComponent class for further custom controls in @yuuvis/material\n // Done: Internationalization\n // Done: Implement Datepicker features and options:\n // // [X] max\n // // [X] min\n // Done: MatFormFieldControl implementation:\n // // [x]handling errorState: https://material.angular.dev/components/input/overview#changing-when-error-messages-are-shown\n // // [x]handling focus\n // // [x]handling setDescribedByIds(ids: string[]): void\n // // [x] set aria-labeledby\n // // [x] set disabled\n // Todo: Refactoring: Better solution for handling value changes from input-element to model (kill ngModelOptions on inputs)\n // Todo: Better solution for DATE_RANGE-mode: content projection for input[matStartDate/matEndDate]\n // Done: Check aria-describedby logic of MatFormField to implement the correct setting\n // Done: Trigger\"stateChanges\" in effect function\n // Done: set errorState when input value is invalid\n // Done: Check how to destroy the component and complete stateChanges Observable\n // Done: Check how to get the ngControl instance of this component (optionally set)\n \n #translate = inject(TranslateService);\n #dateAdapter = inject(DateAdapter);\n #locale = signal(inject<unknown>(MAT_DATE_LOCALE));\n #injectNgControl = (ngC = inject(NgControl, { self: true, optional: true })) => ngC ? (ngC.valueAccessor = this) && ngC : null;\n #destroyRef = inject(DestroyRef);\n #formField = inject(MatFormField, {optional: true});\n \n // implemented as part of MatFormFieldControl interface\n ngControl: NgControl | AbstractControlDirective | null = this.#injectNgControl();\n stateChanges = new Subject<void>();\n \n @HostListener('focusin') onFocusIn() {\n this.focused = true;\n }\n @HostListener('focusout') onFocusout() {\n this.focused = false;\n this.propagateTouched();\n }\n \n #value = signal<DatepickerValue>(null);\n @Input()\n set value(v: DatepickerValue) {\n let _value = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n const _previousValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(this.ngControl?.value));\n if (_value && _previousValue) {\n if (this.mode === EnumDatepickerMode.TIME) {\n _value = new Date(_previousValue.setHours(_value.getHours(), _value.getMinutes()));\n } else if (this.mode === EnumDatepickerMode.DATE) {\n _value = new Date(_value.setHours(_previousValue.getHours(), _previousValue.getMinutes()));\n }\n } else {\n _value = v;\n }\n this.#value.set(_value);\n this.#empty.set(!_value);\n this.propagateChange(this.value);\n }\n get value(): DatepickerValue { return this.#value(); }\n \n #disabled = signal<boolean>(false);\n @Input()\n set disabled(v: BooleanInput) {\n this.#disabled.set(coerceBooleanProperty(v));\n this.timepickerInput()?.setDisabledState(this.#disabled());\n }\n get disabled(): boolean { return this.#disabled(); }\n \n #id = signal<string>('');\n @Input()\n set id(v: string) { this.#id.set(v); }\n get id(): string { return this.#id(); }\n \n #placeholder = signal<string>('');\n @Input()\n set placeholder(v: string) { this.#placeholder.set(v); }\n get placeholder(): string { return this.#placeholder(); }\n \n #required = signal<boolean>(false);\n @Input()\n set required(v: BooleanInput) { this.#required.set(coerceBooleanProperty(v)); }\n get required(): boolean { return this.#required(); }\n \n #userAriaDescribedBy = signal<string>('');\n @Input()\n set userAriaDescribedBy(v: string) { this.#userAriaDescribedBy.set(v); }\n get userAriaDescribedBy(): string { return this.#userAriaDescribedBy(); }\n \n #empty = signal<boolean>(false);\n set empty(v: boolean) { this.#empty.set(v); }\n get empty() { return this.#empty(); }\n \n #errorState = signal<boolean>(false);\n set errorState(v: boolean) { this.#errorState.set(v); }\n get errorState() { return this.#errorState(); }\n \n #focused = signal<boolean>(false);\n set focused(v: boolean) { this.#focused.set(v); }\n get focused() { return this.#focused(); }\n \n // implemented as part of MatFormFieldControl interface\n @HostBinding('class.floating')\n get shouldLabelFloat(): boolean { return this.focused || !this.empty; }\n readonly autofilled?: boolean;\n readonly controlType: string = 'datepicker';\n readonly disableAutomaticLabeling: boolean = false;\n \n protected readonly datepickerMode = EnumDatepickerMode;\n protected readonly datepicker = viewChild('datepicker', { read: MatDatepicker<never> });\n protected readonly rangepicker = viewChild<MatDateRangePicker<never>>('rangepicker');\n protected readonly timepicker = viewChild('timepicker', { read: MatTimepicker<never> });\n protected readonly datepickerInput = viewChild<MatFormFieldControl<never>>('datepickerInput');\n protected readonly timepickerInput = viewChild<MatTimepickerInput<never>>('timepickerInput');\n \n #mode = signal<DatepickerMode>(EnumDatepickerMode.DATE);\n @Input()\n set mode(v: DatepickerMode) { this.#mode.set(v); }\n get mode(): DatepickerMode { return this.#mode(); }\n \n #min = signal<DatepickerValue>(null);\n @Input()\n set min(v: DatepickerValue) {\n const validValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n \n if (!this.#dateAdapter.sameDate(validValue, this.#min())) {\n this.#min.set(validValue);\n }\n }\n get min() { return this.#min(); }\n \n #max = signal<DatepickerValue>(null);\n @Input()\n set max(v: DatepickerValue) {\n const validValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n \n if (!this.#dateAdapter.sameDate(validValue, this.#max())) {\n this.#max.set(validValue);\n }\n }\n get max() { return this.#max(); }\n \n #rangePlaceholder = signal<DateRangePlaceholder>({startDate: 'Start Date', endDate: 'End Date'});\n @Input()\n set rangePlaceholder(v: DateRangePlaceholder) { this.#rangePlaceholder.set(v); }\n get rangePlaceholder(): DateRangePlaceholder { return this.#rangePlaceholder(); }\n \n rangeValue = { start: '', end: '' };\n \n startDateFormControlName = input<string>('');\n endDateFormControlName = input<string>('');\n formGroup = input<FormGroup>();\n \n constructor() {\n // triggers state changes for the MatFormFieldControl\n effect(() => {\n this.#value();\n this.#placeholder();\n this.#rangePlaceholder(); // Todo: Check if it needs to trigger \"stateChanges\"!\n this.#disabled();\n this.#id();\n this.#focused();\n this.#empty();\n this.#required();\n this.#errorState();\n this.#locale();\n this.#mode();\n this.#min();\n this.#max();\n untracked(() => this.stateChanges.next());\n });\n \n // handle language change\n this.#translate.onLangChange.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((event) => {\n this.#locale.set(event.lang);\n this.#dateAdapter.setLocale(this.#locale());\n });\n effect(() => {\n this.#value();\n untracked(() => console.log('DatepickerComponent.value: ', this.value));\n });\n }\n \n // implemented as part of ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange: ((_: any) => void) = () => {};\n // implemented as part of ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateTouched: (() => void) = () => {};\n \n // implemented as part of ControlValueAccessor interface\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n \n // implemented as part of ControlValueAccessor interface\n registerOnTouched(fn: any): void {\n this.propagateTouched = fn;\n }\n \n // implemented as part of ControlValueAccessor interface\n writeValue(date: DatepickerValue): void {\n this.value = date;\n }\n \n // implemented as part of ControlValueAccessor interface\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n \n // implemented as part of MatFormFieldControl interface\n onContainerClick(event: MouseEvent): void {\n const focusableInput = this.datepickerInput();\n if (focusableInput && !this.focused && !this.disabled) {\n // sets focus to MatFormFieldControls\n focusableInput.onContainerClick(event);\n this.focused = true;\n }\n }\n \n // implemented as part of MatFormFieldControl interface\n setDescribedByIds(ids: string[]): void {\n this.datepickerInput()?.setDescribedByIds(ids);\n }\n \n ngAfterViewInit(): void {\n const _datepickerInput = this.datepickerInput();\n const _formField = this.#formField;\n \n if (_datepickerInput) {\n // set MatFormFieldControl.id for auto labeling within a MatFormField\n this.id = _datepickerInput.id || this.id;\n // track datepicker input state changes as they are MatFormFieldControl inputs\n _datepickerInput.stateChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n // set errorState\n this.errorState = _datepickerInput.errorState;\n // set disabled state\n this.disabled = _datepickerInput.disabled;\n });\n }\n \n // set the input's aria-describedby attribute to the parent MatFormField._hintLabelIds (=\"label-1 label-2 ...\")\n if (_formField) {\n this.setDescribedByIds([..._formField._hintLabelId.split(' ')]);\n }\n \n // set errorState for Range-Mode\n this.formGroup()?.statusChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((v: FormControlStatus) => {this.errorState = (v === 'INVALID');});\n \n this.ngControl?.valueChanges?.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((value) => {\n // get the previous value of the associated formFieldControl\n if (!this.value && value) this.value = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(value));\n });\n }\n \n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n \n /* Custom Datepicker Functions */\n \n open(): void {\n this.datepicker()?.open();\n this.rangepicker()?.open();\n this.timepicker()?.open();\n }\n}\n","@switch (mode) {\n @case (datepickerMode.DATE) {\n <input\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled\"\n matInput\n [matDatepicker]=\"datepicker\"\n [min]=\"min\"\n [max]=\"max\"\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n #datepickerInput=\"matInput\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n }\n @case (datepickerMode.DATE_RANGE) {\n @let formGroup = this.formGroup();\n @let startDate = this.startDateFormControlName();\n @let endDate = this.endDateFormControlName();\n @if (formGroup && startDate && endDate) {\n <mat-date-range-input\n [rangePicker]=\"rangepicker\"\n [min]=\"min\"\n [max]=\"max\"\n [formGroup]=\"formGroup\"\n #datepickerInput=\"matDateRangeInput\"\n >\n <input matStartDate [placeholder]=\"rangePlaceholder.startDate\" [formControlName]=\"startDate\"/>\n <input matEndDate [placeholder]=\"rangePlaceholder.endDate\" [formControlName]=\"endDate\"/>\n </mat-date-range-input>\n <mat-date-range-picker #rangepicker></mat-date-range-picker>\n } @else {\n <mat-date-range-input\n [rangePicker]=\"rangepicker\"\n [min]=\"min\"\n [max]=\"max\"\n #datepickerInput=\"matDateRangeInput\"\n >\n <input matStartDate [placeholder]=\"rangePlaceholder.startDate\" (dateChange)=\"rangeValue.start = $event.value\"/>\n <input matEndDate [placeholder]=\"rangePlaceholder.endDate\" (dateChange)=\"rangeValue.end = $event.value\"/>\n </mat-date-range-input>\n <mat-date-range-picker #rangepicker></mat-date-range-picker>\n }\n }\n @case (datepickerMode.TIME) {\n <input\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled\"\n matInput\n [matTimepicker]=\"timepicker\"\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n #datepickerInput=\"matInput\"\n #timepickerInput=\"matTimepickerInput\"\n >\n <mat-timepicker #timepicker/>\n }\n @default {\n <input\n type=\"datetime-locale\"\n [placeholder]=\"placeholder\"\n matInput\n [(ngModel)]=\"value\"\n #datepickerInput=\"matInput\"\n />\n }\n}\n\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, Input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { MatDatepickerIntl } from '@angular/material/datepicker';\nimport { DatepickerComponent } from '../datepicker';\nimport { YmtDatepickerIntlService } from '../../services';\nimport { YmtIconButtonDirective } from '../../directives';\nimport { MatIcon } from '@angular/material/icon';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ymt-datepicker-toggle',\n template: `\n <button type=\"button\" ymtIconButton [attr.aria-label]=\"ariaLabel\" [aria-disabled]=\"disabled\" [disabled]=\"disabled\">\n <ng-content select=\"mat-icon\"></ng-content>\n </button>\n `,\n imports: [YmtIconButtonDirective],\n providers: [{ provide: MatDatepickerIntl, useClass: YmtDatepickerIntlService }],\n host: {\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)'\n },\n exportAs: 'matDatepickerToggle',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerToggleComponent implements OnInit, OnDestroy {\n #intl = inject(MatDatepickerIntl);\n #destroyRef = inject(DestroyRef);\n\n #datepicker = signal<DatepickerComponent | null>(null);\n @Input({ alias: 'for', required: true })\n set datepicker(v: DatepickerComponent | null) {\n this.#datepicker.set(v);\n }\n get datepicker() {\n return this.#datepicker();\n }\n\n #disabled = signal<boolean>(false);\n @Input()\n set disabled(v: BooleanInput) {\n this.#disabled.set(coerceBooleanProperty(v));\n }\n get disabled(): boolean {\n return this.#disabled();\n }\n\n #ariaLabel = signal(this.#intl.openCalendarLabel);\n @Input()\n set ariaLabel(v: string) {\n this.#ariaLabel.set(v);\n }\n get ariaLabel() {\n return this.#ariaLabel();\n }\n\n stateChanges = new Subject<void>();\n\n constructor() {\n effect(() => {\n this.#datepicker();\n this.#disabled();\n this.#ariaLabel();\n this.stateChanges.next();\n });\n }\n\n _open(event: Event): void {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n ngOnInit(): void {\n const datepicker = this.datepicker;\n if (datepicker) {\n datepicker.stateChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n this.ariaLabel = this.#intl.openCalendarLabel;\n if (this.disabled !== datepicker.disabled) {\n this.disabled = datepicker.disabled;\n }\n });\n } else {\n throw new Error(`DatepickerComponent is missing on DatepickerToggleComponent's \"for\"-attribute!`);\n }\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-material.mjs","sources":["../../../../../libs/yuuvis/material/src/lib/services/ymt-mat-icon-registry.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-datepicker-intl.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-date-adapter.service.ts","../../../../../libs/yuuvis/material/src/lib/services/device.interface.ts","../../../../../libs/yuuvis/material/src/lib/services/device.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-mat-paginator-intl.service.ts","../../../../../libs/yuuvis/material/src/lib/providers/material.providers.ts","../../../../../libs/yuuvis/material/src/lib/directives/icon-button/ymt-icon-button.model.ts","../../../../../libs/yuuvis/material/src/lib/directives/icon-button/ymt-icon-button.directive.ts","../../../../../libs/yuuvis/material/src/lib/directives/button/ymt-button.model.ts","../../../../../libs/yuuvis/material/src/lib/directives/button/ymt-button.directive.ts","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker.component.ts","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker.component.html","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker-toggle.component.ts","../../../../../libs/yuuvis/material/src/yuuvis-material.ts"],"sourcesContent":["import { ErrorHandler, Inject, Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { HttpClient } from '@angular/common/http';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DOCUMENT } from '@angular/common';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class YmtMatIconRegistryService extends MatIconRegistry {\n #ymtFontSetClassNames = ['material-symbols-sharp'];\n\n constructor(_httpClient: HttpClient, _sanitizer: DomSanitizer, @Inject(DOCUMENT) document: any, _errorHandler: ErrorHandler) {\n super(_httpClient, _sanitizer, document, _errorHandler);\n this.setDefaultFontSetClass();\n }\n\n override setDefaultFontSetClass(...classnames: string[]) {\n const merged = [...new Set([...classnames, ...this.#ymtFontSetClassNames])];\n super.setDefaultFontSetClass(...merged);\n return this;\n }\n\n static isFontIcon(input: string | null) {\n if (typeof input === 'string') {\n const parser = new DOMParser();\n const doc = parser.parseFromString(input, 'image/svg+xml');\n return coerceBooleanProperty(doc.querySelector('parsererror'));\n }\n return false;\n }\n}\n","import { MatDatepickerIntl } from '@angular/material/datepicker';\nimport { TranslateService } from '@ngx-translate/core';\nimport { inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable({ providedIn: 'root' })\nexport class YmtDatepickerIntlService extends MatDatepickerIntl {\n #translate = inject(TranslateService);\n \n constructor() {\n super();\n \n this.translateLabels();\n this.#translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => {\n this.translateLabels();\n });\n }\n \n translateLabels() {\n this.openCalendarLabel = this.#translate.instant('ymt.datepicker.openCalendarLabel');\n this.closeCalendarLabel = this.#translate.instant('ymt.datepicker.closeCalendarLabel');\n this.calendarLabel = this.#translate.instant('ymt.datepicker.calendarLabel');\n this.comparisonDateLabel = this.#translate.instant('ymt.datepicker.comparisonDateLabel');\n this.prevMonthLabel = this.#translate.instant('ymt.datepicker.prevMonthLabel');\n this.nextMonthLabel = this.#translate.instant('ymt.datepicker.nextMonthLabel');\n this.prevYearLabel = this.#translate.instant('ymt.datepicker.prevYearLabel');\n this.nextYearLabel = this.#translate.instant('ymt.datepicker.nextYearLabel');\n this.prevMultiYearLabel = this.#translate.instant('ymt.datepicker.prevMultiYearLabel');\n this.nextMultiYearLabel = this.#translate.instant('ymt.datepicker.nextMultiYearLabel');\n this.switchToMonthViewLabel = this.#translate.instant('ymt.datepicker.switchToMonthViewLabel');\n this.switchToMultiYearViewLabel = this.#translate.instant('ymt.datepicker.switchToMultiYearViewLabel');\n this.startDateLabel = this.#translate.instant('ymt.datepicker.startDateLabel');\n this.endDateLabel = this.#translate.instant('ymt.datepicker.endDateLabel');\n this.changes.next();\n }\n \n override formatYearRange(start: string, end: string): string {\n return super.formatYearRange(start, end);\n }\n \n override formatYearRangeLabel(start: string, end: string): string {\n return super.formatYearRangeLabel(start, end);\n }\n}\n","import { inject, Injectable, Provider } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS, MatDateFormats, NativeDateAdapter } from '@angular/material/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport const YMT_DATE_FROMATS: MatDateFormats = {\n ...MAT_NATIVE_DATE_FORMATS,\n parse: {\n dateInput: null,\n timeInput: null\n }\n};\n\nexport function provideYmtDateAdapter(formats: MatDateFormats = YMT_DATE_FROMATS): Provider[] {\n return [\n { provide: DateAdapter, useClass: YmtDateAdapterService },\n { provide: MAT_DATE_FORMATS, useValue: formats }\n ];\n}\n\ninterface IParseFormats {\n separator: '.' | '/' | '-' | string;\n order: 'mdy' | 'dmy' | 'ymd';\n}\n\n@Injectable()\nexport class YmtDateAdapterService extends NativeDateAdapter {\n #translateService = inject(TranslateService);\n\n override locale = this.#translateService.currentLang;\n\n constructor() {\n super();\n }\n\n override parse(value: any, parseFormat: any = ''): Date | null {\n // categories: { separators: ['.','/','-'], order: ['mdy','dmy','ymd'] }\n let date: Date | null = null;\n if (typeof value === 'string') {\n switch (this.locale) {\n case 'en':\n date = this.parseDateString(value, { separator: '/', order: 'mdy' });\n break;\n case 'de':\n date = this.parseDateString(value, { separator: '.', order: 'dmy' });\n break;\n case 'fi':\n date = this.parseDateString(value, { separator: '.', order: 'dmy' });\n break;\n }\n }\n return super.parse(date, parseFormat);\n }\n\n parseDateString(value: string, config: IParseFormats): Date {\n const { separator, order } = config;\n const dateStrArr = value.split(separator); // DD.MM.YYYY => { separator: '.', order: 'dmy' }\n const day = Number(dateStrArr[order.indexOf('d')]);\n const month = Number(dateStrArr[order.indexOf('m')]) - 1;\n const year = Number(dateStrArr[order.indexOf('y')]);\n const date = new Date(year, month, day);\n const debugObject = {\n config: { separator, order },\n dateStrArr,\n day,\n month,\n year,\n date\n };\n\n return date;\n }\n}\n","export enum DeviceScreenOrientation {\n PORTRAIT = 'portrait',\n LANDSCAPE = 'landscape'\n}\n\n\nexport interface DeviceScreen {\n size: ScreenSize;\n orientation: DeviceScreenOrientation\n width: number;\n height: number;\n}\n\nexport interface DeviceScreenBounds {\n width: number;\n height: number;\n}\n\nexport type ScreenSize = 's' | 'm' | 'l' | 'xl';\n\n\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DeviceDetectorService, DeviceInfo } from 'ngx-device-detector';\nimport { debounceTime, fromEvent, Observable, ReplaySubject } from 'rxjs';\nimport { DeviceScreen, DeviceScreenBounds, DeviceScreenOrientation, ScreenSize } from './device.interface';\n/**\n * This service is used to adapt styles and designs of the client to\n * different devices and screen sizes.\n *\n * Using `screenChange$` observable you are able to monitor changes to\n * the screen size and act upon it.\n *\n * This service will also adds attributes to the body tag that reflect the\n * current screen/device state. This way you can apply secific styles in your\n * css files for different screen resolutions and orientations.\n *\n * Attributes applied to the body tag are:\n *\n * - `data-screen` - [s, m, l, xl] - for different screen sizes\n * (s: for mobile phone like screen sizes, m: for tablet like screen\n * sizes, 'l': for desktop like screen sizes, 'xl': for screen sizes exceeding\n * the desktop screen size).\n *\n * - `data-orientation` - [portrait, landscape] - for the current screen orientation\n *\n * - `data-touch-enabled` - [true] - if the device has touch capabilities (won't be added if the device doesn't have touch capabilities)\n *\n * ```html\n * <body data-screen-size=\"s\" data-screen-orientation=\"portrait\" data-touch-enabled=\"true\">\n * ...\n * </body>\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceService {\n #deviceDetectorService = inject(DeviceDetectorService);\n\n #upperScreenBoundary = {\n small: 600,\n mediumPortrait: 900,\n mediumLandscape: 1200,\n large: 1800\n };\n\n #resize$ = fromEvent(window, 'resize').pipe(debounceTime(this.#getDebounceTime()));\n #screen?: DeviceScreen;\n #screenSource = new ReplaySubject<DeviceScreen>(1);\n screenChange$: Observable<DeviceScreen> = this.#screenSource.asObservable();\n\n /**\n * Signal to indicate if the screen size is small (e.g. mobile phone).\n * This will only be triggered if `supportsSmallScreens` is set to true.\n * Major components will use this metric to adapt to 'small screen behavior' and so can you\n */\n smallScreenLayout = signal<boolean>(false);\n #supportsSmallScreens = signal<boolean>(false);\n\n /**\n * if the device is a mobile device (android / iPhone / windows-phone etc)\n */\n isMobile: boolean = this.#deviceDetectorService.isMobile();\n /**\n * if the device us a tablet (iPad etc)\n */\n isTablet: boolean = this.#deviceDetectorService.isTablet();\n /**\n * if the app is running on a Desktop browser\n */\n isDesktop: boolean = this.#deviceDetectorService.isDesktop();\n info?: DeviceInfo = this.#deviceDetectorService.getDeviceInfo();\n isTouchEnabled = this.#isTouchEnabled();\n\n constructor() {\n this.#resize$.subscribe((e: Event) => {\n this.#setScreen();\n });\n }\n\n init(supportsSmallScreens: boolean = false): void {\n this.#supportsSmallScreens.set(supportsSmallScreens);\n this.#setScreen();\n }\n\n #isTouchEnabled() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n #setScreen(): void {\n const bounds: DeviceScreenBounds = {\n width: window.innerWidth,\n height: window.innerHeight\n };\n let orientation: DeviceScreenOrientation = bounds.width >= bounds.height ? DeviceScreenOrientation.LANDSCAPE : DeviceScreenOrientation.PORTRAIT;\n\n if (this.isMobile && window.screen['orientation']) {\n const screenOrientation = window.screen['orientation'].type;\n if (screenOrientation === 'landscape-primary' || screenOrientation === 'landscape-secondary') {\n orientation = DeviceScreenOrientation.LANDSCAPE;\n } else if (screenOrientation === 'portrait-primary' || screenOrientation === 'portrait-secondary') {\n orientation = DeviceScreenOrientation.PORTRAIT;\n }\n }\n this.#screen = {\n size: this.#getScreenSize(bounds, orientation),\n orientation,\n width: bounds.width,\n height: bounds.height\n };\n this.#screenSource.next(this.#screen);\n this.smallScreenLayout.set(this.#supportsSmallScreens() && this.#screen.size === 's' && this.#screen.orientation === 'portrait');\n this.#setupDOM(this.#screen);\n // force change detection because resize will not be recognized by Angular in some cases\n // TODO: check: causes recursive ticks in some cases ...\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setTimeout(() => {}, 0);\n }\n\n #setupDOM(screen: DeviceScreen) {\n const body: HTMLBodyElement = document.querySelector('body') as HTMLBodyElement;\n body.setAttribute('data-screen-size', screen.size);\n body.setAttribute('data-screen-orientation', screen.orientation);\n if (this.isTouchEnabled) body.setAttribute('data-touch-enabled', 'true');\n else body.removeAttribute('data-touch-enabled');\n }\n\n #getScreenSize(bounds: DeviceScreenBounds, orientation: DeviceScreenOrientation): ScreenSize {\n if (this.#isBelow(this.#upperScreenBoundary.small, bounds)) {\n return 's';\n } else if (this.#isBelow(orientation === 'landscape' ? this.#upperScreenBoundary.mediumLandscape : this.#upperScreenBoundary.mediumPortrait, bounds)) {\n return 'm';\n } else if (this.#isBelow(this.#upperScreenBoundary.large, bounds)) {\n return 'l';\n } else {\n return 'xl';\n }\n }\n\n #isBelow(size: number, bounds: DeviceScreenBounds): boolean {\n const landscape = bounds.width < this.#upperScreenBoundary.large ? bounds.width >= bounds.height : false;\n return (landscape && bounds.height < size) || (!landscape && bounds.width < size);\n }\n\n #getDebounceTime() {\n // on mobile devices resize only happens when rotating the device or when\n // keyboard appears, so we dont't need to debounce\n return this.isMobile ? 0 : 500;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { TranslateService } from '@ngx-translate/core';\n\n/* Draft */\n@Injectable()\nexport class YmtMatPaginatorIntlService extends MatPaginatorIntl {\n #translate = inject(TranslateService);\n rangeLabelSeparator: string = this.#translate.instant('ymt.paginator.rangeLabelSeparator');\n \n override getRangeLabel = (\n page: number,\n pageSize: number,\n length: number\n ) => {\n if (length === 0 || pageSize === 0) {\n return `0 ${this.rangeLabelSeparator} ${length}`;\n }\n \n length = Math.max(length, 0);\n const startIndex = page * pageSize;\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex = startIndex < length ?\n Math.min(startIndex + pageSize, length) :\n startIndex + pageSize;\n return `${startIndex + 1} - ${endIndex} ${this.rangeLabelSeparator} ${length}`;\n };\n \n //=== Proposal =========================================================\n \n injectTranslateService(translate: TranslateService) {\n this.#translate = translate;\n \n this.#translate.onLangChange.subscribe(() => {\n this.translateLabels();\n });\n \n this.translateLabels();\n }\n \n translateLabels() {\n this.itemsPerPageLabel = this.#translate.instant('ymt.paginator.itemsPerPageLabel');\n this.nextPageLabel = this.#translate.instant('ymt.paginator.nextPageLabel');\n this.previousPageLabel = this.#translate.instant('ymt.paginator.previousPageLabel');\n this.firstPageLabel = this.#translate.instant('ymt.paginator.firstPageLabel');\n this.lastPageLabel = this.#translate.instant('ymt.paginator.lastPageLabel');\n this.rangeLabelSeparator = this.#translate.instant('ymt.paginator.rangeLabelSeparator');\n this.changes.next();\n }\n \n //=== Proposal END =====================================================\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_RIPPLE_GLOBAL_OPTIONS, RippleGlobalOptions } from '@angular/material/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldDefaultOptions } from '@angular/material/form-field';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MAT_TABS_CONFIG, MatTabsConfig } from '@angular/material/tabs';\nimport { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions } from '@angular/material/tooltip';\nimport { TranslateService } from '@ngx-translate/core';\nimport { YMT_DATE_FROMATS } from '../services';\nimport { YmtMatIconRegistryService } from '../services/ymt-mat-icon-registry.service';\nimport { YmtMatPaginatorIntlService } from '../services/ymt-mat-paginator-intl.service';\n\nexport const provideYmtMaterial = (): EnvironmentProviders => {\n const providers: Provider[] = [\n /**\n * Material Date Locale Default\n */\n { provide: MAT_DATE_LOCALE, useFactory: (translate: TranslateService) => translate.defaultLang, deps: [TranslateService] },\n { provide: MAT_DATE_FORMATS, useValue: YMT_DATE_FROMATS },\n\n /**\n * Material Datepicker Internationalization Service Override\n */\n /*{\n provide: MatDatepickerIntl,\n useClass: YmtDatepickerIntlService,\n deps: [TranslateService],\n },*/\n /*{\n provide: MatDatepickerIntl,\n deps: [[new Optional(), new SkipSelf(), MatDatepickerIntl]],\n useFactory: (parentIntl: MatDatepickerIntl)=> {\n return parentIntl || new YmtDatepickerIntlService();\n },\n },*/\n\n /**\n * Material Date Adapter\n */\n // provideYmtDateAdapter(),\n\n /**\n * Material Icon Registry Service Override\n */\n { provide: MatIconRegistry, useClass: YmtMatIconRegistryService },\n\n /**\n * Material Ripple Config\n */\n { provide: MAT_RIPPLE_GLOBAL_OPTIONS, useValue: { disabled: true } as RippleGlobalOptions },\n\n {\n provide: MAT_DIALOG_DEFAULT_OPTIONS,\n useValue: {\n ...new MatDialogConfig(),\n closeOnNavigation: false\n }\n },\n\n /**\n * Material Paginator Internationalization Service Override\n */\n {\n provide: MatPaginatorIntl,\n useFactory: (translate: TranslateService) => {\n const service = new YmtMatPaginatorIntlService();\n service.injectTranslateService(translate);\n return service;\n },\n deps: [TranslateService]\n },\n\n /**\n * Material Tooltip Config\n */\n {\n provide: MAT_TOOLTIP_DEFAULT_OPTIONS,\n useValue: {\n showDelay: 500,\n positionAtOrigin: true,\n disableTooltipInteractivity: true\n } as MatTooltipDefaultOptions\n },\n\n /**\n * Material Form Field Config\n */\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n appearance: 'outline',\n floatLabel: 'always',\n subscriptSizing: 'dynamic'\n } as MatFormFieldDefaultOptions\n },\n\n /**\n * Material Tab Config\n */\n {\n provide: MAT_TABS_CONFIG,\n useValue: {\n animationDuration: '0',\n stretchTabs: false,\n alignTabs: 'start'\n } as MatTabsConfig\n }\n ];\n return makeEnvironmentProviders(providers);\n};\n","export enum YMT_ICON_BUTTON_SIZE {\n small = 'small',\n medium = 'medium'\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n booleanAttribute,\n ComponentRef,\n createComponent,\n Directive,\n effect,\n ElementRef,\n EnvironmentInjector,\n inject,\n input\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { YMT_ICON_BUTTON_SIZE } from './ymt-icon-button.model';\n\n@Directive({\n selector: 'button[ymtIconButton],button[ymt-icon-button],a[ymtIconButton],a[ymt-icon-button]',\n standalone: true,\n host: {\n 'mat-icon-button': ''\n }\n})\nexport class YmtIconButtonDirective implements AfterViewInit {\n disabled = input(false, { transform: booleanAttribute });\n disableRipple = input(false, { transform: booleanAttribute });\n ariaDisabled = input(false, { transform: booleanAttribute, alias: 'aria-disabled' });\n disabledInteractive = input(false, { transform: booleanAttribute });\n size = input<'small' | 'medium' | YMT_ICON_BUTTON_SIZE>(YMT_ICON_BUTTON_SIZE.medium, { alias: 'icon-button-size' });\n\n #elRef = inject(ElementRef);\n #host = this.#elRef.nativeElement;\n #injector = inject(EnvironmentInjector);\n #appRef = inject(ApplicationRef);\n #MatIconButtonComponentRef: ComponentRef<MatIconButton> | null = null;\n #materialIconButtonInputs = [\n { name: 'disabled', signal: this.disabled },\n { name: 'disableRipple', signal: this.disableRipple },\n { name: 'aria-disabled', signal: this.ariaDisabled },\n { name: 'disabledInteractive', signal: this.disabledInteractive }\n ];\n\n constructor() {\n effect(() => this.#applySizeClass());\n effect(() => this.#setMaterialInputs());\n }\n\n ngAfterViewInit() {\n this.#MatIconButtonComponentRef = this.#createComponent();\n this.#setMaterialInputs();\n }\n\n #applySizeClass() {\n this.size() === YMT_ICON_BUTTON_SIZE.small ? this.#host.classList.add(`ymt-icon-button--size-s`) : this.#host.classList.remove(`ymt-icon-button--size-s`);\n this.size() === YMT_ICON_BUTTON_SIZE.medium ? this.#host.classList.add(`ymt-icon-button--size-m`) : this.#host.classList.remove(`ymt-icon-button--size-m`);\n }\n\n #setMaterialInputs() {\n this.#materialIconButtonInputs.forEach(({ name, signal }) => this.#MatIconButtonComponentRef?.setInput(name, signal()));\n }\n\n #createComponent() {\n const matIcon = this.#host.querySelector('mat-icon'); //todo support also upcoming yuv-icon\n const environmentInjector = this.#injector;\n const hostElement = this.#host;\n const componentRef = createComponent(MatIconButton, { hostElement, projectableNodes: [[matIcon]], environmentInjector });\n this.#appRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n return componentRef;\n }\n}\n","export enum YMT_BUTTON_SIZE {\n small = 'small',\n medium = 'medium'\n}\n","import {\n ApplicationRef,\n createComponent,\n Directive,\n ElementRef,\n EnvironmentInjector,\n input,\n OnInit,\n AfterViewInit,\n inject,\n effect,\n ComponentRef,\n booleanAttribute\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { YMT_BUTTON_SIZE } from './ymt-button.model';\n\ntype ButtonType = keyof typeof MatButtonAttributeEnum;\nenum MatButtonAttributeEnum {\n primary = 'mat-flat-button',\n secondary = 'mat-stroked-button',\n tertiary = 'mat-button'\n}\n\n@Directive({\n selector: 'button[ymtButton], a[ymtButton]',\n standalone: true\n})\nexport class YmtButtonDirective implements OnInit, AfterViewInit {\n ymtButton = input<ButtonType>('primary');\n disabled = input(false, { transform: booleanAttribute });\n ariaDisabled = input(false, { alias: 'aria-disabled', transform: booleanAttribute });\n disableRipple = input(false, { transform: booleanAttribute });\n disabledInteractive = input(false, { transform: booleanAttribute });\n size = input<'small' | 'medium' | YMT_BUTTON_SIZE>(YMT_BUTTON_SIZE.medium, { alias: 'button-size' });\n // Todo: Add input \"isBusy\" as \"busy inactive state\": not clickable and with mat-spinner in button\n\n #environmentInjector = inject(EnvironmentInjector);\n #applicationRef = inject(ApplicationRef);\n #hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n #matButtonComponentRef: ComponentRef<MatButton> | null = null;\n\n #iconPrefix: Element[] = [];\n #noneIconNodes: Node[] = [];\n #iconSuffix: Element[] = [];\n\n #matButtonAttribute = MatButtonAttributeEnum;\n\n constructor() {\n effect(() => {\n const disabled = this.disabled();\n const ariaDisabled = this.ariaDisabled();\n const disableRipple = this.disableRipple();\n const disabledInteractive = this.disabledInteractive();\n this.#updateInputs(disabled, ariaDisabled, disableRipple, disabledInteractive);\n });\n\n effect(() => {\n this.#applySizeClass();\n });\n }\n\n ngOnInit() {\n this.#iconPrefix = this.#getIconPrefixElements();\n this.#noneIconNodes = this.#getNoneIconNodes();\n this.#iconSuffix = this.#getIconSuffixElements();\n this.#matButtonComponentRef = this.#createMatButtonComponent();\n }\n\n ngAfterViewInit() {\n this.#updateInputs();\n }\n\n #updateInputs(\n disabled: boolean = this.disabled(),\n ariaDisabled: boolean = this.ariaDisabled(),\n disableRipple: boolean = this.disableRipple(),\n disabledInteractive: boolean = this.disabledInteractive()\n ) {\n this.#matButtonComponentRef?.setInput('disabled', disabled);\n this.#matButtonComponentRef?.setInput('aria-disabled', ariaDisabled);\n this.#matButtonComponentRef?.setInput('disableRipple', disableRipple);\n this.#matButtonComponentRef?.setInput('disabledInteractive', disabledInteractive);\n }\n\n #createMatButtonComponent(\n hostElement: HTMLElement = this.#hostElement,\n environmentInjector: EnvironmentInjector = this.#environmentInjector,\n iconPrefix: Element[] = this.#iconPrefix,\n noneIconNodes: Node[] = this.#noneIconNodes,\n iconSuffix: Element[] = this.#iconSuffix\n ) {\n this.#setInitialAttributesToHost();\n const componentRef = createComponent(MatButton, {\n environmentInjector,\n hostElement,\n projectableNodes: [[...iconPrefix], [...noneIconNodes], [...iconSuffix]]\n });\n this.#applicationRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n return componentRef;\n }\n\n #setInitialAttributesToHost() {\n this.#hostElement.setAttribute(this.#matButtonAttribute[this.ymtButton()], '');\n }\n\n #getIconPrefixElements() {\n return Array.from(this.#hostElement.querySelectorAll('mat-icon:not([iconPositionEnd])'));\n }\n\n #getIconSuffixElements() {\n return Array.from(this.#hostElement.querySelectorAll('mat-icon[iconPositionEnd]'));\n }\n\n #getNoneIconNodes() {\n const iter = document.createNodeIterator(this.#hostElement, NodeFilter.SHOW_ALL, (node) => {\n return node.nodeName.toLowerCase() !== 'mat-icon' && node.parentElement === this.#hostElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n });\n let currentNode: Node | null;\n const filteredNodes: Node[] = [];\n while ((currentNode = iter.nextNode())) {\n filteredNodes.push(currentNode);\n }\n return filteredNodes;\n }\n\n #applySizeClass() {\n this.size() === YMT_BUTTON_SIZE.small ? this.#hostElement.classList.add(`ymt-button--size-s`) : this.#hostElement.classList.remove(`ymt-button--size-s`);\n this.size() === YMT_BUTTON_SIZE.medium ? this.#hostElement.classList.add(`ymt-button--size-m`) : this.#hostElement.classList.remove(`ymt-button--size-m`);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n HostBinding,\n HostListener,\n inject,\n Input,\n input,\n OnDestroy, Renderer2,\n signal,\n untracked,\n viewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatInput } from '@angular/material/input';\nimport {\n AbstractControlDirective,\n ControlValueAccessor, FormControlStatus, FormGroup, FormsModule,\n NgControl,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { MatFormField, MatFormFieldControl } from '@angular/material/form-field';\nimport { TranslateService } from '@ngx-translate/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerIntl,\n MatDateRangeInput,\n MatDateRangePicker,\n MatEndDate,\n MatStartDate\n} from '@angular/material/datepicker';\nimport { MatTimepicker, MatTimepickerInput } from '@angular/material/timepicker';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n DateAdapter,\n MAT_DATE_FORMATS,\n MAT_DATE_LOCALE,\n MAT_NATIVE_DATE_FORMATS,\n MatDateFormats,\n NativeDateModule\n} from '@angular/material/core';\nimport { YmtDatepickerIntlService } from '../../services/ymt-datepicker-intl.service';\nimport { provideYmtDateAdapter, YMT_DATE_FROMATS } from '../../services';\n\ntype DatepickerValue = DatetimeValue;\ntype DatetimeValue = Date | string | null;\ntype MultiDateValue = Set<Date> | null; // not implemented yet!\ntype DateRangeValue = IRangeValue<DatetimeValue> | null; // not implemented yet!\nexport type DatepickerMode = keyof typeof EnumDatepickerMode;\nenum EnumDatepickerMode {\n DATE = 'DATE',\n // MULTI_DATE = 'MULTI_DATE', // not implemented yet!\n DATE_RANGE = 'DATE_RANGE',\n TIME = 'TIME',\n}\ninterface IRangeValue<T = unknown> {\n start: T;\n end: T;\n}\nexport interface DateRangePlaceholder { startDate: string; endDate: string; }\n\n@Component({\n selector: 'ymt-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.scss',\n standalone: true,\n imports: [CommonModule, MatInput, FormsModule, ReactiveFormsModule, MatDatepicker, MatDatepickerInput, MatTimepicker, MatTimepickerInput, MatDateRangeInput, MatDateRangePicker, MatEndDate, MatStartDate, NativeDateModule],\n providers: [\n { provide: MatFormFieldControl, useExisting: DatepickerComponent },\n /*{\n provide: MAT_DATE_FORMATS,\n useValue: {\n ...MAT_NATIVE_DATE_FORMATS,\n display: {\n ...MAT_NATIVE_DATE_FORMATS.display,\n dateInput: {\n ...MAT_NATIVE_DATE_FORMATS.display.dateInput,\n day: 'numeric' as Intl.DateTimeFormatOptions['day'] // has effect\n }\n }\n } as MatDateFormats,\n },*/\n { provide: MatDatepickerIntl, useClass: YmtDatepickerIntlService },\n provideYmtDateAdapter()\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerComponent implements MatFormFieldControl<DatepickerValue>, ControlValueAccessor, AfterViewInit, OnDestroy {\n // Todo: Refactoring: Write BaseMatFormFieldControlComponent class for further custom controls in @yuuvis/material\n // Done: Internationalization\n // Done: Implement Datepicker features and options:\n // // [X] max\n // // [X] min\n // Done: MatFormFieldControl implementation:\n // // [x]handling errorState: https://material.angular.dev/components/input/overview#changing-when-error-messages-are-shown\n // // [x]handling focus\n // // [x]handling setDescribedByIds(ids: string[]): void\n // // [x] set aria-labeledby\n // // [x] set disabled\n // Todo: Refactoring: Better solution for handling value changes from input-element to model (kill ngModelOptions on inputs)\n // Todo: Better solution for DATE_RANGE-mode: content projection for input[matStartDate/matEndDate]\n // Done: Check aria-describedby logic of MatFormField to implement the correct setting\n // Done: Trigger\"stateChanges\" in effect function\n // Done: set errorState when input value is invalid\n // Done: Check how to destroy the component and complete stateChanges Observable\n // Done: Check how to get the ngControl instance of this component (optionally set)\n \n #translate = inject(TranslateService);\n #dateAdapter = inject(DateAdapter);\n #locale = signal(inject<unknown>(MAT_DATE_LOCALE));\n #injectNgControl = (ngC = inject(NgControl, { self: true, optional: true })) => ngC ? (ngC.valueAccessor = this) && ngC : null;\n #destroyRef = inject(DestroyRef);\n #formField = inject(MatFormField, {optional: true});\n \n // implemented as part of MatFormFieldControl interface\n ngControl: NgControl | AbstractControlDirective | null = this.#injectNgControl();\n stateChanges = new Subject<void>();\n \n @HostListener('focusin') onFocusIn() {\n this.focused = true;\n }\n @HostListener('focusout') onFocusout() {\n this.focused = false;\n this.propagateTouched();\n }\n \n #value = signal<DatepickerValue>(null);\n @Input()\n set value(v: DatepickerValue) {\n let _value = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n const _previousValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(this.ngControl?.value));\n if (_value && _previousValue) {\n if (this.mode === EnumDatepickerMode.TIME) {\n _value = new Date(_previousValue.setHours(_value.getHours(), _value.getMinutes()));\n } else if (this.mode === EnumDatepickerMode.DATE) {\n _value = new Date(_value.setHours(_previousValue.getHours(), _previousValue.getMinutes()));\n }\n } else {\n _value = v;\n }\n this.#value.set(_value);\n this.#empty.set(!_value);\n this.propagateChange(this.value);\n }\n get value(): DatepickerValue { return this.#value(); }\n \n #disabled = signal<boolean>(false);\n @Input()\n set disabled(v: BooleanInput) {\n this.#disabled.set(coerceBooleanProperty(v));\n this.timepickerInput()?.setDisabledState(this.#disabled());\n }\n get disabled(): boolean { return this.#disabled(); }\n \n #id = signal<string>('');\n @Input()\n set id(v: string) { this.#id.set(v); }\n get id(): string { return this.#id(); }\n \n #placeholder = signal<string>('');\n @Input()\n set placeholder(v: string) { this.#placeholder.set(v); }\n get placeholder(): string { return this.#placeholder(); }\n \n #required = signal<boolean>(false);\n @Input()\n set required(v: BooleanInput) { this.#required.set(coerceBooleanProperty(v)); }\n get required(): boolean { return this.#required(); }\n \n #userAriaDescribedBy = signal<string>('');\n @Input()\n set userAriaDescribedBy(v: string) { this.#userAriaDescribedBy.set(v); }\n get userAriaDescribedBy(): string { return this.#userAriaDescribedBy(); }\n \n #empty = signal<boolean>(false);\n set empty(v: boolean) { this.#empty.set(v); }\n get empty() { return this.#empty(); }\n \n #errorState = signal<boolean>(false);\n set errorState(v: boolean) { this.#errorState.set(v); }\n get errorState() { return this.#errorState(); }\n \n #focused = signal<boolean>(false);\n set focused(v: boolean) { this.#focused.set(v); }\n get focused() { return this.#focused(); }\n \n // implemented as part of MatFormFieldControl interface\n @HostBinding('class.floating')\n get shouldLabelFloat(): boolean { return this.focused || !this.empty; }\n readonly autofilled?: boolean;\n readonly controlType: string = 'datepicker';\n readonly disableAutomaticLabeling: boolean = false;\n \n protected readonly datepickerMode = EnumDatepickerMode;\n protected readonly datepicker = viewChild('datepicker', { read: MatDatepicker<never> });\n protected readonly rangepicker = viewChild<MatDateRangePicker<never>>('rangepicker');\n protected readonly timepicker = viewChild('timepicker', { read: MatTimepicker<never> });\n protected readonly datepickerInput = viewChild<MatFormFieldControl<never>>('datepickerInput');\n protected readonly timepickerInput = viewChild<MatTimepickerInput<never>>('timepickerInput');\n \n #mode = signal<DatepickerMode>(EnumDatepickerMode.DATE);\n @Input()\n set mode(v: DatepickerMode) { this.#mode.set(v); }\n get mode(): DatepickerMode { return this.#mode(); }\n \n #min = signal<DatepickerValue>(null);\n @Input()\n set min(v: DatepickerValue) {\n const validValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n \n if (!this.#dateAdapter.sameDate(validValue, this.#min())) {\n this.#min.set(validValue);\n }\n }\n get min() { return this.#min(); }\n \n #max = signal<DatepickerValue>(null);\n @Input()\n set max(v: DatepickerValue) {\n const validValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n \n if (!this.#dateAdapter.sameDate(validValue, this.#max())) {\n this.#max.set(validValue);\n }\n }\n get max() { return this.#max(); }\n \n #rangePlaceholder = signal<DateRangePlaceholder>({startDate: 'Start Date', endDate: 'End Date'});\n @Input()\n set rangePlaceholder(v: DateRangePlaceholder) { this.#rangePlaceholder.set(v); }\n get rangePlaceholder(): DateRangePlaceholder { return this.#rangePlaceholder(); }\n \n rangeValue = { start: '', end: '' };\n \n startDateFormControlName = input<string>('');\n endDateFormControlName = input<string>('');\n formGroup = input<FormGroup>();\n \n constructor() {\n // triggers state changes for the MatFormFieldControl\n effect(() => {\n this.#value();\n this.#placeholder();\n this.#rangePlaceholder(); // Todo: Check if it needs to trigger \"stateChanges\"!\n this.#disabled();\n this.#id();\n this.#focused();\n this.#empty();\n this.#required();\n this.#errorState();\n this.#locale();\n this.#mode();\n this.#min();\n this.#max();\n untracked(() => this.stateChanges.next());\n });\n \n // handle language change\n this.#translate.onLangChange.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((event) => {\n this.#locale.set(event.lang);\n this.#dateAdapter.setLocale(this.#locale());\n });\n // effect(() => {\n // this.#value();\n // untracked(() => console.log('DatepickerComponent.value: ', this.value));\n // });\n }\n \n // implemented as part of ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange: ((_: any) => void) = () => {};\n // implemented as part of ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateTouched: (() => void) = () => {};\n \n // implemented as part of ControlValueAccessor interface\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n \n // implemented as part of ControlValueAccessor interface\n registerOnTouched(fn: any): void {\n this.propagateTouched = fn;\n }\n \n // implemented as part of ControlValueAccessor interface\n writeValue(date: DatepickerValue): void {\n this.value = date;\n }\n \n // implemented as part of ControlValueAccessor interface\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n \n // implemented as part of MatFormFieldControl interface\n onContainerClick(event: MouseEvent): void {\n const focusableInput = this.datepickerInput();\n if (focusableInput && !this.focused && !this.disabled) {\n // sets focus to MatFormFieldControls\n focusableInput.onContainerClick(event);\n this.focused = true;\n }\n }\n \n // implemented as part of MatFormFieldControl interface\n setDescribedByIds(ids: string[]): void {\n this.datepickerInput()?.setDescribedByIds(ids);\n }\n \n ngAfterViewInit(): void {\n const _datepickerInput = this.datepickerInput();\n const _formField = this.#formField;\n \n if (_datepickerInput) {\n // set MatFormFieldControl.id for auto labeling within a MatFormField\n this.id = _datepickerInput.id || this.id;\n // track datepicker input state changes as they are MatFormFieldControl inputs\n _datepickerInput.stateChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n // set errorState\n this.errorState = _datepickerInput.errorState;\n // set disabled state\n this.disabled = _datepickerInput.disabled;\n });\n }\n \n // set the input's aria-describedby attribute to the parent MatFormField._hintLabelIds (=\"label-1 label-2 ...\")\n if (_formField) {\n this.setDescribedByIds([..._formField._hintLabelId.split(' ')]);\n }\n \n // set errorState for Range-Mode\n this.formGroup()?.statusChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((v: FormControlStatus) => {this.errorState = (v === 'INVALID');});\n \n this.ngControl?.valueChanges?.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((value) => {\n // get the previous value of the associated formFieldControl\n if (!this.value && value) this.value = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(value));\n });\n }\n \n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n \n /* Custom Datepicker Functions */\n \n open(): void {\n this.datepicker()?.open();\n this.rangepicker()?.open();\n this.timepicker()?.open();\n }\n}\n","@switch (mode) {\n @case (datepickerMode.DATE) {\n <input\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled\"\n matInput\n [matDatepicker]=\"datepicker\"\n [min]=\"min\"\n [max]=\"max\"\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n #datepickerInput=\"matInput\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n }\n @case (datepickerMode.DATE_RANGE) {\n @let formGroup = this.formGroup();\n @let startDate = this.startDateFormControlName();\n @let endDate = this.endDateFormControlName();\n @if (formGroup && startDate && endDate) {\n <mat-date-range-input\n [rangePicker]=\"rangepicker\"\n [min]=\"min\"\n [max]=\"max\"\n [formGroup]=\"formGroup\"\n #datepickerInput=\"matDateRangeInput\"\n >\n <input matStartDate [placeholder]=\"rangePlaceholder.startDate\" [formControlName]=\"startDate\"/>\n <input matEndDate [placeholder]=\"rangePlaceholder.endDate\" [formControlName]=\"endDate\"/>\n </mat-date-range-input>\n <mat-date-range-picker #rangepicker></mat-date-range-picker>\n } @else {\n <mat-date-range-input\n [rangePicker]=\"rangepicker\"\n [min]=\"min\"\n [max]=\"max\"\n #datepickerInput=\"matDateRangeInput\"\n >\n <input matStartDate [placeholder]=\"rangePlaceholder.startDate\" (dateChange)=\"rangeValue.start = $event.value\"/>\n <input matEndDate [placeholder]=\"rangePlaceholder.endDate\" (dateChange)=\"rangeValue.end = $event.value\"/>\n </mat-date-range-input>\n <mat-date-range-picker #rangepicker></mat-date-range-picker>\n }\n }\n @case (datepickerMode.TIME) {\n <input\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled\"\n matInput\n [matTimepicker]=\"timepicker\"\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n #datepickerInput=\"matInput\"\n #timepickerInput=\"matTimepickerInput\"\n >\n <mat-timepicker #timepicker/>\n }\n @default {\n <input\n type=\"datetime-locale\"\n [placeholder]=\"placeholder\"\n matInput\n [(ngModel)]=\"value\"\n #datepickerInput=\"matInput\"\n />\n }\n}\n\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, Input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { MatDatepickerIntl } from '@angular/material/datepicker';\nimport { DatepickerComponent } from '../datepicker';\nimport { YmtDatepickerIntlService } from '../../services';\nimport { YmtIconButtonDirective } from '../../directives';\nimport { MatIcon } from '@angular/material/icon';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ymt-datepicker-toggle',\n template: `\n <button type=\"button\" ymtIconButton [attr.aria-label]=\"ariaLabel\" [aria-disabled]=\"disabled\" [disabled]=\"disabled\">\n <ng-content select=\"mat-icon\"></ng-content>\n </button>\n `,\n imports: [YmtIconButtonDirective],\n providers: [{ provide: MatDatepickerIntl, useClass: YmtDatepickerIntlService }],\n host: {\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)'\n },\n exportAs: 'matDatepickerToggle',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerToggleComponent implements OnInit, OnDestroy {\n #intl = inject(MatDatepickerIntl);\n #destroyRef = inject(DestroyRef);\n\n #datepicker = signal<DatepickerComponent | null>(null);\n @Input({ alias: 'for', required: true })\n set datepicker(v: DatepickerComponent | null) {\n this.#datepicker.set(v);\n }\n get datepicker() {\n return this.#datepicker();\n }\n\n #disabled = signal<boolean>(false);\n @Input()\n set disabled(v: BooleanInput) {\n this.#disabled.set(coerceBooleanProperty(v));\n }\n get disabled(): boolean {\n return this.#disabled();\n }\n\n #ariaLabel = signal(this.#intl.openCalendarLabel);\n @Input()\n set ariaLabel(v: string) {\n this.#ariaLabel.set(v);\n }\n get ariaLabel() {\n return this.#ariaLabel();\n }\n\n stateChanges = new Subject<void>();\n\n constructor() {\n effect(() => {\n this.#datepicker();\n this.#disabled();\n this.#ariaLabel();\n this.stateChanges.next();\n });\n }\n\n _open(event: Event): void {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n ngOnInit(): void {\n const datepicker = this.datepicker;\n if (datepicker) {\n datepicker.stateChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n this.ariaLabel = this.#intl.openCalendarLabel;\n if (this.disabled !== datepicker.disabled) {\n this.disabled = datepicker.disabled;\n }\n });\n } else {\n throw new Error(`DatepickerComponent is missing on DatepickerToggleComponent's \"for\"-attribute!`);\n }\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
package/package.json
CHANGED