@eui/eds 22.0.0-alpha.17 → 22.0.0-alpha.18

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.
Files changed (72) hide show
  1. package/docs/changelog.html +10 -0
  2. package/docs/components/EdsLanguageSelectorDialog.html +1 -1
  3. package/docs/js/search/search_index.js +2 -2
  4. package/docs/json/documentation.json +42 -42
  5. package/docs/llms.txt +1 -1
  6. package/docs/properties.html +1 -1
  7. package/fesm2022/eui-eds-charts-eds-chart-legend.mjs +2 -2
  8. package/fesm2022/eui-eds-charts-eds-chart-legend.mjs.map +1 -1
  9. package/fesm2022/eui-eds-eds-accordion.mjs +2 -2
  10. package/fesm2022/eui-eds-eds-accordion.mjs.map +1 -1
  11. package/fesm2022/eui-eds-eds-alert.mjs +2 -2
  12. package/fesm2022/eui-eds-eds-alert.mjs.map +1 -1
  13. package/fesm2022/eui-eds-eds-autocomplete.mjs +2 -2
  14. package/fesm2022/eui-eds-eds-autocomplete.mjs.map +1 -1
  15. package/fesm2022/eui-eds-eds-avatar.mjs +4 -4
  16. package/fesm2022/eui-eds-eds-avatar.mjs.map +1 -1
  17. package/fesm2022/eui-eds-eds-blockquote.mjs +2 -2
  18. package/fesm2022/eui-eds-eds-blockquote.mjs.map +1 -1
  19. package/fesm2022/eui-eds-eds-calendar.mjs +4 -4
  20. package/fesm2022/eui-eds-eds-calendar.mjs.map +1 -1
  21. package/fesm2022/eui-eds-eds-card.mjs +2 -2
  22. package/fesm2022/eui-eds-eds-card.mjs.map +1 -1
  23. package/fesm2022/eui-eds-eds-date-block.mjs +2 -2
  24. package/fesm2022/eui-eds-eds-date-block.mjs.map +1 -1
  25. package/fesm2022/eui-eds-eds-datepicker.mjs +2 -2
  26. package/fesm2022/eui-eds-eds-datepicker.mjs.map +1 -1
  27. package/fesm2022/eui-eds-eds-discussion-thread.mjs +4 -4
  28. package/fesm2022/eui-eds-eds-discussion-thread.mjs.map +1 -1
  29. package/fesm2022/eui-eds-eds-empty-state.mjs +2 -2
  30. package/fesm2022/eui-eds-eds-empty-state.mjs.map +1 -1
  31. package/fesm2022/eui-eds-eds-fieldset.mjs +2 -2
  32. package/fesm2022/eui-eds-eds-fieldset.mjs.map +1 -1
  33. package/fesm2022/eui-eds-eds-file-upload.mjs +2 -2
  34. package/fesm2022/eui-eds-eds-file-upload.mjs.map +1 -1
  35. package/fesm2022/eui-eds-eds-growl.mjs +2 -2
  36. package/fesm2022/eui-eds-eds-growl.mjs.map +1 -1
  37. package/fesm2022/eui-eds-eds-language-selector.mjs +4 -4
  38. package/fesm2022/eui-eds-eds-language-selector.mjs.map +1 -1
  39. package/fesm2022/eui-eds-eds-list.mjs +2 -2
  40. package/fesm2022/eui-eds-eds-list.mjs.map +1 -1
  41. package/fesm2022/eui-eds-eds-menu.mjs +2 -2
  42. package/fesm2022/eui-eds-eds-menu.mjs.map +1 -1
  43. package/fesm2022/eui-eds-eds-multiselect.mjs +2 -2
  44. package/fesm2022/eui-eds-eds-multiselect.mjs.map +1 -1
  45. package/fesm2022/eui-eds-eds-page.mjs +2 -2
  46. package/fesm2022/eui-eds-eds-page.mjs.map +1 -1
  47. package/fesm2022/eui-eds-eds-popover.mjs +2 -2
  48. package/fesm2022/eui-eds-eds-popover.mjs.map +1 -1
  49. package/fesm2022/eui-eds-eds-progress-bar.mjs +2 -2
  50. package/fesm2022/eui-eds-eds-progress-bar.mjs.map +1 -1
  51. package/fesm2022/eui-eds-eds-progress-circle.mjs +2 -2
  52. package/fesm2022/eui-eds-eds-progress-circle.mjs.map +1 -1
  53. package/fesm2022/eui-eds-eds-select.mjs +2 -2
  54. package/fesm2022/eui-eds-eds-select.mjs.map +1 -1
  55. package/fesm2022/eui-eds-eds-shell.mjs +4 -4
  56. package/fesm2022/eui-eds-eds-shell.mjs.map +1 -1
  57. package/fesm2022/eui-eds-eds-table.mjs +2 -2
  58. package/fesm2022/eui-eds-eds-table.mjs.map +1 -1
  59. package/fesm2022/eui-eds-eds-tabs.mjs +2 -2
  60. package/fesm2022/eui-eds-eds-tabs.mjs.map +1 -1
  61. package/fesm2022/eui-eds-eds-timeline.mjs +2 -2
  62. package/fesm2022/eui-eds-eds-timeline.mjs.map +1 -1
  63. package/fesm2022/eui-eds-eds-timepicker.mjs +2 -2
  64. package/fesm2022/eui-eds-eds-timepicker.mjs.map +1 -1
  65. package/fesm2022/eui-eds-eds-user-profile.mjs +2 -2
  66. package/fesm2022/eui-eds-eds-user-profile.mjs.map +1 -1
  67. package/fesm2022/eui-eds-eds-wizard.mjs +2 -2
  68. package/fesm2022/eui-eds-utilities-eds-label.mjs +2 -2
  69. package/fesm2022/eui-eds-utilities-eds-label.mjs.map +1 -1
  70. package/fesm2022/eui-eds-utilities-eds-trend.mjs +2 -2
  71. package/fesm2022/eui-eds-utilities-eds-trend.mjs.map +1 -1
  72. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"eui-eds-eds-card.mjs","sources":["../../eds-card/eds-card.ts","../../eds-card/eds-card.html","../../eds-card/eds-card-link.directive.ts","../../eds-card/eds-card-header.ts","../../eds-card/eds-card-header.html","../../eds-card/eds-card-header-end.ts","../../eds-card/eds-card-start.ts","../../eds-card/eds-card-media.ts","../../eds-card/eds-card-label.ts","../../eds-card/eds-card-sublabel.ts","../../eds-card/eds-card-metadata.ts","../../eds-card/eds-card-body.ts","../../eds-card/eds-card-footer.ts","../../eds-card/index.ts","../../eds-card/eui-eds-eds-card.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n model,\n output,\n booleanAttribute,\n InjectionToken,\n} from '@angular/core';\nimport { EDS_INPUT_CHECKBOX } from '@eui/eds/eds-input-checkbox';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\n\n/** Lightweight token to expose card collapse state to child components without circular DI. */\nexport const EDS_CARD_REF = new InjectionToken<{ isCollapsed: () => boolean }>('EDS_CARD_REF');\n\n/**\n * Card surface component — a pure visual container.\n *\n * Provides a consistent card surface (background, border-radius, shadow, padding)\n * and projects content via named slots.\n *\n * Supports:\n * - Horizontal layout (`isHorizontal`) — start block on the left with divider\n * - Full height (`isFullHeight`) — fills container height\n * - Selectable (`isSelectable`) — checkbox on the left\n * - Collapsible (`isCollapsible`) — caret toggle in the header end area\n * - Header (`eds-card-header`) — label/sublabel/end layout\n * - Body content area (`eds-card-body`) with animated collapse\n * - Footer (`eds-card-footer`)\n *\n * For making the card interactive, compose with the `edsCardLink` directive.\n */\n@Component({\n selector: 'eds-card',\n templateUrl: './eds-card.html',\n styleUrl: './eds-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [...EDS_INPUT_CHECKBOX, ...EDS_ICON_BUTTON],\n providers: [{ provide: EDS_CARD_REF, useExisting: EdsCard }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': '\"eds-card\"',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-disabled]': 'disabled() || null',\n role: 'article',\n },\n})\nexport class EdsCard {\n /** Accessible label for the card. */\n ariaLabel = input<string>();\n\n /** Whether the card is disabled. */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Whether to use horizontal layout (start block on the left, content on the right). */\n isHorizontal = input(false, { transform: booleanAttribute });\n\n /** Whether the card should fill its container height (for grid layouts). */\n isFullHeight = input(false, { transform: booleanAttribute });\n\n /** Whether to show a selection checkbox. */\n isSelectable = input(false, { transform: booleanAttribute });\n\n /** Two-way bindable selected state. */\n isSelected = model(false);\n\n /** Emitted when the selection state changes. */\n cardSelect = output<boolean>();\n\n /** Whether the card body can be collapsed. */\n isCollapsible = input(false, { transform: booleanAttribute });\n\n /** Two-way bindable collapsed state. */\n isCollapsed = model(false);\n\n /** Emitted when the collapsed state changes. */\n cardCollapse = output<boolean>();\n\n /** Whether the card is in disabled state. Exposed for the link directive to read. */\n isDisabled = computed(() => this.disabled());\n\n protected caretIcon = computed(() => this.isCollapsed() ? 'caret-down' : 'caret-up');\n\n hostClasses = computed(() => {\n return [\n 'eds-card',\n this.isHorizontal() ? 'eds-card--horizontal' : '',\n this.isFullHeight() ? 'eds-card--full-height' : '',\n this.isSelected() ? 'eds-card--selected' : '',\n this.disabled() ? 'eds-card--disabled' : '',\n ].join(' ').trim();\n });\n\n protected onCheckboxChange(): void {\n this.isSelected.set(!this.isSelected());\n this.cardSelect.emit(this.isSelected());\n }\n\n protected toggleCollapse(): void {\n this.isCollapsed.set(!this.isCollapsed());\n this.cardCollapse.emit(this.isCollapsed());\n }\n}\n","<ng-content select=\"eds-card-media\"/>\n@if (isSelectable() && isHorizontal()) {\n <div class=\"eds-card__selection\">\n <input edsInputCheckbox [checked]=\"isSelected()\" (change)=\"onCheckboxChange(); $event.stopPropagation()\" aria-label=\"Select card\"/>\n </div>\n}\n<ng-content select=\"eds-card-start\"/>\n<div class=\"eds-card__content\">\n <div class=\"eds-card__header-row\">\n @if (isSelectable() && !isHorizontal()) {\n <div class=\"eds-card__selection\">\n <input edsInputCheckbox [checked]=\"isSelected()\" (change)=\"onCheckboxChange(); $event.stopPropagation()\" aria-label=\"Select card\"/>\n </div>\n }\n <ng-content select=\"eds-card-header\"/>\n @if (isCollapsible()) {\n <div class=\"eds-card__collapse-toggle\">\n <button edsIconButton\n [icon]=\"caretIcon()\"\n [attr.aria-expanded]=\"!isCollapsed()\"\n ariaLabel=\"Toggle card content\"\n rounded size=\"s\"\n (buttonClick)=\"toggleCollapse()\">\n </button>\n </div>\n }\n </div>\n <ng-content/>\n <ng-content select=\"eds-card-body\"/>\n <ng-content select=\"eds-card-footer\"/>\n</div>\n","import {\n Directive,\n input,\n output,\n computed,\n inject,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { EdsCard } from './eds-card';\n\n/**\n * Directive that makes an `eds-card` interactive (clickable / link).\n *\n * When applied, the card becomes focusable, gains a pointer cursor, hover shadow,\n * and responds to click / Enter / Space.\n *\n * Supports three interaction modes:\n * 1. **Router link** — provide `url` input for internal navigation via Angular Router.\n * 2. **External link** — provide `urlExternal` input for window.open navigation.\n * 3. **Button-like** — no URL provided, just emits `cardClick` for custom handling.\n */\n@Directive({\n selector: 'eds-card[edsCardLink]',\n host: {\n '[class.eds-card--link]': 'true',\n '[attr.tabindex]': 'tabindex()',\n '[attr.role]': 'hostRole()',\n '[style.cursor]': '\"pointer\"',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onKeyActivate($event)',\n '(keydown.space)': 'onKeyActivate($event)',\n },\n})\nexport class EdsCardLink {\n /** Internal route URL for Angular Router navigation. */\n url = input<string>();\n\n /** External URL — opens via window.open. */\n urlExternal = input<string>();\n\n /** Target for external URL. @default '_blank' */\n urlExternalTarget = input('_blank');\n\n /** Event emitted when the card is activated (click, Enter, Space). */\n cardClick = output<Event>();\n\n private card = inject(EdsCard);\n private router = inject(Router);\n\n protected tabindex = computed(() => {\n return this.card.isDisabled() ? '-1' : '0';\n });\n\n /** Role is 'link' when navigating, 'button' when just clickable. */\n protected hostRole = computed(() => {\n if (this.url() || this.urlExternal()) return 'link';\n return 'button';\n });\n\n onClick(event: MouseEvent): void {\n if (this.card.isDisabled()) return;\n this.activate(event);\n }\n\n onKeyActivate(event: Event): void {\n if (this.card.isDisabled()) return;\n event.preventDefault();\n this.activate(event);\n }\n\n private activate(event: Event): void {\n const externalUrl = this.urlExternal();\n const internalUrl = this.url();\n\n if (externalUrl) {\n window.open(externalUrl, this.urlExternalTarget(), 'noopener,noreferrer');\n } else if (internalUrl) {\n this.router.navigateByUrl(internalUrl);\n }\n\n this.cardClick.emit(event);\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Header sub-component for the card.\n * Arranges label/sublabel content on the left and an optional end slot on the right.\n */\n@Component({\n selector: 'eds-card-header',\n templateUrl: './eds-card-header.html',\n styleUrl: './eds-card-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'eds-card-header',\n },\n})\nexport class EdsCardHeader {}\n","<div class=\"eds-card-header__content\">\n <ng-content/>\n</div>\n<div class=\"eds-card-header__end\">\n <ng-content select=\"eds-card-header-end\"/>\n</div>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * End slot for the card header.\n * Positioned on the right side of the header row.\n */\n@Component({\n selector: 'eds-card-header-end',\n template: '<ng-content/>',\n styleUrl: './eds-card-header-end.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-header-end' },\n})\nexport class EdsCardHeaderEnd {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Start block for horizontal card layout.\n * Projects an icon, avatar, or image on the left side of the card, separated by a divider.\n */\n@Component({\n selector: 'eds-card-start',\n template: '<ng-content/>',\n styleUrl: './eds-card-start.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-start' },\n})\nexport class EdsCardStart {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Media block for vertical card layouts.\n * Projects an image (or picture/video) at the top of the card, edge-to-edge.\n * Typically used with an `<img>` element projected inside.\n *\n * Usage:\n * ```html\n * <eds-card>\n * <eds-card-media>\n * <img src=\"...\" alt=\"...\" />\n * </eds-card-media>\n * <eds-card-header>...</eds-card-header>\n * </eds-card>\n * ```\n */\n@Component({\n selector: 'eds-card-media',\n template: '<ng-content/>',\n styleUrl: './eds-card-media.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-media' },\n})\nexport class EdsCardMedia {}\n","import { Component, ChangeDetectionStrategy, input, computed, numberAttribute } from '@angular/core';\n\n/**\n * Label/title sub-component for the card.\n * Supports text truncation via `maxLines` input (CSS line-clamp).\n */\n@Component({\n selector: 'eds-card-label',\n template: '<ng-content/>',\n styleUrl: './eds-card-label.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.-webkit-line-clamp]': 'maxLines() || null',\n '[style.line-clamp]': 'maxLines() || null',\n },\n})\nexport class EdsCardLabel {\n /** Maximum number of lines before truncation. Omit for no truncation. */\n maxLines = input<number | undefined>(undefined, { transform: numberAttribute });\n\n hostClasses = computed(() => {\n return [\n 'eds-card-label',\n this.maxLines() ? 'eds-card-label--clamped' : '',\n ].join(' ').trim();\n });\n}\n","import { Component, ChangeDetectionStrategy, input, computed, numberAttribute } from '@angular/core';\n\n/**\n * Sublabel/subtitle sub-component for the card.\n * Supports text truncation via `maxLines` input (CSS line-clamp).\n */\n@Component({\n selector: 'eds-card-sublabel',\n template: '<ng-content/>',\n styleUrl: './eds-card-sublabel.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.-webkit-line-clamp]': 'maxLines() || null',\n '[style.line-clamp]': 'maxLines() || null',\n },\n})\nexport class EdsCardSublabel {\n /** Maximum number of lines before truncation. Omit for no truncation. */\n maxLines = input<number | undefined>(undefined, { transform: numberAttribute });\n\n hostClasses = computed(() => {\n return [\n 'eds-card-sublabel',\n this.maxLines() ? 'eds-card-sublabel--clamped' : '',\n ].join(' ').trim();\n });\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Metadata sub-component for the card header.\n * Displays supplementary info (date, author, category, etc.) below the label/sublabel.\n */\n@Component({\n selector: 'eds-card-metadata',\n template: '<ng-content/>',\n styleUrl: './eds-card-metadata.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-metadata' },\n})\nexport class EdsCardMetadata {}\n","import { Component, ChangeDetectionStrategy, input, computed, booleanAttribute, inject } from '@angular/core';\nimport { EDS_CARD_REF } from './eds-card';\n\n/**\n * Optional body content area for the card.\n * Projects any content below the header section.\n * Supports animated collapse/expand via the `collapsed` input.\n * If placed inside a collapsible `eds-card`, automatically reads the card's collapsed state.\n * Use `grow` to make the body fill remaining card height.\n */\n@Component({\n selector: 'eds-card-body',\n template: '<div class=\"eds-card-body__inner\"><ng-content/></div>',\n styleUrl: './eds-card-body.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class EdsCardBody {\n /** Whether the body is collapsed (hidden with animation). Overrides card auto-detection. */\n collapsed = input<boolean | undefined>(undefined, { transform: (v: unknown) => v === undefined ? undefined : booleanAttribute(v) });\n\n /** Whether the body should fill remaining card height. */\n isFullHeight = input(false, { transform: booleanAttribute });\n\n /** Resolved collapsed state: explicit input wins, otherwise reads from parent card. */\n protected isCollapsed = computed(() => {\n const explicit = this.collapsed();\n if (explicit !== undefined) return explicit;\n return this.cardRef?.isCollapsed() ?? false;\n });\n\n hostClasses = computed(() => {\n return [\n 'eds-card-body',\n this.isCollapsed() ? 'eds-card-body--collapsed' : '',\n this.isFullHeight() ? 'eds-card-body--full-height' : '',\n ].join(' ').trim();\n });\n\n private cardRef = inject(EDS_CARD_REF, { optional: true });\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Footer section for the card.\n * Rendered at the bottom with a top border divider.\n */\n@Component({\n selector: 'eds-card-footer',\n template: '<ng-content/>',\n styleUrl: './eds-card-footer.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-footer' },\n})\nexport class EdsCardFooter {}\n","import { EdsCard } from './eds-card';\nimport { EdsCardLink } from './eds-card-link.directive';\nimport { EdsCardHeader } from './eds-card-header';\nimport { EdsCardHeaderEnd } from './eds-card-header-end';\nimport { EdsCardStart } from './eds-card-start';\nimport { EdsCardMedia } from './eds-card-media';\nimport { EdsCardLabel } from './eds-card-label';\nimport { EdsCardSublabel } from './eds-card-sublabel';\nimport { EdsCardMetadata } from './eds-card-metadata';\nimport { EdsCardBody } from './eds-card-body';\nimport { EdsCardFooter } from './eds-card-footer';\n\nexport {\n EdsCard,\n EdsCardLink,\n EdsCardHeader,\n EdsCardHeaderEnd,\n EdsCardStart,\n EdsCardMedia,\n EdsCardLabel,\n EdsCardSublabel,\n EdsCardMetadata,\n EdsCardBody,\n EdsCardFooter,\n};\n\nexport { EDS_CARD_REF } from './eds-card';\n\n/** Convenience array for importing eds-card components. */\nexport const EDS_CARD = [\n EdsCard,\n EdsCardLink,\n EdsCardHeader,\n EdsCardHeaderEnd,\n EdsCardStart,\n EdsCardMedia,\n EdsCardLabel,\n EdsCardSublabel,\n EdsCardMetadata,\n EdsCardBody,\n EdsCardFooter,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-eds-eds-card.mjs","sources":["../../eds-card/eds-card.ts","../../eds-card/eds-card.html","../../eds-card/eds-card-link.directive.ts","../../eds-card/eds-card-header.ts","../../eds-card/eds-card-header.html","../../eds-card/eds-card-header-end.ts","../../eds-card/eds-card-start.ts","../../eds-card/eds-card-media.ts","../../eds-card/eds-card-label.ts","../../eds-card/eds-card-sublabel.ts","../../eds-card/eds-card-metadata.ts","../../eds-card/eds-card-body.ts","../../eds-card/eds-card-footer.ts","../../eds-card/index.ts","../../eds-card/eui-eds-eds-card.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n model,\n output,\n booleanAttribute,\n InjectionToken,\n} from '@angular/core';\nimport { EDS_INPUT_CHECKBOX } from '@eui/eds/eds-input-checkbox';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\n\n/** Lightweight token to expose card collapse state to child components without circular DI. */\nexport const EDS_CARD_REF = new InjectionToken<{ isCollapsed: () => boolean }>('EDS_CARD_REF');\n\n/**\n * Card surface component — a pure visual container.\n *\n * Provides a consistent card surface (background, border-radius, shadow, padding)\n * and projects content via named slots.\n *\n * Supports:\n * - Horizontal layout (`isHorizontal`) — start block on the left with divider\n * - Full height (`isFullHeight`) — fills container height\n * - Selectable (`isSelectable`) — checkbox on the left\n * - Collapsible (`isCollapsible`) — caret toggle in the header end area\n * - Header (`eds-card-header`) — label/sublabel/end layout\n * - Body content area (`eds-card-body`) with animated collapse\n * - Footer (`eds-card-footer`)\n *\n * For making the card interactive, compose with the `edsCardLink` directive.\n */\n@Component({\n selector: 'eds-card',\n templateUrl: './eds-card.html',\n styleUrl: './eds-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [...EDS_INPUT_CHECKBOX, ...EDS_ICON_BUTTON],\n providers: [{ provide: EDS_CARD_REF, useExisting: EdsCard }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': '\"eds-card\"',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-disabled]': 'disabled() || null',\n role: 'article',\n },\n})\nexport class EdsCard {\n /** Accessible label for the card. */\n ariaLabel = input<string>();\n\n /** Whether the card is disabled. */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Whether to use horizontal layout (start block on the left, content on the right). */\n isHorizontal = input(false, { transform: booleanAttribute });\n\n /** Whether the card should fill its container height (for grid layouts). */\n isFullHeight = input(false, { transform: booleanAttribute });\n\n /** Whether to show a selection checkbox. */\n isSelectable = input(false, { transform: booleanAttribute });\n\n /** Two-way bindable selected state. */\n isSelected = model(false);\n\n /** Emitted when the selection state changes. */\n cardSelect = output<boolean>();\n\n /** Whether the card body can be collapsed. */\n isCollapsible = input(false, { transform: booleanAttribute });\n\n /** Two-way bindable collapsed state. */\n isCollapsed = model(false);\n\n /** Emitted when the collapsed state changes. */\n cardCollapse = output<boolean>();\n\n /** Whether the card is in disabled state. Exposed for the link directive to read. */\n isDisabled = computed(() => this.disabled());\n\n protected caretIcon = computed(() => this.isCollapsed() ? 'caret-down' : 'caret-up');\n\n hostClasses = computed(() => {\n return [\n 'eds-card',\n this.isHorizontal() ? 'eds-card--horizontal' : '',\n this.isFullHeight() ? 'eds-card--full-height' : '',\n this.isSelected() ? 'eds-card--selected' : '',\n this.disabled() ? 'eds-card--disabled' : '',\n ].join(' ').trim();\n });\n\n protected onCheckboxChange(): void {\n this.isSelected.set(!this.isSelected());\n this.cardSelect.emit(this.isSelected());\n }\n\n protected toggleCollapse(): void {\n this.isCollapsed.set(!this.isCollapsed());\n this.cardCollapse.emit(this.isCollapsed());\n }\n}\n","<ng-content select=\"eds-card-media\"/>\n@if (isSelectable() && isHorizontal()) {\n <div class=\"eds-card__selection\">\n <input edsInputCheckbox [checked]=\"isSelected()\" (change)=\"onCheckboxChange(); $event.stopPropagation()\" aria-label=\"Select card\"/>\n </div>\n}\n<ng-content select=\"eds-card-start\"/>\n<div class=\"eds-card__content\">\n <div class=\"eds-card__header-row\">\n @if (isSelectable() && !isHorizontal()) {\n <div class=\"eds-card__selection\">\n <input edsInputCheckbox [checked]=\"isSelected()\" (change)=\"onCheckboxChange(); $event.stopPropagation()\" aria-label=\"Select card\"/>\n </div>\n }\n <ng-content select=\"eds-card-header\"/>\n @if (isCollapsible()) {\n <div class=\"eds-card__collapse-toggle\">\n <button edsIconButton\n [icon]=\"caretIcon()\"\n [attr.aria-expanded]=\"!isCollapsed()\"\n ariaLabel=\"Toggle card content\"\n rounded size=\"s\"\n (buttonClick)=\"toggleCollapse()\">\n </button>\n </div>\n }\n </div>\n <ng-content/>\n <ng-content select=\"eds-card-body\"/>\n <ng-content select=\"eds-card-footer\"/>\n</div>\n","import {\n Directive,\n input,\n output,\n computed,\n inject,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { EdsCard } from './eds-card';\n\n/**\n * Directive that makes an `eds-card` interactive (clickable / link).\n *\n * When applied, the card becomes focusable, gains a pointer cursor, hover shadow,\n * and responds to click / Enter / Space.\n *\n * Supports three interaction modes:\n * 1. **Router link** — provide `url` input for internal navigation via Angular Router.\n * 2. **External link** — provide `urlExternal` input for window.open navigation.\n * 3. **Button-like** — no URL provided, just emits `cardClick` for custom handling.\n */\n@Directive({\n selector: 'eds-card[edsCardLink]',\n host: {\n '[class.eds-card--link]': 'true',\n '[attr.tabindex]': 'tabindex()',\n '[attr.role]': 'hostRole()',\n '[style.cursor]': '\"pointer\"',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onKeyActivate($event)',\n '(keydown.space)': 'onKeyActivate($event)',\n },\n})\nexport class EdsCardLink {\n /** Internal route URL for Angular Router navigation. */\n url = input<string>();\n\n /** External URL — opens via window.open. */\n urlExternal = input<string>();\n\n /** Target for external URL. @default '_blank' */\n urlExternalTarget = input('_blank');\n\n /** Event emitted when the card is activated (click, Enter, Space). */\n cardClick = output<Event>();\n\n private card = inject(EdsCard);\n private router = inject(Router);\n\n protected tabindex = computed(() => {\n return this.card.isDisabled() ? '-1' : '0';\n });\n\n /** Role is 'link' when navigating, 'button' when just clickable. */\n protected hostRole = computed(() => {\n if (this.url() || this.urlExternal()) return 'link';\n return 'button';\n });\n\n onClick(event: MouseEvent): void {\n if (this.card.isDisabled()) return;\n this.activate(event);\n }\n\n onKeyActivate(event: Event): void {\n if (this.card.isDisabled()) return;\n event.preventDefault();\n this.activate(event);\n }\n\n private activate(event: Event): void {\n const externalUrl = this.urlExternal();\n const internalUrl = this.url();\n\n if (externalUrl) {\n window.open(externalUrl, this.urlExternalTarget(), 'noopener,noreferrer');\n } else if (internalUrl) {\n this.router.navigateByUrl(internalUrl);\n }\n\n this.cardClick.emit(event);\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Header sub-component for the card.\n * Arranges label/sublabel content on the left and an optional end slot on the right.\n */\n@Component({\n selector: 'eds-card-header',\n templateUrl: './eds-card-header.html',\n styleUrl: './eds-card-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'eds-card-header',\n },\n})\nexport class EdsCardHeader {}\n","<div class=\"eds-card-header__content\">\n <ng-content/>\n</div>\n<div class=\"eds-card-header__end\">\n <ng-content select=\"eds-card-header-end\"/>\n</div>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * End slot for the card header.\n * Positioned on the right side of the header row.\n */\n@Component({\n selector: 'eds-card-header-end',\n template: '<ng-content/>',\n styleUrl: './eds-card-header-end.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-header-end' },\n})\nexport class EdsCardHeaderEnd {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Start block for horizontal card layout.\n * Projects an icon, avatar, or image on the left side of the card, separated by a divider.\n */\n@Component({\n selector: 'eds-card-start',\n template: '<ng-content/>',\n styleUrl: './eds-card-start.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-start' },\n})\nexport class EdsCardStart {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Media block for vertical card layouts.\n * Projects an image (or picture/video) at the top of the card, edge-to-edge.\n * Typically used with an `<img>` element projected inside.\n *\n * Usage:\n * ```html\n * <eds-card>\n * <eds-card-media>\n * <img src=\"...\" alt=\"...\" />\n * </eds-card-media>\n * <eds-card-header>...</eds-card-header>\n * </eds-card>\n * ```\n */\n@Component({\n selector: 'eds-card-media',\n template: '<ng-content/>',\n styleUrl: './eds-card-media.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-media' },\n})\nexport class EdsCardMedia {}\n","import { Component, ChangeDetectionStrategy, input, computed, numberAttribute } from '@angular/core';\n\n/**\n * Label/title sub-component for the card.\n * Supports text truncation via `maxLines` input (CSS line-clamp).\n */\n@Component({\n selector: 'eds-card-label',\n template: '<ng-content/>',\n styleUrl: './eds-card-label.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.-webkit-line-clamp]': 'maxLines() || null',\n '[style.line-clamp]': 'maxLines() || null',\n },\n})\nexport class EdsCardLabel {\n /** Maximum number of lines before truncation. Omit for no truncation. */\n maxLines = input<number | undefined>(undefined, { transform: numberAttribute });\n\n hostClasses = computed(() => {\n return [\n 'eds-card-label',\n this.maxLines() ? 'eds-card-label--clamped' : '',\n ].join(' ').trim();\n });\n}\n","import { Component, ChangeDetectionStrategy, input, computed, numberAttribute } from '@angular/core';\n\n/**\n * Sublabel/subtitle sub-component for the card.\n * Supports text truncation via `maxLines` input (CSS line-clamp).\n */\n@Component({\n selector: 'eds-card-sublabel',\n template: '<ng-content/>',\n styleUrl: './eds-card-sublabel.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.-webkit-line-clamp]': 'maxLines() || null',\n '[style.line-clamp]': 'maxLines() || null',\n },\n})\nexport class EdsCardSublabel {\n /** Maximum number of lines before truncation. Omit for no truncation. */\n maxLines = input<number | undefined>(undefined, { transform: numberAttribute });\n\n hostClasses = computed(() => {\n return [\n 'eds-card-sublabel',\n this.maxLines() ? 'eds-card-sublabel--clamped' : '',\n ].join(' ').trim();\n });\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Metadata sub-component for the card header.\n * Displays supplementary info (date, author, category, etc.) below the label/sublabel.\n */\n@Component({\n selector: 'eds-card-metadata',\n template: '<ng-content/>',\n styleUrl: './eds-card-metadata.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-metadata' },\n})\nexport class EdsCardMetadata {}\n","import { Component, ChangeDetectionStrategy, input, computed, booleanAttribute, inject } from '@angular/core';\nimport { EDS_CARD_REF } from './eds-card';\n\n/**\n * Optional body content area for the card.\n * Projects any content below the header section.\n * Supports animated collapse/expand via the `collapsed` input.\n * If placed inside a collapsible `eds-card`, automatically reads the card's collapsed state.\n * Use `grow` to make the body fill remaining card height.\n */\n@Component({\n selector: 'eds-card-body',\n template: '<div class=\"eds-card-body__inner\"><ng-content/></div>',\n styleUrl: './eds-card-body.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class EdsCardBody {\n /** Whether the body is collapsed (hidden with animation). Overrides card auto-detection. */\n collapsed = input<boolean | undefined>(undefined, { transform: (v: unknown) => v === undefined ? undefined : booleanAttribute(v) });\n\n /** Whether the body should fill remaining card height. */\n isFullHeight = input(false, { transform: booleanAttribute });\n\n /** Resolved collapsed state: explicit input wins, otherwise reads from parent card. */\n protected isCollapsed = computed(() => {\n const explicit = this.collapsed();\n if (explicit !== undefined) return explicit;\n return this.cardRef?.isCollapsed() ?? false;\n });\n\n hostClasses = computed(() => {\n return [\n 'eds-card-body',\n this.isCollapsed() ? 'eds-card-body--collapsed' : '',\n this.isFullHeight() ? 'eds-card-body--full-height' : '',\n ].join(' ').trim();\n });\n\n private cardRef = inject(EDS_CARD_REF, { optional: true });\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Footer section for the card.\n * Rendered at the bottom with a top border divider.\n */\n@Component({\n selector: 'eds-card-footer',\n template: '<ng-content/>',\n styleUrl: './eds-card-footer.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-card-footer' },\n})\nexport class EdsCardFooter {}\n","import { EdsCard } from './eds-card';\nimport { EdsCardLink } from './eds-card-link.directive';\nimport { EdsCardHeader } from './eds-card-header';\nimport { EdsCardHeaderEnd } from './eds-card-header-end';\nimport { EdsCardStart } from './eds-card-start';\nimport { EdsCardMedia } from './eds-card-media';\nimport { EdsCardLabel } from './eds-card-label';\nimport { EdsCardSublabel } from './eds-card-sublabel';\nimport { EdsCardMetadata } from './eds-card-metadata';\nimport { EdsCardBody } from './eds-card-body';\nimport { EdsCardFooter } from './eds-card-footer';\n\nexport {\n EdsCard,\n EdsCardLink,\n EdsCardHeader,\n EdsCardHeaderEnd,\n EdsCardStart,\n EdsCardMedia,\n EdsCardLabel,\n EdsCardSublabel,\n EdsCardMetadata,\n EdsCardBody,\n EdsCardFooter,\n};\n\nexport { EDS_CARD_REF } from './eds-card';\n\n/** Convenience array for importing eds-card components. */\nexport const EDS_CARD = [\n EdsCard,\n EdsCardLink,\n EdsCardHeader,\n EdsCardHeaderEnd,\n EdsCardStart,\n EdsCardMedia,\n EdsCardLabel,\n EdsCardSublabel,\n EdsCardMetadata,\n EdsCardBody,\n EdsCardFooter,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -64,7 +64,7 @@ class EdsDateBlock {
64
64
  ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
65
65
  }
66
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsDateBlock, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EdsDateBlock, isStandalone: true, selector: "eds-date-block", inputs: { blockDate: { classPropertyName: "blockDate", publicName: "blockDate", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.aria-label": "ariaLabel()", "attr.data-e2e": "e2eAttr()" } }, hostDirectives: [{ directive: i1.EdsColorDirective, inputs: ["edsPrimary", "edsPrimary", "edsNeutral", "edsNeutral", "edsColorVariant", "edsColorVariant"] }], ngImport: i0, template: "<time class=\"wrapper\" [attr.datetime]=\"blockDate() | date: 'yyyy-MM-dd'\">\n <span class=\"day-month\" aria-hidden=\"true\">\n <span class=\"day\">{{ blockDate() | date: 'dd': null: locale() }}</span>\n <span class=\"month\">{{ blockDate() | date: 'MMM': null: locale() }}</span>\n </span>\n <span class=\"year\" aria-hidden=\"true\">{{ blockDate() | date: 'yyyy': null: locale() }}</span>\n</time>\n", styles: [".eui-21 :host{--_day-font: var(--eds-f-label-l-semi-bold);--_month-font: var(--eds-f-paragraph-s);--_year-font: var(--eds-f-label-s-semi-bold);--_top-bg: var(--eds-c-surface-primary-subtler);--_bottom-bg: var(--eds-c-surface-primary);--_bottom-color: var(--eds-c-on-surface-primary);display:inline-flex;position:relative}.eui-21 :host .wrapper:before,.eui-21 :host .wrapper:after{background-color:var(--eds-c-surface-default);border-radius:50%;content:\"\";display:block;height:10px;width:10px;position:absolute;top:-5px}.eui-21 :host .wrapper:before{left:var(--eds-sp-m)}.eui-21 :host .wrapper:after{right:var(--eds-sp-m)}.eui-21 :host .wrapper,.eui-21 :host .day-month{display:flex;flex-direction:column;align-items:center}.eui-21 :host .day-month{background-color:var(--_top-bg);padding:var(--eds-sp-xs) var(--eds-sp-l) var(--eds-sp-4xs) var(--eds-sp-l);border-top-left-radius:var(--eds-br-s);border-top-right-radius:var(--eds-br-s);min-width:72px}.eui-21 :host .day{font:var(--_day-font)}.eui-21 :host .month{font:var(--_month-font);text-transform:uppercase}.eui-21 :host .year{background-color:var(--_bottom-bg);color:var(--_bottom-color);font:var(--_year-font);padding:var(--eds-sp-4xs) var(--eds-sp-l);border-bottom-left-radius:var(--eds-br-s);border-bottom-right-radius:var(--eds-br-s);text-align:center}.eui-21 :host.eds-date-block--neutral{--_top-bg: var(--eds-c-surface-neutral-subtler);--_bottom-bg: var(--eds-c-surface-neutral);--_bottom-color: var(--eds-c-on-surface-neutral)}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EdsDateBlock, isStandalone: true, selector: "eds-date-block", inputs: { blockDate: { classPropertyName: "blockDate", publicName: "blockDate", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.aria-label": "ariaLabel()", "attr.data-e2e": "e2eAttr()" } }, hostDirectives: [{ directive: i1.EdsColorDirective, inputs: ["edsPrimary", "edsPrimary", "edsNeutral", "edsNeutral", "edsColorVariant", "edsColorVariant"] }], ngImport: i0, template: "<time class=\"wrapper\" [attr.datetime]=\"blockDate() | date: 'yyyy-MM-dd'\">\n <span class=\"day-month\" aria-hidden=\"true\">\n <span class=\"day\">{{ blockDate() | date: 'dd': null: locale() }}</span>\n <span class=\"month\">{{ blockDate() | date: 'MMM': null: locale() }}</span>\n </span>\n <span class=\"year\" aria-hidden=\"true\">{{ blockDate() | date: 'yyyy': null: locale() }}</span>\n</time>\n", styles: [".eui-21 :host{--_day-font: var(--eds-f-label-l-semibold);--_month-font: var(--eds-f-paragraph-s);--_year-font: var(--eds-f-label-s-semibold);--_top-bg: var(--eds-c-surface-primary-subtler);--_bottom-bg: var(--eds-c-surface-primary);--_bottom-color: var(--eds-c-on-surface-primary);display:inline-flex;position:relative}.eui-21 :host .wrapper:before,.eui-21 :host .wrapper:after{background-color:var(--eds-c-surface-default);border-radius:50%;content:\"\";display:block;height:10px;width:10px;position:absolute;top:-5px}.eui-21 :host .wrapper:before{left:var(--eds-sp-m)}.eui-21 :host .wrapper:after{right:var(--eds-sp-m)}.eui-21 :host .wrapper,.eui-21 :host .day-month{display:flex;flex-direction:column;align-items:center}.eui-21 :host .day-month{background-color:var(--_top-bg);padding:var(--eds-sp-xs) var(--eds-sp-l) var(--eds-sp-4xs) var(--eds-sp-l);border-top-left-radius:var(--eds-br-s);border-top-right-radius:var(--eds-br-s);min-width:72px}.eui-21 :host .day{font:var(--_day-font)}.eui-21 :host .month{font:var(--_month-font);text-transform:uppercase}.eui-21 :host .year{background-color:var(--_bottom-bg);color:var(--_bottom-color);font:var(--_year-font);padding:var(--eds-sp-4xs) var(--eds-sp-l);border-bottom-left-radius:var(--eds-br-s);border-bottom-right-radius:var(--eds-br-s);text-align:center}.eui-21 :host.eds-date-block--neutral{--_top-bg: var(--eds-c-surface-neutral-subtler);--_bottom-bg: var(--eds-c-surface-neutral);--_bottom-color: var(--eds-c-on-surface-neutral)}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
68
68
  }
69
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsDateBlock, decorators: [{
70
70
  type: Component,
@@ -81,7 +81,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
81
81
  '[class]': 'hostClasses()',
82
82
  '[attr.aria-label]': 'ariaLabel()',
83
83
  '[attr.data-e2e]': 'e2eAttr()',
84
- }, template: "<time class=\"wrapper\" [attr.datetime]=\"blockDate() | date: 'yyyy-MM-dd'\">\n <span class=\"day-month\" aria-hidden=\"true\">\n <span class=\"day\">{{ blockDate() | date: 'dd': null: locale() }}</span>\n <span class=\"month\">{{ blockDate() | date: 'MMM': null: locale() }}</span>\n </span>\n <span class=\"year\" aria-hidden=\"true\">{{ blockDate() | date: 'yyyy': null: locale() }}</span>\n</time>\n", styles: [".eui-21 :host{--_day-font: var(--eds-f-label-l-semi-bold);--_month-font: var(--eds-f-paragraph-s);--_year-font: var(--eds-f-label-s-semi-bold);--_top-bg: var(--eds-c-surface-primary-subtler);--_bottom-bg: var(--eds-c-surface-primary);--_bottom-color: var(--eds-c-on-surface-primary);display:inline-flex;position:relative}.eui-21 :host .wrapper:before,.eui-21 :host .wrapper:after{background-color:var(--eds-c-surface-default);border-radius:50%;content:\"\";display:block;height:10px;width:10px;position:absolute;top:-5px}.eui-21 :host .wrapper:before{left:var(--eds-sp-m)}.eui-21 :host .wrapper:after{right:var(--eds-sp-m)}.eui-21 :host .wrapper,.eui-21 :host .day-month{display:flex;flex-direction:column;align-items:center}.eui-21 :host .day-month{background-color:var(--_top-bg);padding:var(--eds-sp-xs) var(--eds-sp-l) var(--eds-sp-4xs) var(--eds-sp-l);border-top-left-radius:var(--eds-br-s);border-top-right-radius:var(--eds-br-s);min-width:72px}.eui-21 :host .day{font:var(--_day-font)}.eui-21 :host .month{font:var(--_month-font);text-transform:uppercase}.eui-21 :host .year{background-color:var(--_bottom-bg);color:var(--_bottom-color);font:var(--_year-font);padding:var(--eds-sp-4xs) var(--eds-sp-l);border-bottom-left-radius:var(--eds-br-s);border-bottom-right-radius:var(--eds-br-s);text-align:center}.eui-21 :host.eds-date-block--neutral{--_top-bg: var(--eds-c-surface-neutral-subtler);--_bottom-bg: var(--eds-c-surface-neutral);--_bottom-color: var(--eds-c-on-surface-neutral)}\n"] }]
84
+ }, template: "<time class=\"wrapper\" [attr.datetime]=\"blockDate() | date: 'yyyy-MM-dd'\">\n <span class=\"day-month\" aria-hidden=\"true\">\n <span class=\"day\">{{ blockDate() | date: 'dd': null: locale() }}</span>\n <span class=\"month\">{{ blockDate() | date: 'MMM': null: locale() }}</span>\n </span>\n <span class=\"year\" aria-hidden=\"true\">{{ blockDate() | date: 'yyyy': null: locale() }}</span>\n</time>\n", styles: [".eui-21 :host{--_day-font: var(--eds-f-label-l-semibold);--_month-font: var(--eds-f-paragraph-s);--_year-font: var(--eds-f-label-s-semibold);--_top-bg: var(--eds-c-surface-primary-subtler);--_bottom-bg: var(--eds-c-surface-primary);--_bottom-color: var(--eds-c-on-surface-primary);display:inline-flex;position:relative}.eui-21 :host .wrapper:before,.eui-21 :host .wrapper:after{background-color:var(--eds-c-surface-default);border-radius:50%;content:\"\";display:block;height:10px;width:10px;position:absolute;top:-5px}.eui-21 :host .wrapper:before{left:var(--eds-sp-m)}.eui-21 :host .wrapper:after{right:var(--eds-sp-m)}.eui-21 :host .wrapper,.eui-21 :host .day-month{display:flex;flex-direction:column;align-items:center}.eui-21 :host .day-month{background-color:var(--_top-bg);padding:var(--eds-sp-xs) var(--eds-sp-l) var(--eds-sp-4xs) var(--eds-sp-l);border-top-left-radius:var(--eds-br-s);border-top-right-radius:var(--eds-br-s);min-width:72px}.eui-21 :host .day{font:var(--_day-font)}.eui-21 :host .month{font:var(--_month-font);text-transform:uppercase}.eui-21 :host .year{background-color:var(--_bottom-bg);color:var(--_bottom-color);font:var(--_year-font);padding:var(--eds-sp-4xs) var(--eds-sp-l);border-bottom-left-radius:var(--eds-br-s);border-bottom-right-radius:var(--eds-br-s);text-align:center}.eui-21 :host.eds-date-block--neutral{--_top-bg: var(--eds-c-surface-neutral-subtler);--_bottom-bg: var(--eds-c-surface-neutral);--_bottom-color: var(--eds-c-on-surface-neutral)}\n"] }]
85
85
  }], propDecorators: { blockDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "blockDate", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], e2eAttr: [{ type: i0.Input, args: [{ isSignal: true, alias: "e2eAttr", required: false }] }] } });
