@yuuvis/material 3.1.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/yuuvis-material-badge.mjs +3 -3
- package/fesm2022/yuuvis-material-badge.mjs.map +1 -1
- package/fesm2022/yuuvis-material-layout.mjs +16 -16
- package/fesm2022/yuuvis-material-layout.mjs.map +1 -1
- package/fesm2022/yuuvis-material-panes.mjs +25 -25
- package/fesm2022/yuuvis-material-panes.mjs.map +1 -1
- package/fesm2022/yuuvis-material.mjs +43 -36
- package/fesm2022/yuuvis-material.mjs.map +1 -1
- package/package.json +1 -1
- package/types/yuuvis-material-badge.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-material-panes.mjs","sources":["../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-aside/pane-aside.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-aside/pane-aside.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-body/pane-body.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-body/pane-body.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-header/pane-header.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-header/pane-header.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/fullscreen.directive.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-top-bar/pane-top-bar.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-top-bar/pane-top-bar.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-footer/pane-footer.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-footer/pane-footer.component.html","../../../../../libs/yuuvis/material/panes/src/lib/panes.module.ts","../../../../../libs/yuuvis/material/panes/src/yuuvis-material-panes.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n\n@Component({\n selector: 'ymt-pane-aside',\n imports: [],\n templateUrl: './pane-aside.component.html',\n styleUrl: './pane-aside.component.scss'\n})\nexport class YmtPaneAsideComponent {}\n","<p>pane-aside works!</p>\n","import { Component } from '@angular/core';\n\n\n@Component({\n selector: 'ymt-pane-body',\n imports: [],\n templateUrl: './pane-body.component.html',\n styleUrl: './pane-body.component.scss'\n})\nexport class YmtPaneBodyComponent {}\n","<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n/**\n * Header component for `ymt-pane`. Renders a two-row layout:\n *\n * - **Top row:** icon (optional), title, and actions area\n * - **Bottom row:** subtitle and badges area\n *\n * ## Title & Subtitle\n *\n * Can be set as plain strings via the `title` and `subtitle` inputs,\n * or as rich content via the `#yuvPaneHeaderTitle` and `#yuvPaneHeaderSubtitle`\n * content child templates. When a template is provided it takes precedence\n * over the corresponding string input.\n *\n * ## Icon\n *\n * Set the `icon` input to a Material Icon ligature to display an icon\n * to the left of the title row.\n *\n * ## Actions & Badges\n *\n * Pass a `TemplateRef` to the `actions` input to render action buttons\n * aligned to the right of the title row. Similarly, pass a `TemplateRef`\n * to the `badges` input to render badges aligned to the right of the\n * subtitle row.\n *\n * @example\n * ```html\n * <!-- Simple usage with string inputs -->\n * <ymt-pane-header\n * [title]=\"'Documents'\"\n * [subtitle]=\"'12 items'\"\n * [icon]=\"'folder'\"\n * [actions]=\"headerActions\"\n * [badges]=\"headerBadges\">\n * </ymt-pane-header>\n *\n * <ng-template #headerActions>\n * <button ymt-icon-button icon=\"add\"></button>\n * </ng-template>\n *\n * <ng-template #headerBadges>\n * <ymt-badge severity=\"info\">active</ymt-badge>\n * </ng-template>\n * ```\n *\n * @example\n * ```html\n * <!-- Rich content via template projection -->\n * <ymt-pane-header [icon]=\"'lock'\">\n * <ng-template #yuvPaneHeaderTitle>Custom <strong>title</strong></ng-template>\n * <ng-template #yuvPaneHeaderSubtitle><ymt-badge severity=\"warning\">locked</ymt-badge></ng-template>\n * </ymt-pane-header>\n * ```\n */\n@Component({\n selector: 'ymt-pane-header',\n imports: [CommonModule, MatIconModule],\n templateUrl: './pane-header.component.html',\n styleUrl: './pane-header.component.scss'\n})\nexport class YmtPaneHeaderComponent {\n /** Plain-text title displayed in the top row. Ignored when a `#yuvPaneHeaderTitle` template is projected. */\n title = input<string>();\n /** Material Icon ligature rendered to the left of the title row (e.g. `'folder'`, `'lock'`). */\n icon = input<string>();\n /** Plain-text subtitle displayed in the bottom row. Ignored when a `#yuvPaneHeaderSubtitle` template is projected. */\n subtitle = input<string>();\n /** Template rendered in the actions area, aligned to the right of the title row. */\n actions = input<TemplateRef<unknown>>();\n /** Template rendered in the badges area, aligned to the right of the subtitle row. */\n badges = input<TemplateRef<unknown>>();\n\n /** Content child template for rich title content. Takes precedence over the `title` input. */\n titleSlot = contentChild<TemplateRef<unknown>>('yuvPaneHeaderTitle');\n /** Content child template for rich subtitle content. Takes precedence over the `subtitle` input. */\n subtitleSlot = contentChild<TemplateRef<unknown>>('yuvPaneHeaderSubtitle');\n}\n","<header>\n @if (icon()) {\n <div class=\"icon\" aria-hidden=\"true\">\n <mat-icon class=\"pane-icon\">{{ icon() }}</mat-icon>\n </div>\n }\n <!-- top row (title and actions) -->\n <div class=\"row title-row\">\n <h2>\n @let ts = titleSlot();\n @if (ts) {\n <ng-container *ngTemplateOutlet=\"ts\" />\n } @else {\n {{ title() }}\n }\n </h2>\n @let a = actions();\n @if (a) {\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"a\" />\n </div>\n }\n </div>\n\n <!-- bottom row (subtitle and badges) -->\n <div class=\"row subtitle-row\">\n <small>\n @let ss = subtitleSlot();\n @if (ss) {\n <ng-container *ngTemplateOutlet=\"ss\" />\n } @else {\n {{ subtitle() }}\n }\n </small>\n @let b = badges();\n @if (b) {\n <div class=\"badges\">\n <ng-container *ngTemplateOutlet=\"b\" />\n </div>\n }\n </div>\n</header>\n","import {\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n Renderer2,\n signal\n} from '@angular/core';\n\n/**\n * Directive that enables any host element to toggle into a fullscreen overlay\n * covering the entire viewport. Background content is made inert and body scroll\n * is locked while fullscreen is active.\n *\n * @example\n * ```html\n * <div yuvFullscreen #fs=\"yuvFullscreen\">\n * <button (click)=\"fs.toggle()\">Toggle</button>\n * <p>Content</p>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuvFullscreen]',\n exportAs: 'yuvFullscreen',\n host: {\n '[class.yuv-fullscreen-active]': 'active()',\n '(document:keydown.escape)': 'onEscape()'\n }\n})\nexport class FullscreenDirective implements OnDestroy {\n #elRef = inject(ElementRef);\n #renderer = inject(Renderer2);\n\n /** Whether the fullscreen toggle is disabled. */\n disabled = input<boolean>(false);\n\n /** Emitted when fullscreen mode is entered. */\n fullscreenEnter = output<void>();\n /** Emitted when fullscreen mode is exited. */\n fullscreenExit = output<void>();\n\n #isActive = signal(false);\n\n /** Read-only signal indicating whether fullscreen is currently active. */\n active = computed(() => this.#isActive());\n\n #originalStyles: Record<string, string> = {};\n #inertElements: HTMLElement[] = [];\n #originalBodyOverflow = '';\n\n /** Toggle fullscreen on/off. */\n toggle(): void {\n if (this.disabled()) return;\n if (this.#isActive()) {\n this.exit();\n } else {\n this.enter();\n }\n }\n\n /** Enter fullscreen mode. No-op if already active or disabled. */\n enter(): void {\n if (this.#isActive() || this.disabled()) return;\n this.#saveOriginalStyles();\n this.#applyFullscreenStyles();\n this.#makeBackgroundInert();\n this.#lockBodyScroll();\n this.#isActive.set(true);\n this.fullscreenEnter.emit();\n }\n\n /** Exit fullscreen mode. No-op if not active. */\n exit(): void {\n if (!this.#isActive()) return;\n this.#restoreOriginalStyles();\n this.#restoreBackground();\n this.#unlockBodyScroll();\n this.#isActive.set(false);\n this.fullscreenExit.emit();\n }\n\n /** @internal */\n onEscape(): void {\n if (this.#isActive()) {\n this.exit();\n }\n }\n\n #saveOriginalStyles(): void {\n const style = this.#elRef.nativeElement.style;\n this.#originalStyles = {\n position: style.position,\n inset: style.inset,\n zIndex: style.zIndex,\n width: style.width,\n height: style.height,\n overflow: style.overflow,\n backgroundColor: style.backgroundColor\n };\n }\n\n #applyFullscreenStyles(): void {\n const el = this.#elRef.nativeElement;\n this.#renderer.setStyle(el, 'position', 'fixed');\n this.#renderer.setStyle(el, 'inset', '0');\n this.#renderer.setStyle(el, 'z-index', '1000');\n this.#renderer.setStyle(el, 'width', '100vw');\n this.#renderer.setStyle(el, 'height', '100vh');\n this.#renderer.setStyle(el, 'overflow', 'auto');\n this.#renderer.setStyle(el, 'background-color', 'var(--ymt-surface, #fff)');\n }\n\n #restoreOriginalStyles(): void {\n const el = this.#elRef.nativeElement;\n for (const [prop, value] of Object.entries(this.#originalStyles)) {\n if (value) {\n this.#renderer.setStyle(el, prop, value);\n } else {\n this.#renderer.removeStyle(el, prop);\n }\n }\n this.#originalStyles = {};\n }\n\n #makeBackgroundInert(): void {\n this.#inertElements = [];\n let current: HTMLElement = this.#elRef.nativeElement;\n\n while (current.parentElement) {\n const parent = current.parentElement;\n for (let i = 0; i < parent.children.length; i++) {\n const sibling = parent.children[i] as HTMLElement;\n if (sibling !== current && !sibling.hasAttribute('inert')) {\n this.#renderer.setAttribute(sibling, 'inert', '');\n this.#inertElements.push(sibling);\n }\n }\n if (parent === document.body) break;\n current = parent;\n }\n }\n\n #restoreBackground(): void {\n for (const el of this.#inertElements) {\n this.#renderer.removeAttribute(el, 'inert');\n }\n this.#inertElements = [];\n }\n\n #lockBodyScroll(): void {\n this.#originalBodyOverflow = document.body.style.overflow;\n this.#renderer.setStyle(document.body, 'overflow', 'hidden');\n }\n\n #unlockBodyScroll(): void {\n if (this.#originalBodyOverflow) {\n this.#renderer.setStyle(document.body, 'overflow', this.#originalBodyOverflow);\n } else {\n this.#renderer.removeStyle(document.body, 'overflow');\n }\n this.#originalBodyOverflow = '';\n }\n\n ngOnDestroy(): void {\n if (this.#isActive()) {\n this.exit();\n }\n }\n}\n","import { Component, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ymt-pane-top-bar',\n imports: [CommonModule],\n templateUrl: './pane-top-bar.component.html',\n styleUrl: './pane-top-bar.component.scss',\n})\nexport class YmtPaneTopBarComponent {\n /**\n * TemplateRef for actions area in the top bar.\n */\n actions = input<TemplateRef<any>>();\n}\n","@let ta = actions();\n@if (ta) {\n <div class=\"top-bar\">\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"ta\"></ng-container>\n </div>\n </div>\n}\n","\nimport { ChangeDetectionStrategy, Component, inject, input, TemplateRef } from '@angular/core';\nimport { FullscreenDirective } from './fullscreen.directive';\nimport { YmtPaneTopBarComponent } from './pane-top-bar/pane-top-bar.component';\n\n/**\n * A pane is a container component that unifies the appearance and behavior of\n * content areas in an app. It renders as a bordered, rounded card with a grid\n * layout for its sub-components.\n *\n * ## Structure\n *\n * A pane uses a vertical grid layout with four areas. All sub-components are optional:\n *\n * | Area | Component | Description |\n * |----------|--------------------|----------------------------------------------------|\n * | top-bar | *(internal)* | Rendered automatically when `topBarActions` is set. |\n * | header | `ymt-pane-header` | Title, subtitle, icon, and custom header actions. |\n * | main | `ymt-pane-body` | Scrollable main content area. |\n * | footer | `ymt-pane-footer` | Right-aligned action bar with a top border. |\n *\n * ```html\n * <ymt-pane>\n * <ymt-pane-header title=\"Users\" subtitle=\"3 selected\" [actions]=\"headerActions\" />\n * <ymt-pane-body>Main content</ymt-pane-body>\n * <ymt-pane-footer>\n * <button ymt-button>Save</button>\n * </ymt-pane-footer>\n * </ymt-pane>\n * ```\n *\n * ### `ymt-pane-header`\n *\n * Accepts `title`, `subtitle`, and `icon` as string inputs. For richer content,\n * use the `#yuvPaneHeaderTitle` and `#yuvPaneHeaderSubtitle` template refs:\n *\n * ```html\n * <ymt-pane-header>\n * <ng-template #yuvPaneHeaderTitle><h2>Custom title</h2></ng-template>\n * <ng-template #yuvPaneHeaderSubtitle><ymt-badge severity=\"warning\">locked</ymt-badge></ng-template>\n * </ymt-pane-header>\n * ```\n *\n * Header actions can be projected via the `[actions]` input (TemplateRef).\n *\n * ### Top bar actions\n *\n * Pass a `TemplateRef` to the `[topBarActions]` input to render icon buttons\n * in a slim top bar above the header:\n *\n * ```html\n * <ymt-pane [topBarActions]=\"actions\">\n * <ymt-pane-body>Content</ymt-pane-body>\n * </ymt-pane>\n *\n * <ng-template #actions>\n * <button ymt-icon-button icon-button-size=\"small\"><mat-icon>settings</mat-icon></button>\n * </ng-template>\n * ```\n *\n * ## Fullscreen\n *\n * Every pane supports fullscreen mode. The pane expands to fill the viewport,\n * background content becomes inert, and pressing <kbd>Escape</kbd> exits.\n *\n * ```html\n * <ymt-pane #pane>\n * <ymt-pane-body>\n * <button (click)=\"pane.toggleFullscreen()\">Toggle fullscreen</button>\n * </ymt-pane-body>\n * </ymt-pane>\n * ```\n *\n * Programmatic API: `enterFullscreen()`, `exitFullscreen()`, `toggleFullscreen()`.\n * Read the current state via the `fullscreenActive` signal.\n * Listen to transitions via the `(fullscreenEnter)` and `(fullscreenExit)` outputs.\n *\n * ## Busy state\n *\n * Set `[busy]=\"true\"` to replace the static border with a rotating\n * conic-gradient border that signals a loading state:\n *\n * ```html\n * <ymt-pane [busy]=\"isLoading()\">\n * <ymt-pane-body>Content</ymt-pane-body>\n * </ymt-pane>\n * ```\n *\n * ## Enter animation\n *\n * Panes fade in on creation (0.15 s ease-out by default). Customize or delay\n * the animation via CSS variables, or disable it entirely with the\n * `[noAnimation]` input:\n *\n * ```css\n * ymt-pane {\n * --enter-animation-duration: 0.3s;\n * --enter-animation-delay: 0.1s;\n * }\n * ```\n *\n * ```html\n * <ymt-pane [noAnimation]=\"true\"> ... </ymt-pane>\n * ```\n *\n * ## Plain mode\n *\n * Set `[plain]=\"true\"` to strip the border, border-radius, and background\n * while keeping the inner grid structure. Useful when embedding a pane inside\n * another styled container.\n *\n * ## CSS custom properties\n *\n * | Property | Default | Description |\n * |-------------------------------|-------------------------------|--------------------------------------|\n * | `--header-area-padding` | `var(--ymt-spacing-xl)` | Padding of the header area. |\n * | `--header-area-background` | `transparent` | Background of the header area. |\n * | `--header-area-border-color` | `transparent` | Bottom border of the header area. |\n * | `--main-area-padding` | `0` | Padding of the body area. |\n * | `--pane-background-color` | `var(--ymt-surface)` | Background of the pane. |\n * | `--busy-border-width` | `2px` | Width of the busy indicator border. |\n * | `--busy-border-color` | `var(--ymt-primary)` | Color of the busy indicator border. |\n * | `--enter-animation-duration` | `0.15s` | Duration of the fade-in animation. |\n * | `--enter-animation-delay` | `0s` | Delay before the fade-in starts. |\n */\n@Component({\n selector: 'ymt-pane',\n imports: [YmtPaneTopBarComponent],\n templateUrl: './pane.component.html',\n styleUrl: './pane.component.scss',\n hostDirectives: [\n {\n directive: FullscreenDirective,\n outputs: ['fullscreenEnter', 'fullscreenExit']\n }\n ],\n host: {\n '[class.plain]': 'plain()',\n '[class.busy]': 'busy()',\n '[class.no-animation]': 'noAnimation()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YmtPaneComponent {\n /**\n * This static block runs once when the class is first loaded (not per instance).\n * It registers a custom CSS property (--busy-angle) with the browser's CSS engine via\n * CSS.registerProperty().\n * Why it's needed: Normally, CSS custom properties (e.g. --busy-angle) are just\n * strings — the browser can't interpolate them in animations. By registering the\n * property with syntax: '<angle>', the browser knows it's an angle value and can\n * smoothly animate it from 0deg to 360deg in the keyframe.\n * Why it's in JS instead of CSS: The standard CSS way is @property --busy-angle { ... }\n * (which was in the original SCSS). But Angular's emulated view encapsulation doesn't\n * pass @property at-rules through to the document correctly, so the property never got\n * registered and the animation was static. CSS.registerProperty() is the JavaScript\n * equivalent and works globally regardless of Angular's style scoping.\n * The try/catch: CSS.registerProperty() throws if the same property name is registered\n * twice. Since this component could be bundled in multiple chunks or the module re-evaluated,\n * the catch silently ignores the duplicate registration error.\n */\n static {\n try {\n CSS.registerProperty({\n name: '--busy-angle',\n syntax: '<angle>',\n initialValue: '0deg',\n inherits: false\n });\n } catch {\n // Already registered or unsupported\n }\n }\n\n #fullscreen = inject(FullscreenDirective);\n\n /**\n * Template for action buttons rendered in the top bar area of the pane.\n * Use `icon-button-size=\"small\"` or `icon-button-size=\"extra-small\"` on icon\n * buttons for proper alignment.\n *\n * ```html\n * <ymt-pane [topBarActions]=\"actions\">\n * <ymt-pane-body>Content</ymt-pane-body>\n * </ymt-pane>\n *\n * <ng-template #actions>\n * <button ymt-icon-button icon-button-size=\"small\"><mat-icon>settings</mat-icon></button>\n * </ng-template>\n * ```\n */\n topBarActions = input<TemplateRef<unknown>>();\n\n /**\n * When set to true, the pane border will be replaced with an animated\n * conic-gradient border to indicate a busy/loading state.\n */\n busy = input<boolean>(false);\n\n /**\n * Disable the default fade-in enter animation.\n */\n noAnimation = input<boolean>(false);\n\n /**\n * Setting this to true will remove the default styles for the pane. So it will\n * render without border-radius, border and background color, but keep the inner\n * structure. This is useful when you want to use the pane inside another container\n * and want to apply custom styles to the pane.\n */\n plain = input<boolean>(false);\n\n /** Read-only signal indicating whether fullscreen is currently active. */\n fullscreenActive = this.#fullscreen.active;\n\n /** Toggle fullscreen mode on/off. */\n toggleFullscreen(): void {\n this.#fullscreen.toggle();\n }\n\n /** Enter fullscreen mode. */\n enterFullscreen(): void {\n this.#fullscreen.enter();\n }\n\n /** Exit fullscreen mode. */\n exitFullscreen(): void {\n this.#fullscreen.exit();\n }\n}\n","@if (topBarActions()) {\n <ymt-pane-top-bar [actions]=\"topBarActions()\"></ymt-pane-top-bar>\n}\n<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n\n@Component({\n selector: 'ymt-pane-footer',\n imports: [],\n templateUrl: './pane-footer.component.html',\n styleUrl: './pane-footer.component.scss'\n})\nexport class YmtPaneFooterComponent {}\n","<footer><ng-content></ng-content></footer>\n","import { NgModule } from '@angular/core';\nimport { YmtPaneAsideComponent } from './pane/pane-aside/pane-aside.component';\nimport { YmtPaneBodyComponent } from './pane/pane-body/pane-body.component';\nimport { YmtPaneHeaderComponent } from './pane/pane-header/pane-header.component';\nimport { YmtPaneComponent } from './pane/pane.component';\nimport { YmtPaneFooterComponent } from './pane/pane-footer/pane-footer.component';\n\nconst cmp = [YmtPaneComponent, YmtPaneHeaderComponent, YmtPaneBodyComponent, YmtPaneFooterComponent, YmtPaneAsideComponent];\n\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YmtPanesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.FullscreenDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-material-panes.mjs","sources":["../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-aside/pane-aside.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-aside/pane-aside.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-body/pane-body.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-body/pane-body.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-header/pane-header.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-header/pane-header.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/fullscreen.directive.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-top-bar/pane-top-bar.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-top-bar/pane-top-bar.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane.component.html","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-footer/pane-footer.component.ts","../../../../../libs/yuuvis/material/panes/src/lib/pane/pane-footer/pane-footer.component.html","../../../../../libs/yuuvis/material/panes/src/lib/panes.module.ts","../../../../../libs/yuuvis/material/panes/src/yuuvis-material-panes.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n\n@Component({\n selector: 'ymt-pane-aside',\n imports: [],\n templateUrl: './pane-aside.component.html',\n styleUrl: './pane-aside.component.scss'\n})\nexport class YmtPaneAsideComponent {}\n","<p>pane-aside works!</p>\n","import { Component } from '@angular/core';\n\n\n@Component({\n selector: 'ymt-pane-body',\n imports: [],\n templateUrl: './pane-body.component.html',\n styleUrl: './pane-body.component.scss'\n})\nexport class YmtPaneBodyComponent {}\n","<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n/**\n * Header component for `ymt-pane`. Renders a two-row layout:\n *\n * - **Top row:** icon (optional), title, and actions area\n * - **Bottom row:** subtitle and badges area\n *\n * ## Title & Subtitle\n *\n * Can be set as plain strings via the `title` and `subtitle` inputs,\n * or as rich content via the `#yuvPaneHeaderTitle` and `#yuvPaneHeaderSubtitle`\n * content child templates. When a template is provided it takes precedence\n * over the corresponding string input.\n *\n * ## Icon\n *\n * Set the `icon` input to a Material Icon ligature to display an icon\n * to the left of the title row.\n *\n * ## Actions & Badges\n *\n * Pass a `TemplateRef` to the `actions` input to render action buttons\n * aligned to the right of the title row. Similarly, pass a `TemplateRef`\n * to the `badges` input to render badges aligned to the right of the\n * subtitle row.\n *\n * @example\n * ```html\n * <!-- Simple usage with string inputs -->\n * <ymt-pane-header\n * [title]=\"'Documents'\"\n * [subtitle]=\"'12 items'\"\n * [icon]=\"'folder'\"\n * [actions]=\"headerActions\"\n * [badges]=\"headerBadges\">\n * </ymt-pane-header>\n *\n * <ng-template #headerActions>\n * <button ymt-icon-button icon=\"add\"></button>\n * </ng-template>\n *\n * <ng-template #headerBadges>\n * <ymt-badge severity=\"info\">active</ymt-badge>\n * </ng-template>\n * ```\n *\n * @example\n * ```html\n * <!-- Rich content via template projection -->\n * <ymt-pane-header [icon]=\"'lock'\">\n * <ng-template #yuvPaneHeaderTitle>Custom <strong>title</strong></ng-template>\n * <ng-template #yuvPaneHeaderSubtitle><ymt-badge severity=\"warning\">locked</ymt-badge></ng-template>\n * </ymt-pane-header>\n * ```\n */\n@Component({\n selector: 'ymt-pane-header',\n imports: [CommonModule, MatIconModule],\n templateUrl: './pane-header.component.html',\n styleUrl: './pane-header.component.scss'\n})\nexport class YmtPaneHeaderComponent {\n /** Plain-text title displayed in the top row. Ignored when a `#yuvPaneHeaderTitle` template is projected. */\n title = input<string>();\n /** Material Icon ligature rendered to the left of the title row (e.g. `'folder'`, `'lock'`). */\n icon = input<string>();\n /** Plain-text subtitle displayed in the bottom row. Ignored when a `#yuvPaneHeaderSubtitle` template is projected. */\n subtitle = input<string>();\n /** Template rendered in the actions area, aligned to the right of the title row. */\n actions = input<TemplateRef<unknown>>();\n /** Template rendered in the badges area, aligned to the right of the subtitle row. */\n badges = input<TemplateRef<unknown>>();\n\n /** Content child template for rich title content. Takes precedence over the `title` input. */\n titleSlot = contentChild<TemplateRef<unknown>>('yuvPaneHeaderTitle');\n /** Content child template for rich subtitle content. Takes precedence over the `subtitle` input. */\n subtitleSlot = contentChild<TemplateRef<unknown>>('yuvPaneHeaderSubtitle');\n}\n","<header>\n @if (icon()) {\n <div class=\"icon\" aria-hidden=\"true\">\n <mat-icon class=\"pane-icon\">{{ icon() }}</mat-icon>\n </div>\n }\n <!-- top row (title and actions) -->\n <div class=\"row title-row\">\n <h2>\n @let ts = titleSlot();\n @if (ts) {\n <ng-container *ngTemplateOutlet=\"ts\" />\n } @else {\n {{ title() }}\n }\n </h2>\n @let a = actions();\n @if (a) {\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"a\" />\n </div>\n }\n </div>\n\n <!-- bottom row (subtitle and badges) -->\n <div class=\"row subtitle-row\">\n <small>\n @let ss = subtitleSlot();\n @if (ss) {\n <ng-container *ngTemplateOutlet=\"ss\" />\n } @else {\n {{ subtitle() }}\n }\n </small>\n @let b = badges();\n @if (b) {\n <div class=\"badges\">\n <ng-container *ngTemplateOutlet=\"b\" />\n </div>\n }\n </div>\n</header>\n","import {\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n Renderer2,\n signal\n} from '@angular/core';\n\n/**\n * Directive that enables any host element to toggle into a fullscreen overlay\n * covering the entire viewport. Background content is made inert and body scroll\n * is locked while fullscreen is active.\n *\n * @example\n * ```html\n * <div yuvFullscreen #fs=\"yuvFullscreen\">\n * <button (click)=\"fs.toggle()\">Toggle</button>\n * <p>Content</p>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuvFullscreen]',\n exportAs: 'yuvFullscreen',\n host: {\n '[class.yuv-fullscreen-active]': 'active()',\n '(document:keydown.escape)': 'onEscape()'\n }\n})\nexport class FullscreenDirective implements OnDestroy {\n #elRef = inject(ElementRef);\n #renderer = inject(Renderer2);\n\n /** Whether the fullscreen toggle is disabled. */\n disabled = input<boolean>(false);\n\n /** Emitted when fullscreen mode is entered. */\n fullscreenEnter = output<void>();\n /** Emitted when fullscreen mode is exited. */\n fullscreenExit = output<void>();\n\n #isActive = signal(false);\n\n /** Read-only signal indicating whether fullscreen is currently active. */\n active = computed(() => this.#isActive());\n\n #originalStyles: Record<string, string> = {};\n #inertElements: HTMLElement[] = [];\n #originalBodyOverflow = '';\n\n /** Toggle fullscreen on/off. */\n toggle(): void {\n if (this.disabled()) return;\n if (this.#isActive()) {\n this.exit();\n } else {\n this.enter();\n }\n }\n\n /** Enter fullscreen mode. No-op if already active or disabled. */\n enter(): void {\n if (this.#isActive() || this.disabled()) return;\n this.#saveOriginalStyles();\n this.#applyFullscreenStyles();\n this.#makeBackgroundInert();\n this.#lockBodyScroll();\n this.#isActive.set(true);\n this.fullscreenEnter.emit();\n }\n\n /** Exit fullscreen mode. No-op if not active. */\n exit(): void {\n if (!this.#isActive()) return;\n this.#restoreOriginalStyles();\n this.#restoreBackground();\n this.#unlockBodyScroll();\n this.#isActive.set(false);\n this.fullscreenExit.emit();\n }\n\n /** @internal */\n onEscape(): void {\n if (this.#isActive()) {\n this.exit();\n }\n }\n\n #saveOriginalStyles(): void {\n const style = this.#elRef.nativeElement.style;\n this.#originalStyles = {\n position: style.position,\n inset: style.inset,\n zIndex: style.zIndex,\n width: style.width,\n height: style.height,\n overflow: style.overflow,\n backgroundColor: style.backgroundColor\n };\n }\n\n #applyFullscreenStyles(): void {\n const el = this.#elRef.nativeElement;\n this.#renderer.setStyle(el, 'position', 'fixed');\n this.#renderer.setStyle(el, 'inset', '0');\n this.#renderer.setStyle(el, 'z-index', '1000');\n this.#renderer.setStyle(el, 'width', '100vw');\n this.#renderer.setStyle(el, 'height', '100vh');\n this.#renderer.setStyle(el, 'overflow', 'auto');\n this.#renderer.setStyle(el, 'background-color', 'var(--ymt-surface, #fff)');\n }\n\n #restoreOriginalStyles(): void {\n const el = this.#elRef.nativeElement;\n for (const [prop, value] of Object.entries(this.#originalStyles)) {\n if (value) {\n this.#renderer.setStyle(el, prop, value);\n } else {\n this.#renderer.removeStyle(el, prop);\n }\n }\n this.#originalStyles = {};\n }\n\n #makeBackgroundInert(): void {\n this.#inertElements = [];\n let current: HTMLElement = this.#elRef.nativeElement;\n\n while (current.parentElement) {\n const parent = current.parentElement;\n for (let i = 0; i < parent.children.length; i++) {\n const sibling = parent.children[i] as HTMLElement;\n if (sibling !== current && !sibling.hasAttribute('inert')) {\n this.#renderer.setAttribute(sibling, 'inert', '');\n this.#inertElements.push(sibling);\n }\n }\n if (parent === document.body) break;\n current = parent;\n }\n }\n\n #restoreBackground(): void {\n for (const el of this.#inertElements) {\n this.#renderer.removeAttribute(el, 'inert');\n }\n this.#inertElements = [];\n }\n\n #lockBodyScroll(): void {\n this.#originalBodyOverflow = document.body.style.overflow;\n this.#renderer.setStyle(document.body, 'overflow', 'hidden');\n }\n\n #unlockBodyScroll(): void {\n if (this.#originalBodyOverflow) {\n this.#renderer.setStyle(document.body, 'overflow', this.#originalBodyOverflow);\n } else {\n this.#renderer.removeStyle(document.body, 'overflow');\n }\n this.#originalBodyOverflow = '';\n }\n\n ngOnDestroy(): void {\n if (this.#isActive()) {\n this.exit();\n }\n }\n}\n","import { Component, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ymt-pane-top-bar',\n imports: [CommonModule],\n templateUrl: './pane-top-bar.component.html',\n styleUrl: './pane-top-bar.component.scss',\n})\nexport class YmtPaneTopBarComponent {\n /**\n * TemplateRef for actions area in the top bar.\n */\n actions = input<TemplateRef<any>>();\n}\n","@let ta = actions();\n@if (ta) {\n <div class=\"top-bar\">\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"ta\"></ng-container>\n </div>\n </div>\n}\n","\nimport { ChangeDetectionStrategy, Component, inject, input, TemplateRef } from '@angular/core';\nimport { FullscreenDirective } from './fullscreen.directive';\nimport { YmtPaneTopBarComponent } from './pane-top-bar/pane-top-bar.component';\n\n/**\n * A pane is a container component that unifies the appearance and behavior of\n * content areas in an app. It renders as a bordered, rounded card with a grid\n * layout for its sub-components.\n *\n * ## Structure\n *\n * A pane uses a vertical grid layout with four areas. All sub-components are optional:\n *\n * | Area | Component | Description |\n * |----------|--------------------|----------------------------------------------------|\n * | top-bar | *(internal)* | Rendered automatically when `topBarActions` is set. |\n * | header | `ymt-pane-header` | Title, subtitle, icon, and custom header actions. |\n * | main | `ymt-pane-body` | Scrollable main content area. |\n * | footer | `ymt-pane-footer` | Right-aligned action bar with a top border. |\n *\n * ```html\n * <ymt-pane>\n * <ymt-pane-header title=\"Users\" subtitle=\"3 selected\" [actions]=\"headerActions\" />\n * <ymt-pane-body>Main content</ymt-pane-body>\n * <ymt-pane-footer>\n * <button ymt-button>Save</button>\n * </ymt-pane-footer>\n * </ymt-pane>\n * ```\n *\n * ### `ymt-pane-header`\n *\n * Accepts `title`, `subtitle`, and `icon` as string inputs. For richer content,\n * use the `#yuvPaneHeaderTitle` and `#yuvPaneHeaderSubtitle` template refs:\n *\n * ```html\n * <ymt-pane-header>\n * <ng-template #yuvPaneHeaderTitle><h2>Custom title</h2></ng-template>\n * <ng-template #yuvPaneHeaderSubtitle><ymt-badge severity=\"warning\">locked</ymt-badge></ng-template>\n * </ymt-pane-header>\n * ```\n *\n * Header actions can be projected via the `[actions]` input (TemplateRef).\n *\n * ### Top bar actions\n *\n * Pass a `TemplateRef` to the `[topBarActions]` input to render icon buttons\n * in a slim top bar above the header:\n *\n * ```html\n * <ymt-pane [topBarActions]=\"actions\">\n * <ymt-pane-body>Content</ymt-pane-body>\n * </ymt-pane>\n *\n * <ng-template #actions>\n * <button ymt-icon-button icon-button-size=\"small\"><mat-icon>settings</mat-icon></button>\n * </ng-template>\n * ```\n *\n * ## Fullscreen\n *\n * Every pane supports fullscreen mode. The pane expands to fill the viewport,\n * background content becomes inert, and pressing <kbd>Escape</kbd> exits.\n *\n * ```html\n * <ymt-pane #pane>\n * <ymt-pane-body>\n * <button (click)=\"pane.toggleFullscreen()\">Toggle fullscreen</button>\n * </ymt-pane-body>\n * </ymt-pane>\n * ```\n *\n * Programmatic API: `enterFullscreen()`, `exitFullscreen()`, `toggleFullscreen()`.\n * Read the current state via the `fullscreenActive` signal.\n * Listen to transitions via the `(fullscreenEnter)` and `(fullscreenExit)` outputs.\n *\n * ## Busy state\n *\n * Set `[busy]=\"true\"` to replace the static border with a rotating\n * conic-gradient border that signals a loading state:\n *\n * ```html\n * <ymt-pane [busy]=\"isLoading()\">\n * <ymt-pane-body>Content</ymt-pane-body>\n * </ymt-pane>\n * ```\n *\n * ## Enter animation\n *\n * Panes fade in on creation (0.15 s ease-out by default). Customize or delay\n * the animation via CSS variables, or disable it entirely with the\n * `[noAnimation]` input:\n *\n * ```css\n * ymt-pane {\n * --enter-animation-duration: 0.3s;\n * --enter-animation-delay: 0.1s;\n * }\n * ```\n *\n * ```html\n * <ymt-pane [noAnimation]=\"true\"> ... </ymt-pane>\n * ```\n *\n * ## Plain mode\n *\n * Set `[plain]=\"true\"` to strip the border, border-radius, and background\n * while keeping the inner grid structure. Useful when embedding a pane inside\n * another styled container.\n *\n * ## CSS custom properties\n *\n * | Property | Default | Description |\n * |-------------------------------|-------------------------------|--------------------------------------|\n * | `--header-area-padding` | `var(--ymt-spacing-xl)` | Padding of the header area. |\n * | `--header-area-background` | `transparent` | Background of the header area. |\n * | `--header-area-border-color` | `transparent` | Bottom border of the header area. |\n * | `--main-area-padding` | `0` | Padding of the body area. |\n * | `--pane-background-color` | `var(--ymt-surface)` | Background of the pane. |\n * | `--busy-border-width` | `2px` | Width of the busy indicator border. |\n * | `--busy-border-color` | `var(--ymt-primary)` | Color of the busy indicator border. |\n * | `--enter-animation-duration` | `0.15s` | Duration of the fade-in animation. |\n * | `--enter-animation-delay` | `0s` | Delay before the fade-in starts. |\n */\n@Component({\n selector: 'ymt-pane',\n imports: [YmtPaneTopBarComponent],\n templateUrl: './pane.component.html',\n styleUrl: './pane.component.scss',\n hostDirectives: [\n {\n directive: FullscreenDirective,\n outputs: ['fullscreenEnter', 'fullscreenExit']\n }\n ],\n host: {\n '[class.plain]': 'plain()',\n '[class.busy]': 'busy()',\n '[class.no-animation]': 'noAnimation()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YmtPaneComponent {\n /**\n * This static block runs once when the class is first loaded (not per instance).\n * It registers a custom CSS property (--busy-angle) with the browser's CSS engine via\n * CSS.registerProperty().\n * Why it's needed: Normally, CSS custom properties (e.g. --busy-angle) are just\n * strings — the browser can't interpolate them in animations. By registering the\n * property with syntax: '<angle>', the browser knows it's an angle value and can\n * smoothly animate it from 0deg to 360deg in the keyframe.\n * Why it's in JS instead of CSS: The standard CSS way is @property --busy-angle { ... }\n * (which was in the original SCSS). But Angular's emulated view encapsulation doesn't\n * pass @property at-rules through to the document correctly, so the property never got\n * registered and the animation was static. CSS.registerProperty() is the JavaScript\n * equivalent and works globally regardless of Angular's style scoping.\n * The try/catch: CSS.registerProperty() throws if the same property name is registered\n * twice. Since this component could be bundled in multiple chunks or the module re-evaluated,\n * the catch silently ignores the duplicate registration error.\n */\n static {\n try {\n CSS.registerProperty({\n name: '--busy-angle',\n syntax: '<angle>',\n initialValue: '0deg',\n inherits: false\n });\n } catch {\n // Already registered or unsupported\n }\n }\n\n #fullscreen = inject(FullscreenDirective);\n\n /**\n * Template for action buttons rendered in the top bar area of the pane.\n * Use `icon-button-size=\"small\"` or `icon-button-size=\"extra-small\"` on icon\n * buttons for proper alignment.\n *\n * ```html\n * <ymt-pane [topBarActions]=\"actions\">\n * <ymt-pane-body>Content</ymt-pane-body>\n * </ymt-pane>\n *\n * <ng-template #actions>\n * <button ymt-icon-button icon-button-size=\"small\"><mat-icon>settings</mat-icon></button>\n * </ng-template>\n * ```\n */\n topBarActions = input<TemplateRef<unknown>>();\n\n /**\n * When set to true, the pane border will be replaced with an animated\n * conic-gradient border to indicate a busy/loading state.\n */\n busy = input<boolean>(false);\n\n /**\n * Disable the default fade-in enter animation.\n */\n noAnimation = input<boolean>(false);\n\n /**\n * Setting this to true will remove the default styles for the pane. So it will\n * render without border-radius, border and background color, but keep the inner\n * structure. This is useful when you want to use the pane inside another container\n * and want to apply custom styles to the pane.\n */\n plain = input<boolean>(false);\n\n /** Read-only signal indicating whether fullscreen is currently active. */\n fullscreenActive = this.#fullscreen.active;\n\n /** Toggle fullscreen mode on/off. */\n toggleFullscreen(): void {\n this.#fullscreen.toggle();\n }\n\n /** Enter fullscreen mode. */\n enterFullscreen(): void {\n this.#fullscreen.enter();\n }\n\n /** Exit fullscreen mode. */\n exitFullscreen(): void {\n this.#fullscreen.exit();\n }\n}\n","@if (topBarActions()) {\n <ymt-pane-top-bar [actions]=\"topBarActions()\"></ymt-pane-top-bar>\n}\n<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n\n@Component({\n selector: 'ymt-pane-footer',\n imports: [],\n templateUrl: './pane-footer.component.html',\n styleUrl: './pane-footer.component.scss'\n})\nexport class YmtPaneFooterComponent {}\n","<footer><ng-content></ng-content></footer>\n","import { NgModule } from '@angular/core';\nimport { YmtPaneAsideComponent } from './pane/pane-aside/pane-aside.component';\nimport { YmtPaneBodyComponent } from './pane/pane-body/pane-body.component';\nimport { YmtPaneHeaderComponent } from './pane/pane-header/pane-header.component';\nimport { YmtPaneComponent } from './pane/pane.component';\nimport { YmtPaneFooterComponent } from './pane/pane-footer/pane-footer.component';\n\nconst cmp = [YmtPaneComponent, YmtPaneHeaderComponent, YmtPaneBodyComponent, YmtPaneFooterComponent, YmtPaneAsideComponent];\n\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YmtPanesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.FullscreenDirective"],"mappings":"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"}
|
|
@@ -40,10 +40,10 @@ class YmtMatIconRegistryService extends MatIconRegistry {
|
|
|
40
40
|
}
|
|
41
41
|
return false;
|
|
42
42
|
}
|
|
43
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
44
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
43
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtMatIconRegistryService, deps: [{ token: i1.HttpClient }, { token: i2.DomSanitizer }, { token: DOCUMENT }, { token: i0.ErrorHandler }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtMatIconRegistryService, providedIn: 'root' });
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtMatIconRegistryService, decorators: [{
|
|
47
47
|
type: Injectable,
|
|
48
48
|
args: [{
|
|
49
49
|
providedIn: 'root'
|
|
@@ -85,10 +85,10 @@ class YmtDatepickerIntlService extends MatDatepickerIntl {
|
|
|
85
85
|
formatYearRangeLabel(start, end) {
|
|
86
86
|
return super.formatYearRangeLabel(start, end);
|
|
87
87
|
}
|
|
88
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
89
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
88
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtDatepickerIntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
89
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtDatepickerIntlService, providedIn: 'root' });
|
|
90
90
|
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtDatepickerIntlService, decorators: [{
|
|
92
92
|
type: Injectable,
|
|
93
93
|
args: [{ providedIn: 'root' }]
|
|
94
94
|
}], ctorParameters: () => [] });
|
|
@@ -159,10 +159,10 @@ class YmtDateAdapterService extends NativeDateAdapter {
|
|
|
159
159
|
};
|
|
160
160
|
return date;
|
|
161
161
|
}
|
|
162
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
163
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
162
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtDateAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
163
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtDateAdapterService });
|
|
164
164
|
}
|
|
165
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtDateAdapterService, decorators: [{
|
|
166
166
|
type: Injectable
|
|
167
167
|
}], ctorParameters: () => [] });
|
|
168
168
|
|
|
@@ -419,10 +419,10 @@ class DeviceService {
|
|
|
419
419
|
// keyboard appears, so we don't need to debounce
|
|
420
420
|
return this.isMobile ? 0 : 500;
|
|
421
421
|
}
|
|
422
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
423
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
422
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
423
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DeviceService, providedIn: 'root' });
|
|
424
424
|
}
|
|
425
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
425
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DeviceService, decorators: [{
|
|
426
426
|
type: Injectable,
|
|
427
427
|
args: [{
|
|
428
428
|
providedIn: 'root'
|
|
@@ -462,10 +462,10 @@ class YmtMatPaginatorIntlService extends MatPaginatorIntl {
|
|
|
462
462
|
this.rangeLabelSeparator = this.#translate.instant('ymt.paginator.rangeLabelSeparator');
|
|
463
463
|
this.changes.next();
|
|
464
464
|
}
|
|
465
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
466
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
465
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtMatPaginatorIntlService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
466
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtMatPaginatorIntlService });
|
|
467
467
|
}
|
|
468
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
468
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtMatPaginatorIntlService, decorators: [{
|
|
469
469
|
type: Injectable
|
|
470
470
|
}] });
|
|
471
471
|
|
|
@@ -581,11 +581,11 @@ class YmtIconButtonDirective {
|
|
|
581
581
|
ariaDisabled = input(false, { ...(ngDevMode ? { debugName: "ariaDisabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute, alias: 'aria-disabled' });
|
|
582
582
|
disabledInteractive = input(false, { ...(ngDevMode ? { debugName: "disabledInteractive" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
583
583
|
size = input(YMT_ICON_BUTTON_SIZE.medium, { ...(ngDevMode ? { debugName: "size" } : /* istanbul ignore next */ {}), alias: 'icon-button-size' });
|
|
584
|
-
#elRef = inject(ElementRef);
|
|
584
|
+
#elRef = inject((ElementRef));
|
|
585
585
|
#host = this.#elRef.nativeElement;
|
|
586
586
|
#injector = inject(EnvironmentInjector);
|
|
587
587
|
#appRef = inject(ApplicationRef);
|
|
588
|
-
#
|
|
588
|
+
#matIconButtonComponentRef = null;
|
|
589
589
|
#materialIconButtonInputs = [
|
|
590
590
|
{ name: 'disabled', signal: this.disabled },
|
|
591
591
|
{ name: 'disableRipple', signal: this.disableRipple },
|
|
@@ -593,15 +593,18 @@ class YmtIconButtonDirective {
|
|
|
593
593
|
{ name: 'disabledInteractive', signal: this.disabledInteractive }
|
|
594
594
|
];
|
|
595
595
|
constructor() {
|
|
596
|
-
effect(() =>
|
|
596
|
+
effect(() => {
|
|
597
|
+
const size = this.size();
|
|
598
|
+
this.#applySizeClass(size);
|
|
599
|
+
});
|
|
597
600
|
effect(() => this.#setMaterialInputs());
|
|
598
601
|
}
|
|
599
602
|
ngAfterViewInit() {
|
|
600
|
-
this.#
|
|
603
|
+
this.#matIconButtonComponentRef = this.#createComponent();
|
|
604
|
+
this.#applySizeClass(this.size());
|
|
601
605
|
this.#setMaterialInputs();
|
|
602
606
|
}
|
|
603
|
-
#applySizeClass() {
|
|
604
|
-
const size = this.size();
|
|
607
|
+
#applySizeClass(size) {
|
|
605
608
|
const host = this.#host.classList;
|
|
606
609
|
host.toggle('ymt-icon-button--size-xs', size === YMT_ICON_BUTTON_SIZE.extraSmall);
|
|
607
610
|
host.toggle('ymt-icon-button--size-s', size === YMT_ICON_BUTTON_SIZE.small);
|
|
@@ -609,23 +612,27 @@ class YmtIconButtonDirective {
|
|
|
609
612
|
}
|
|
610
613
|
#setMaterialInputs() {
|
|
611
614
|
const inputs = this.#materialIconButtonInputs.map(({ name, signal }) => ({ name, value: signal() }));
|
|
612
|
-
if (this.#
|
|
613
|
-
inputs.forEach(({ name, value }) => this.#
|
|
615
|
+
if (this.#matIconButtonComponentRef) {
|
|
616
|
+
inputs.forEach(({ name, value }) => this.#matIconButtonComponentRef && this.#matIconButtonComponentRef.setInput(name, value));
|
|
614
617
|
}
|
|
615
618
|
}
|
|
616
619
|
#createComponent() {
|
|
617
620
|
const matIcon = this.#host.querySelector('mat-icon'); //todo support also upcoming yuv-icon
|
|
618
621
|
const environmentInjector = this.#injector;
|
|
619
622
|
const hostElement = this.#host;
|
|
620
|
-
const componentRef = createComponent(MatIconButton, {
|
|
623
|
+
const componentRef = createComponent(MatIconButton, {
|
|
624
|
+
hostElement,
|
|
625
|
+
projectableNodes: [[matIcon]],
|
|
626
|
+
environmentInjector
|
|
627
|
+
});
|
|
621
628
|
this.#appRef.attachView(componentRef.hostView);
|
|
622
629
|
componentRef.changeDetectorRef.detectChanges();
|
|
623
630
|
return componentRef;
|
|
624
631
|
}
|
|
625
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
626
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.
|
|
632
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtIconButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
633
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.12", type: YmtIconButtonDirective, isStandalone: true, selector: "button[ymtIconButton],button[ymt-icon-button],a[ymtIconButton],a[ymt-icon-button]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, disableRipple: { classPropertyName: "disableRipple", publicName: "disableRipple", isSignal: true, isRequired: false, transformFunction: null }, ariaDisabled: { classPropertyName: "ariaDisabled", publicName: "aria-disabled", isSignal: true, isRequired: false, transformFunction: null }, disabledInteractive: { classPropertyName: "disabledInteractive", publicName: "disabledInteractive", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "icon-button-size", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "mat-icon-button": "" } }, ngImport: i0 });
|
|
627
634
|
}
|
|
628
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
635
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtIconButtonDirective, decorators: [{
|
|
629
636
|
type: Directive,
|
|
630
637
|
args: [{
|
|
631
638
|
selector: 'button[ymtIconButton],button[ymt-icon-button],a[ymtIconButton],a[ymt-icon-button]',
|
|
@@ -735,10 +742,10 @@ class YmtButtonDirective {
|
|
|
735
742
|
? this.#hostElement.classList.add(`ymt-button--size-m`)
|
|
736
743
|
: this.#hostElement.classList.remove(`ymt-button--size-m`);
|
|
737
744
|
}
|
|
738
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
739
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.
|
|
745
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
746
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.12", type: YmtButtonDirective, isStandalone: true, selector: "button[ymtButton], a[ymtButton]", inputs: { ymtButton: { classPropertyName: "ymtButton", publicName: "ymtButton", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaDisabled: { classPropertyName: "ariaDisabled", publicName: "aria-disabled", isSignal: true, isRequired: false, transformFunction: null }, disableRipple: { classPropertyName: "disableRipple", publicName: "disableRipple", isSignal: true, isRequired: false, transformFunction: null }, disabledInteractive: { classPropertyName: "disabledInteractive", publicName: "disabledInteractive", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "button-size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
740
747
|
}
|
|
741
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
748
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: YmtButtonDirective, decorators: [{
|
|
742
749
|
type: Directive,
|
|
743
750
|
args: [{
|
|
744
751
|
selector: 'button[ymtButton], a[ymtButton]',
|
|
@@ -1023,8 +1030,8 @@ class DatepickerComponent {
|
|
|
1023
1030
|
this.rangepicker()?.open();
|
|
1024
1031
|
this.timepicker()?.open();
|
|
1025
1032
|
}
|
|
1026
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
1027
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
1033
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1034
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: DatepickerComponent, isStandalone: true, selector: "ymt-datepicker", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, userAriaDescribedBy: { classPropertyName: "userAriaDescribedBy", publicName: "userAriaDescribedBy", isSignal: false, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: false, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, rangePlaceholder: { classPropertyName: "rangePlaceholder", publicName: "rangePlaceholder", isSignal: false, isRequired: false, transformFunction: null }, startDateFormControlName: { classPropertyName: "startDateFormControlName", publicName: "startDateFormControlName", isSignal: true, isRequired: false, transformFunction: null }, endDateFormControlName: { classPropertyName: "endDateFormControlName", publicName: "endDateFormControlName", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusout()" }, properties: { "class.floating": "shouldLabelFloat" } }, providers: [
|
|
1028
1035
|
{ provide: MatFormFieldControl, useExisting: DatepickerComponent },
|
|
1029
1036
|
/*{
|
|
1030
1037
|
provide: MAT_DATE_FORMATS,
|
|
@@ -1043,7 +1050,7 @@ class DatepickerComponent {
|
|
|
1043
1050
|
provideYmtDateAdapter()
|
|
1044
1051
|
], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepicker"], descendants: true, read: MatDatepicker, isSignal: true }, { propertyName: "rangepicker", first: true, predicate: ["rangepicker"], descendants: true, isSignal: true }, { propertyName: "timepicker", first: true, predicate: ["timepicker"], descendants: true, read: MatTimepicker, isSignal: true }, { propertyName: "datepickerInput", first: true, predicate: ["datepickerInput"], descendants: true, isSignal: true }, { propertyName: "timepickerInput", first: true, predicate: ["timepickerInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@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", styles: [":host{display:flex}:host input{width:100%;border:0;outline:0;background:transparent}\n"], dependencies: [{ kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatTimepicker, selector: "mat-timepicker", inputs: ["interval", "options", "disableRipple", "aria-label", "aria-labelledby", "panelClass"], outputs: ["selected", "opened", "closed"], exportAs: ["matTimepicker"] }, { kind: "directive", type: MatTimepickerInput, selector: "input[matTimepicker]", inputs: ["value", "matTimepicker", "matTimepickerMin", "matTimepickerMax", "matTimepickerOpenOnClick", "disabled"], outputs: ["valueChange"], exportAs: ["matTimepickerInput"] }, { kind: "component", type: MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "component", type: MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "ngmodule", type: NativeDateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1045
1052
|
}
|
|
1046
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
1053
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DatepickerComponent, decorators: [{
|
|
1047
1054
|
type: Component,
|
|
1048
1055
|
args: [{ selector: 'ymt-datepicker', standalone: true, imports: [
|
|
1049
1056
|
MatInput,
|
|
@@ -1158,14 +1165,14 @@ class DatepickerToggleComponent {
|
|
|
1158
1165
|
ngOnDestroy() {
|
|
1159
1166
|
this.stateChanges.complete();
|
|
1160
1167
|
}
|
|
1161
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
1162
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
1168
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DatepickerToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1169
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.12", type: DatepickerToggleComponent, isStandalone: true, selector: "ymt-datepicker-toggle", inputs: { datepicker: ["for", "datepicker"], disabled: "disabled", ariaLabel: "ariaLabel" }, host: { listeners: { "click": "_open($event)" } }, providers: [{ provide: MatDatepickerIntl, useClass: YmtDatepickerIntlService }], exportAs: ["matDatepickerToggle"], ngImport: i0, template: `
|
|
1163
1170
|
<button type="button" ymtIconButton [attr.aria-label]="ariaLabel" [aria-disabled]="disabled" [disabled]="disabled">
|
|
1164
1171
|
<ng-content select="mat-icon"></ng-content>
|
|
1165
1172
|
</button>
|
|
1166
1173
|
`, isInline: true, dependencies: [{ kind: "directive", type: YmtIconButtonDirective, selector: "button[ymtIconButton],button[ymt-icon-button],a[ymtIconButton],a[ymt-icon-button]", inputs: ["disabled", "disableRipple", "aria-disabled", "disabledInteractive", "icon-button-size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1167
1174
|
}
|
|
1168
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
1175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DatepickerToggleComponent, decorators: [{
|
|
1169
1176
|
type: Component,
|
|
1170
1177
|
args: [{
|
|
1171
1178
|
selector: 'ymt-datepicker-toggle',
|