@eui/ecl 22.0.0-alpha.2 → 22.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/changelog.html +618 -0
- package/docs/components/EclDateBlockComponent.html +0 -9
- package/docs/components/EclDescriptionListDefinitionComponent.html +6 -44
- package/docs/components/EclIconComponent.html +1 -1
- package/docs/components/EclListIllustrationComponent.html +0 -171
- package/docs/components/EclListIllustrationItemComponent.html +77 -83
- package/docs/components/EclLoadingIndicatorComponent.html +4 -91
- package/docs/components/EclMegaMenuComponent.html +5 -203
- package/docs/components/EclMegaMenuFeaturedComponent.html +10 -126
- package/docs/components/EclMegaMenuInfoComponent.html +0 -91
- package/docs/components/EclMegaMenuItemComponent.html +38 -115
- package/docs/components/EclMegaMenuSubitemComponent.html +4 -68
- package/docs/components/EclMenuItemComponent.html +46 -0
- package/docs/components/EclModalBodyComponent.html +4 -45
- package/docs/components/EclModalComponent.html +5 -178
- package/docs/components/EclModalFooterComponent.html +4 -45
- package/docs/components/EclModalHeaderComponent.html +9 -76
- package/docs/components/EclSiteFooterRowCommonComponent.html +1 -1
- package/docs/components/EclSiteHeaderLanguageComponent.html +5 -627
- package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +99 -440
- package/docs/components/EclSiteHeaderLoginComponent.html +9 -453
- package/docs/components/EclSiteHeaderSearchComponent.html +18 -470
- package/docs/components/EclSocialMediaFollowComponent.html +28 -39
- package/docs/components/EclSocialMediaFollowItemComponent.html +26 -129
- package/docs/components/EclStoryCardComponent.html +1 -1
- package/docs/directives/ECLClickOutsideDirective.html +3 -0
- package/docs/directives/EclDescriptionListDefinitionItemDirective.html +6 -47
- package/docs/directives/EclDescriptionListDefinitionListDirective.html +0 -116
- package/docs/directives/EclDividerDirective.html +0 -116
- package/docs/directives/EclFileUploadDirective.html +2 -390
- package/docs/directives/EclLabelDirective.html +0 -46
- package/docs/directives/EclLinkDirective.html +0 -39
- package/docs/directives/EclLoadingIndicatorLabelDirective.html +0 -61
- package/docs/directives/EclLoadingIndicatorOverlayDirective.html +0 -45
- package/docs/directives/EclMediaContainerCaptionDirective.html +0 -39
- package/docs/directives/EclMediaContainerCreditDirective.html +0 -39
- package/docs/directives/EclMediaContainerIframeDirective.html +13 -19
- package/docs/directives/EclMediaContainerItemAudioDescriptionDirective.html +0 -39
- package/docs/directives/EclMediaContainerItemDirective.html +0 -39
- package/docs/directives/EclMediaContainerPictureDirective.html +0 -39
- package/docs/directives/EclMegaMenuContainerDirective.html +0 -104
- package/docs/directives/EclMegaMenuFeaturedImageDirective.html +0 -104
- package/docs/directives/EclMegaMenuFeaturedListDirective.html +0 -104
- package/docs/directives/EclMegaMenuFeaturedListItemDescriptionDirective.html +0 -104
- package/docs/directives/EclMegaMenuFeaturedListItemDirective.html +0 -104
- package/docs/directives/EclMegaMenuFeaturedPictureDirective.html +0 -39
- package/docs/directives/EclMegaMenuListDirective.html +0 -104
- package/docs/directives/EclMegaMenuSpacerDirective.html +0 -104
- package/docs/directives/EclMegaMenuSublistDirective.html +0 -165
- package/docs/directives/EclModalBodyFixedContentDirective.html +0 -61
- package/docs/directives/EclModalCloseDirective.html +1 -90
- package/docs/directives/EclModalTriggerDirective.html +1 -90
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/EclIconComponent.md +1 -1
- package/docs/json/EclMediaContainerIframeDirective.md +0 -1
- package/docs/json/EclSiteHeaderLanguagePopoverComponent.md +6 -6
- package/docs/json/EclSiteHeaderSearchComponent.md +1 -0
- package/docs/json/EclSocialMediaFollowComponent.md +1 -0
- package/docs/json/documentation.json +1261 -2880
- package/docs/llms.txt +31 -84
- package/docs/miscellaneous/variables.html +222 -41
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-divider.mjs +6 -13
- package/fesm2022/eui-ecl-components-ecl-divider.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file-upload.mjs +13 -27
- package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs +55 -9
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-label.mjs +6 -6
- package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-link.mjs +10 -13
- package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs +19 -30
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list.mjs +44 -41
- package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs +17 -20
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs +36 -33
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs +100 -159
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-menu.mjs +16 -3
- package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-modal.mjs +94 -88
- package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs +326 -261
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs +17 -17
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-story-card.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-divider.d.ts +0 -4
- package/types/eui-ecl-components-ecl-divider.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts +25 -0
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-link.d.ts +2 -4
- package/types/eui-ecl-components-ecl-link.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list-illustration.d.ts +3 -3
- package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list.d.ts +9 -12
- package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-media-container.d.ts +7 -2
- package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-mega-menu.d.ts +12 -22
- package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-menu.d.ts +12 -1
- package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-modal.d.ts +20 -10
- package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-header.d.ts +240 -216
- package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts +5 -3
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-file-upload.mjs","sources":["../../components/ecl-file-upload/events/ecl-file-upload-file-selected.event.ts","../../components/ecl-file-upload/ecl-file-upload.directive.ts","../../components/ecl-file-upload/index.ts","../../components/ecl-file-upload/eui-ecl-components-ecl-file-upload.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\nimport { EclFileUpload } from '../models/ecl-file-upload.model';\n\n/**\n * Custom event emitted by the ECL file upload directive\n * when one or more files are selected.\n */\nexport class EclFileUploadFileSelectedEvent extends EclBaseEvent {\n /**\n * List of selected files.\n * Each file includes its name, extension, and formatted size.\n */\n constructor(public files: Array<EclFileUpload>) {\n super();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n Directive,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n booleanAttribute,\n output,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclFileUpload } from './models/ecl-file-upload.model';\nimport { EclFileUploadFileSelectedEvent } from './events/ecl-file-upload-file-selected.event';\n\n/**\n * Directive that enhances a native input[type=file] with ECL-compliant styling and behavior.\n * Supports multiple file selection, dynamic file list rendering, translations and validation state.\n */\n@Directive({\n selector: '[eclFileUpload]',\n})\nexport class EclFileUploadDirective extends ECLBaseDirective implements OnInit, OnDestroy, DoCheck {\n protected ngControl = inject(NgControl, { optional: true, self: true });\n\n /**\n * Variant of the component's appearance. Currently unused. Default: `'default'`.\n */\n readonly variant = input('default');\n\n /**\n * Marks the component as invalid (if not using Angular form validation).\n */\n readonly isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * ID attribute applied to the native file input.\n */\n @HostBinding('attr.id')\n readonly id = input<string>(undefined);\n\n /**\n * Whether the component is disabled.\n */\n @HostBinding('attr.disabled')\n readonly disabled = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Allows selecting multiple files.\n */\n @HostBinding('attr.multiple')\n readonly multiple = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Event emitted when files are selected.\n */\n readonly filesSelected = output<EclFileUploadFileSelectedEvent>();\n\n /**\n * Host binding to define input type as 'file'.\n */\n @HostBinding('attr.type') type = 'file';\n\n private fileListEl: HTMLElement;\n\n private files: EclFileUpload[] = [];\n private buttonEl: HTMLElement;\n private labelEl: HTMLElement;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly SPAN_BUTTON_CONVERSION_CLASSES = ['ecl-button', 'ecl-button--primary', 'ecl-file-upload__button'];\n private el = inject(ElementRef);\n private translate = inject(TranslateService);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n\n /**\n * Applies the base `ecl-file-upload` class to the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-file-upload')].join(' ').trim();\n }\n\n /**\n * Returns `true` if component should be displayed as invalid.\n * Prioritizes Angular form control status over `isInvalid` input.\n */\n @HostBinding('class.ecl-file-upload--invalid')\n get invalidState(): boolean {\n if (this.ngControl) {\n return this.ngControl.status === 'INVALID' && this.ngControl.touched;\n } else {\n return this.isInvalid();\n }\n }\n\n /**\n * Initializes component structure and translation subscription (browser-only).\n */\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.createDOMStructure();\n this.handleTranslations();\n }\n }\n\n /**\n * Clean up resources and RxJS subscriptions.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Checks component state during change detection to toggle the disabled state of internal elements.\n */\n ngDoCheck(): void {\n if (this.disabled()) {\n this.renderer.setAttribute(this.buttonEl, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.buttonEl, 'disabled');\n }\n }\n\n /**\n * Prevents file dialog from opening when component is disabled.\n * @param evt Click event on the input element.\n */\n @HostListener('click', ['$event']) onClick(evt: Event): void {\n if (this.disabled()) {\n evt.preventDefault();\n }\n }\n\n /**\n * Handles file selection and emits a structured file selection event.\n * @param evt Change event from input.\n */\n @HostListener('change', ['$event']) onFilesSelected(evt: Event): void {\n const inputElement: HTMLInputElement = evt.target as HTMLInputElement;\n const fileList: FileList = inputElement.files;\n this.files = this.getFileModels(fileList);\n\n const fileEvent = new EclFileUploadFileSelectedEvent(this.files);\n this.filesSelected.emit(fileEvent);\n\n if (!fileEvent.defaultPrevented) {\n this.handleTranslations();\n this.updateListItemsDOM(this.files);\n }\n }\n\n private handleTranslations(): void {\n const uploadButtonLabelKey = this.geti18nUploadButtonLabelKey();\n\n this.translate\n .stream(uploadButtonLabelKey)\n .pipe(takeUntil(this.destroy$))\n .subscribe((translation: string) => {\n if (this.buttonEl) {\n this.renderer.setProperty(this.buttonEl, 'textContent', translation);\n }\n });\n }\n\n private geti18nUploadButtonLabelKey(): string {\n let key = '';\n\n if (this.files && this.files.length !== 0) {\n if (this.multiple()) {\n key = 'ecl.file-upload.REPLACE-FILES';\n } else {\n key = 'ecl.file-upload.REPLACE-FILE';\n }\n } else {\n if (this.multiple()) {\n key = 'ecl.file-upload.CHOOSE-FILES';\n } else {\n key = 'ecl.file-upload.CHOOSE-FILE';\n }\n }\n\n return key;\n }\n\n private updateListItemsDOM(files: EclFileUpload[]): void {\n this.renderer.setProperty(this.fileListEl, 'textContent', '');\n files.forEach((file) => {\n const item = this.createFileListItemDOMElement(file);\n this.renderer.appendChild(this.fileListEl, item);\n });\n }\n\n private createDOMStructure(): void {\n const labelEl = this.createLabelDOMElement();\n const hostEl = this.getHostDOMElement();\n const fileListEl = this.createFileListDOMElement();\n\n hostEl.insertAdjacentElement('afterend', fileListEl);\n hostEl.insertAdjacentElement('afterend', labelEl);\n\n this.fileListEl = fileListEl;\n }\n\n private getHostDOMElement(): HTMLInputElement {\n return this.el.nativeElement;\n }\n\n private createLabelDOMElement(): HTMLElement {\n this.buttonEl = this.renderer.createElement('span');\n this.addClasses(this.buttonEl, this.SPAN_BUTTON_CONVERSION_CLASSES);\n\n this.labelEl = this.renderer.createElement('label');\n this.renderer.setAttribute(this.labelEl, 'for', this.id());\n this.renderer.addClass(this.labelEl, 'ecl-file-upload__button-container');\n\n this.renderer.appendChild(this.labelEl, this.buttonEl);\n\n return this.labelEl;\n }\n\n private addClasses(element: HTMLElement, classes: string[] ): void {\n classes.forEach(className=> this.renderer.addClass(element, className) )\n }\n\n private createFileListDOMElement(): HTMLElement {\n const element = this.renderer.createElement('ul');\n this.renderer.addClass(element,'ecl-file-upload__list');\n this.renderer.setAttribute(element,'aria-live','polite');\n\n return element;\n }\n\n private createFileListItemDOMElement(fileUpload: EclFileUpload): HTMLElement {\n const liElement = this.renderer.createElement('li');\n this.renderer.addClass(liElement,'ecl-file-upload__item');\n\n const fileNameElement = this.renderer.createElement('span');\n const fileName = this.renderer.createText(fileUpload.name);\n this.renderer.appendChild(fileNameElement, fileName);\n\n this.renderer.addClass( fileNameElement,'ecl-file-upload__item-name' );\n\n const fileMetaElement = this.renderer.createElement('span');\n\n const fileMetaElementText = this.renderer.createText(`(${fileUpload.size} - ${fileUpload.extension})`);\n this.renderer.appendChild(fileMetaElement, fileMetaElementText);\n this.renderer.addClass(fileMetaElement, 'ecl-file-upload__item-meta');\n\n this.renderer.appendChild(liElement, fileNameElement);\n this.renderer.appendChild(liElement, fileMetaElement);\n\n return liElement;\n }\n\n private getFileModels(fileList: FileList): EclFileUpload[] {\n return Array.from(fileList).map((f) => ({\n name: f.name,\n extension: this.getFilenameExtension(f.name),\n size: this.formatBytes(f.size),\n }));\n }\n\n private getFilenameExtension(filename: string): string {\n return filename.split('.').pop();\n }\n\n private formatBytes(bytes, decimals = 2): string {\n if (bytes === 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;\n }\n}\n","import { EclFileUploadDirective } from './ecl-file-upload.directive';\n\nexport * from './ecl-file-upload.directive';\nexport * from './models/ecl-file-upload.model';\nexport * from './events/ecl-file-upload-file-selected.event';\n\nexport const EUI_ECL_FILE_UPLOAD = [\n EclFileUploadDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAGA;;;AAGG;AACG,MAAO,8BAA+B,SAAQ,YAAY,CAAA;AAC5D;;;AAGG;AACH,IAAA,WAAA,CAAmB,KAA2B,EAAA;AAC1C,QAAA,KAAK,EAAE;QADQ,IAAA,CAAA,KAAK,GAAL,KAAK;IAExB;AACH;;ACSD;;;AAGG;AAIG,MAAO,sBAAuB,SAAQ,gBAAgB,CAAA;AAH5D,IAAA,WAAA,GAAA;;AAIc,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEvE;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,SAAS;oFAAC;AAEnC;;AAEG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAElE;;AAEG;QAEM,IAAA,CAAA,EAAE,GAAG,KAAK,CAAS,SAAS;+EAAC;AAEtC;;AAEG;QAEM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAmB,SAAS,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEvF;;AAEG;QAEM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAmB,SAAS,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEvF;;AAEG;QACM,IAAA,CAAA,aAAa,GAAG,MAAM,EAAkC;AAEjE;;AAEG;QACuB,IAAA,CAAA,IAAI,GAAG,MAAM;QAI/B,IAAA,CAAA,KAAK,GAAoB,EAAE;AAG3B,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW;QAC1C,IAAA,CAAA,8BAA8B,GAAG,CAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;AAC1G,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAgN3C,IAAA;AA9MG;;AAEG;AACH,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IACpE;AAEA;;;AAGG;AACH,IAAA,IACI,YAAY,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;QACxE;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE;QAC3B;IACJ;AAEA;;AAEG;IACH,QAAQ,GAAA;AACJ,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACpC,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;AAEA;;AAEG;IACH,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC/B;AAEA;;AAEG;IACH,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;QACjE;aAAO;YACH,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC5D;IACJ;AAEA;;;AAGG;AACgC,IAAA,OAAO,CAAC,GAAU,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,GAAG,CAAC,cAAc,EAAE;QACxB;IACJ;AAEA;;;AAGG;AACiC,IAAA,eAAe,CAAC,GAAU,EAAA;AAC1D,QAAA,MAAM,YAAY,GAAqB,GAAG,CAAC,MAA0B;AACrE,QAAA,MAAM,QAAQ,GAAa,YAAY,CAAC,KAAK;QAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AAElC,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YAC7B,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QACvC;IACJ;IAEQ,kBAAkB,GAAA;AACtB,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAE/D,QAAA,IAAI,CAAC;aACA,MAAM,CAAC,oBAAoB;AAC3B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,WAAmB,KAAI;AAC/B,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC;YACxE;AACJ,QAAA,CAAC,CAAC;IACV;IAEQ,2BAA2B,GAAA;QAC/B,IAAI,GAAG,GAAG,EAAE;AAEZ,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACjB,GAAG,GAAG,+BAA+B;YACzC;iBAAO;gBACH,GAAG,GAAG,8BAA8B;YACxC;QACJ;aAAO;AACH,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACjB,GAAG,GAAG,8BAA8B;YACxC;iBAAO;gBACH,GAAG,GAAG,6BAA6B;YACvC;QACJ;AAEA,QAAA,OAAO,GAAG;IACd;AAEQ,IAAA,kBAAkB,CAAC,KAAsB,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,CAAC;AAC7D,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AACpD,QAAA,CAAC,CAAC;IACN;IAEQ,kBAAkB,GAAA;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC5C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAElD,QAAA,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC;AACpD,QAAA,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC;AAEjD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;IAChC;IAEQ,iBAAiB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa;IAChC;IAEQ,qBAAqB,GAAA;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,8BAA8B,CAAC;QAEnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,mCAAmC,CAAC;AAEzE,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;QAEtD,OAAO,IAAI,CAAC,OAAO;IACvB;IAEQ,UAAU,CAAC,OAAoB,EAAE,OAAiB,EAAA;AACtD,QAAA,OAAO,CAAC,OAAO,CAAC,SAAS,IAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAE;IAC5E;IAEQ,wBAAwB,GAAA;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAC,uBAAuB,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAC,WAAW,EAAC,QAAQ,CAAC;AAExD,QAAA,OAAO,OAAO;IAClB;AAEQ,IAAA,4BAA4B,CAAC,UAAyB,EAAA;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAC,uBAAuB,CAAC;QAEzD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC;QAEpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAE,eAAe,EAAC,4BAA4B,CAAE;QAEtE,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAE3D,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA,CAAA,EAAI,UAAU,CAAC,IAAI,CAAA,GAAA,EAAM,UAAU,CAAC,SAAS,CAAA,CAAA,CAAG,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,EAAE,mBAAmB,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,4BAA4B,CAAC;QAErE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,eAAe,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,eAAe,CAAC;AAErD,QAAA,OAAO,SAAS;IACpB;AAEQ,IAAA,aAAa,CAAC,QAAkB,EAAA;AACpC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;YACpC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,SAAA,CAAC,CAAC;IACP;AAEQ,IAAA,oBAAoB,CAAC,QAAgB,EAAA;QACzC,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;IACpC;AAEQ,IAAA,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAA;AACnC,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACb,YAAA,OAAO,SAAS;QACpB;QAEA,MAAM,CAAC,GAAG,IAAI;AACd,QAAA,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ;QACtC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAEvE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEnD,OAAO,CAAA,EAAG,UAAU,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;IACpE;8GAlQS,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC9B,iBAAA;;sBAiBI,WAAW;uBAAC,SAAS;;sBAMrB,WAAW;uBAAC,eAAe;;sBAM3B,WAAW;uBAAC,eAAe;;sBAW3B,WAAW;uBAAC,WAAW;;sBAiBvB,WAAW;uBAAC,OAAO;;sBASnB,WAAW;uBAAC,gCAAgC;;sBA0C5C,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAUhC,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;AC9I/B,MAAM,mBAAmB,GAAG;IAC/B,sBAAsB;;;ACP1B;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-file-upload.mjs","sources":["../../components/ecl-file-upload/events/ecl-file-upload-file-selected.event.ts","../../components/ecl-file-upload/ecl-file-upload.directive.ts","../../components/ecl-file-upload/index.ts","../../components/ecl-file-upload/eui-ecl-components-ecl-file-upload.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\nimport { EclFileUpload } from '../models/ecl-file-upload.model';\n\n/**\n * Custom event emitted by the ECL file upload directive\n * when one or more files are selected.\n */\nexport class EclFileUploadFileSelectedEvent extends EclBaseEvent {\n /**\n * List of selected files.\n * Each file includes its name, extension, and formatted size.\n */\n constructor(public files: Array<EclFileUpload>) {\n super();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n Directive,\n DoCheck,\n ElementRef,\n inject,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n booleanAttribute,\n output,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclFileUpload } from './models/ecl-file-upload.model';\nimport { EclFileUploadFileSelectedEvent } from './events/ecl-file-upload-file-selected.event';\n\n/**\n * Directive that enhances a native input[type=file] with ECL-compliant styling and behavior.\n * Supports multiple file selection, dynamic file list rendering, translations and validation state.\n */\n@Directive({\n selector: '[eclFileUpload]',\n host: {\n '[attr.type]': 'type',\n '[attr.id]': 'id()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.multiple]': 'multiple() ? \"\" : null',\n '[class]': 'cssClasses',\n '[class.ecl-file-upload--invalid]': 'invalidState',\n '(click)': 'onClick($event)',\n '(change)': 'onFilesSelected($event)',\n },\n})\nexport class EclFileUploadDirective extends ECLBaseDirective implements OnInit, OnDestroy, DoCheck {\n protected ngControl = inject(NgControl, { optional: true, self: true });\n\n /**\n * Variant of the component's appearance. Currently unused. Default: `'default'`.\n */\n readonly variant = input('default');\n\n /**\n * Marks the component as invalid (if not using Angular form validation).\n */\n readonly isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * ID attribute applied to the native file input.\n */\n readonly id = input<string>(undefined);\n\n /**\n * Whether the component is disabled.\n */\n readonly disabled = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Allows selecting multiple files.\n */\n readonly multiple = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Event emitted when files are selected.\n */\n readonly filesSelected = output<EclFileUploadFileSelectedEvent>();\n\n /**\n * Host binding to define input type as 'file'.\n */\n type = 'file';\n\n private fileListEl: HTMLElement;\n\n private files: EclFileUpload[] = [];\n private buttonEl: HTMLElement;\n private labelEl: HTMLElement;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly SPAN_BUTTON_CONVERSION_CLASSES = ['ecl-button', 'ecl-button--primary', 'ecl-file-upload__button'];\n private el = inject(ElementRef);\n private translate = inject(TranslateService);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n\n /**\n * Applies the base `ecl-file-upload` class to the host element.\n */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-file-upload')].join(' ').trim();\n }\n\n /**\n * Returns `true` if component should be displayed as invalid.\n * Prioritizes Angular form control status over `isInvalid` input.\n */\n get invalidState(): boolean {\n if (this.ngControl) {\n return this.ngControl.status === 'INVALID' && this.ngControl.touched;\n } else {\n return this.isInvalid();\n }\n }\n\n /**\n * Initializes component structure and translation subscription (browser-only).\n */\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.createDOMStructure();\n this.handleTranslations();\n }\n }\n\n /**\n * Clean up resources and RxJS subscriptions.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Checks component state during change detection to toggle the disabled state of internal elements.\n */\n ngDoCheck(): void {\n if (this.disabled()) {\n this.renderer.setAttribute(this.buttonEl, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.buttonEl, 'disabled');\n }\n }\n\n /**\n * Prevents file dialog from opening when component is disabled.\n * @param evt Click event on the input element.\n */\n onClick(evt: Event): void {\n if (this.disabled()) {\n evt.preventDefault();\n }\n }\n\n /**\n * Handles file selection and emits a structured file selection event.\n * @param evt Change event from input.\n */\n onFilesSelected(evt: Event): void {\n const inputElement: HTMLInputElement = evt.target as HTMLInputElement;\n const fileList: FileList = inputElement.files;\n this.files = this.getFileModels(fileList);\n\n const fileEvent = new EclFileUploadFileSelectedEvent(this.files);\n this.filesSelected.emit(fileEvent);\n\n if (!fileEvent.defaultPrevented) {\n this.handleTranslations();\n this.updateListItemsDOM(this.files);\n }\n }\n\n private handleTranslations(): void {\n const uploadButtonLabelKey = this.geti18nUploadButtonLabelKey();\n\n this.translate\n .stream(uploadButtonLabelKey)\n .pipe(takeUntil(this.destroy$))\n .subscribe((translation: string) => {\n if (this.buttonEl) {\n this.renderer.setProperty(this.buttonEl, 'textContent', translation);\n }\n });\n }\n\n private geti18nUploadButtonLabelKey(): string {\n let key = '';\n\n if (this.files && this.files.length !== 0) {\n if (this.multiple()) {\n key = 'ecl.file-upload.REPLACE-FILES';\n } else {\n key = 'ecl.file-upload.REPLACE-FILE';\n }\n } else {\n if (this.multiple()) {\n key = 'ecl.file-upload.CHOOSE-FILES';\n } else {\n key = 'ecl.file-upload.CHOOSE-FILE';\n }\n }\n\n return key;\n }\n\n private updateListItemsDOM(files: EclFileUpload[]): void {\n this.renderer.setProperty(this.fileListEl, 'textContent', '');\n files.forEach((file) => {\n const item = this.createFileListItemDOMElement(file);\n this.renderer.appendChild(this.fileListEl, item);\n });\n }\n\n private createDOMStructure(): void {\n const labelEl = this.createLabelDOMElement();\n const hostEl = this.getHostDOMElement();\n const fileListEl = this.createFileListDOMElement();\n\n hostEl.insertAdjacentElement('afterend', fileListEl);\n hostEl.insertAdjacentElement('afterend', labelEl);\n\n this.fileListEl = fileListEl;\n }\n\n private getHostDOMElement(): HTMLInputElement {\n return this.el.nativeElement;\n }\n\n private createLabelDOMElement(): HTMLElement {\n this.buttonEl = this.renderer.createElement('span');\n this.addClasses(this.buttonEl, this.SPAN_BUTTON_CONVERSION_CLASSES);\n\n this.labelEl = this.renderer.createElement('label');\n this.renderer.setAttribute(this.labelEl, 'for', this.id());\n this.renderer.addClass(this.labelEl, 'ecl-file-upload__button-container');\n\n this.renderer.appendChild(this.labelEl, this.buttonEl);\n\n return this.labelEl;\n }\n\n private addClasses(element: HTMLElement, classes: string[] ): void {\n classes.forEach(className=> this.renderer.addClass(element, className) )\n }\n\n private createFileListDOMElement(): HTMLElement {\n const element = this.renderer.createElement('ul');\n this.renderer.addClass(element,'ecl-file-upload__list');\n this.renderer.setAttribute(element,'aria-live','polite');\n\n return element;\n }\n\n private createFileListItemDOMElement(fileUpload: EclFileUpload): HTMLElement {\n const liElement = this.renderer.createElement('li');\n this.renderer.addClass(liElement,'ecl-file-upload__item');\n\n const fileNameElement = this.renderer.createElement('span');\n const fileName = this.renderer.createText(fileUpload.name);\n this.renderer.appendChild(fileNameElement, fileName);\n\n this.renderer.addClass( fileNameElement,'ecl-file-upload__item-name' );\n\n const fileMetaElement = this.renderer.createElement('span');\n\n const fileMetaElementText = this.renderer.createText(`(${fileUpload.size} - ${fileUpload.extension})`);\n this.renderer.appendChild(fileMetaElement, fileMetaElementText);\n this.renderer.addClass(fileMetaElement, 'ecl-file-upload__item-meta');\n\n this.renderer.appendChild(liElement, fileNameElement);\n this.renderer.appendChild(liElement, fileMetaElement);\n\n return liElement;\n }\n\n private getFileModels(fileList: FileList): EclFileUpload[] {\n return Array.from(fileList).map((f) => ({\n name: f.name,\n extension: this.getFilenameExtension(f.name),\n size: this.formatBytes(f.size),\n }));\n }\n\n private getFilenameExtension(filename: string): string {\n return filename.split('.').pop();\n }\n\n private formatBytes(bytes, decimals = 2): string {\n if (bytes === 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;\n }\n}\n","import { EclFileUploadDirective } from './ecl-file-upload.directive';\n\nexport * from './ecl-file-upload.directive';\nexport * from './models/ecl-file-upload.model';\nexport * from './events/ecl-file-upload-file-selected.event';\n\nexport const EUI_ECL_FILE_UPLOAD = [\n EclFileUploadDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-icon.mjs","sources":["../../components/ecl-icon/ecl-icon.component.ts","../../components/ecl-icon/ecl-icon.component.html","../../components/ecl-icon/index.ts","../../components/ecl-icon/eui-ecl-components-ecl-icon.ts"],"sourcesContent":["import { isPlatformBrowser, NgClass } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n HostBinding,\n inject,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n signal,\n SimpleChanges,\n viewChild,\n} from '@angular/core';\nimport { ECLBaseDirective, EclThemeService } from '@eui/ecl/core';\n\n/**\n * ECL icon component – renders SVG icons from various sets depending on current theme.\n * Integrates with ECL theming and supports accessibility options.\n */\n@Component({\n selector: 'ecl-icon',\n templateUrl: './ecl-icon.component.html',\n hostDirectives: [\n {\n directive: ECLBaseDirective,\n },\n ],\n imports: [NgClass],\n providers: [EclThemeService],\n host: {\n '[class.ecl-icon--flip-horizontal]': 'isFlipHorizontal()',\n },\n})\nexport class EclIconComponent implements OnInit, OnChanges, OnDestroy {\n /**\n * Defines the icon set to use.\n * Available sets: `default`, `social`, `social-media`, `flag`, or a custom URL prefix.\n * Defaults to `'default'`.\n */\n iconSet = input<'default' | 'social' | 'social-media' | 'social-media-color' | 'flag' | 'flag-non-members' |\n 'phosphor' | string>('default');\n\n /**\n * Name of the icon to render from the selected set.\n */\n icon = input<string>();\n\n /**\n * Size of the icon.\n * Supported values: `'2xs'`, `'xs'`, `'s'`, `'m'`, `'l'`, `'xl'`, `'2xl'`, `'fluid'`.\n * Defaults to `'xs'`.\n */\n size = input<'2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | 'fluid' | string>('xs');\n\n /**\n * Applies color styling to the icon.\n * Use `'inverted'` for icons on dark backgrounds, or `'primary'` for emphasis.\n */\n color = input<'inverted' | 'primary' | null>(null);\n\n /**\n * Adds a transformation modifier to the icon (e.g., rotation).\n */\n transform = input<string>();\n\n /**\n * ID reference for an external element that labels this icon for screen readers.\n */\n readonly ariaLabelledby = input<string>(undefined);\n\n /**\n * ARIA role of the icon. If a `title` is provided and no role is defined, defaults to `'img'`.\n */\n readonly role = input<string>(undefined);\n\n /**\n * Title used for accessibility. Also affects `aria-hidden` and `role`.\n */\n readonly title = input<string>(undefined);\n\n /**\n * Determines whether the icon should be hidden from assistive technologies.\n * Defaults to `true` unless a title is provided.\n */\n readonly ariaHidden = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Controls whether the icon is focusable via keyboard.\n * Defaults to `false`.\n */\n readonly focusable = input(false, { transform: booleanAttribute });\n\n /**\n * Resolved role: uses the explicit `role` input if provided,\n * otherwise defaults to `'img'` when a `title` is set.\n */\n readonly effectiveRole = computed<string | undefined>(() => {\n const explicit = this.role();\n if (explicit !== undefined) return explicit;\n return this.title() !== undefined ? 'img' : undefined;\n });\n\n /**\n * Resolved aria-hidden: uses the explicit `ariaHidden` input if provided,\n * otherwise hides the icon unless a `title` is set.\n */\n readonly effectiveAriaHidden = computed<boolean>(() => {\n const explicit = this.ariaHidden();\n if (explicit !== undefined) return explicit;\n return this.title() === undefined;\n });\n\n /**\n * Flips the icon horizontally if set to `true`.\n */\n readonly isFlipHorizontal = input(false, { transform: booleanAttribute });\n\n /**\n * Adds a dark background utility class if the color is set to `'inverted'`.\n */\n @HostBinding('class.ecl-u-bg-grey')\n get isColorInverted(): boolean {\n return this.color() === 'inverted';\n }\n\n readonly svgEl = viewChild<ElementRef>('svg');\n\n iconUrl = signal<string>('');\n baseDirective = inject(ECLBaseDirective);\n el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n\n /**\n * Extra classes added programmatically by parent components\n * (button, link, etc.)\n */\n readonly extraClasses = signal<string>('');\n\n /**\n * Real classes currently present on <ecl-icon>.\n * To support [class.foo] / [ngClass].\n */\n readonly hostClasses = signal<string>('');\n\n readonly svgClasses = computed<Record<string, boolean>>(() => {\n return {\n [this.baseDirective.getCssClasses('ecl-icon')]: true,\n [`ecl-icon--${this.size()}`]: !!this.size(),\n [`ecl-icon--${this.transform()}`]: !!this.transform(),\n [`ecl-icon--${this.color()}`]: !!this.color(),\n ...this.toClassRecord(this.hostClasses()),\n ...this.toClassRecord(this.extraClasses()),\n };\n });\n\n private classObserver?: MutationObserver;\n\n constructor() {\n afterNextRender(() => {\n this.detachHostAndPromoteSvg();\n this.syncHostClassesFromDom();\n this.observeHostClassChanges();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['icon']) {\n this.initiateIconUrl();\n }\n }\n\n ngOnInit(): void {\n this.initiateIconUrl();\n }\n\n ngOnDestroy(): void {\n this.classObserver?.disconnect();\n if (!isPlatformBrowser(this.platformId)) return;\n\n try {\n const svgNative = this.svgEl()?.nativeElement as SVGElement | null;\n const parent = svgNative?.parentElement;\n if (svgNative && parent) parent.removeChild(svgNative);\n } catch {\n /* ignore */\n }\n }\n\n addExtraClass(className: string): void {\n const classes = new Set([\n ...this.tokenize(this.extraClasses()),\n ...this.tokenize(className),\n ]);\n this.extraClasses.set(Array.from(classes).join(' '));\n }\n\n removeExtraClass(className: string): void {\n const classes = this.tokenize(this.extraClasses()).filter((c) => c !== className);\n this.extraClasses.set(classes.join(' '));\n }\n\n setExtraClasses(classes: string): void {\n this.extraClasses.set(classes ?? '');\n }\n\n private syncHostClassesFromDom(): void {\n const host = this.el.nativeElement;\n this.hostClasses.set(host.className || '');\n }\n\n private observeHostClassChanges(): void {\n const host = this.el.nativeElement;\n\n this.classObserver = new MutationObserver(() => {\n this.hostClasses.set(host.className || '');\n });\n\n this.classObserver.observe(host, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n\n private toClassRecord(classes?: string | null): Record<string, boolean> {\n return Object.fromEntries(\n this.tokenize(classes).map(c => [c, true])\n );\n }\n\n private tokenize(classes: string | null | undefined): string[] {\n return (classes ?? '')\n .split(/\\s+/)\n .filter(Boolean);\n }\n\n private detachHostAndPromoteSvg(): void {\n const hostEl = this.el.nativeElement as HTMLElement | null;\n const svgNative = this.svgEl()?.nativeElement as SVGElement | null;\n if (!hostEl || !svgNative) return;\n\n const hostParentEl = hostEl.parentElement;\n if (!hostParentEl) return;\n\n // add the svg and remove the parent from the DOM\n this.renderer.setStyle(hostEl, 'visibility', 'hidden');\n hostEl.after(svgNative);\n this.renderer.removeChild(hostParentEl, hostEl);\n }\n\n private initiateIconUrl(): void {\n switch (this.iconSet()) {\n case 'default':\n this.iconUrl.set(`assets/images/ecl/icons/sprite.svg#${this.icon()}`);\n break;\n case 'social': // TODO: Remove this in the next version.\n this.iconUrl.set(`assets/images/ecl/networks/sprite.svg#${this.icon()}`);\n break;\n case 'social-media':\n this.iconUrl.set(`assets/images/ecl/networks/sprite.svg#${this.icon()}`);\n break;\n case 'social-media-color':\n this.iconUrl.set(`assets/images/ecl/networks-color/sprite.svg#${this.icon()}`);\n break;\n case 'flag':\n this.iconUrl.set(`assets/images/ecl/icons-flag/sprites/icons-flag.svg#${this.icon()}`);\n break;\n case 'flag-non-members':\n this.iconUrl.set(`assets/images/ecl/icons-flag/sprites/icons-flag-non-members.svg#${this.icon()}`);\n break;\n case 'phosphor':\n this.iconUrl.set(`assets/icons/sprites/regular.svg#${this.icon()}`);\n break;\n case 'phosphor-fill':\n this.iconUrl.set(`assets/icons/sprites/fill.svg#${this.icon()}`);\n break;\n default:\n this.iconUrl.set(`assets/images/ecl/icons/sprite.svg#${this.icon()}`);\n }\n }\n}\n","<svg\n #svg\n [ngClass]=\"svgClasses()\"\n [attr.aria-hidden]=\"effectiveAriaHidden()\"\n [attr.aria-labelledby]=\"ariaLabelledby() || null\"\n [attr.role]=\"effectiveRole() || null\"\n [attr.focusable]=\"focusable()\">\n @if (title()) {\n <title>{{title()}}</title>\n }\n <use [attr.href]=\"iconUrl()\"></use>\n <ng-content></ng-content>\n</svg>\n","import { EclIconComponent } from './ecl-icon.component';\n\nexport * from './ecl-icon.component';\n\nexport const EUI_ECL_ICON = [\n EclIconComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-icon.mjs","sources":["../../components/ecl-icon/ecl-icon.component.ts","../../components/ecl-icon/ecl-icon.component.html","../../components/ecl-icon/index.ts","../../components/ecl-icon/eui-ecl-components-ecl-icon.ts"],"sourcesContent":["import { isPlatformBrowser, NgClass } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n HostBinding,\n inject,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n signal,\n SimpleChanges,\n viewChild,\n} from '@angular/core';\nimport { ECLBaseDirective, EclThemeService } from '@eui/ecl/core';\n\n/**\n * ECL icon component – renders SVG icons from various sets depending on current theme.\n * Integrates with ECL theming and supports accessibility options.\n */\n@Component({\n selector: 'ecl-icon',\n templateUrl: './ecl-icon.component.html',\n hostDirectives: [\n {\n directive: ECLBaseDirective,\n },\n ],\n imports: [NgClass],\n providers: [EclThemeService],\n host: {\n '[class.ecl-icon--flip-horizontal]': 'isFlipHorizontal()',\n },\n})\nexport class EclIconComponent implements OnInit, OnChanges, OnDestroy {\n /**\n * Defines the icon set to use.\n * Available sets: `default`, `social`, `social-media`, `flag`, or a custom URL prefix.\n * Defaults to `'default'`.\n */\n iconSet = input<'default' | 'social' | 'social-media' | 'social-media-color' | 'flag' | 'flag-non-members' |\n 'phosphor' | 'phosphor-fill' | string>('default');\n\n /**\n * Name of the icon to render from the selected set.\n */\n icon = input<string>();\n\n /**\n * Size of the icon.\n * Supported values: `'2xs'`, `'xs'`, `'s'`, `'m'`, `'l'`, `'xl'`, `'2xl'`, `'fluid'`.\n * Defaults to `'xs'`.\n */\n size = input<'2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | 'fluid' | string>('xs');\n\n /**\n * Applies color styling to the icon.\n * Use `'inverted'` for icons on dark backgrounds, or `'primary'` for emphasis.\n */\n color = input<'inverted' | 'primary' | null>(null);\n\n /**\n * Adds a transformation modifier to the icon (e.g., rotation).\n */\n transform = input<string>();\n\n /**\n * ID reference for an external element that labels this icon for screen readers.\n */\n readonly ariaLabelledby = input<string>(undefined);\n\n /**\n * ARIA role of the icon. If a `title` is provided and no role is defined, defaults to `'img'`.\n */\n readonly role = input<string>(undefined);\n\n /**\n * Title used for accessibility. Also affects `aria-hidden` and `role`.\n */\n readonly title = input<string>(undefined);\n\n /**\n * Determines whether the icon should be hidden from assistive technologies.\n * Defaults to `true` unless a title is provided.\n */\n readonly ariaHidden = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Controls whether the icon is focusable via keyboard.\n * Defaults to `false`.\n */\n readonly focusable = input(false, { transform: booleanAttribute });\n\n /**\n * Resolved role: uses the explicit `role` input if provided,\n * otherwise defaults to `'img'` when a `title` is set.\n */\n readonly effectiveRole = computed<string | undefined>(() => {\n const explicit = this.role();\n if (explicit !== undefined) return explicit;\n return this.title() !== undefined ? 'img' : undefined;\n });\n\n /**\n * Resolved aria-hidden: uses the explicit `ariaHidden` input if provided,\n * otherwise hides the icon unless a `title` is set.\n */\n readonly effectiveAriaHidden = computed<boolean>(() => {\n const explicit = this.ariaHidden();\n if (explicit !== undefined) return explicit;\n return this.title() === undefined;\n });\n\n /**\n * Flips the icon horizontally if set to `true`.\n */\n readonly isFlipHorizontal = input(false, { transform: booleanAttribute });\n\n /**\n * Adds a dark background utility class if the color is set to `'inverted'`.\n */\n @HostBinding('class.ecl-u-bg-grey')\n get isColorInverted(): boolean {\n return this.color() === 'inverted';\n }\n\n readonly svgEl = viewChild<ElementRef>('svg');\n\n iconUrl = signal<string>('');\n baseDirective = inject(ECLBaseDirective);\n el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n\n /**\n * Extra classes added programmatically by parent components\n * (button, link, etc.)\n */\n readonly extraClasses = signal<string>('');\n\n /**\n * Real classes currently present on <ecl-icon>.\n * To support [class.foo] / [ngClass].\n */\n readonly hostClasses = signal<string>('');\n\n readonly svgClasses = computed<Record<string, boolean>>(() => {\n return {\n [this.baseDirective.getCssClasses('ecl-icon')]: true,\n [`ecl-icon--${this.size()}`]: !!this.size(),\n [`ecl-icon--${this.transform()}`]: !!this.transform(),\n [`ecl-icon--${this.color()}`]: !!this.color(),\n ...this.toClassRecord(this.hostClasses()),\n ...this.toClassRecord(this.extraClasses()),\n };\n });\n\n private classObserver?: MutationObserver;\n\n constructor() {\n afterNextRender(() => {\n this.detachHostAndPromoteSvg();\n this.syncHostClassesFromDom();\n this.observeHostClassChanges();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['icon']) {\n this.initiateIconUrl();\n }\n }\n\n ngOnInit(): void {\n this.initiateIconUrl();\n }\n\n ngOnDestroy(): void {\n this.classObserver?.disconnect();\n if (!isPlatformBrowser(this.platformId)) return;\n\n try {\n const svgNative = this.svgEl()?.nativeElement as SVGElement | null;\n const parent = svgNative?.parentElement;\n if (svgNative && parent) parent.removeChild(svgNative);\n } catch {\n /* ignore */\n }\n }\n\n addExtraClass(className: string): void {\n const classes = new Set([\n ...this.tokenize(this.extraClasses()),\n ...this.tokenize(className),\n ]);\n this.extraClasses.set(Array.from(classes).join(' '));\n }\n\n removeExtraClass(className: string): void {\n const classes = this.tokenize(this.extraClasses()).filter((c) => c !== className);\n this.extraClasses.set(classes.join(' '));\n }\n\n setExtraClasses(classes: string): void {\n this.extraClasses.set(classes ?? '');\n }\n\n private syncHostClassesFromDom(): void {\n const host = this.el.nativeElement;\n this.hostClasses.set(host.className || '');\n }\n\n private observeHostClassChanges(): void {\n const host = this.el.nativeElement;\n\n this.classObserver = new MutationObserver(() => {\n this.hostClasses.set(host.className || '');\n });\n\n this.classObserver.observe(host, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n\n private toClassRecord(classes?: string | null): Record<string, boolean> {\n return Object.fromEntries(\n this.tokenize(classes).map(c => [c, true])\n );\n }\n\n private tokenize(classes: string | null | undefined): string[] {\n return (classes ?? '')\n .split(/\\s+/)\n .filter(Boolean);\n }\n\n private detachHostAndPromoteSvg(): void {\n const hostEl = this.el.nativeElement as HTMLElement | null;\n const svgNative = this.svgEl()?.nativeElement as SVGElement | null;\n if (!hostEl || !svgNative) return;\n\n const hostParentEl = hostEl.parentElement;\n if (!hostParentEl) return;\n\n // add the svg and remove the parent from the DOM\n this.renderer.setStyle(hostEl, 'visibility', 'hidden');\n hostEl.after(svgNative);\n this.renderer.removeChild(hostParentEl, hostEl);\n }\n\n private initiateIconUrl(): void {\n switch (this.iconSet()) {\n case 'default':\n this.iconUrl.set(`assets/images/ecl/icons/sprite.svg#${this.icon()}`);\n break;\n case 'social': // TODO: Remove this in the next version.\n this.iconUrl.set(`assets/images/ecl/networks/sprite.svg#${this.icon()}`);\n break;\n case 'social-media':\n this.iconUrl.set(`assets/images/ecl/networks/sprite.svg#${this.icon()}`);\n break;\n case 'social-media-color':\n this.iconUrl.set(`assets/images/ecl/networks-color/sprite.svg#${this.icon()}`);\n break;\n case 'flag':\n this.iconUrl.set(`assets/images/ecl/icons-flag/sprites/icons-flag.svg#${this.icon()}`);\n break;\n case 'flag-non-members':\n this.iconUrl.set(`assets/images/ecl/icons-flag/sprites/icons-flag-non-members.svg#${this.icon()}`);\n break;\n case 'phosphor':\n this.iconUrl.set(`assets/icons/sprites/regular.svg#${this.icon()}`);\n break;\n case 'phosphor-fill':\n this.iconUrl.set(`assets/icons/sprites/fill.svg#${this.icon()}`);\n break;\n default:\n this.iconUrl.set(`assets/images/ecl/icons/sprite.svg#${this.icon()}`);\n }\n }\n}\n","<svg\n #svg\n [ngClass]=\"svgClasses()\"\n [attr.aria-hidden]=\"effectiveAriaHidden()\"\n [attr.aria-labelledby]=\"ariaLabelledby() || null\"\n [attr.role]=\"effectiveRole() || null\"\n [attr.focusable]=\"focusable()\">\n @if (title()) {\n <title>{{title()}}</title>\n }\n <use [attr.href]=\"iconUrl()\"></use>\n <ng-content></ng-content>\n</svg>\n","import { EclIconComponent } from './ecl-icon.component';\n\nexport * from './ecl-icon.component';\n\nexport const EUI_ECL_ICON = [\n EclIconComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -243,6 +243,12 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
|
|
|
243
243
|
this.destroy$ = new Subject();
|
|
244
244
|
this.isMobileBreakpoint = false;
|
|
245
245
|
this.MIN_DISTANCE_TOP = 10;
|
|
246
|
+
/**
|
|
247
|
+
* Extra spacing (px) kept between the sticky toggler and the target heading when scrolling to a section on mobile,
|
|
248
|
+
* so the heading is not flush against the toggler. Mirrors the spacing buffer used by the vanilla ECL
|
|
249
|
+
* `scroll-margin-top` rule (trigger height + spacing).
|
|
250
|
+
*/
|
|
251
|
+
this.MOBILE_SCROLL_SPACING = 16;
|
|
246
252
|
this.ICON_SIZE_EC_THEME = '2xs';
|
|
247
253
|
this.ICON_SIZE_EU_THEME = 's';
|
|
248
254
|
this.TABLET_BREAKPOINT = 996;
|
|
@@ -321,8 +327,15 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
|
|
|
321
327
|
* On mobile view - handle the dropdown toggle.
|
|
322
328
|
*/
|
|
323
329
|
onExpandButtonClick() {
|
|
324
|
-
this.
|
|
325
|
-
|
|
330
|
+
this.setButtonExpanded(!this.isButtonExpanded);
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Single entry point for changing the dropdown expanded state. Keeps the local flag (used for the button's
|
|
334
|
+
* aria-expanded) and the shared service state (that drives the list's visibility class) in sync.
|
|
335
|
+
*/
|
|
336
|
+
setButtonExpanded(isExpanded) {
|
|
337
|
+
this.isButtonExpanded = isExpanded;
|
|
338
|
+
this.eclInpageNavigationService.eclInpageNavigationToggle(isExpanded);
|
|
326
339
|
}
|
|
327
340
|
/**
|
|
328
341
|
* Dropdown keyboard navigation on mobile view.
|
|
@@ -386,7 +399,7 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
|
|
|
386
399
|
}
|
|
387
400
|
onExpandButtonArrowDown(evt) {
|
|
388
401
|
evt.preventDefault();
|
|
389
|
-
this.
|
|
402
|
+
this.setButtonExpanded(true);
|
|
390
403
|
this.eclNavigationLinkItems().at(0).onFocus();
|
|
391
404
|
}
|
|
392
405
|
onExpandButtonTab(evt) {
|
|
@@ -411,23 +424,50 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
|
|
|
411
424
|
item.itemClick.pipe(takeUntil$1(this.destroy$)).subscribe((evt) => {
|
|
412
425
|
this.selectNavigationItem(item.sectionElement);
|
|
413
426
|
if (item.sectionElement) {
|
|
414
|
-
item.sectionElement
|
|
427
|
+
this.scrollToSection(item.sectionElement);
|
|
415
428
|
item.sectionElement.focus();
|
|
416
429
|
}
|
|
417
|
-
this.
|
|
430
|
+
this.setButtonExpanded(false);
|
|
418
431
|
});
|
|
419
432
|
}
|
|
420
433
|
onItemEnter(item) {
|
|
421
434
|
this.selectNavigationItem(item.sectionElement);
|
|
422
435
|
if (item.sectionElement) {
|
|
423
|
-
item.sectionElement
|
|
436
|
+
this.scrollToSection(item.sectionElement);
|
|
424
437
|
if (item.sectionElement.tabIndex === -1) {
|
|
425
438
|
item.sectionElement.tabIndex = 0;
|
|
426
439
|
item.sectionElement.focus();
|
|
427
440
|
item.sectionElement.tabIndex = -1;
|
|
428
441
|
}
|
|
429
442
|
}
|
|
430
|
-
this.
|
|
443
|
+
this.setButtonExpanded(false);
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Scrolls the target section into view. On desktop this is a plain scrollIntoView() (unchanged behaviour). On
|
|
447
|
+
* mobile the in-page navigation toggler is sticky at the top, so a top-aligned scroll would hide the heading
|
|
448
|
+
* underneath it; we therefore set `scroll-margin-top` on the target (sticky toggler height + spacing buffer) and
|
|
449
|
+
* let scrollIntoView() honour it. Using scroll-margin-top instead of a manual window.scrollTo() keeps this working
|
|
450
|
+
* regardless of which element is the actual scroll container (window or a nested scrollable wrapper).
|
|
451
|
+
*/
|
|
452
|
+
scrollToSection(sectionElement) {
|
|
453
|
+
if (!this.isBrowser)
|
|
454
|
+
return;
|
|
455
|
+
const offset = this.getMobileScrollOffset();
|
|
456
|
+
sectionElement.style.scrollMarginTop = offset > 0 ? `${offset}px` : '';
|
|
457
|
+
sectionElement.scrollIntoView();
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* The offset (px) applied on mobile so that a scrolled-to heading clears the sticky toggler: the toggler height
|
|
461
|
+
* plus a spacing buffer. Returns 0 on desktop (no sticky toggler). Shared by the scroll logic and the scroll-spy
|
|
462
|
+
* so the heading lands exactly where the spy expects it, keeping the active item in sync after a click.
|
|
463
|
+
*/
|
|
464
|
+
getMobileScrollOffset() {
|
|
465
|
+
if (!this.isMobileBreakpoint)
|
|
466
|
+
return 0;
|
|
467
|
+
const toggleWrapper = this.toggleWrapper()?.nativeElement;
|
|
468
|
+
if (!toggleWrapper)
|
|
469
|
+
return 0;
|
|
470
|
+
return toggleWrapper.getBoundingClientRect().height + this.MOBILE_SCROLL_SPACING;
|
|
431
471
|
}
|
|
432
472
|
onItemArrowDown(item) {
|
|
433
473
|
const index = this.eclNavigationLinkItems().indexOf(item);
|
|
@@ -444,7 +484,7 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
|
|
|
444
484
|
else {
|
|
445
485
|
const togglerButton = this.togglerButton();
|
|
446
486
|
if (this.isMobileBreakpoint && togglerButton) {
|
|
447
|
-
this.
|
|
487
|
+
this.setButtonExpanded(false);
|
|
448
488
|
togglerButton.nativeElement.focus();
|
|
449
489
|
}
|
|
450
490
|
}
|
|
@@ -497,7 +537,13 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
|
|
|
497
537
|
if (!this.isBrowser || !this.win)
|
|
498
538
|
return null;
|
|
499
539
|
let currentSection = null;
|
|
500
|
-
|
|
540
|
+
// On mobile the heading is scrolled to sit just below the sticky toggler, so the spy must use that same
|
|
541
|
+
// offset; otherwise it would highlight the previous section. The extra MIN_DISTANCE_TOP is a cushion so a
|
|
542
|
+
// heading that lands right on the boundary (sub-pixel rounding) is still treated as "reached". On desktop
|
|
543
|
+
// keep the original threshold.
|
|
544
|
+
const offset = this.isMobileBreakpoint
|
|
545
|
+
? this.getMobileScrollOffset() + this.MIN_DISTANCE_TOP
|
|
546
|
+
: this.MIN_DISTANCE_TOP + (this.offsetTop() ?? 0);
|
|
501
547
|
const isNearBottom = this.win.innerHeight + this.win.scrollY >=
|
|
502
548
|
this.doc.documentElement.scrollHeight - 10;
|
|
503
549
|
for (const sectionElement of sectionElements) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-inpage-navigation.mjs","sources":["../../components/ecl-inpage-navigation/ecl-inpage-navigation-item.component.ts","../../components/ecl-inpage-navigation/ecl-inpage-navigation-item.component.html","../../components/ecl-inpage-navigation/services/ecl-inpage-navigation.service.ts","../../components/ecl-inpage-navigation/ecl-inpage-navigation-list.directive.ts","../../components/ecl-inpage-navigation/ecl-inpage-navigation.component.ts","../../components/ecl-inpage-navigation/ecl-inpage-navigation.component.html","../../components/ecl-inpage-navigation/index.ts","../../components/ecl-inpage-navigation/eui-ecl-components-ecl-inpage-navigation.ts"],"sourcesContent":["import { Component, HostBinding, Output, EventEmitter, ElementRef, inject, PLATFORM_ID, DOCUMENT, input, model, viewChild } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBaseEvent } from '@eui/ecl/core';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport class EclInpageNavigationItemClickEvent extends EclBaseEvent {\n constructor(public sectionElementId: string) {\n super();\n }\n}\n/**\n * Represent a single navigation item. contains the link, that activates/scrolls to the new current paragraph of the page.\n */\n@Component({\n selector: 'li[eclInpageNavigationItem]',\n templateUrl: './ecl-inpage-navigation-item.component.html',\n imports: [...EUI_ECL_LINK],\n styles: [\n `\n :host {\n display: list-item;\n }\n `,\n ],\n host: {\n '[class.ecl-inpage-navigation__item--active]': 'isActive()',\n },\n})\nexport class EclInpageNavigationItemComponent extends ECLBaseDirective {\n @HostBinding('class.ecl-inpage-navigation__item') cmpClass = true;\n /**\n * The role of the component is 'listitem', should not be changed.\n */\n @HostBinding('attr.role') role = 'listitem';\n\n /**\n * The label that is displayed in the items list.\n */\n readonly label = input<string>(undefined);\n readonly sectionId = input<string>(undefined);\n readonly isActive = model<boolean>(undefined);\n\n /**\n * Emited when user clicks on the item.\n */\n @Output() itemClick = new EventEmitter<EclInpageNavigationItemClickEvent>();\n /**\n * Emitted when on keyboard navigation, user clicks the arrow-up.\n */\n @Output() itemArrowUp = new EventEmitter();\n /**\n * Emitted when on keyboard navigation, user clicks the arrow-down.\n */\n @Output() itemArrowDown = new EventEmitter();\n /**\n * Emitted when on keyboard navigation, user clicks the TAB.\n */\n @Output() itemTab = new EventEmitter<Event>();\n /**\n * Emitted when on keyboard navigation, user clicks the ENTER.\n */\n @Output() itemEnter = new EventEmitter();\n\n readonly link = viewChild(EclLinkDirective);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly doc = inject(DOCUMENT);\n\n constructor() {\n const el = inject(ElementRef);\n\n super();\n if (el.nativeElement.tagName.toLowerCase() === 'ecl-inpage-navigation-item') {\n console.warn('\"ecl-inpage-navigation-item\" selector is deprecated; use \"li[eclInpageNavigationItem]\" instead.');\n }\n }\n\n onItemClick(evt: MouseEvent): void {\n const event = new EclInpageNavigationItemClickEvent(this.sectionId());\n this.itemClick.next(event);\n\n evt.preventDefault();\n }\n\n /**\n * Returns page element/paragraph, that is associated with this item from the navigation list.\n */\n get sectionElement(): HTMLElement | null {\n if (!isPlatformBrowser(this.platformId)) return null;\n return this.doc.querySelector<HTMLElement>(`#${this.sectionId()}`);\n }\n\n onArrowUp(evt: Event): void {\n evt.preventDefault();\n this.itemArrowUp.emit()\n }\n\n onArrowDown(evt: Event): void {\n evt.preventDefault();\n this.itemArrowDown.emit();\n }\n\n onTab(evt: Event): void {\n this.itemTab.emit(evt);\n }\n\n onFocus(): void{\n this.link().onFocus();\n }\n\n onEnter(evt: Event): void {\n evt.preventDefault();\n evt.stopPropagation();\n this.itemEnter.emit();\n }\n}\n","<a eclLink (click)=\"onItemClick($event)\" href=\"#\" class=\"ecl-inpage-navigation__link\"\n (keydown.arrowUp)=\"onArrowUp($event)\" (keydown.arrowDown)=\"onArrowDown($event)\" (keydown.enter)=\"onEnter($event)\"\n (keydown.tab)=\"onTab($event)\">\n {{ label() }}\n</a>\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class EclInpageNavigationService {\n\n\tpublic eclInpageNavigationExpanded$: Observable<boolean>;\n\tprivate eclInpageNavigationExpanded: Subject<boolean> = new Subject<boolean>();\n\n\tconstructor() {\n this.eclInpageNavigationExpanded$ = this.eclInpageNavigationExpanded.asObservable();\n\t}\n\n\t/**\n\t * When user clicks on arrow down button in mobile view.\n\t * @param isExpanded\n\t */\n eclInpageNavigationToggle(isExpanded: boolean): void {\n\t\tthis.eclInpageNavigationExpanded.next(isExpanded);\n\t}\n}\n","import { AfterContentInit, Directive, ElementRef, HostBinding, OnDestroy, inject, signal } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclInpageNavigationService } from './services/ecl-inpage-navigation.service';\n\n/**\n * The parent list component, that contains navigation items links.\n */\n@Directive({\n selector: 'ul[eclInpageNavigationList]',\n host: {\n '[style.max-height.px]': 'maxHeight()',\n },\n\n})\nexport class EclInpageNavigationListDirective extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n @HostBinding('class.ecl-inpage-navigation__list') hasClass = true;\n /**\n * If the dropdown is visible in mobile view.\n */\n @HostBinding('class.ecl-inpage-navigation__list--visible') isVisible = false;\n maxHeight = signal<number | null>(null);\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private eclInpageNavigationService = inject(EclInpageNavigationService);\n\n ngAfterContentInit(): void {\n this.eclInpageNavigationService.eclInpageNavigationExpanded$.pipe(takeUntil(this.destroy$)).subscribe((value: boolean) => {\n this.isVisible = value;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n}\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport { AfterViewInit, ChangeDetectorRef, Component, DOCUMENT, DoCheck, ElementRef, IterableDiffer, IterableDiffers, NgZone, OnDestroy, OnInit, PLATFORM_ID, afterNextRender, inject, numberAttribute, output, input, viewChild, contentChildren, contentChild } from '@angular/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_STICKY_CONTAINER } from '@eui/ecl/components/ecl-sticky-container';\nimport { ECLBaseDirective, EclBaseEvent, EclRtlService, EclThemeService } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { EclInpageNavigationItemComponent } from './ecl-inpage-navigation-item.component';\nimport { EclInpageNavigationListDirective } from './ecl-inpage-navigation-list.directive';\nimport { EclInpageNavigationService } from './services/ecl-inpage-navigation.service';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport class EclInpageNavigationSectionEnterEvent extends EclBaseEvent {\n constructor(public sectionId: string) {\n super();\n }\n}\n\n/**\n * The in-page navigation is a vertical menu containing (anchored) links to H2-headings on long content pages.\n * It gives the user an overview of the page contents and has a fixed position (does not move while scrolling) at either the left\n * side of a page on desktop or top-bar on mobile. This component helps users scan of the page quickly contents and may potentially\n * reduce vertical scrolling, allowing users to easily jump straight to the segment of the page.\n */\n@Component({\n selector: 'ecl-inpage-navigation',\n templateUrl: './ecl-inpage-navigation.component.html',\n imports: [TranslatePipe, ...EUI_ECL_STICKY_CONTAINER, ...EUI_ECL_ICON],\n styles: [\n `\n @media (min-width: 996px) {\n .ecl-inpage-navigation__list {\n display: block !important;\n }\n }\n `,\n ],\n})\nexport class EclInpageNavigationComponent extends ECLBaseDirective implements OnInit, AfterViewInit, OnDestroy, DoCheck {\n eclThemeService = inject(EclThemeService);\n\n readonly eclTitle = input<string>(undefined);\n /**\n * Used to calculate component's position.\n */\n readonly marginTop = input<number>(undefined);\n readonly marginBottom = input<number>(undefined);\n /**\n * Sets the offset from the top of the page (for example if there is a toolbar or header). Used to calculate scrolling behaviour.\n */\n readonly offsetTop = input<number, unknown>(undefined, { transform: numberAttribute });\n readonly togglerButton = viewChild<ElementRef<HTMLButtonElement>>('togglerButton');\n readonly toggleWrapper = viewChild<ElementRef<HTMLDivElement>>('toggleWrapper');\n readonly navTittle = viewChild<ElementRef<HTMLDivElement>>('navTittle');\n /**\n * This event will be emitted, when onscroll a new section becomes active.\n */\n readonly sectionEnter = output<EclInpageNavigationSectionEnterEvent>();\n\n readonly eclNavigationLinkItems = contentChildren(EclInpageNavigationItemComponent, { descendants: true });\n readonly eclNavigationList = contentChild(EclInpageNavigationListDirective);\n\n /**\n * Used for the mobile view, where user can select a section from the dropdown.\n */\n isButtonExpanded = false;\n currentSectionElement: HTMLElement | null = null;\n public isRtl = false;\n public listMaxHeight: number;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclInpageNavigationItemComponent>;\n private isMobileBreakpoint = false;\n private MIN_DISTANCE_TOP = 10;\n private readonly ICON_SIZE_EC_THEME = '2xs';\n private readonly ICON_SIZE_EU_THEME = 's';\n private readonly TABLET_BREAKPOINT = 996;\n private intersectionObserver: IntersectionObserver;\n private eclRtlService = inject(EclRtlService);\n private differs = inject(IterableDiffers);\n private scrollDispatcher: ScrollDispatcher = inject(ScrollDispatcher);\n private zone = inject(NgZone);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private viewportRuler = inject(ViewportRuler);\n private eclInpageNavigationService = inject(EclInpageNavigationService);\n private cdr = inject(ChangeDetectorRef);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly doc = inject(DOCUMENT);\n private readonly win = this.doc.defaultView; // Window | null\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.zone.run(() => this.setListHeight());\n });\n }\n\n ngOnInit(): void {\n this.handleRtlChangeState();\n }\n\n ngAfterViewInit() {\n if (!this.isBrowser) return;\n\n this.subscribeToCDKScrollEvent();\n this.observeBreakpointChanges();\n this.viewportRuler.change(300)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.zone.run(() => this.setListHeight()));\n\n const togglerButton = this.togglerButton();\n if (typeof IntersectionObserver !== 'undefined' && togglerButton?.nativeElement) {\n this.intersectionObserver = new IntersectionObserver(() => this.setListHeight());\n this.intersectionObserver.observe(togglerButton.nativeElement);\n }\n }\n\n get hasNavigationList(): boolean {\n return !!this.eclNavigationList();\n }\n\n get currentNavigationLinkItem(): EclInpageNavigationItemComponent {\n return this.eclNavigationLinkItems().find((item) => item.sectionElement === this.currentSectionElement);\n }\n\n /**\n * the size of the arrow-down icon, used in mobile view. There are different sizes for EC and EU themes.\n */\n get sizeIcon(): string {\n if (this.eclThemeService.isECTheme()) {\n return this.ICON_SIZE_EC_THEME;\n } else {\n return this.ICON_SIZE_EU_THEME;\n }\n }\n\n get hasActiveSection(): boolean {\n return !!this.currentSectionElement;\n }\n\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclNavigationLinkItems());\n if (diff) {\n diff.forEachItem((item) => {\n this.connectItemEvents(item.item);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n const togglerButton = this.togglerButton();\n if (this.intersectionObserver && togglerButton?.nativeElement) {\n this.intersectionObserver.unobserve(togglerButton.nativeElement);\n this.intersectionObserver.disconnect();\n }\n }\n\n /**\n * On mobile view - handle the dropdown toggle.\n */\n onExpandButtonClick(): void {\n this.isButtonExpanded = !this.isButtonExpanded;\n this.eclInpageNavigationService.eclInpageNavigationToggle(this.isButtonExpanded);\n }\n\n /**\n * Dropdown keyboard navigation on mobile view.\n * @param evt\n */\n onExpandButtonKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case 'Tab':\n this.onExpandButtonTab(evt);\n break;\n case 'ArrowDown':\n this.onExpandButtonArrowDown(evt);\n break;\n default:\n break;\n }\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n this.isRtl = rtlState;\n });\n }\n\n /**\n * Set the height of the list with the navigation items in px. So in case the full list cannot be displayed, a scroll will appear.\n */\n private setListHeight(): void {\n if (!this.isBrowser) return;\n const eclNavigationList = this.eclNavigationList();\n if (!eclNavigationList) return;\n if (!this.win) return;\n\n const viewportHeight = this.win.innerHeight;\n const viewportWidth = this.win.innerWidth;\n let topPosition = 0;\n\n if (viewportWidth < this.TABLET_BREAKPOINT) {\n const toggleWrapper = this.toggleWrapper()?.nativeElement;\n if (toggleWrapper) {\n const styles = this.win.getComputedStyle(toggleWrapper);\n topPosition =\n toggleWrapper.getBoundingClientRect().bottom +\n parseFloat(styles.marginBottom || '0');\n }\n } else if (this.eclTitle()) {\n const titleEl = this.navTittle()?.nativeElement;\n if (titleEl) topPosition = titleEl.getBoundingClientRect().bottom;\n } else {\n const listEl = eclNavigationList?.el?.nativeElement;\n if (listEl) topPosition = listEl.getBoundingClientRect().top;\n }\n\n const availableSpace = viewportHeight - topPosition;\n if (availableSpace > 0) {\n this.listMaxHeight = availableSpace;\n eclNavigationList.maxHeight.set(this.listMaxHeight);\n }\n }\n\n private onExpandButtonArrowDown(evt: Event): void {\n evt.preventDefault();\n this.isButtonExpanded = true;\n this.eclNavigationLinkItems().at(0).onFocus();\n }\n\n private onExpandButtonTab(evt: Event): void {\n if ((evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.eclNavigationLinkItems().at(this.eclNavigationLinkItems().length - 1).onFocus();\n }\n }\n\n private connectItemEvents(item: EclInpageNavigationItemComponent): void {\n item.itemArrowDown.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onItemArrowDown(item);\n });\n\n item.itemArrowUp.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onItemArrowUp(item);\n });\n\n item.itemTab.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onItemTab(item, evt);\n });\n\n item.itemEnter.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onItemEnter(item);\n });\n\n item.itemClick.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.selectNavigationItem(item.sectionElement);\n if (item.sectionElement) {\n item.sectionElement.scrollIntoView();\n item.sectionElement.focus();\n }\n this.isButtonExpanded = false;\n });\n }\n\n private onItemEnter(item: EclInpageNavigationItemComponent): void {\n this.selectNavigationItem(item.sectionElement);\n if (item.sectionElement) {\n item.sectionElement.scrollIntoView();\n if (item.sectionElement.tabIndex === -1) {\n item.sectionElement.tabIndex = 0;\n item.sectionElement.focus();\n item.sectionElement.tabIndex = -1;\n }\n }\n this.isButtonExpanded = false;\n }\n\n private onItemArrowDown(item: EclInpageNavigationItemComponent): void {\n const index = this.eclNavigationLinkItems().indexOf(item);\n const eclNavigationLinkItems = this.eclNavigationLinkItems();\n if (index !== eclNavigationLinkItems.length - 1) {\n eclNavigationLinkItems.at(index + 1).onFocus();\n }\n }\n\n private onItemArrowUp(item: EclInpageNavigationItemComponent): void {\n const index = this.eclNavigationLinkItems().indexOf(item);\n if (index !== 0) {\n this.eclNavigationLinkItems().at(index - 1).onFocus();\n } else {\n const togglerButton = this.togglerButton();\n if (this.isMobileBreakpoint && togglerButton) {\n this.isButtonExpanded = false;\n togglerButton.nativeElement.focus();\n }\n }\n }\n\n private onItemTab(item: EclInpageNavigationItemComponent, evt: Event): void {\n if (this.isMobileBreakpoint) {\n if (!(evt as KeyboardEvent).shiftKey) {\n const index = this.eclNavigationLinkItems().indexOf(item);\n if (index === this.eclNavigationLinkItems().length - 1) {\n evt.preventDefault();\n this.togglerButton().nativeElement.focus();\n }\n }\n }\n }\n\n private subscribeToCDKScrollEvent(): void {\n if (!this.isBrowser) return;\n\n this.scrollDispatcher\n .scrolled()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.zone.run(() => {\n const ids = this.eclNavigationLinkItems().map((item) => item.sectionId());\n\n const sectionElements = ids\n .map((id) => this.doc.querySelector<HTMLElement>(`#${id}`))\n .filter((el): el is HTMLElement => !!el);\n\n this.handleNavigationLinksHighlight(sectionElements);\n this.setListHeight();\n });\n });\n }\n\n private selectNavigationItem(itemElement: HTMLElement): void {\n this.eclNavigationLinkItems().forEach((it) => {\n it.isActive.set(it.sectionElement === itemElement);\n });\n this.cdr.markForCheck();\n }\n\n private handleNavigationLinksHighlight(sectionElements: HTMLElement[]): void {\n const currentSectionElement = this.findActiveSectionElement(sectionElements);\n\n if (currentSectionElement !== this.currentSectionElement) {\n this.currentSectionElement = currentSectionElement ?? undefined as HTMLElement | null;\n if (currentSectionElement) this.selectNavigationItem(currentSectionElement);\n\n const sectionId = this.currentNavigationLinkItem?.sectionId();\n this.sectionEnter.emit(new EclInpageNavigationSectionEnterEvent(sectionId));\n }\n }\n\n private findActiveSectionElement(sectionElements: HTMLElement[]): HTMLElement | null {\n if (!this.isBrowser || !this.win) return null;\n\n let currentSection: HTMLElement | null = null;\n const offset = this.MIN_DISTANCE_TOP + (this.offsetTop() ?? 0);\n\n const isNearBottom =\n this.win.innerHeight + this.win.scrollY >=\n this.doc.documentElement.scrollHeight - 10;\n\n for (const sectionElement of sectionElements) {\n const rect = sectionElement.getBoundingClientRect();\n const isAboveOffset = rect.top <= offset;\n const isVisibleInViewport = rect.top < this.win.innerHeight;\n\n if (isAboveOffset || (isVisibleInViewport && isNearBottom)) {\n currentSection = sectionElement;\n }\n }\n\n return currentSection;\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.matches;\n });\n }\n}\n","<ecl-sticky-container [marginTop]=\"marginTop()\" [marginBottom]=\"marginBottom()\">\n <nav aria-labelledby=\"ecl-inpage-navigation-default\" class=\"ecl-inpage-navigation\"\n [class.ecl-inpage-navigation--visible]=\"hasActiveSection\" [class.ecl-inpage-navigation--rtl]=\"isRtl\">\n <div #navTittle id=\"ecl-inpage-navigation-default\" class=\"ecl-inpage-navigation__title\">\n {{ eclTitle() || 'ecl.inpage-navigation.PAGE-CONTENTS' | translate }}\n </div>\n <div class=\"ecl-inpage-navigation__body\">\n <div #toggleWrapper class=\"ecl-inpage-navigation__trigger-wrapper\">\n <button #togglerButton id=\"ecl-inpage-navigation-default-trigger\" type=\"button\"\n class=\"ecl-inpage-navigation__trigger\" aria-controls=\"ecl-inpage-navigation-list\"\n [attr.aria-expanded]=\"isButtonExpanded\" (click)=\"onExpandButtonClick()\"\n (keydown)=\"onExpandButtonKeydown($event)\">\n <span class=\"ecl-inpage-navigation__trigger-current\">\n {{ currentNavigationLinkItem?.label() }}\n </span>\n <ecl-icon icon=\"corner-arrow\" [size]=\"sizeIcon\" transform=\"rotate-180\"\n class=\"ecl-inpage-navigation__trigger-icon\" title=\"Show full page table of contents\">\n </ecl-icon>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n </nav>\n</ecl-sticky-container>","import { EclInpageNavigationItemComponent } from './ecl-inpage-navigation-item.component';\nimport { EclInpageNavigationListDirective } from './ecl-inpage-navigation-list.directive';\nimport { EclInpageNavigationComponent } from './ecl-inpage-navigation.component';\n\nexport * from './ecl-inpage-navigation.component';\nexport * from './ecl-inpage-navigation-item.component';\nexport * from './ecl-inpage-navigation-list.directive';\nexport * from './services/ecl-inpage-navigation.service';\n\nexport const EUI_ECL_INPAGE_NAVIGATION = [\n EclInpageNavigationComponent, EclInpageNavigationItemComponent, EclInpageNavigationListDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-inpage-navigation.mjs","sources":["../../components/ecl-inpage-navigation/ecl-inpage-navigation-item.component.ts","../../components/ecl-inpage-navigation/ecl-inpage-navigation-item.component.html","../../components/ecl-inpage-navigation/services/ecl-inpage-navigation.service.ts","../../components/ecl-inpage-navigation/ecl-inpage-navigation-list.directive.ts","../../components/ecl-inpage-navigation/ecl-inpage-navigation.component.ts","../../components/ecl-inpage-navigation/ecl-inpage-navigation.component.html","../../components/ecl-inpage-navigation/index.ts","../../components/ecl-inpage-navigation/eui-ecl-components-ecl-inpage-navigation.ts"],"sourcesContent":["import { Component, HostBinding, Output, EventEmitter, ElementRef, inject, PLATFORM_ID, DOCUMENT, input, model, viewChild } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBaseEvent } from '@eui/ecl/core';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport class EclInpageNavigationItemClickEvent extends EclBaseEvent {\n constructor(public sectionElementId: string) {\n super();\n }\n}\n/**\n * Represent a single navigation item. contains the link, that activates/scrolls to the new current paragraph of the page.\n */\n@Component({\n selector: 'li[eclInpageNavigationItem]',\n templateUrl: './ecl-inpage-navigation-item.component.html',\n imports: [...EUI_ECL_LINK],\n styles: [\n `\n :host {\n display: list-item;\n }\n `,\n ],\n host: {\n '[class.ecl-inpage-navigation__item--active]': 'isActive()',\n },\n})\nexport class EclInpageNavigationItemComponent extends ECLBaseDirective {\n @HostBinding('class.ecl-inpage-navigation__item') cmpClass = true;\n /**\n * The role of the component is 'listitem', should not be changed.\n */\n @HostBinding('attr.role') role = 'listitem';\n\n /**\n * The label that is displayed in the items list.\n */\n readonly label = input<string>(undefined);\n readonly sectionId = input<string>(undefined);\n readonly isActive = model<boolean>(undefined);\n\n /**\n * Emited when user clicks on the item.\n */\n @Output() itemClick = new EventEmitter<EclInpageNavigationItemClickEvent>();\n /**\n * Emitted when on keyboard navigation, user clicks the arrow-up.\n */\n @Output() itemArrowUp = new EventEmitter();\n /**\n * Emitted when on keyboard navigation, user clicks the arrow-down.\n */\n @Output() itemArrowDown = new EventEmitter();\n /**\n * Emitted when on keyboard navigation, user clicks the TAB.\n */\n @Output() itemTab = new EventEmitter<Event>();\n /**\n * Emitted when on keyboard navigation, user clicks the ENTER.\n */\n @Output() itemEnter = new EventEmitter();\n\n readonly link = viewChild(EclLinkDirective);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly doc = inject(DOCUMENT);\n\n constructor() {\n const el = inject(ElementRef);\n\n super();\n if (el.nativeElement.tagName.toLowerCase() === 'ecl-inpage-navigation-item') {\n console.warn('\"ecl-inpage-navigation-item\" selector is deprecated; use \"li[eclInpageNavigationItem]\" instead.');\n }\n }\n\n onItemClick(evt: MouseEvent): void {\n const event = new EclInpageNavigationItemClickEvent(this.sectionId());\n this.itemClick.next(event);\n\n evt.preventDefault();\n }\n\n /**\n * Returns page element/paragraph, that is associated with this item from the navigation list.\n */\n get sectionElement(): HTMLElement | null {\n if (!isPlatformBrowser(this.platformId)) return null;\n return this.doc.querySelector<HTMLElement>(`#${this.sectionId()}`);\n }\n\n onArrowUp(evt: Event): void {\n evt.preventDefault();\n this.itemArrowUp.emit()\n }\n\n onArrowDown(evt: Event): void {\n evt.preventDefault();\n this.itemArrowDown.emit();\n }\n\n onTab(evt: Event): void {\n this.itemTab.emit(evt);\n }\n\n onFocus(): void{\n this.link().onFocus();\n }\n\n onEnter(evt: Event): void {\n evt.preventDefault();\n evt.stopPropagation();\n this.itemEnter.emit();\n }\n}\n","<a eclLink (click)=\"onItemClick($event)\" href=\"#\" class=\"ecl-inpage-navigation__link\"\n (keydown.arrowUp)=\"onArrowUp($event)\" (keydown.arrowDown)=\"onArrowDown($event)\" (keydown.enter)=\"onEnter($event)\"\n (keydown.tab)=\"onTab($event)\">\n {{ label() }}\n</a>\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class EclInpageNavigationService {\n\n\tpublic eclInpageNavigationExpanded$: Observable<boolean>;\n\tprivate eclInpageNavigationExpanded: Subject<boolean> = new Subject<boolean>();\n\n\tconstructor() {\n this.eclInpageNavigationExpanded$ = this.eclInpageNavigationExpanded.asObservable();\n\t}\n\n\t/**\n\t * When user clicks on arrow down button in mobile view.\n\t * @param isExpanded\n\t */\n eclInpageNavigationToggle(isExpanded: boolean): void {\n\t\tthis.eclInpageNavigationExpanded.next(isExpanded);\n\t}\n}\n","import { AfterContentInit, Directive, ElementRef, HostBinding, OnDestroy, inject, signal } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclInpageNavigationService } from './services/ecl-inpage-navigation.service';\n\n/**\n * The parent list component, that contains navigation items links.\n */\n@Directive({\n selector: 'ul[eclInpageNavigationList]',\n host: {\n '[style.max-height.px]': 'maxHeight()',\n },\n\n})\nexport class EclInpageNavigationListDirective extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n @HostBinding('class.ecl-inpage-navigation__list') hasClass = true;\n /**\n * If the dropdown is visible in mobile view.\n */\n @HostBinding('class.ecl-inpage-navigation__list--visible') isVisible = false;\n maxHeight = signal<number | null>(null);\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private eclInpageNavigationService = inject(EclInpageNavigationService);\n\n ngAfterContentInit(): void {\n this.eclInpageNavigationService.eclInpageNavigationExpanded$.pipe(takeUntil(this.destroy$)).subscribe((value: boolean) => {\n this.isVisible = value;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n}\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, DOCUMENT, DoCheck, ElementRef, IterableDiffer, IterableDiffers, NgZone, OnDestroy, OnInit, PLATFORM_ID, afterNextRender, contentChild, contentChildren, inject, input, numberAttribute, output, viewChild } from '@angular/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_STICKY_CONTAINER } from '@eui/ecl/components/ecl-sticky-container';\nimport { ECLBaseDirective, EclBaseEvent, EclRtlService, EclThemeService } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { EclInpageNavigationItemComponent } from './ecl-inpage-navigation-item.component';\nimport { EclInpageNavigationListDirective } from './ecl-inpage-navigation-list.directive';\nimport { EclInpageNavigationService } from './services/ecl-inpage-navigation.service';\n\nexport class EclInpageNavigationSectionEnterEvent extends EclBaseEvent {\n constructor(public sectionId: string) {\n super();\n }\n}\n\n/**\n * The in-page navigation is a vertical menu containing (anchored) links to H2-headings on long content pages.\n * It gives the user an overview of the page contents and has a fixed position (does not move while scrolling) at either the left\n * side of a page on desktop or top-bar on mobile. This component helps users scan of the page quickly contents and may potentially\n * reduce vertical scrolling, allowing users to easily jump straight to the segment of the page.\n */\n@Component({\n selector: 'ecl-inpage-navigation',\n templateUrl: './ecl-inpage-navigation.component.html',\n imports: [TranslatePipe, ...EUI_ECL_STICKY_CONTAINER, ...EUI_ECL_ICON],\n styles: [\n `\n @media (min-width: 996px) {\n .ecl-inpage-navigation__list {\n display: block !important;\n }\n }\n `,\n ],\n})\nexport class EclInpageNavigationComponent extends ECLBaseDirective implements OnInit, AfterViewInit, OnDestroy, DoCheck {\n eclThemeService = inject(EclThemeService);\n\n readonly eclTitle = input<string>(undefined);\n /**\n * Used to calculate component's position.\n */\n readonly marginTop = input<number>(undefined);\n readonly marginBottom = input<number>(undefined);\n /**\n * Sets the offset from the top of the page (for example if there is a toolbar or header). Used to calculate scrolling behaviour.\n */\n readonly offsetTop = input<number, unknown>(undefined, { transform: numberAttribute });\n readonly togglerButton = viewChild<ElementRef<HTMLButtonElement>>('togglerButton');\n readonly toggleWrapper = viewChild<ElementRef<HTMLDivElement>>('toggleWrapper');\n readonly navTittle = viewChild<ElementRef<HTMLDivElement>>('navTittle');\n /**\n * This event will be emitted, when onscroll a new section becomes active.\n */\n readonly sectionEnter = output<EclInpageNavigationSectionEnterEvent>();\n\n readonly eclNavigationLinkItems = contentChildren(EclInpageNavigationItemComponent, { descendants: true });\n readonly eclNavigationList = contentChild(EclInpageNavigationListDirective);\n\n /**\n * Used for the mobile view, where user can select a section from the dropdown.\n */\n isButtonExpanded = false;\n currentSectionElement: HTMLElement | null = null;\n public isRtl = false;\n public listMaxHeight: number;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclInpageNavigationItemComponent>;\n private isMobileBreakpoint = false;\n private MIN_DISTANCE_TOP = 10;\n /**\n * Extra spacing (px) kept between the sticky toggler and the target heading when scrolling to a section on mobile,\n * so the heading is not flush against the toggler. Mirrors the spacing buffer used by the vanilla ECL\n * `scroll-margin-top` rule (trigger height + spacing).\n */\n private readonly MOBILE_SCROLL_SPACING = 16;\n private readonly ICON_SIZE_EC_THEME = '2xs';\n private readonly ICON_SIZE_EU_THEME = 's';\n private readonly TABLET_BREAKPOINT = 996;\n private intersectionObserver: IntersectionObserver;\n private eclRtlService = inject(EclRtlService);\n private differs = inject(IterableDiffers);\n private scrollDispatcher: ScrollDispatcher = inject(ScrollDispatcher);\n private zone = inject(NgZone);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private viewportRuler = inject(ViewportRuler);\n private eclInpageNavigationService = inject(EclInpageNavigationService);\n private cdr = inject(ChangeDetectorRef);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly doc = inject(DOCUMENT);\n private readonly win = this.doc.defaultView; // Window | null\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.zone.run(() => this.setListHeight());\n });\n }\n\n ngOnInit(): void {\n this.handleRtlChangeState();\n }\n\n ngAfterViewInit() {\n if (!this.isBrowser) return;\n\n this.subscribeToCDKScrollEvent();\n this.observeBreakpointChanges();\n this.viewportRuler.change(300)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.zone.run(() => this.setListHeight()));\n\n const togglerButton = this.togglerButton();\n if (typeof IntersectionObserver !== 'undefined' && togglerButton?.nativeElement) {\n this.intersectionObserver = new IntersectionObserver(() => this.setListHeight());\n this.intersectionObserver.observe(togglerButton.nativeElement);\n }\n }\n\n get hasNavigationList(): boolean {\n return !!this.eclNavigationList();\n }\n\n get currentNavigationLinkItem(): EclInpageNavigationItemComponent {\n return this.eclNavigationLinkItems().find((item) => item.sectionElement === this.currentSectionElement);\n }\n\n /**\n * the size of the arrow-down icon, used in mobile view. There are different sizes for EC and EU themes.\n */\n get sizeIcon(): string {\n if (this.eclThemeService.isECTheme()) {\n return this.ICON_SIZE_EC_THEME;\n } else {\n return this.ICON_SIZE_EU_THEME;\n }\n }\n\n get hasActiveSection(): boolean {\n return !!this.currentSectionElement;\n }\n\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclNavigationLinkItems());\n if (diff) {\n diff.forEachItem((item) => {\n this.connectItemEvents(item.item);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n const togglerButton = this.togglerButton();\n if (this.intersectionObserver && togglerButton?.nativeElement) {\n this.intersectionObserver.unobserve(togglerButton.nativeElement);\n this.intersectionObserver.disconnect();\n }\n }\n\n /**\n * On mobile view - handle the dropdown toggle.\n */\n onExpandButtonClick(): void {\n this.setButtonExpanded(!this.isButtonExpanded);\n }\n\n /**\n * Single entry point for changing the dropdown expanded state. Keeps the local flag (used for the button's\n * aria-expanded) and the shared service state (that drives the list's visibility class) in sync.\n */\n private setButtonExpanded(isExpanded: boolean): void {\n this.isButtonExpanded = isExpanded;\n this.eclInpageNavigationService.eclInpageNavigationToggle(isExpanded);\n }\n\n /**\n * Dropdown keyboard navigation on mobile view.\n * @param evt\n */\n onExpandButtonKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case 'Tab':\n this.onExpandButtonTab(evt);\n break;\n case 'ArrowDown':\n this.onExpandButtonArrowDown(evt);\n break;\n default:\n break;\n }\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n this.isRtl = rtlState;\n });\n }\n\n /**\n * Set the height of the list with the navigation items in px. So in case the full list cannot be displayed, a scroll will appear.\n */\n private setListHeight(): void {\n if (!this.isBrowser) return;\n const eclNavigationList = this.eclNavigationList();\n if (!eclNavigationList) return;\n if (!this.win) return;\n\n const viewportHeight = this.win.innerHeight;\n const viewportWidth = this.win.innerWidth;\n let topPosition = 0;\n\n if (viewportWidth < this.TABLET_BREAKPOINT) {\n const toggleWrapper = this.toggleWrapper()?.nativeElement;\n if (toggleWrapper) {\n const styles = this.win.getComputedStyle(toggleWrapper);\n topPosition =\n toggleWrapper.getBoundingClientRect().bottom +\n parseFloat(styles.marginBottom || '0');\n }\n } else if (this.eclTitle()) {\n const titleEl = this.navTittle()?.nativeElement;\n if (titleEl) topPosition = titleEl.getBoundingClientRect().bottom;\n } else {\n const listEl = eclNavigationList?.el?.nativeElement;\n if (listEl) topPosition = listEl.getBoundingClientRect().top;\n }\n\n const availableSpace = viewportHeight - topPosition;\n if (availableSpace > 0) {\n this.listMaxHeight = availableSpace;\n eclNavigationList.maxHeight.set(this.listMaxHeight);\n }\n }\n\n private onExpandButtonArrowDown(evt: Event): void {\n evt.preventDefault();\n this.setButtonExpanded(true);\n this.eclNavigationLinkItems().at(0).onFocus();\n }\n\n private onExpandButtonTab(evt: Event): void {\n if ((evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.eclNavigationLinkItems().at(this.eclNavigationLinkItems().length - 1).onFocus();\n }\n }\n\n private connectItemEvents(item: EclInpageNavigationItemComponent): void {\n item.itemArrowDown.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onItemArrowDown(item);\n });\n\n item.itemArrowUp.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onItemArrowUp(item);\n });\n\n item.itemTab.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onItemTab(item, evt);\n });\n\n item.itemEnter.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onItemEnter(item);\n });\n\n item.itemClick.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.selectNavigationItem(item.sectionElement);\n if (item.sectionElement) {\n this.scrollToSection(item.sectionElement);\n item.sectionElement.focus();\n }\n this.setButtonExpanded(false);\n });\n }\n\n private onItemEnter(item: EclInpageNavigationItemComponent): void {\n this.selectNavigationItem(item.sectionElement);\n if (item.sectionElement) {\n this.scrollToSection(item.sectionElement);\n if (item.sectionElement.tabIndex === -1) {\n item.sectionElement.tabIndex = 0;\n item.sectionElement.focus();\n item.sectionElement.tabIndex = -1;\n }\n }\n this.setButtonExpanded(false);\n }\n\n /**\n * Scrolls the target section into view. On desktop this is a plain scrollIntoView() (unchanged behaviour). On\n * mobile the in-page navigation toggler is sticky at the top, so a top-aligned scroll would hide the heading\n * underneath it; we therefore set `scroll-margin-top` on the target (sticky toggler height + spacing buffer) and\n * let scrollIntoView() honour it. Using scroll-margin-top instead of a manual window.scrollTo() keeps this working\n * regardless of which element is the actual scroll container (window or a nested scrollable wrapper).\n */\n private scrollToSection(sectionElement: HTMLElement): void {\n if (!this.isBrowser) return;\n const offset = this.getMobileScrollOffset();\n sectionElement.style.scrollMarginTop = offset > 0 ? `${offset}px` : '';\n sectionElement.scrollIntoView();\n }\n\n /**\n * The offset (px) applied on mobile so that a scrolled-to heading clears the sticky toggler: the toggler height\n * plus a spacing buffer. Returns 0 on desktop (no sticky toggler). Shared by the scroll logic and the scroll-spy\n * so the heading lands exactly where the spy expects it, keeping the active item in sync after a click.\n */\n private getMobileScrollOffset(): number {\n if (!this.isMobileBreakpoint) return 0;\n const toggleWrapper = this.toggleWrapper()?.nativeElement;\n if (!toggleWrapper) return 0;\n return toggleWrapper.getBoundingClientRect().height + this.MOBILE_SCROLL_SPACING;\n }\n\n private onItemArrowDown(item: EclInpageNavigationItemComponent): void {\n const index = this.eclNavigationLinkItems().indexOf(item);\n const eclNavigationLinkItems = this.eclNavigationLinkItems();\n if (index !== eclNavigationLinkItems.length - 1) {\n eclNavigationLinkItems.at(index + 1).onFocus();\n }\n }\n\n private onItemArrowUp(item: EclInpageNavigationItemComponent): void {\n const index = this.eclNavigationLinkItems().indexOf(item);\n if (index !== 0) {\n this.eclNavigationLinkItems().at(index - 1).onFocus();\n } else {\n const togglerButton = this.togglerButton();\n if (this.isMobileBreakpoint && togglerButton) {\n this.setButtonExpanded(false);\n togglerButton.nativeElement.focus();\n }\n }\n }\n\n private onItemTab(item: EclInpageNavigationItemComponent, evt: Event): void {\n if (this.isMobileBreakpoint) {\n if (!(evt as KeyboardEvent).shiftKey) {\n const index = this.eclNavigationLinkItems().indexOf(item);\n if (index === this.eclNavigationLinkItems().length - 1) {\n evt.preventDefault();\n this.togglerButton().nativeElement.focus();\n }\n }\n }\n }\n\n private subscribeToCDKScrollEvent(): void {\n if (!this.isBrowser) return;\n\n this.scrollDispatcher\n .scrolled()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.zone.run(() => {\n const ids = this.eclNavigationLinkItems().map((item) => item.sectionId());\n\n const sectionElements = ids\n .map((id) => this.doc.querySelector<HTMLElement>(`#${id}`))\n .filter((el): el is HTMLElement => !!el);\n\n this.handleNavigationLinksHighlight(sectionElements);\n this.setListHeight();\n });\n });\n }\n\n private selectNavigationItem(itemElement: HTMLElement): void {\n this.eclNavigationLinkItems().forEach((it) => {\n it.isActive.set(it.sectionElement === itemElement);\n });\n this.cdr.markForCheck();\n }\n\n private handleNavigationLinksHighlight(sectionElements: HTMLElement[]): void {\n const currentSectionElement = this.findActiveSectionElement(sectionElements);\n\n if (currentSectionElement !== this.currentSectionElement) {\n this.currentSectionElement = currentSectionElement ?? undefined as HTMLElement | null;\n if (currentSectionElement) this.selectNavigationItem(currentSectionElement);\n\n const sectionId = this.currentNavigationLinkItem?.sectionId();\n this.sectionEnter.emit(new EclInpageNavigationSectionEnterEvent(sectionId));\n }\n }\n\n private findActiveSectionElement(sectionElements: HTMLElement[]): HTMLElement | null {\n if (!this.isBrowser || !this.win) return null;\n\n let currentSection: HTMLElement | null = null;\n // On mobile the heading is scrolled to sit just below the sticky toggler, so the spy must use that same\n // offset; otherwise it would highlight the previous section. The extra MIN_DISTANCE_TOP is a cushion so a\n // heading that lands right on the boundary (sub-pixel rounding) is still treated as \"reached\". On desktop\n // keep the original threshold.\n const offset = this.isMobileBreakpoint\n ? this.getMobileScrollOffset() + this.MIN_DISTANCE_TOP\n : this.MIN_DISTANCE_TOP + (this.offsetTop() ?? 0);\n\n const isNearBottom =\n this.win.innerHeight + this.win.scrollY >=\n this.doc.documentElement.scrollHeight - 10;\n\n for (const sectionElement of sectionElements) {\n const rect = sectionElement.getBoundingClientRect();\n const isAboveOffset = rect.top <= offset;\n const isVisibleInViewport = rect.top < this.win.innerHeight;\n\n if (isAboveOffset || (isVisibleInViewport && isNearBottom)) {\n currentSection = sectionElement;\n }\n }\n\n return currentSection;\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.matches;\n });\n }\n}\n","<ecl-sticky-container [marginTop]=\"marginTop()\" [marginBottom]=\"marginBottom()\">\n <nav aria-labelledby=\"ecl-inpage-navigation-default\" class=\"ecl-inpage-navigation\"\n [class.ecl-inpage-navigation--visible]=\"hasActiveSection\" [class.ecl-inpage-navigation--rtl]=\"isRtl\">\n <div #navTittle id=\"ecl-inpage-navigation-default\" class=\"ecl-inpage-navigation__title\">\n {{ eclTitle() || 'ecl.inpage-navigation.PAGE-CONTENTS' | translate }}\n </div>\n <div class=\"ecl-inpage-navigation__body\">\n <div #toggleWrapper class=\"ecl-inpage-navigation__trigger-wrapper\">\n <button #togglerButton id=\"ecl-inpage-navigation-default-trigger\" type=\"button\"\n class=\"ecl-inpage-navigation__trigger\" aria-controls=\"ecl-inpage-navigation-list\"\n [attr.aria-expanded]=\"isButtonExpanded\" (click)=\"onExpandButtonClick()\"\n (keydown)=\"onExpandButtonKeydown($event)\">\n <span class=\"ecl-inpage-navigation__trigger-current\">\n {{ currentNavigationLinkItem?.label() }}\n </span>\n <ecl-icon icon=\"corner-arrow\" [size]=\"sizeIcon\" transform=\"rotate-180\"\n class=\"ecl-inpage-navigation__trigger-icon\" title=\"Show full page table of contents\">\n </ecl-icon>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n </nav>\n</ecl-sticky-container>","import { EclInpageNavigationItemComponent } from './ecl-inpage-navigation-item.component';\nimport { EclInpageNavigationListDirective } from './ecl-inpage-navigation-list.directive';\nimport { EclInpageNavigationComponent } from './ecl-inpage-navigation.component';\n\nexport * from './ecl-inpage-navigation.component';\nexport * from './ecl-inpage-navigation-item.component';\nexport * from './ecl-inpage-navigation-list.directive';\nexport * from './services/ecl-inpage-navigation.service';\n\nexport const EUI_ECL_INPAGE_NAVIGATION = [\n EclInpageNavigationComponent, EclInpageNavigationItemComponent, EclInpageNavigationListDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input,
|
|
2
|
+
import { input, Directive } from '@angular/core';
|
|
3
3
|
import { ECLBaseDirective } from '@eui/ecl/core';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -32,17 +32,17 @@ class EclLabelDirective extends ECLBaseDirective {
|
|
|
32
32
|
return [super.getCssClasses('ecl-label'), `ecl-label--${this.variant()}`].join(' ').trim();
|
|
33
33
|
}
|
|
34
34
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclLabelDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
35
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.2", type: EclLabelDirective, isStandalone: true, selector: "[eclLabel]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "
|
|
35
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.2", type: EclLabelDirective, isStandalone: true, selector: "[eclLabel]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
|
|
36
36
|
}
|
|
37
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclLabelDirective, decorators: [{
|
|
38
38
|
type: Directive,
|
|
39
39
|
args: [{
|
|
40
40
|
selector: '[eclLabel]',
|
|
41
|
+
host: {
|
|
42
|
+
'[class]': 'cssClasses',
|
|
43
|
+
},
|
|
41
44
|
}]
|
|
42
|
-
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }]
|
|
43
|
-
type: HostBinding,
|
|
44
|
-
args: ['class']
|
|
45
|
-
}] } });
|
|
45
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
46
46
|
|
|
47
47
|
const EUI_ECL_LABEL = [
|
|
48
48
|
EclLabelDirective,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-label.mjs","sources":["../../components/ecl-label/ecl-label.directive.ts","../../components/ecl-label/index.ts","../../components/ecl-label/eui-ecl-components-ecl-label.ts"],"sourcesContent":["import { Directive,
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-label.mjs","sources":["../../components/ecl-label/ecl-label.directive.ts","../../components/ecl-label/index.ts","../../components/ecl-label/eui-ecl-components-ecl-label.ts"],"sourcesContent":["import { Directive, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for applying ECL label styles.\n *\n * Supports multiple visual variants based on importance or context.\n * Adds appropriate ECL classes dynamically.\n */\n@Directive({\n selector: '[eclLabel]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclLabelDirective extends ECLBaseDirective {\n /**\n * Defines the visual variant of the label.\n * \n * - `'low'` – default styling\n * - `'medium'` – medium emphasis\n * - `'high'` – high emphasis\n * - `'highlight'` – special highlight\n *\n * @default 'low'\n */\n readonly variant = input<'low' | 'medium' | 'high' | 'highlight'>('low');\n\n /**\n * CSS classes applied to the host element.\n * Combines base ECL label class with the variant modifier.\n */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-label'), `ecl-label--${this.variant()}`].join(' ').trim();\n }\n}\n","import { EclLabelDirective } from './ecl-label.directive';\n\nexport * from './ecl-label.directive';\n\nexport const EUI_ECL_LABEL = [\n EclLabelDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;;;;;AAKG;AAOG,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AANvD,IAAA,WAAA,GAAA;;AAOI;;;;;;;;;AASG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAA0C,KAAK;oFAAC;AAS3E,IAAA;AAPG;;;AAGG;AACH,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAA,WAAA,EAAc,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC9F;8GAnBS,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,YAAY;AAC1B,qBAAA;AACJ,iBAAA;;;ACVM,MAAM,aAAa,GAAG;IACzB,iBAAiB;;;ACLrB;;AAEG;;;;"}
|