86
86
 
87
87
  /** Convenience array for importing all eds-date-block components. */
@@ -1 +1 @@
1
- {"version":3,"file":"eui-eds-eds-date-block.mjs","sources":["../../eds-date-block/eds-date-block.ts","../../eds-date-block/eds-date-block.html","../../eds-date-block/index.ts","../../eds-date-block/eui-eds-eds-date-block.ts"],"sourcesContent":["import { DatePipe } from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n inject,\n input,\n computed,\n} from '@angular/core';\nimport { EdsColorDirective } from '@eui/eds/shared';\n\n/**\n * A visual date display component that presents dates in a calendar block format\n * with day, month, and year sections.\n *\n * Useful for event listings, timelines, and date-centric interfaces.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eds-date-block [blockDate]=\"eventDate\"></eds-date-block>\n * ```\n *\n * ### With Secondary Color\n * ```html\n * <eds-date-block [blockDate]=\"eventDate\" edsNeutral></eds-date-block>\n * ```\n *\n * ### Notes\n * - Default color is primary\n * - Use `edsNeutral` for the secondary/neutral color variant\n * - `dateFormat` accepts any valid Angular DatePipe format string\n * - Locale can be provided via the `locale` input (defaults to 'en')\n */\n@Component({\n selector: 'eds-date-block',\n templateUrl: './eds-date-block.html',\n styleUrl: './eds-date-block.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePipe],\n hostDirectives: [\n {\n directive: EdsColorDirective,\n inputs: [\n 'edsPrimary',\n 'edsNeutral',\n 'edsColorVariant',\n ],\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsDateBlock {\n /** The date to display in the block. */\n readonly blockDate = input<Date | undefined>(undefined);\n\n /** Locale identifier for date formatting (e.g. 'en', 'fr'). Defaults to 'en'. */\n readonly locale = input('en');\n\n /** Data attribute value for end-to-end testing identification. */\n readonly e2eAttr = input('eds-date-block');\n\n protected colorDirective = inject(EdsColorDirective);\n\n hostClasses = computed(() => {\n const colorClass = this.colorDirective.getCssClass('eds-date-block');\n return [\n 'eds-date-block',\n colorClass || 'eds-date-block--primary',\n ]\n .join(' ')\n .trim();\n });\n\n /** Computed aria-label providing the full date as a single readable string for screen readers. */\n protected ariaLabel = computed(() => {\n const date = this.blockDate();\n if (!date) return null;\n try {\n return new Intl.DateTimeFormat(this.locale(), { dateStyle: 'long' }).format(date);\n } catch {\n return new Intl.DateTimeFormat('en', { dateStyle: 'long' }).format(date);\n }\n });\n}\n","<time class=\"wrapper\" [attr.datetime]=\"blockDate() | date: 'yyyy-MM-dd'\">\n <span class=\"day-month\" aria-hidden=\"true\">\n <span class=\"day\">{{ blockDate() | date: 'dd': null: locale() }}</span>\n <span class=\"month\">{{ blockDate() | date: 'MMM': null: locale() }}</span>\n </span>\n <span class=\"year\" aria-hidden=\"true\">{{ blockDate() | date: 'yyyy': null: locale() }}</span>\n</time>\n","import { EdsDateBlock } from './eds-date-block';\n\nexport { EdsDateBlock };\n\n/** Convenience array for importing all eds-date-block components. */\nexport const EDS_DATE_BLOCK = [\n EdsDateBlock,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-eds-eds-date-block.mjs","sources":["../../eds-date-block/eds-date-block.ts","../../eds-date-block/eds-date-block.html","../../eds-date-block/index.ts","../../eds-date-block/eui-eds-eds-date-block.ts"],"sourcesContent":["import { DatePipe } from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n inject,\n input,\n computed,\n} from '@angular/core';\nimport { EdsColorDirective } from '@eui/eds/shared';\n\n/**\n * A visual date display component that presents dates in a calendar block format\n * with day, month, and year sections.\n *\n * Useful for event listings, timelines, and date-centric interfaces.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eds-date-block [blockDate]=\"eventDate\"></eds-date-block>\n * ```\n *\n * ### With Secondary Color\n * ```html\n * <eds-date-block [blockDate]=\"eventDate\" edsNeutral></eds-date-block>\n * ```\n *\n * ### Notes\n * - Default color is primary\n * - Use `edsNeutral` for the secondary/neutral color variant\n * - `dateFormat` accepts any valid Angular DatePipe format string\n * - Locale can be provided via the `locale` input (defaults to 'en')\n */\n@Component({\n selector: 'eds-date-block',\n templateUrl: './eds-date-block.html',\n styleUrl: './eds-date-block.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePipe],\n hostDirectives: [\n {\n directive: EdsColorDirective,\n inputs: [\n 'edsPrimary',\n 'edsNeutral',\n 'edsColorVariant',\n ],\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsDateBlock {\n /** The date to display in the block. */\n readonly blockDate = input<Date | undefined>(undefined);\n\n /** Locale identifier for date formatting (e.g. 'en', 'fr'). Defaults to 'en'. */\n readonly locale = input('en');\n\n /** Data attribute value for end-to-end testing identification. */\n readonly e2eAttr = input('eds-date-block');\n\n protected colorDirective = inject(EdsColorDirective);\n\n hostClasses = computed(() => {\n const colorClass = this.colorDirective.getCssClass('eds-date-block');\n return [\n 'eds-date-block',\n colorClass || 'eds-date-block--primary',\n ]\n .join(' ')\n .trim();\n });\n\n /** Computed aria-label providing the full date as a single readable string for screen readers. */\n protected ariaLabel = computed(() => {\n const date = this.blockDate();\n if (!date) return null;\n try {\n return new Intl.DateTimeFormat(this.locale(), { dateStyle: 'long' }).format(date);\n } catch {\n return new Intl.DateTimeFormat('en', { dateStyle: 'long' }).format(date);\n }\n });\n}\n","<time class=\"wrapper\" [attr.datetime]=\"blockDate() | date: 'yyyy-MM-dd'\">\n <span class=\"day-month\" aria-hidden=\"true\">\n <span class=\"day\">{{ blockDate() | date: 'dd': null: locale() }}</span>\n <span class=\"month\">{{ blockDate() | date: 'MMM': null: locale() }}</span>\n </span>\n <span class=\"year\" aria-hidden=\"true\">{{ blockDate() | date: 'yyyy': null: locale() }}</span>\n</time>\n","import { EdsDateBlock } from './eds-date-block';\n\nexport { EdsDateBlock };\n\n/** Convenience array for importing all eds-date-block components. */\nexport const EDS_DATE_BLOCK = [\n EdsDateBlock,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -326,13 +326,13 @@ class EdsDatepicker {
326
326
  }
327
327
  }
328
328
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsDatepicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
329
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EdsDatepicker, isStandalone: true, selector: "eds-datepicker", inputs: { e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isDatetimepicker: { classPropertyName: "isDatetimepicker", publicName: "isDatetimepicker", isSignal: true, isRequired: false, transformFunction: null }, hasSeconds: { classPropertyName: "hasSeconds", publicName: "hasSeconds", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dateChange: "dateChange", value: "valueChange" }, host: { properties: { "attr.data-e2e": "e2eAttr()" } }, ngImport: i0, template: "<div edsInputGroup class=\"eds-datepicker__group\">\n <div edsInputGroupAddon>\n <input edsInputText\n [edsClearable]=\"false\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n (click)=\"onInputClick()\"/>\n @if (!readonly() && !disabled()) {\n <button edsButton edsButtonSecondary edsNeutral edsSizeS\n type=\"button\"\n [attr.aria-label]=\"'Open calendar'\"\n (click)=\"toggle()\">\n <eds-icon icon=\"calendar-blank:core\"/>\n </button>\n }\n </div>\n</div>\n\n@if (isOpen()) {\n <div class=\"eds-datepicker__dropdown\" [class.eds-datepicker__dropdown--up]=\"dropUp()\" (click)=\"$event.stopPropagation()\">\n <div class=\"eds-datepicker__header\">\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"prevMonth()\" aria-label=\"Previous month\">\u2039</button>\n <span class=\"eds-datepicker__month-label\">{{ monthLabel() }}</span>\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"nextMonth()\" aria-label=\"Next month\">\u203A</button>\n </div>\n <div class=\"eds-datepicker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"eds-datepicker__weekday\">{{ day }}</span>\n }\n </div>\n <div class=\"eds-datepicker__days\">\n @for (day of calendarDays(); track $index) {\n @if (day === null) {\n <span class=\"eds-datepicker__day eds-datepicker__day--empty\"></span>\n } @else {\n <button class=\"eds-datepicker__day\"\n type=\"button\"\n [class.eds-datepicker__day--today]=\"isToday(day)\"\n [class.eds-datepicker__day--selected]=\"isSelected(day)\"\n [class.eds-datepicker__day--outside]=\"isOutsideRange(day)\"\n [disabled]=\"isOutsideRange(day)\"\n (click)=\"selectDay(day)\">\n {{ adapter.getDate(day) }}\n </button>\n }\n }\n </div>\n\n @if (isDatetimepicker()) {\n <div class=\"eds-datepicker__time\">\n <eds-timepicker [hasSeconds]=\"hasSeconds()\" [disabled]=\"disabled()\" (timeChange)=\"onTimeChange($event)\"/>\n </div>\n }\n </div>\n}\n", styles: [".eui-21 :host{display:inline-block;position:relative;width:100%}.eui-21 :host .eds-datepicker__group{margin-bottom:0}.eui-21 :host .eds-datepicker__dropdown{position:absolute;top:100%;left:0;z-index:1000;margin-top:var(--eds-sp-3xs);background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-divider);border-radius:var(--eds-br-m);box-shadow:var(--eds-sh-2);padding:var(--eds-sp-s);width:280px}.eui-21 :host .eds-datepicker__dropdown--up{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--eds-sp-3xs)}.eui-21 :host .eds-datepicker__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--eds-sp-xs)}.eui-21 :host .eds-datepicker__month-label{font:var(--eds-f-label-m-semi-bold);color:var(--eds-c-foreground-default)}.eui-21 :host .eds-datepicker__nav-btn{background:none;border:none;cursor:pointer;font-size:18px;padding:var(--eds-sp-3xs) var(--eds-sp-xs);border-radius:var(--eds-br-xs);color:var(--eds-c-foreground-subtle)}.eui-21 :host .eds-datepicker__nav-btn:hover{background-color:var(--eds-c-surface-neutral-subtler);color:var(--eds-c-foreground-default)}.eui-21 :host .eds-datepicker__nav-btn:focus-visible{outline:2px solid var(--eds-c-focus-default, #0e47cb);outline-offset:1px}.eui-21 :host .eds-datepicker__weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:var(--eds-sp-3xs)}.eui-21 :host .eds-datepicker__weekday{font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground-subtler);padding:var(--eds-sp-3xs) 0}.eui-21 :host .eds-datepicker__days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.eui-21 :host .eds-datepicker__day{background:none;border:none;cursor:pointer;font:var(--eds-f-paragraph-s);padding:var(--eds-sp-3xs);border-radius:var(--eds-br-xs);text-align:center;min-height:32px;display:flex;align-items:center;justify-content:center}.eui-21 :host .eds-datepicker__day:hover:not(:disabled){background-color:var(--eds-c-surface-neutral-subtler)}.eui-21 :host .eds-datepicker__day--today{font-weight:700;border:var(--eds-bw-xs) solid var(--eds-c-border-primary)}.eui-21 :host .eds-datepicker__day--selected{background-color:var(--eds-c-surface-primary)!important;color:var(--eds-c-on-surface-primary);font-weight:600}.eui-21 :host .eds-datepicker__day--outside{color:var(--eds-c-foreground-subtler);opacity:.4;cursor:default}.eui-21 :host .eds-datepicker__day--empty{cursor:default}.eui-21 :host .eds-datepicker__day:focus-visible{outline:2px solid var(--eds-c-focus-default, #0e47cb);outline-offset:1px}.eui-21 :host .eds-datepicker__time{margin-top:var(--eds-sp-s);padding-top:var(--eds-sp-s);border-top:var(--eds-bw-xs) solid var(--eds-c-border-divider);display:flex;justify-content:center}\n"], dependencies: [{ kind: "component", type: i1.EdsIcon, selector: "eds-icon, span[edsIcon]", inputs: ["icon", "set", "color", "size", "ariaLabel", "ariaHidden", "rounded", "isLoading"] }, { kind: "component", type: i2.EdsInputText, selector: "input[edsInputText]", inputs: ["e2eAttr", "disabled", "readonly", "isInvalid"] }, { kind: "component", type: i3.EdsInputGroup, selector: "div[edsInputGroup]", inputs: ["e2eAttr"] }, { kind: "component", type: i3.EdsInputGroupAddon, selector: "div[edsInputGroupAddon], eds-input-group-addon", inputs: ["e2eAttr"] }, { kind: "component", type: i4.EdsButton, selector: "button[edsButton]", inputs: ["e2eAttr", "id", "edsDisabled", "edsBlockButton", "edsIconButton", "edsAvatarButton", "edsLineWrap", "edsButtonPrimary", "edsButtonSecondary", "edsButtonTertiary", "edsButtonRounded", "edsTypeVariant", "isChecked"] }, { kind: "component", type: i5.EdsTimepicker, selector: "eds-timepicker", inputs: ["e2eAttr", "stepHours", "stepMinutes", "stepSeconds", "hasSeconds", "disabled", "readonly"], outputs: ["timeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
329
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EdsDatepicker, isStandalone: true, selector: "eds-datepicker", inputs: { e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isDatetimepicker: { classPropertyName: "isDatetimepicker", publicName: "isDatetimepicker", isSignal: true, isRequired: false, transformFunction: null }, hasSeconds: { classPropertyName: "hasSeconds", publicName: "hasSeconds", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dateChange: "dateChange", value: "valueChange" }, host: { properties: { "attr.data-e2e": "e2eAttr()" } }, ngImport: i0, template: "<div edsInputGroup class=\"eds-datepicker__group\">\n <div edsInputGroupAddon>\n <input edsInputText\n [edsClearable]=\"false\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n (click)=\"onInputClick()\"/>\n @if (!readonly() && !disabled()) {\n <button edsButton edsButtonSecondary edsNeutral edsSizeS\n type=\"button\"\n [attr.aria-label]=\"'Open calendar'\"\n (click)=\"toggle()\">\n <eds-icon icon=\"calendar-blank:core\"/>\n </button>\n }\n </div>\n</div>\n\n@if (isOpen()) {\n <div class=\"eds-datepicker__dropdown\" [class.eds-datepicker__dropdown--up]=\"dropUp()\" (click)=\"$event.stopPropagation()\">\n <div class=\"eds-datepicker__header\">\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"prevMonth()\" aria-label=\"Previous month\">\u2039</button>\n <span class=\"eds-datepicker__month-label\">{{ monthLabel() }}</span>\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"nextMonth()\" aria-label=\"Next month\">\u203A</button>\n </div>\n <div class=\"eds-datepicker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"eds-datepicker__weekday\">{{ day }}</span>\n }\n </div>\n <div class=\"eds-datepicker__days\">\n @for (day of calendarDays(); track $index) {\n @if (day === null) {\n <span class=\"eds-datepicker__day eds-datepicker__day--empty\"></span>\n } @else {\n <button class=\"eds-datepicker__day\"\n type=\"button\"\n [class.eds-datepicker__day--today]=\"isToday(day)\"\n [class.eds-datepicker__day--selected]=\"isSelected(day)\"\n [class.eds-datepicker__day--outside]=\"isOutsideRange(day)\"\n [disabled]=\"isOutsideRange(day)\"\n (click)=\"selectDay(day)\">\n {{ adapter.getDate(day) }}\n </button>\n }\n }\n </div>\n\n @if (isDatetimepicker()) {\n <div class=\"eds-datepicker__time\">\n <eds-timepicker [hasSeconds]=\"hasSeconds()\" [disabled]=\"disabled()\" (timeChange)=\"onTimeChange($event)\"/>\n </div>\n }\n </div>\n}\n", styles: [".eui-21 :host{display:inline-block;position:relative;width:100%}.eui-21 :host .eds-datepicker__group{margin-bottom:0}.eui-21 :host .eds-datepicker__dropdown{position:absolute;top:100%;left:0;z-index:1000;margin-top:var(--eds-sp-3xs);background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-divider);border-radius:var(--eds-br-m);box-shadow:var(--eds-sh-2);padding:var(--eds-sp-s);width:280px}.eui-21 :host .eds-datepicker__dropdown--up{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--eds-sp-3xs)}.eui-21 :host .eds-datepicker__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--eds-sp-xs)}.eui-21 :host .eds-datepicker__month-label{font:var(--eds-f-label-m-semibold);color:var(--eds-c-foreground-default)}.eui-21 :host .eds-datepicker__nav-btn{background:none;border:none;cursor:pointer;font-size:18px;padding:var(--eds-sp-3xs) var(--eds-sp-xs);border-radius:var(--eds-br-xs);color:var(--eds-c-foreground-subtle)}.eui-21 :host .eds-datepicker__nav-btn:hover{background-color:var(--eds-c-surface-neutral-subtler);color:var(--eds-c-foreground-default)}.eui-21 :host .eds-datepicker__nav-btn:focus-visible{outline:2px solid var(--eds-c-focus-default, #0e47cb);outline-offset:1px}.eui-21 :host .eds-datepicker__weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:var(--eds-sp-3xs)}.eui-21 :host .eds-datepicker__weekday{font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground-subtler);padding:var(--eds-sp-3xs) 0}.eui-21 :host .eds-datepicker__days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.eui-21 :host .eds-datepicker__day{background:none;border:none;cursor:pointer;font:var(--eds-f-paragraph-s);padding:var(--eds-sp-3xs);border-radius:var(--eds-br-xs);text-align:center;min-height:32px;display:flex;align-items:center;justify-content:center}.eui-21 :host .eds-datepicker__day:hover:not(:disabled){background-color:var(--eds-c-surface-neutral-subtler)}.eui-21 :host .eds-datepicker__day--today{font-weight:700;border:var(--eds-bw-xs) solid var(--eds-c-border-primary)}.eui-21 :host .eds-datepicker__day--selected{background-color:var(--eds-c-surface-primary)!important;color:var(--eds-c-on-surface-primary);font-weight:600}.eui-21 :host .eds-datepicker__day--outside{color:var(--eds-c-foreground-subtler);opacity:.4;cursor:default}.eui-21 :host .eds-datepicker__day--empty{cursor:default}.eui-21 :host .eds-datepicker__day:focus-visible{outline:2px solid var(--eds-c-focus-default, #0e47cb);outline-offset:1px}.eui-21 :host .eds-datepicker__time{margin-top:var(--eds-sp-s);padding-top:var(--eds-sp-s);border-top:var(--eds-bw-xs) solid var(--eds-c-border-divider);display:flex;justify-content:center}\n"], dependencies: [{ kind: "component", type: i1.EdsIcon, selector: "eds-icon, span[edsIcon]", inputs: ["icon", "set", "color", "size", "ariaLabel", "ariaHidden", "rounded", "isLoading"] }, { kind: "component", type: i2.EdsInputText, selector: "input[edsInputText]", inputs: ["e2eAttr", "disabled", "readonly", "isInvalid"] }, { kind: "component", type: i3.EdsInputGroup, selector: "div[edsInputGroup]", inputs: ["e2eAttr"] }, { kind: "component", type: i3.EdsInputGroupAddon, selector: "div[edsInputGroupAddon], eds-input-group-addon", inputs: ["e2eAttr"] }, { kind: "component", type: i4.EdsButton, selector: "button[edsButton]", inputs: ["e2eAttr", "id", "edsDisabled", "edsBlockButton", "edsIconButton", "edsAvatarButton", "edsLineWrap", "edsButtonPrimary", "edsButtonSecondary", "edsButtonTertiary", "edsButtonRounded", "edsTypeVariant", "isChecked"] }, { kind: "component", type: i5.EdsTimepicker, selector: "eds-timepicker", inputs: ["e2eAttr", "stepHours", "stepMinutes", "stepSeconds", "hasSeconds", "disabled", "readonly"], outputs: ["timeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
330
330
  }
331
331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsDatepicker, decorators: [{
332
332
  type: Component,
333
333
  args: [{ selector: 'eds-datepicker', changeDetection: ChangeDetectionStrategy.OnPush, imports: [...EDS_ICON, ...EDS_INPUT_TEXT, ...EDS_INPUT_GROUP, ...EDS_BUTTON, ...EDS_TIMEPICKER], host: {
334
334
  '[attr.data-e2e]': 'e2eAttr()',
335
- }, template: "<div edsInputGroup class=\"eds-datepicker__group\">\n <div edsInputGroupAddon>\n <input edsInputText\n [edsClearable]=\"false\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n (click)=\"onInputClick()\"/>\n @if (!readonly() && !disabled()) {\n <button edsButton edsButtonSecondary edsNeutral edsSizeS\n type=\"button\"\n [attr.aria-label]=\"'Open calendar'\"\n (click)=\"toggle()\">\n <eds-icon icon=\"calendar-blank:core\"/>\n </button>\n }\n </div>\n</div>\n\n@if (isOpen()) {\n <div class=\"eds-datepicker__dropdown\" [class.eds-datepicker__dropdown--up]=\"dropUp()\" (click)=\"$event.stopPropagation()\">\n <div class=\"eds-datepicker__header\">\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"prevMonth()\" aria-label=\"Previous month\">\u2039</button>\n <span class=\"eds-datepicker__month-label\">{{ monthLabel() }}</span>\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"nextMonth()\" aria-label=\"Next month\">\u203A</button>\n </div>\n <div class=\"eds-datepicker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"eds-datepicker__weekday\">{{ day }}</span>\n }\n </div>\n <div class=\"eds-datepicker__days\">\n @for (day of calendarDays(); track $index) {\n @if (day === null) {\n <span class=\"eds-datepicker__day eds-datepicker__day--empty\"></span>\n } @else {\n <button class=\"eds-datepicker__day\"\n type=\"button\"\n [class.eds-datepicker__day--today]=\"isToday(day)\"\n [class.eds-datepicker__day--selected]=\"isSelected(day)\"\n [class.eds-datepicker__day--outside]=\"isOutsideRange(day)\"\n [disabled]=\"isOutsideRange(day)\"\n (click)=\"selectDay(day)\">\n {{ adapter.getDate(day) }}\n </button>\n }\n }\n </div>\n\n @if (isDatetimepicker()) {\n <div class=\"eds-datepicker__time\">\n <eds-timepicker [hasSeconds]=\"hasSeconds()\" [disabled]=\"disabled()\" (timeChange)=\"onTimeChange($event)\"/>\n </div>\n }\n </div>\n}\n", styles: [".eui-21 :host{display:inline-block;position:relative;width:100%}.eui-21 :host .eds-datepicker__group{margin-bottom:0}.eui-21 :host .eds-datepicker__dropdown{position:absolute;top:100%;left:0;z-index:1000;margin-top:var(--eds-sp-3xs);background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-divider);border-radius:var(--eds-br-m);box-shadow:var(--eds-sh-2);padding:var(--eds-sp-s);width:280px}.eui-21 :host .eds-datepicker__dropdown--up{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--eds-sp-3xs)}.eui-21 :host .eds-datepicker__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--eds-sp-xs)}.eui-21 :host .eds-datepicker__month-label{font:var(--eds-f-label-m-semi-bold);color:var(--eds-c-foreground-default)}.eui-21 :host .eds-datepicker__nav-btn{background:none;border:none;cursor:pointer;font-size:18px;padding:var(--eds-sp-3xs) var(--eds-sp-xs);border-radius:var(--eds-br-xs);color:var(--eds-c-foreground-subtle)}.eui-21 :host .eds-datepicker__nav-btn:hover{background-color:var(--eds-c-surface-neutral-subtler);color:var(--eds-c-foreground-default)}.eui-21 :host .eds-datepicker__nav-btn:focus-visible{outline:2px solid var(--eds-c-focus-default, #0e47cb);outline-offset:1px}.eui-21 :host .eds-datepicker__weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:var(--eds-sp-3xs)}.eui-21 :host .eds-datepicker__weekday{font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground-subtler);padding:var(--eds-sp-3xs) 0}.eui-21 :host .eds-datepicker__days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.eui-21 :host .eds-datepicker__day{background:none;border:none;cursor:pointer;font:var(--eds-f-paragraph-s);padding:var(--eds-sp-3xs);border-radius:var(--eds-br-xs);text-align:center;min-height:32px;display:flex;align-items:center;justify-content:center}.eui-21 :host .eds-datepicker__day:hover:not(:disabled){background-color:var(--eds-c-surface-neutral-subtler)}.eui-21 :host .eds-datepicker__day--today{font-weight:700;border:var(--eds-bw-xs) solid var(--eds-c-border-primary)}.eui-21 :host .eds-datepicker__day--selected{background-color:var(--eds-c-surface-primary)!important;color:var(--eds-c-on-surface-primary);font-weight:600}.eui-21 :host .eds-datepicker__day--outside{color:var(--eds-c-foreground-subtler);opacity:.4;cursor:default}.eui-21 :host .eds-datepicker__day--empty{cursor:default}.eui-21 :host .eds-datepicker__day:focus-visible{outline:2px solid var(--eds-c-focus-default, #0e47cb);outline-offset:1px}.eui-21 :host .eds-datepicker__time{margin-top:var(--eds-sp-s);padding-top:var(--eds-sp-s);border-top:var(--eds-bw-xs) solid var(--eds-c-border-divider);display:flex;justify-content:center}\n"] }]
335
+ }, template: "<div edsInputGroup class=\"eds-datepicker__group\">\n <div edsInputGroupAddon>\n <input edsInputText\n [edsClearable]=\"false\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n (click)=\"onInputClick()\"/>\n @if (!readonly() && !disabled()) {\n <button edsButton edsButtonSecondary edsNeutral edsSizeS\n type=\"button\"\n [attr.aria-label]=\"'Open calendar'\"\n (click)=\"toggle()\">\n <eds-icon icon=\"calendar-blank:core\"/>\n </button>\n }\n </div>\n</div>\n\n@if (isOpen()) {\n <div class=\"eds-datepicker__dropdown\" [class.eds-datepicker__dropdown--up]=\"dropUp()\" (click)=\"$event.stopPropagation()\">\n <div class=\"eds-datepicker__header\">\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"prevMonth()\" aria-label=\"Previous month\">\u2039</button>\n <span class=\"eds-datepicker__month-label\">{{ monthLabel() }}</span>\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"nextMonth()\" aria-label=\"Next month\">\u203A</button>\n </div>\n <div class=\"eds-datepicker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"eds-datepicker__weekday\">{{ day }}</span>\n }\n </div>\n <div class=\"eds-datepicker__days\">\n @for (day of calendarDays(); track $index) {\n @if (day === null) {\n <span class=\"eds-datepicker__day eds-datepicker__day--empty\"></span>\n } @else {\n <button class=\"eds-datepicker__day\"\n type=\"button\"\n [class.eds-datepicker__day--today]=\"isToday(day)\"\n [class.eds-datepicker__day--selected]=\"isSelected(day)\"\n [class.eds-datepicker__day--outside]=\"isOutsideRange(day)\"\n [disabled]=\"isOutsideRange(day)\"\n (click)=\"selectDay(day)\">\n {{ adapter.getDate(day) }}\n </button>\n }\n }\n </div>\n\n @if (isDatetimepicker()) {\n <div class=\"eds-datepicker__time\">\n <eds-timepicker [hasSeconds]=\"hasSeconds()\" [disabled]=\"disabled()\" (timeChange)=\"onTimeChange($event)\"/>\n </div>\n }\n </div>\n}\n", styles: [".eui-21 :host{display:inline-block;position:relative;width:100%}.eui-21 :host .eds-datepicker__group{margin-bottom:0}.eui-21 :host .eds-datepicker__dropdown{position:absolute;top:100%;left:0;z-index:1000;margin-top:var(--eds-sp-3xs);background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-divider);border-radius:var(--eds-br-m);box-shadow:var(--eds-sh-2);padding:var(--eds-sp-s);width:280px}.eui-21 :host .eds-datepicker__dropdown--up{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--eds-sp-3xs)}.eui-21 :host .eds-datepicker__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--eds-sp-xs)}.eui-21 :host .eds-datepicker__month-label{font:var(--eds-f-label-m-semibold);color:var(--eds-c-foreground-default)}.eui-21 :host .eds-datepicker__nav-btn{background:none;border:none;cursor:pointer;font-size:18px;padding:var(--eds-sp-3xs) var(--eds-sp-xs);border-radius:var(--eds-br-xs);color:var(--eds-c-foreground-subtle)}.eui-21 :host .eds-datepicker__nav-btn:hover{background-color:var(--eds-c-surface-neutral-subtler);color:var(--eds-c-foreground-default)}.eui-21 :host .eds-datepicker__nav-btn:focus-visible{outline:2px solid var(--eds-c-focus-default, #0e47cb);outline-offset:1px}.eui-21 :host .eds-datepicker__weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:var(--eds-sp-3xs)}.eui-21 :host .eds-datepicker__weekday{font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground-subtler);padding:var(--eds-sp-3xs) 0}.eui-21 :host .eds-datepicker__days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.eui-21 :host .eds-datepicker__day{background:none;border:none;cursor:pointer;font:var(--eds-f-paragraph-s);padding:var(--eds-sp-3xs);border-radius:var(--eds-br-xs);text-align:center;min-height:32px;display:flex;align-items:center;justify-content:center}.eui-21 :host .eds-datepicker__day:hover:not(:disabled){background-color:var(--eds-c-surface-neutral-subtler)}.eui-21 :host .eds-datepicker__day--today{font-weight:700;border:var(--eds-bw-xs) solid var(--eds-c-border-primary)}.eui-21 :host .eds-datepicker__day--selected{background-color:var(--eds-c-surface-primary)!important;color:var(--eds-c-on-surface-primary);font-weight:600}.eui-21 :host .eds-datepicker__day--outside{color:var(--eds-c-foreground-subtler);opacity:.4;cursor:default}.eui-21 :host .eds-datepicker__day--empty{cursor:default}.eui-21 :host .eds-datepicker__day:focus-visible{outline:2px solid var(--eds-c-focus-default, #0e47cb);outline-offset:1px}.eui-21 :host .eds-datepicker__time{margin-top:var(--eds-sp-s);padding-top:var(--eds-sp-s);border-top:var(--eds-bw-xs) solid var(--eds-c-border-divider);display:flex;justify-content:center}\n"] }]
336
336
  }], ctorParameters: () => [], propDecorators: { e2eAttr: [{ type: i0.Input, args: [{ isSignal: true, alias: "e2eAttr", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], dateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFormat", required: false }] }], minDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDate", required: false }] }], maxDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDate", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], isDatetimepicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDatetimepicker", required: false }] }], hasSeconds: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasSeconds", required: false }] }], dateChange: [{ type: i0.Output, args: ["dateChange"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
337
337
 
338
338
  // Luxon is expected to be available as a peer dependency
@@ -1 +1 @@
1
- {"version":3,"file":"eui-eds-eds-datepicker.mjs","sources":["../../eds-datepicker/eds-date-adapter.ts","../../eds-datepicker/eds-datepicker.ts","../../eds-datepicker/eds-datepicker.html","../../eds-datepicker/eds-luxon-date-adapter.ts","../../eds-datepicker/index.ts","../../eds-datepicker/eui-eds-eds-datepicker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Abstract date adapter interface for eds-datepicker.\n * Implement this to support different date libraries (native Date, Luxon, etc.)\n */\nexport interface EdsDateAdapter<D = unknown> {\n /** Create a date from year, month (0-based), day. */\n create(year: number, month: number, day: number): D;\n /** Get today's date. */\n today(): D;\n /** Get the year of a date. */\n getYear(date: D): number;\n /** Get the month (0-based) of a date. */\n getMonth(date: D): number;\n /** Get the day of the month. */\n getDate(date: D): number;\n /** Get day of week (1=Monday, 7=Sunday). */\n getDayOfWeek(date: D): number;\n /** Get number of days in the given month. */\n getDaysInMonth(date: D): number;\n /** Add months to a date. */\n addMonths(date: D, months: number): D;\n /** Format a date for display (dd/mm/yyyy by default). */\n format(date: D, formatStr?: string): string;\n /** Parse a string into a date. Returns null if invalid. */\n parse(value: string, formatStr?: string): D | null;\n /** Check if a date is before another. */\n isBefore(date: D, compare: D): boolean;\n /** Check if a date is after another. */\n isAfter(date: D, compare: D): boolean;\n /** Check if two dates are the same day. */\n isSameDay(a: D, b: D): boolean;\n /** Check if a value is a valid date. */\n isValid(date: unknown): date is D;\n}\n\n/** Injection token for the EDS date adapter. */\nexport const EDS_DATE_ADAPTER = new InjectionToken<EdsDateAdapter>('EDS_DATE_ADAPTER');\n\n/**\n * Default native Date adapter.\n */\nexport class EdsNativeDateAdapter implements EdsDateAdapter<Date> {\n create(year: number, month: number, day: number): Date {\n return new Date(year, month, day);\n }\n\n today(): Date {\n return new Date();\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n // Convert Sunday=0 to Monday=1...Sunday=7\n const dow = date.getDay();\n return dow === 0 ? 7 : dow;\n }\n\n getDaysInMonth(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n }\n\n addMonths(date: Date, months: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n }\n\n format(date: Date, _formatStr?: string): string {\n const d = String(date.getDate()).padStart(2, '0');\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const y = date.getFullYear();\n return `${d}/${m}/${y}`;\n }\n\n parse(value: string, _formatStr?: string): Date | null {\n const parts = value.split('/');\n if (parts.length !== 3) {\n return null;\n }\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n if (isNaN(day) || isNaN(month) || isNaN(year)) {\n return null;\n }\n const date = new Date(year, month, day);\n if (date.getDate() !== day || date.getMonth() !== month || date.getFullYear() !== year) {\n return null;\n }\n return date;\n }\n\n isBefore(date: Date, compare: Date): boolean {\n return date.getTime() < compare.getTime();\n }\n\n isAfter(date: Date, compare: Date): boolean {\n return date.getTime() > compare.getTime();\n }\n\n isSameDay(a: Date, b: Date): boolean {\n return a.getDate() === b.getDate() &&\n a.getMonth() === b.getMonth() &&\n a.getFullYear() === b.getFullYear();\n }\n\n isValid(date: unknown): date is Date {\n return date instanceof Date && !isNaN(date.getTime());\n }\n}\n\n/** Provider helper for using the native Date adapter. */\nexport function provideEdsNativeDateAdapter(): { provide: typeof EDS_DATE_ADAPTER; useClass: typeof EdsNativeDateAdapter } {\n return { provide: EDS_DATE_ADAPTER, useClass: EdsNativeDateAdapter };\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n model,\n signal,\n computed,\n booleanAttribute,\n inject,\n ElementRef,\n HostListener,\n OnDestroy,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_INPUT_TEXT } from '@eui/eds/eds-input-text';\nimport { EDS_INPUT_GROUP } from '@eui/eds/eds-input-group';\nimport { EDS_BUTTON } from '@eui/eds/eds-button';\nimport { EDS_TIMEPICKER } from '@eui/eds/eds-timepicker';\nimport { EDS_DATE_ADAPTER, EdsDateAdapter, EdsNativeDateAdapter } from './eds-date-adapter';\n\n@Component({\n selector: 'eds-datepicker',\n templateUrl: './eds-datepicker.html',\n styleUrl: './eds-datepicker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [...EDS_ICON, ...EDS_INPUT_TEXT, ...EDS_INPUT_GROUP, ...EDS_BUTTON, ...EDS_TIMEPICKER],\n host: {\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsDatepicker implements ControlValueAccessor, OnDestroy {\n /** Data attribute for e2e testing. */\n e2eAttr = input('eds-datepicker');\n\n /** Input element id. */\n inputId = input('eds-datepicker-input');\n\n /** Placeholder text. */\n placeholder = input('dd/mm/yyyy');\n\n /** Aria label for the input. */\n ariaLabel = input('Date input');\n\n /** Date format for display (default: dd/mm/yyyy). */\n dateFormat = input('dd/mm/yyyy');\n\n /** Minimum selectable date. */\n minDate = input<Date | null>(null);\n\n /** Maximum selectable date. */\n maxDate = input<Date | null>(null);\n\n /** Whether the datepicker is disabled. */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the datepicker is readonly. */\n readonly = input(false, { transform: booleanAttribute });\n\n /** Whether to show a timepicker alongside the calendar. */\n isDatetimepicker = input(false, { transform: booleanAttribute });\n\n /** Whether the timepicker shows seconds. */\n hasSeconds = input(false, { transform: booleanAttribute });\n\n /** Emitted when a date is selected. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dateChange = output<any>();\n\n /** The selected date value. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value = model<any>(null);\n\n /** Whether the calendar dropdown is open. */\n isOpen = signal(false);\n\n /** Whether the dropdown should open above the input. */\n dropUp = signal(false);\n\n /** Current viewed month/year for the calendar. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n viewDate = signal<any>(null);\n\n /** Weekday header labels. */\n weekDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\n /** Current time selection (for datetime mode). */\n selectedTime = signal<{ hours: number; minutes: number; seconds?: number }>({ hours: 0, minutes: 0, seconds: 0 });\n\n /** The date adapter (native Date or Luxon). */\n adapter: EdsDateAdapter = inject(EDS_DATE_ADAPTER, { optional: true }) || new EdsNativeDateAdapter();\n\n /** Computed display value for the input. */\n displayValue = computed(() => {\n const date = this.value();\n if (!date || !this.adapter.isValid(date)) {\n return '';\n }\n const dateStr = this.adapter.format(date);\n if (this.isDatetimepicker()) {\n const time = this.selectedTime();\n const h = String(time.hours).padStart(2, '0');\n const m = String(time.minutes).padStart(2, '0');\n if (this.hasSeconds() && time.seconds !== undefined) {\n const s = String(time.seconds).padStart(2, '0');\n return `${dateStr} ${h}:${m}:${s}`;\n }\n return `${dateStr} ${h}:${m}`;\n }\n return dateStr;\n });\n\n /** Computed month/year label for the header. */\n monthLabel = computed(() => {\n const d = this.viewDate() || this.adapter.today();\n const months = ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'];\n return `${months[this.adapter.getMonth(d)]} ${this.adapter.getYear(d)}`;\n });\n\n /** Computed calendar day grid. */\n calendarDays = computed(() => {\n const vd = this.viewDate() || this.adapter.today();\n const year = this.adapter.getYear(vd);\n const month = this.adapter.getMonth(vd);\n const firstDay = this.adapter.create(year, month, 1);\n // Monday-based: 1=Mon, 7=Sun\n const startDay = this.adapter.getDayOfWeek(firstDay) - 1;\n const daysInMonth = this.adapter.getDaysInMonth(firstDay);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const days: (any | null)[] = [];\n\n // Empty slots before first day\n for (let i = 0; i < startDay; i++) {\n days.push(null);\n }\n // Actual days\n for (let i = 1; i <= daysInMonth; i++) {\n days.push(this.adapter.create(year, month, i));\n }\n return days;\n });\n\n private _elementRef = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n private _documentClickListener: ((e: Event) => void) | null = null;\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n this.viewDate.set(this.adapter.today());\n }\n\n ngOnDestroy(): void {\n this._removeDocumentListener();\n }\n\n // --- Public API ---\n\n toggle(): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.isOpen.set(!this.isOpen());\n if (this.isOpen()) {\n // Set view to selected date or today\n this.viewDate.set(this.adapter.isValid(this.value()) ? this.value() : this.adapter.today());\n\n // Check if there's enough space below — if not, open above\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n const dropdownHeight = this.isDatetimepicker() ? 420 : 320;\n const spaceBelow = window.innerHeight - rect.bottom;\n this.dropUp.set(spaceBelow < dropdownHeight && rect.top > dropdownHeight);\n\n this._addDocumentListener();\n } else {\n this._removeDocumentListener();\n }\n }\n\n onInputClick(): void {\n if (!this.isOpen()) {\n this.toggle();\n }\n }\n\n prevMonth(): void {\n this.viewDate.set(this.adapter.addMonths(this.viewDate(), -1));\n }\n\n nextMonth(): void {\n this.viewDate.set(this.adapter.addMonths(this.viewDate(), 1));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n selectDay(date: any): void {\n this.value.set(date);\n this._onChange(date);\n this.dateChange.emit(date);\n this.isOpen.set(false);\n this._removeDocumentListener();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isToday(date: any): boolean {\n return this.adapter.isSameDay(date, this.adapter.today());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isSelected(date: any): boolean {\n const sel = this.value();\n if (!sel || !this.adapter.isValid(sel)) {\n return false;\n }\n return this.adapter.isSameDay(date, sel);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isOutsideRange(date: any): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if (min && this.adapter.isBefore(date, min)) {\n return true;\n }\n if (max && this.adapter.isAfter(date, max)) {\n return true;\n }\n return false;\n }\n\n onInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n if (val === '') {\n this.value.set(null);\n this._onChange(null);\n this.dateChange.emit(null);\n return;\n }\n const parsed = this.adapter.parse(val);\n if (parsed) {\n this.value.set(parsed);\n this._onChange(parsed);\n this.dateChange.emit(parsed);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTimeChange(time: any): void {\n this.selectedTime.set(time);\n // If a date is already selected, re-emit with the time applied\n // (consumer is responsible for combining date + time as needed)\n }\n\n // --- ControlValueAccessor ---\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // Handled via input signal\n }\n\n // ControlValueAccessor\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onTouched: () => void = () => { /* noop */ };\n\n // --- Private ---\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any\n private _onChange: (value: any) => void = () => { /* noop */ };\n\n private _addDocumentListener(): void {\n if (!this._documentClickListener) {\n this._documentClickListener = (e: Event): void => {\n if (!this._elementRef.nativeElement.contains(e.target)) {\n this.isOpen.set(false);\n this._removeDocumentListener();\n }\n };\n document.addEventListener('click', this._documentClickListener);\n }\n }\n\n private _removeDocumentListener(): void {\n if (this._documentClickListener) {\n document.removeEventListener('click', this._documentClickListener);\n this._documentClickListener = null;\n }\n }\n}\n","<div edsInputGroup class=\"eds-datepicker__group\">\n <div edsInputGroupAddon>\n <input edsInputText\n [edsClearable]=\"false\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n (click)=\"onInputClick()\"/>\n @if (!readonly() && !disabled()) {\n <button edsButton edsButtonSecondary edsNeutral edsSizeS\n type=\"button\"\n [attr.aria-label]=\"'Open calendar'\"\n (click)=\"toggle()\">\n <eds-icon icon=\"calendar-blank:core\"/>\n </button>\n }\n </div>\n</div>\n\n@if (isOpen()) {\n <div class=\"eds-datepicker__dropdown\" [class.eds-datepicker__dropdown--up]=\"dropUp()\" (click)=\"$event.stopPropagation()\">\n <div class=\"eds-datepicker__header\">\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"prevMonth()\" aria-label=\"Previous month\">‹</button>\n <span class=\"eds-datepicker__month-label\">{{ monthLabel() }}</span>\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"nextMonth()\" aria-label=\"Next month\">›</button>\n </div>\n <div class=\"eds-datepicker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"eds-datepicker__weekday\">{{ day }}</span>\n }\n </div>\n <div class=\"eds-datepicker__days\">\n @for (day of calendarDays(); track $index) {\n @if (day === null) {\n <span class=\"eds-datepicker__day eds-datepicker__day--empty\"></span>\n } @else {\n <button class=\"eds-datepicker__day\"\n type=\"button\"\n [class.eds-datepicker__day--today]=\"isToday(day)\"\n [class.eds-datepicker__day--selected]=\"isSelected(day)\"\n [class.eds-datepicker__day--outside]=\"isOutsideRange(day)\"\n [disabled]=\"isOutsideRange(day)\"\n (click)=\"selectDay(day)\">\n {{ adapter.getDate(day) }}\n </button>\n }\n }\n </div>\n\n @if (isDatetimepicker()) {\n <div class=\"eds-datepicker__time\">\n <eds-timepicker [hasSeconds]=\"hasSeconds()\" [disabled]=\"disabled()\" (timeChange)=\"onTimeChange($event)\"/>\n </div>\n }\n </div>\n}\n","import { EdsDateAdapter, EDS_DATE_ADAPTER } from './eds-date-adapter';\n\n// Luxon is expected to be available as a peer dependency\n// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any\nlet luxonDateTime: any = null;\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-explicit-any\n luxonDateTime = (globalThis as any).__luxon_DateTime;\n} catch {\n // Will be set on first use\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getLuxonDateTime(): any {\n if (!luxonDateTime) {\n // Attempt to access luxon from the global scope (loaded via import in consumer app)\n throw new Error('Luxon DateTime not available. Ensure luxon is imported in your application and call setLuxonDateTime(DateTime) before using EdsLuxonDateAdapter.');\n }\n return luxonDateTime;\n}\n\n/**\n * Call this function to provide the Luxon DateTime class to the adapter.\n * Usage in your app:\n * ```typescript\n * import { DateTime } from 'luxon';\n * import { setLuxonDateTime } from '@eui/eds/eds-datepicker';\n * setLuxonDateTime(DateTime);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setLuxonDateTime(dt: any): void {\n luxonDateTime = dt;\n}\n\n/**\n * Luxon DateTime adapter for eds-datepicker.\n * Requires `luxon` package to be installed and `setLuxonDateTime(DateTime)` to be called.\n */\nexport class EdsLuxonDateAdapter implements EdsDateAdapter<unknown> {\n create(year: number, month: number, day: number): unknown {\n const DT = getLuxonDateTime();\n // Luxon months are 1-based\n return DT.local(year, month + 1, day);\n }\n\n today(): unknown {\n return getLuxonDateTime().now();\n }\n\n getYear(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).year;\n }\n\n getMonth(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).month - 1;\n }\n\n getDate(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).day;\n }\n\n getDayOfWeek(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).weekday;\n }\n\n getDaysInMonth(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).daysInMonth;\n }\n\n addMonths(date: unknown, months: number): unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).plus({ months }).startOf('month');\n }\n\n format(date: unknown, formatStr?: string): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).toFormat(formatStr || 'dd/MM/yyyy');\n }\n\n parse(value: string, formatStr?: string): unknown | null {\n const DT = getLuxonDateTime();\n const parsed = DT.fromFormat(value, formatStr || 'dd/MM/yyyy');\n return parsed.isValid ? parsed : null;\n }\n\n isBefore(date: unknown, compare: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any) < (compare as any);\n }\n\n isAfter(date: unknown, compare: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any) > (compare as any);\n }\n\n isSameDay(a: unknown, b: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (a as any).hasSame(b, 'day');\n }\n\n isValid(date: unknown): date is unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return date != null && (date as any).isValid === true;\n }\n}\n\n/** Provider helper for using the Luxon adapter. */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function provideEdsLuxonDateAdapter() {\n return { provide: EDS_DATE_ADAPTER, useClass: EdsLuxonDateAdapter };\n}\n","import { EdsDatepicker } from './eds-datepicker';\n\nexport { EdsDatepicker };\nexport { EDS_DATE_ADAPTER, EdsDateAdapter, EdsNativeDateAdapter, provideEdsNativeDateAdapter } from './eds-date-adapter';\nexport { EdsLuxonDateAdapter, provideEdsLuxonDateAdapter, setLuxonDateTime } from './eds-luxon-date-adapter';\n\n/** Convenience array for importing eds-datepicker. */\nexport const EDS_DATEPICKER = [\n EdsDatepicker,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-eds-eds-datepicker.mjs","sources":["../../eds-datepicker/eds-date-adapter.ts","../../eds-datepicker/eds-datepicker.ts","../../eds-datepicker/eds-datepicker.html","../../eds-datepicker/eds-luxon-date-adapter.ts","../../eds-datepicker/index.ts","../../eds-datepicker/eui-eds-eds-datepicker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Abstract date adapter interface for eds-datepicker.\n * Implement this to support different date libraries (native Date, Luxon, etc.)\n */\nexport interface EdsDateAdapter<D = unknown> {\n /** Create a date from year, month (0-based), day. */\n create(year: number, month: number, day: number): D;\n /** Get today's date. */\n today(): D;\n /** Get the year of a date. */\n getYear(date: D): number;\n /** Get the month (0-based) of a date. */\n getMonth(date: D): number;\n /** Get the day of the month. */\n getDate(date: D): number;\n /** Get day of week (1=Monday, 7=Sunday). */\n getDayOfWeek(date: D): number;\n /** Get number of days in the given month. */\n getDaysInMonth(date: D): number;\n /** Add months to a date. */\n addMonths(date: D, months: number): D;\n /** Format a date for display (dd/mm/yyyy by default). */\n format(date: D, formatStr?: string): string;\n /** Parse a string into a date. Returns null if invalid. */\n parse(value: string, formatStr?: string): D | null;\n /** Check if a date is before another. */\n isBefore(date: D, compare: D): boolean;\n /** Check if a date is after another. */\n isAfter(date: D, compare: D): boolean;\n /** Check if two dates are the same day. */\n isSameDay(a: D, b: D): boolean;\n /** Check if a value is a valid date. */\n isValid(date: unknown): date is D;\n}\n\n/** Injection token for the EDS date adapter. */\nexport const EDS_DATE_ADAPTER = new InjectionToken<EdsDateAdapter>('EDS_DATE_ADAPTER');\n\n/**\n * Default native Date adapter.\n */\nexport class EdsNativeDateAdapter implements EdsDateAdapter<Date> {\n create(year: number, month: number, day: number): Date {\n return new Date(year, month, day);\n }\n\n today(): Date {\n return new Date();\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n // Convert Sunday=0 to Monday=1...Sunday=7\n const dow = date.getDay();\n return dow === 0 ? 7 : dow;\n }\n\n getDaysInMonth(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n }\n\n addMonths(date: Date, months: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n }\n\n format(date: Date, _formatStr?: string): string {\n const d = String(date.getDate()).padStart(2, '0');\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const y = date.getFullYear();\n return `${d}/${m}/${y}`;\n }\n\n parse(value: string, _formatStr?: string): Date | null {\n const parts = value.split('/');\n if (parts.length !== 3) {\n return null;\n }\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n if (isNaN(day) || isNaN(month) || isNaN(year)) {\n return null;\n }\n const date = new Date(year, month, day);\n if (date.getDate() !== day || date.getMonth() !== month || date.getFullYear() !== year) {\n return null;\n }\n return date;\n }\n\n isBefore(date: Date, compare: Date): boolean {\n return date.getTime() < compare.getTime();\n }\n\n isAfter(date: Date, compare: Date): boolean {\n return date.getTime() > compare.getTime();\n }\n\n isSameDay(a: Date, b: Date): boolean {\n return a.getDate() === b.getDate() &&\n a.getMonth() === b.getMonth() &&\n a.getFullYear() === b.getFullYear();\n }\n\n isValid(date: unknown): date is Date {\n return date instanceof Date && !isNaN(date.getTime());\n }\n}\n\n/** Provider helper for using the native Date adapter. */\nexport function provideEdsNativeDateAdapter(): { provide: typeof EDS_DATE_ADAPTER; useClass: typeof EdsNativeDateAdapter } {\n return { provide: EDS_DATE_ADAPTER, useClass: EdsNativeDateAdapter };\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n model,\n signal,\n computed,\n booleanAttribute,\n inject,\n ElementRef,\n HostListener,\n OnDestroy,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_INPUT_TEXT } from '@eui/eds/eds-input-text';\nimport { EDS_INPUT_GROUP } from '@eui/eds/eds-input-group';\nimport { EDS_BUTTON } from '@eui/eds/eds-button';\nimport { EDS_TIMEPICKER } from '@eui/eds/eds-timepicker';\nimport { EDS_DATE_ADAPTER, EdsDateAdapter, EdsNativeDateAdapter } from './eds-date-adapter';\n\n@Component({\n selector: 'eds-datepicker',\n templateUrl: './eds-datepicker.html',\n styleUrl: './eds-datepicker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [...EDS_ICON, ...EDS_INPUT_TEXT, ...EDS_INPUT_GROUP, ...EDS_BUTTON, ...EDS_TIMEPICKER],\n host: {\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsDatepicker implements ControlValueAccessor, OnDestroy {\n /** Data attribute for e2e testing. */\n e2eAttr = input('eds-datepicker');\n\n /** Input element id. */\n inputId = input('eds-datepicker-input');\n\n /** Placeholder text. */\n placeholder = input('dd/mm/yyyy');\n\n /** Aria label for the input. */\n ariaLabel = input('Date input');\n\n /** Date format for display (default: dd/mm/yyyy). */\n dateFormat = input('dd/mm/yyyy');\n\n /** Minimum selectable date. */\n minDate = input<Date | null>(null);\n\n /** Maximum selectable date. */\n maxDate = input<Date | null>(null);\n\n /** Whether the datepicker is disabled. */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the datepicker is readonly. */\n readonly = input(false, { transform: booleanAttribute });\n\n /** Whether to show a timepicker alongside the calendar. */\n isDatetimepicker = input(false, { transform: booleanAttribute });\n\n /** Whether the timepicker shows seconds. */\n hasSeconds = input(false, { transform: booleanAttribute });\n\n /** Emitted when a date is selected. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dateChange = output<any>();\n\n /** The selected date value. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value = model<any>(null);\n\n /** Whether the calendar dropdown is open. */\n isOpen = signal(false);\n\n /** Whether the dropdown should open above the input. */\n dropUp = signal(false);\n\n /** Current viewed month/year for the calendar. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n viewDate = signal<any>(null);\n\n /** Weekday header labels. */\n weekDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\n /** Current time selection (for datetime mode). */\n selectedTime = signal<{ hours: number; minutes: number; seconds?: number }>({ hours: 0, minutes: 0, seconds: 0 });\n\n /** The date adapter (native Date or Luxon). */\n adapter: EdsDateAdapter = inject(EDS_DATE_ADAPTER, { optional: true }) || new EdsNativeDateAdapter();\n\n /** Computed display value for the input. */\n displayValue = computed(() => {\n const date = this.value();\n if (!date || !this.adapter.isValid(date)) {\n return '';\n }\n const dateStr = this.adapter.format(date);\n if (this.isDatetimepicker()) {\n const time = this.selectedTime();\n const h = String(time.hours).padStart(2, '0');\n const m = String(time.minutes).padStart(2, '0');\n if (this.hasSeconds() && time.seconds !== undefined) {\n const s = String(time.seconds).padStart(2, '0');\n return `${dateStr} ${h}:${m}:${s}`;\n }\n return `${dateStr} ${h}:${m}`;\n }\n return dateStr;\n });\n\n /** Computed month/year label for the header. */\n monthLabel = computed(() => {\n const d = this.viewDate() || this.adapter.today();\n const months = ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'];\n return `${months[this.adapter.getMonth(d)]} ${this.adapter.getYear(d)}`;\n });\n\n /** Computed calendar day grid. */\n calendarDays = computed(() => {\n const vd = this.viewDate() || this.adapter.today();\n const year = this.adapter.getYear(vd);\n const month = this.adapter.getMonth(vd);\n const firstDay = this.adapter.create(year, month, 1);\n // Monday-based: 1=Mon, 7=Sun\n const startDay = this.adapter.getDayOfWeek(firstDay) - 1;\n const daysInMonth = this.adapter.getDaysInMonth(firstDay);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const days: (any | null)[] = [];\n\n // Empty slots before first day\n for (let i = 0; i < startDay; i++) {\n days.push(null);\n }\n // Actual days\n for (let i = 1; i <= daysInMonth; i++) {\n days.push(this.adapter.create(year, month, i));\n }\n return days;\n });\n\n private _elementRef = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n private _documentClickListener: ((e: Event) => void) | null = null;\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n this.viewDate.set(this.adapter.today());\n }\n\n ngOnDestroy(): void {\n this._removeDocumentListener();\n }\n\n // --- Public API ---\n\n toggle(): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.isOpen.set(!this.isOpen());\n if (this.isOpen()) {\n // Set view to selected date or today\n this.viewDate.set(this.adapter.isValid(this.value()) ? this.value() : this.adapter.today());\n\n // Check if there's enough space below — if not, open above\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n const dropdownHeight = this.isDatetimepicker() ? 420 : 320;\n const spaceBelow = window.innerHeight - rect.bottom;\n this.dropUp.set(spaceBelow < dropdownHeight && rect.top > dropdownHeight);\n\n this._addDocumentListener();\n } else {\n this._removeDocumentListener();\n }\n }\n\n onInputClick(): void {\n if (!this.isOpen()) {\n this.toggle();\n }\n }\n\n prevMonth(): void {\n this.viewDate.set(this.adapter.addMonths(this.viewDate(), -1));\n }\n\n nextMonth(): void {\n this.viewDate.set(this.adapter.addMonths(this.viewDate(), 1));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n selectDay(date: any): void {\n this.value.set(date);\n this._onChange(date);\n this.dateChange.emit(date);\n this.isOpen.set(false);\n this._removeDocumentListener();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isToday(date: any): boolean {\n return this.adapter.isSameDay(date, this.adapter.today());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isSelected(date: any): boolean {\n const sel = this.value();\n if (!sel || !this.adapter.isValid(sel)) {\n return false;\n }\n return this.adapter.isSameDay(date, sel);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isOutsideRange(date: any): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if (min && this.adapter.isBefore(date, min)) {\n return true;\n }\n if (max && this.adapter.isAfter(date, max)) {\n return true;\n }\n return false;\n }\n\n onInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n if (val === '') {\n this.value.set(null);\n this._onChange(null);\n this.dateChange.emit(null);\n return;\n }\n const parsed = this.adapter.parse(val);\n if (parsed) {\n this.value.set(parsed);\n this._onChange(parsed);\n this.dateChange.emit(parsed);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTimeChange(time: any): void {\n this.selectedTime.set(time);\n // If a date is already selected, re-emit with the time applied\n // (consumer is responsible for combining date + time as needed)\n }\n\n // --- ControlValueAccessor ---\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // Handled via input signal\n }\n\n // ControlValueAccessor\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onTouched: () => void = () => { /* noop */ };\n\n // --- Private ---\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any\n private _onChange: (value: any) => void = () => { /* noop */ };\n\n private _addDocumentListener(): void {\n if (!this._documentClickListener) {\n this._documentClickListener = (e: Event): void => {\n if (!this._elementRef.nativeElement.contains(e.target)) {\n this.isOpen.set(false);\n this._removeDocumentListener();\n }\n };\n document.addEventListener('click', this._documentClickListener);\n }\n }\n\n private _removeDocumentListener(): void {\n if (this._documentClickListener) {\n document.removeEventListener('click', this._documentClickListener);\n this._documentClickListener = null;\n }\n }\n}\n","<div edsInputGroup class=\"eds-datepicker__group\">\n <div edsInputGroupAddon>\n <input edsInputText\n [edsClearable]=\"false\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n (click)=\"onInputClick()\"/>\n @if (!readonly() && !disabled()) {\n <button edsButton edsButtonSecondary edsNeutral edsSizeS\n type=\"button\"\n [attr.aria-label]=\"'Open calendar'\"\n (click)=\"toggle()\">\n <eds-icon icon=\"calendar-blank:core\"/>\n </button>\n }\n </div>\n</div>\n\n@if (isOpen()) {\n <div class=\"eds-datepicker__dropdown\" [class.eds-datepicker__dropdown--up]=\"dropUp()\" (click)=\"$event.stopPropagation()\">\n <div class=\"eds-datepicker__header\">\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"prevMonth()\" aria-label=\"Previous month\">‹</button>\n <span class=\"eds-datepicker__month-label\">{{ monthLabel() }}</span>\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"nextMonth()\" aria-label=\"Next month\">›</button>\n </div>\n <div class=\"eds-datepicker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"eds-datepicker__weekday\">{{ day }}</span>\n }\n </div>\n <div class=\"eds-datepicker__days\">\n @for (day of calendarDays(); track $index) {\n @if (day === null) {\n <span class=\"eds-datepicker__day eds-datepicker__day--empty\"></span>\n } @else {\n <button class=\"eds-datepicker__day\"\n type=\"button\"\n [class.eds-datepicker__day--today]=\"isToday(day)\"\n [class.eds-datepicker__day--selected]=\"isSelected(day)\"\n [class.eds-datepicker__day--outside]=\"isOutsideRange(day)\"\n [disabled]=\"isOutsideRange(day)\"\n (click)=\"selectDay(day)\">\n {{ adapter.getDate(day) }}\n </button>\n }\n }\n </div>\n\n @if (isDatetimepicker()) {\n <div class=\"eds-datepicker__time\">\n <eds-timepicker [hasSeconds]=\"hasSeconds()\" [disabled]=\"disabled()\" (timeChange)=\"onTimeChange($event)\"/>\n </div>\n }\n </div>\n}\n","import { EdsDateAdapter, EDS_DATE_ADAPTER } from './eds-date-adapter';\n\n// Luxon is expected to be available as a peer dependency\n// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any\nlet luxonDateTime: any = null;\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-explicit-any\n luxonDateTime = (globalThis as any).__luxon_DateTime;\n} catch {\n // Will be set on first use\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getLuxonDateTime(): any {\n if (!luxonDateTime) {\n // Attempt to access luxon from the global scope (loaded via import in consumer app)\n throw new Error('Luxon DateTime not available. Ensure luxon is imported in your application and call setLuxonDateTime(DateTime) before using EdsLuxonDateAdapter.');\n }\n return luxonDateTime;\n}\n\n/**\n * Call this function to provide the Luxon DateTime class to the adapter.\n * Usage in your app:\n * ```typescript\n * import { DateTime } from 'luxon';\n * import { setLuxonDateTime } from '@eui/eds/eds-datepicker';\n * setLuxonDateTime(DateTime);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setLuxonDateTime(dt: any): void {\n luxonDateTime = dt;\n}\n\n/**\n * Luxon DateTime adapter for eds-datepicker.\n * Requires `luxon` package to be installed and `setLuxonDateTime(DateTime)` to be called.\n */\nexport class EdsLuxonDateAdapter implements EdsDateAdapter<unknown> {\n create(year: number, month: number, day: number): unknown {\n const DT = getLuxonDateTime();\n // Luxon months are 1-based\n return DT.local(year, month + 1, day);\n }\n\n today(): unknown {\n return getLuxonDateTime().now();\n }\n\n getYear(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).year;\n }\n\n getMonth(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).month - 1;\n }\n\n getDate(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).day;\n }\n\n getDayOfWeek(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).weekday;\n }\n\n getDaysInMonth(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).daysInMonth;\n }\n\n addMonths(date: unknown, months: number): unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).plus({ months }).startOf('month');\n }\n\n format(date: unknown, formatStr?: string): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).toFormat(formatStr || 'dd/MM/yyyy');\n }\n\n parse(value: string, formatStr?: string): unknown | null {\n const DT = getLuxonDateTime();\n const parsed = DT.fromFormat(value, formatStr || 'dd/MM/yyyy');\n return parsed.isValid ? parsed : null;\n }\n\n isBefore(date: unknown, compare: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any) < (compare as any);\n }\n\n isAfter(date: unknown, compare: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any) > (compare as any);\n }\n\n isSameDay(a: unknown, b: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (a as any).hasSame(b, 'day');\n }\n\n isValid(date: unknown): date is unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return date != null && (date as any).isValid === true;\n }\n}\n\n/** Provider helper for using the Luxon adapter. */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function provideEdsLuxonDateAdapter() {\n return { provide: EDS_DATE_ADAPTER, useClass: EdsLuxonDateAdapter };\n}\n","import { EdsDatepicker } from './eds-datepicker';\n\nexport { EdsDatepicker };\nexport { EDS_DATE_ADAPTER, EdsDateAdapter, EdsNativeDateAdapter, provideEdsNativeDateAdapter } from './eds-date-adapter';\nexport { EdsLuxonDateAdapter, provideEdsLuxonDateAdapter, setLuxonDateTime } from './eds-luxon-date-adapter';\n\n/** Convenience array for importing eds-datepicker. */\nexport const EDS_DATEPICKER = [\n EdsDatepicker,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}