@mozaic-ds/angular 2.2.1 → 2.3.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"mozaic-ds-angular.mjs","sources":["../../../../projects/mozaic-ng/src/lib/breadcrumb/breadcrumb.ts","../../../../projects/mozaic-ng/src/lib/breadcrumb/breadcrumb.html","../../../../projects/mozaic-ng/src/lib/button/button.ts","../../../../projects/mozaic-ng/src/lib/button/button.html","../../../../projects/mozaic-ng/src/lib/checkbox/checkbox.ts","../../../../projects/mozaic-ng/src/lib/checkbox/checkbox.html","../../../../projects/mozaic-ng/src/lib/checkbox-group/checkbox-group.ts","../../../../projects/mozaic-ng/src/lib/checkbox-group/checkbox-group.html","../../../../projects/mozaic-ng/src/lib/divider/divider.ts","../../../../projects/mozaic-ng/src/lib/divider/divider.html","../../../../projects/mozaic-ng/src/lib/field/field.ts","../../../../projects/mozaic-ng/src/lib/field/field.html","../../../../projects/mozaic-ng/src/lib/field-group/field-group.ts","../../../../projects/mozaic-ng/src/lib/field-group/field-group.html","../../../../projects/mozaic-ng/src/lib/icon-button/icon-button.ts","../../../../projects/mozaic-ng/src/lib/icon-button/icon-button.html","../../../../projects/mozaic-ng/src/lib/linear-progress-bar-buffer/linear-progress-bar-buffer.ts","../../../../projects/mozaic-ng/src/lib/linear-progress-bar-buffer/linear-progress-bar-buffer.html","../../../../projects/mozaic-ng/src/lib/file-uploader/item/file-uploader-item.ts","../../../../projects/mozaic-ng/src/lib/file-uploader/item/file-uploader-item.html","../../../../projects/mozaic-ng/src/lib/file-uploader/file-uploader.ts","../../../../projects/mozaic-ng/src/lib/file-uploader/file-uploader.html","../../../../projects/mozaic-ng/src/lib/link/link.ts","../../../../projects/mozaic-ng/src/lib/link/link.html","../../../../projects/mozaic-ng/src/lib/loader/loader.ts","../../../../projects/mozaic-ng/src/lib/loader/loader.html","../../../../projects/mozaic-ng/src/lib/loading-overlay/loading-overlay.ts","../../../../projects/mozaic-ng/src/lib/loading-overlay/loading-overlay.html","../../../../projects/mozaic-ng/src/lib/modal/modal.ts","../../../../projects/mozaic-ng/src/lib/modal/modal.html","../../../../projects/mozaic-ng/src/lib/modal/config/modal.config.ts","../../../../projects/mozaic-ng/src/lib/modal/ref/modal-ref.ts","../../../../projects/mozaic-ng/src/lib/modal/container/modal-container.ts","../../../../projects/mozaic-ng/src/lib/modal/container/modal-container.html","../../../../projects/mozaic-ng/src/lib/modal/service/modal.service.ts","../../../../projects/mozaic-ng/src/lib/modal/directive/modal-footer.directive.ts","../../../../projects/mozaic-ng/src/lib/number-badge/number-badge.ts","../../../../projects/mozaic-ng/src/lib/number-badge/number-badge.html","../../../../projects/mozaic-ng/src/lib/overlay/overlay.ts","../../../../projects/mozaic-ng/src/lib/overlay/overlay.html","../../../../projects/mozaic-ng/src/lib/select/select.ts","../../../../projects/mozaic-ng/src/lib/select/select.html","../../../../projects/mozaic-ng/src/lib/pagination/pagination.ts","../../../../projects/mozaic-ng/src/lib/pagination/pagination.html","../../../../projects/mozaic-ng/src/lib/password-input/password-input.directive.ts","../../../../projects/mozaic-ng/src/lib/pincode/pincode.ts","../../../../projects/mozaic-ng/src/lib/pincode/pincode.html","../../../../projects/mozaic-ng/src/lib/quantity-selector/quantity-selector.ts","../../../../projects/mozaic-ng/src/lib/quantity-selector/quantity-selector.html","../../../../projects/mozaic-ng/src/lib/radio/radio.ts","../../../../projects/mozaic-ng/src/lib/radio/radio.html","../../../../projects/mozaic-ng/src/lib/radio-group/radio-group.ts","../../../../projects/mozaic-ng/src/lib/radio-group/radio-group.html","../../../../projects/mozaic-ng/src/lib/status-dot/status-dot.ts","../../../../projects/mozaic-ng/src/lib/status-dot/status-dot.html","../../../../projects/mozaic-ng/src/lib/status-badge/status-badge.ts","../../../../projects/mozaic-ng/src/lib/status-badge/status-badge.html","../../../../projects/mozaic-ng/src/lib/status-notification/status-notification.ts","../../../../projects/mozaic-ng/src/lib/status-notification/status-notification.html","../../../../projects/mozaic-ng/src/lib/tabs/tab/tab.ts","../../../../projects/mozaic-ng/src/lib/tabs/tabs.ts","../../../../projects/mozaic-ng/src/lib/tabs/tabs.html","../../../../projects/mozaic-ng/src/lib/tag/tag.ts","../../../../projects/mozaic-ng/src/lib/tag/tag.html","../../../../projects/mozaic-ng/src/lib/text-area/text-area.directive.ts","../../../../projects/mozaic-ng/src/lib/text-input/text-input.directive.ts","../../../../projects/mozaic-ng/src/lib/toggle/toggle.ts","../../../../projects/mozaic-ng/src/lib/toggle/toggle.html","../../../../projects/mozaic-ng/src/lib/flag/flag.ts","../../../../projects/mozaic-ng/src/lib/flag/flag.html","../../../../projects/mozaic-ng/src/lib/datepicker/datepicker.ts","../../../../projects/mozaic-ng/src/lib/datepicker/datepicker.html","../../../../projects/mozaic-ng/src/lib/tooltip/tooltip.ts","../../../../projects/mozaic-ng/src/lib/tooltip/tooltip.html","../../../../projects/mozaic-ng/src/lib/tooltip/tooltip.directive.ts","../../../../projects/mozaic-ng/src/lib/circular-progress-bar/circular-progress-bar.ts","../../../../projects/mozaic-ng/src/lib/circular-progress-bar/ciruclar-progress-bar.html","../../../../projects/mozaic-ng/src/lib/linear-progress-bar-percentage/linear-progress-bar-percentage.ts","../../../../projects/mozaic-ng/src/lib/linear-progress-bar-percentage/linear-progress-bar-percentage.html","../../../../projects/mozaic-ng/src/lib/callout/callout.ts","../../../../projects/mozaic-ng/src/lib/callout/callout.html","../../../../projects/mozaic-ng/src/lib/avatar/avatar.ts","../../../../projects/mozaic-ng/src/lib/avatar/avatar.html","../../../../projects/mozaic-ng/src/lib/phone-number-input/phone-number-input.ts","../../../../projects/mozaic-ng/src/lib/phone-number-input/phone-number-input.html","../../../../projects/mozaic-ng/src/lib/toaster/toaster.ts","../../../../projects/mozaic-ng/src/lib/toaster/toaster.html","../../../../projects/mozaic-ng/src/lib/toaster/config/toaster.config.ts","../../../../projects/mozaic-ng/src/lib/toaster/ref/toaster-ref.ts","../../../../projects/mozaic-ng/src/lib/toaster/container/toaster-container.ts","../../../../projects/mozaic-ng/src/lib/toaster/container/toaster-container.html","../../../../projects/mozaic-ng/src/lib/toaster/service/toaster.service.ts","../../../../projects/mozaic-ng/src/lib/sidebar/sidebar.ts","../../../../projects/mozaic-ng/src/lib/sidebar/sidebar.html","../../../../projects/mozaic-ng/src/lib/segmented-control/segmented-control.ts","../../../../projects/mozaic-ng/src/lib/segmented-control/segmented-control.html","../../../../projects/mozaic-ng/src/lib/accordion/components/header/accordion-header.ts","../../../../projects/mozaic-ng/src/lib/accordion/components/header/accordion-header.html","../../../../projects/mozaic-ng/src/lib/accordion/components/content/accordion-content.ts","../../../../projects/mozaic-ng/src/lib/accordion/components/content/accordion-content.html","../../../../projects/mozaic-ng/src/lib/accordion/components/panel/accordion-panel.ts","../../../../projects/mozaic-ng/src/lib/accordion/accordion.ts","../../../../projects/mozaic-ng/src/lib/accordion/accordion.html","../../../../projects/mozaic-ng/src/lib/action-bottom-bar/action-bottom-bar.ts","../../../../projects/mozaic-ng/src/lib/action-bottom-bar/action-bottom-bar.html","../../../../projects/mozaic-ng/src/lib/action-listbox/action-listbox.ts","../../../../projects/mozaic-ng/src/lib/action-listbox/action-listbox.html","../../../../projects/mozaic-ng/src/lib/action-listbox/ref/action-listbox-ref.ts","../../../../projects/mozaic-ng/src/lib/action-listbox/config/action-listbox.config.ts","../../../../projects/mozaic-ng/src/lib/action-listbox/container/action-listbox-container.ts","../../../../projects/mozaic-ng/src/lib/action-listbox/container/action-listbox-container.html","../../../../projects/mozaic-ng/src/lib/action-listbox/directive/action-listbox-trigger.directive.ts","../../../../projects/mozaic-ng/src/lib/carousel/carousel.ts","../../../../projects/mozaic-ng/src/lib/carousel/carousel.html","../../../../projects/mozaic-ng/src/lib/status-message/status-message.ts","../../../../projects/mozaic-ng/src/lib/status-message/status-message.html","../../../../projects/mozaic-ng/src/lib/kpi/kpi.ts","../../../../projects/mozaic-ng/src/lib/kpi/kpi.html","../../../../projects/mozaic-ng/src/lib/stepper-compact/stepper-compact.ts","../../../../projects/mozaic-ng/src/lib/stepper-compact/stepper-compact.html","../../../../projects/mozaic-ng/src/lib/star-rating/star-rating.ts","../../../../projects/mozaic-ng/src/lib/star-rating/star-rating.html","../../../../projects/mozaic-ng/src/lib/built-in-menu/built-in-menu.ts","../../../../projects/mozaic-ng/src/lib/built-in-menu/built-in-menu.html","../../../../projects/mozaic-ng/src/lib/check-list-menu/check-list-menu.ts","../../../../projects/mozaic-ng/src/lib/check-list-menu/check-list-menu.html","../../../../projects/mozaic-ng/src/lib/stepper-inline/stepper-inline.ts","../../../../projects/mozaic-ng/src/lib/stepper-inline/stepper-inline.html","../../../../projects/mozaic-ng/src/lib/stepper-stacked/stepper-stacked.ts","../../../../projects/mozaic-ng/src/lib/stepper-stacked/stepper-stacked.html","../../../../projects/mozaic-ng/src/lib/stepper-bottom-bar/stepper-bottom-bar.ts","../../../../projects/mozaic-ng/src/lib/stepper-bottom-bar/stepper-bottom-bar.html","../../../../projects/mozaic-ng/src/lib/page-header/page-header.ts","../../../../projects/mozaic-ng/src/lib/page-header/page-header.html","../../../../projects/mozaic-ng/src/lib/tiles/tile/tile.ts","../../../../projects/mozaic-ng/src/lib/tiles/tile/tile.html","../../../../projects/mozaic-ng/src/lib/tiles/selectable/selectable-tile.ts","../../../../projects/mozaic-ng/src/lib/tiles/selectable/selectable-tile.html","../../../../projects/mozaic-ng/src/lib/tiles/expandable/expandable-tile.ts","../../../../projects/mozaic-ng/src/lib/tiles/expandable/expandable-tile.html","../../../../projects/mozaic-ng/src/lib/drawer/config/drawer.config.ts","../../../../projects/mozaic-ng/src/lib/drawer/ref/drawer-ref.ts","../../../../projects/mozaic-ng/src/lib/drawer/container/drawer-container.ts","../../../../projects/mozaic-ng/src/lib/drawer/container/drawer-container.html","../../../../projects/mozaic-ng/src/lib/drawer/service/drawer.service.ts","../../../../projects/mozaic-ng/src/lib/drawer/directive/drawer-footer.directive.ts","../../../../projects/mozaic-ng/src/lib/drawer/drawer.ts","../../../../projects/mozaic-ng/src/lib/drawer/drawer.html","../../../../projects/mozaic-ng/src/lib/popover/popover.ts","../../../../projects/mozaic-ng/src/lib/popover/popover.html","../../../../projects/mozaic-ng/src/lib/popover/config/popover.config.ts","../../../../projects/mozaic-ng/src/lib/popover/ref/popover-ref.ts","../../../../projects/mozaic-ng/src/lib/popover/container/popover-container.ts","../../../../projects/mozaic-ng/src/lib/popover/directives/popover-trigger.directive.ts","../../../../projects/mozaic-ng/src/lib/popover/service/popover.service.ts","../../../../projects/mozaic-ng/src/lib/popover/directives/popover-footer.directive.ts","../../../../projects/mozaic-ng/src/lib/popover/index.ts","../../../../projects/mozaic-ng/src/lib/navigation-indicator/navigation-indicator.ts","../../../../projects/mozaic-ng/src/lib/navigation-indicator/navigation-indicator.html","../../../../projects/mozaic-ng/src/lib/utils/generate-random-int.ts","../../../../projects/mozaic-ng/src/lib/combobox/combobox.model.ts","../../../../projects/mozaic-ng/src/lib/combobox/combobox.component.ts","../../../../projects/mozaic-ng/src/lib/combobox/combobox.component.html","../../../../projects/mozaic-ng/src/lib/combobox/combobox.harness.ts","../../../../projects/mozaic-ng/src/lib/tree/services/tree-state.ts","../../../../projects/mozaic-ng/src/lib/tree/services/tree-selection.ts","../../../../projects/mozaic-ng/src/lib/tree/services/tree-keyboard.ts","../../../../projects/mozaic-ng/src/lib/tree/components/tree-node/tree-node.ts","../../../../projects/mozaic-ng/src/lib/tree/components/tree-node/tree-node.html","../../../../projects/mozaic-ng/src/lib/tree/tree.ts","../../../../projects/mozaic-ng/src/lib/tree/tree.html","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-column.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-header.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-row.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-row-expand.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-expand-button.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-cell.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-empty.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-info.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-rows-per-page.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-selection-bar.ts","../../../../projects/mozaic-ng/src/lib/datatable/directives/datatable-templates.ts","../../../../projects/mozaic-ng/src/lib/datatable/model/datatable.model.ts","../../../../projects/mozaic-ng/src/lib/datatable/datatable.ts","../../../../projects/mozaic-ng/src/lib/datatable/datatable.html","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-top.ts","../../../../projects/mozaic-ng/src/mozaic-ds-angular.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { MozBreadcrumbAppearance, MozBreadcrumbLink } from './model/breadcrumb.model';\n\n@Component({\n selector: 'moz-breadcrumb',\n templateUrl: './breadcrumb.html',\n styleUrls: ['./breadcrumb.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink],\n})\nexport class MozBreadcrumbComponent {\n readonly appearance = input<MozBreadcrumbAppearance>('standard');\n readonly links = input<MozBreadcrumbLink[]>([]);\n\n readonly classObject = computed(() => {\n return {\n 'breadcrumb': true,\n [`breadcrumb--${this.appearance()}`]: this.appearance(),\n };\n });\n\n getLinkClass(): string {\n const linkClass = this.appearance() !== 'standard' ? ` link--${this.appearance()}` : '';\n return `link link--inline${linkClass}`;\n }\n\n getCurrentLinkClass(): string {\n const linkClass = this.appearance() !== 'standard' ? ` link--${this.appearance()}` : '';\n return `link breadcrumb__current${linkClass}`;\n }\n}\n","<nav [class]=\"classObject()\" aria-label=\"Breadcrumb\">\n <ol class=\"breadcrumb__container\">\n @for (link of links(); track $index; let isLast = $last) {\n <li class=\"breadcrumb__item\">\n @if (isLast) { @if (link.router) {\n <a [routerLink]=\"link.href\" [class]=\"getCurrentLinkClass()\" aria-current=\"page\">\n <span class=\"link__label\">{{ link.label }}</span>\n </a>\n } @else {\n <a [href]=\"link.href\" [class]=\"getCurrentLinkClass()\" aria-current=\"page\">\n <span class=\"link__label\">{{ link.label }}</span>\n </a>\n } } @else { @if (link.router) {\n <a [routerLink]=\"link.href\" [class]=\"getLinkClass()\">\n <span class=\"link__label\">{{ link.label }}</span>\n </a>\n } @else {\n <a [href]=\"link.href\" [class]=\"getLinkClass()\">\n <span class=\"link__label\">{{ link.label }}</span>\n </a>\n } }\n </li>\n }\n </ol>\n</nav>\n","import {\n Component,\n TemplateRef,\n computed,\n contentChild,\n input,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n MozButtonAppearance,\n MozButtonSize,\n MozButtonIconPosition,\n MozButtonType,\n} from './model/button.model';\n\n@Component({\n selector: 'button[moz-button]',\n templateUrl: './button.html',\n styleUrls: ['./button.scss'],\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.type]': 'type()',\n },\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozButtonComponent {\n readonly appearance = input<MozButtonAppearance>('standard');\n readonly size = input<MozButtonSize>();\n readonly disabled = input<boolean>();\n readonly ghost = input<boolean>();\n readonly outlined = input<boolean>();\n readonly iconPosition = input<MozButtonIconPosition>(null);\n readonly type = input<MozButtonType>('button');\n readonly isLoading = input<boolean>();\n readonly iconTpl = contentChild<TemplateRef<void>>('icon', { descendants: false });\n\n readonly classes = computed(() => {\n const classes = ['button'];\n\n if (this.appearance()) {\n classes.push(`button--${this.appearance()}`);\n }\n if (this.size()) {\n classes.push(`button--${this.size()}`);\n }\n if (this.ghost()) {\n classes.push('button--ghost');\n }\n if (this.outlined()) {\n classes.push('button--outlined');\n }\n if (this.iconPosition() === 'only') {\n classes.push('button--icon-only');\n }\n if (this.isLoading()) {\n classes.push('button--loading');\n }\n\n return classes.join(' ');\n });\n}\n","@if (isLoading()) {\n<div class=\"loader loader--s button__loader\">\n <span class=\"loader__spinner\">\n <svg\n class=\"loader__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n aria-hidden=\"true\"\n >\n <circle class=\"loader__path\" cx=\"50%\" cy=\"50%\" r=\"6\"></circle>\n </svg>\n </span>\n</div>\n} @if ((iconPosition() === 'left' || iconPosition() === 'only') && !isLoading()) {\n<ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\n} @if (iconPosition() !== 'only') {\n<span class=\"button__label\">\n <ng-content></ng-content>\n</span>\n} @if (iconPosition() === 'right' && !isLoading()) {\n<ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\n}\n<ng-template #iconTemplate>\n <ng-content select=\"[icon]\"></ng-content>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\n\n@Component({\n selector: 'moz-checkbox',\n imports: [FormsModule, ReactiveFormsModule],\n templateUrl: './checkbox.html',\n styleUrls: ['./checkbox.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozCheckboxComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozCheckboxComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly name = input<string | undefined>();\n readonly label = input<string | undefined>();\n readonly indeterminate = input(false);\n readonly isInvalid = input(false);\n readonly disabled = input(false);\n readonly indented = input(false);\n\n public _value = signal(false);\n\n onChange: (_: boolean) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n readonly classObject = computed(() => {\n return {\n 'is-invalid': this.isInvalid(),\n };\n });\n\n readonly classes = computed(() => {\n return {\n 'checkbox': true,\n 'checkbox--indented': this.indented(),\n };\n });\n\n writeValue(value: boolean): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (_: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onInputChange(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n this._value.set(checked);\n this.onChange(checked);\n this.onTouched();\n }\n}\n","<div [class]=\"classes()\">\n <input\n class=\"checkbox__input\"\n type=\"checkbox\"\n [id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"_value()\"\n [class]=\"classObject()\"\n [attr.aria-invalid]=\"isInvalid()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"disabled()\"\n (change)=\"onInputChange($event)\"\n [attr.aria-label]=\"label()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-checked]=\"_value()\"\n />\n @if (label()) {\n <label class=\"checkbox__label\" [for]=\"id()\"> {{ label() }} </label>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'moz-checkbox-group',\n templateUrl: './checkbox-group.html',\n styleUrls: ['./checkbox-group.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozCheckboxGroupComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozCheckboxGroupComponent implements ControlValueAccessor {\n readonly name = input.required<string>();\n readonly legend = input<string>();\n readonly necessityIndicator = input<string>();\n readonly helpText = input<string>();\n readonly helpId = input<string>();\n readonly options = input<\n {\n id: string;\n label: string;\n value: string;\n disabled?: boolean;\n isInvalid?: boolean;\n }[]\n >();\n readonly inline = input<boolean>(false);\n\n readonly _value = signal<string[]>([]);\n readonly containerClass = computed(() => {\n return {\n 'field__content': true,\n 'field__content--inline': this.inline(),\n };\n });\n\n onChange: (_: string[]) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: string[]): void {\n this._value.set(value || []);\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n toggleSelection(event: Event, val: string) {\n const isChecked = (event.target as HTMLInputElement).checked;\n const values = [...this._value()];\n\n if (isChecked && !values.includes(val)) {\n values.push(val);\n } else if (!isChecked && values.includes(val)) {\n const index = values.indexOf(val);\n values.splice(index, 1);\n }\n\n this._value.set(values);\n this.onChange(values);\n this.onTouched();\n }\n\n isChecked(value: string): boolean {\n return this._value().includes(value);\n }\n\n getCheckboxInputClass(option: { isInvalid?: boolean }): { [key: string]: boolean } {\n return {\n 'checkbox__input': true,\n 'is-invalid': !!option.isInvalid,\n };\n }\n}\n","<fieldset class=\"field field--group\">\n <legend class=\"field__legend\">\n {{ legend() }}\n @if (necessityIndicator()) {\n <span class=\"field__requirement\">{{ necessityIndicator() }}</span>\n }\n </legend>\n @if (helpText()) {\n <span [id]=\"helpId()\" class=\"field__help\">{{ helpText() }}</span>\n }\n\n <div [class]=\"containerClass()\">\n @for (option of options(); track $index) {\n <div class=\"field__item checkbox\">\n <input\n type=\"checkbox\"\n [class]=\"getCheckboxInputClass(option)\"\n [id]=\"option.id\"\n [name]=\"name()\"\n [checked]=\"isChecked(option.value)\"\n [disabled]=\"option.disabled ?? false\"\n (change)=\"toggleSelection($event, option.value)\"\n />\n <label [for]=\"option.id\" class=\"checkbox__label\">{{ option.label }}</label>\n </div>\n }\n </div>\n</fieldset>\n","import { Component, input, ChangeDetectionStrategy, computed } from '@angular/core';\nimport { MozDividerOrientation, MozDividerAppearance, MozDividerSize } from './model/divider.model';\n\n/**\n * A divider is a visual element used to separate content or sections within an interface. It helps improve readability and organization by creating clear distinctions between groups of information. Dividers can be thin lines, thick separators, or even styled with spacing variations, adapting to different layouts. They are commonly used in menus, lists, forms, and content blocks to create a structured visual hierarchy.\n */\n@Component({\n selector: 'moz-divider',\n templateUrl: './divider.html',\n styleUrls: ['./divider.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozDividerComponent {\n /**\n * Determines the orientation of the divider.\n */\n readonly orientation = input<MozDividerOrientation>('horizontal');\n /**\n * Determines the appearance of the divider.\n */\n readonly appearance = input<MozDividerAppearance>('primary');\n /**\n * Determines the size of the divider.\n */\n readonly size = input<MozDividerSize>('s');\n\n readonly classes = computed(() => {\n return {\n [`divider-${this.orientation()}`]: this.orientation(),\n [`divider-horizontal--${this.appearance()}`]:\n this.appearance() && this.appearance() !== 'primary',\n [`divider-horizontal--${this.size()}`]: this.size() && this.size() !== 's',\n };\n });\n}\n","<div class=\"divider\">\n <div [class]=\"classes()\" aria-hidden=\"true\"></div>\n <ng-content></ng-content>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n TemplateRef,\n} from '@angular/core';\n\n@Component({\n selector: 'moz-field',\n templateUrl: './field.html',\n styleUrls: ['./field.scss'],\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozFieldComponent {\n readonly id = input<string>();\n readonly labelTemplate = contentChild<TemplateRef<unknown>>('label');\n readonly requirementTemplate = contentChild<TemplateRef<unknown>>('requirementText');\n readonly helpTemplate = contentChild<TemplateRef<unknown>>('helpText');\n readonly helpId = input<string | undefined>();\n readonly isValid = input<boolean>(false);\n readonly isInvalid = input<boolean>(false);\n readonly messageId = input<string | undefined>();\n readonly message = input<string | undefined>();\n\n readonly classes = computed(() => {\n return {\n 'mc-field__validation-message': true,\n 'is-valid': this.isValid(),\n 'is-invalid': this.isInvalid(),\n };\n });\n}\n","<div class=\"field\">\n <label class=\"field__label\" [attr.for]=\"id()\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate()!\"></ng-container>\n @if (requirementTemplate()) {\n <span class=\"field__requirement\">\n (<ng-container [ngTemplateOutlet]=\"requirementTemplate()!\"></ng-container>)\n </span>\n }\n </label>\n\n @if (helpTemplate()) {\n <span class=\"field__help\" [id]=\"helpId()\">\n <ng-container [ngTemplateOutlet]=\"helpTemplate()!\"></ng-container>\n </span>\n }\n\n <!-- <ng-content select=\"moz-field-content\"></ng-content> -->\n\n <div class=\"field__content\">\n <ng-content></ng-content>\n </div>\n\n @if ((isValid() || isInvalid()) && message()) {\n <span [id]=\"messageId()\" [class]=\"classes()\">\n {{ message() }}\n </span>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'moz-field-group',\n templateUrl: './field-group.html',\n styleUrl: './field-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozFieldGroupComponent {\n readonly id = input.required<string>();\n readonly legend = input.required<string>();\n readonly requirementText = input<string | undefined>();\n readonly helpText = input<string | undefined>();\n readonly isValid = input(false);\n readonly isInvalid = input(false);\n readonly message = input<string | undefined>();\n}\n","<fieldset class=\"field--group\">\n <legend class=\"field__legend\" [attr.for]=\"id()\">\n {{ legend() }} @if (requirementText()) {\n <span class=\"field__requirement\">({{ requirementText() }})</span>\n }\n </legend>\n\n @if (helpText()) {\n <span class=\"field__help\">{{ helpText() }}</span>\n }\n\n <div class=\"field__content\">\n <ng-content></ng-content>\n </div>\n\n @if ((isValid() || isInvalid()) && message()) {\n <span\n class=\"field__validation-message\"\n [class.is-valid]=\"isValid()\"\n [class.is-invalid]=\"isInvalid()\"\n >\n {{ message() }}\n </span>\n }\n</fieldset>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport {\n MozIconButtonAppearance,\n MozIconButtonSize,\n MozIconButtonType,\n} from './model/icon-button.model';\n\n@Component({\n selector: 'moz-icon-button',\n templateUrl: './icon-button.html',\n styleUrls: ['./icon-button.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozIconButtonComponent {\n readonly id = input.required<string>();\n readonly appearance = input<MozIconButtonAppearance>('standard');\n readonly size = input<MozIconButtonSize>('m');\n readonly disabled = input<boolean>();\n readonly ghost = input<boolean>();\n readonly outlined = input<boolean>();\n readonly type = input<MozIconButtonType>('button');\n readonly ariaLabel = input<string>();\n readonly activated = output<MouseEvent>();\n\n readonly classes = computed(() => {\n return {\n 'mc-button': true,\n 'mc-button--icon-button': true,\n [`mc-button--${this.appearance()}`]: this.appearance(),\n [`mc-button--${this.size()}`]: this.size(),\n 'mc-button--ghost': this.ghost() ?? false,\n 'mc-button--outlined': this.outlined() ?? false,\n };\n });\n\n onActivated(event: MouseEvent): void {\n event.stopPropagation();\n this.activated.emit(event);\n }\n}\n","<button\n (click)=\"onActivated($event)\"\n [disabled]=\"disabled()\"\n [attr.type]=\"type()\"\n [class]=\"classes()\"\n [attr.aria-label]=\"ariaLabel()\"\n [id]=\"id()\"\n>\n <span class=\"mc-button__icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n</button>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozLinearProgressBarBufferSize } from './model/linear-progress-bar-buffer.model';\n\n@Component({\n selector: 'moz-linear-progress-bar-buffer',\n templateUrl: './linear-progress-bar-buffer.html',\n styleUrls: ['./linear-progress-bar-buffer.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozLinearProgressBarBufferComponent {\n readonly valuePercent = input<number>(0);\n readonly size = input<MozLinearProgressBarBufferSize>('l');\n readonly ariaLabel = input<string>('Progress bar');\n\n readonly classes = computed(() => {\n const classes = ['mc-linear-progressbar-buffer'];\n if (this.size() === 's') classes.push('mc-linear-progressbar-buffer--s');\n if (this.size() === 'm') classes.push('mc-linear-progressbar-buffer--m');\n if (this.size() === 'l') classes.push('mc-linear-progressbar-buffer--l');\n return classes.join(' ');\n });\n}\n","<div [class]=\"classes()\">\n <div\n class=\"mc-linear-progressbar-buffer__indicator\"\n role=\"progressbar\"\n [style.--progress-value]=\"valuePercent()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-valuenow]=\"valuePercent()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n ></div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport {\n CheckCircle32,\n CrossCircleFilled20,\n Uploading32,\n WarningCircle32,\n Refresh20,\n Refresh32,\n Eye20,\n} from '@mozaic-ds/icons-angular';\nimport { MozDividerComponent } from '../../divider/divider';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { MozLinearProgressBarBufferComponent } from '../../linear-progress-bar-buffer/linear-progress-bar-buffer';\nimport { MozButtonComponent } from '../../button/button';\nimport { MozFileUploaderItemFormat } from './model/file-uploader-item.model';\n\n@Component({\n selector: 'moz-file-uploader-item',\n templateUrl: './file-uploader-item.html',\n styleUrls: ['./file-uploader-item.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MozLinearProgressBarBufferComponent,\n MozButtonComponent,\n CheckCircle32,\n CrossCircleFilled20,\n Refresh32,\n MozDividerComponent,\n MozIconButtonComponent,\n Refresh20,\n Uploading32,\n Eye20,\n WarningCircle32,\n ],\n})\nexport class MozFileUploaderItemComponent {\n readonly format = input<MozFileUploaderItemFormat>('inline');\n readonly invalid = input<boolean>(false);\n readonly uploading = input<boolean>(false);\n readonly errorMessage = input<string>();\n readonly hasPreview = input<boolean>(false);\n readonly file = input.required<File>();\n readonly fileInformation = input<(file: File) => string>();\n readonly retryButtonLabel = input<string>('Retry');\n readonly deleteButtonLabel = input<string>('Delete');\n readonly previewButtonLabel = input<string>('Preview');\n\n readonly delete = output<File>();\n readonly retry = output<File>();\n readonly preview = output<File>();\n\n readonly fileName = computed(() => this.file().name);\n\n readonly fileInfo = computed(() => {\n const customInfo = this.fileInformation();\n if (customInfo) {\n return customInfo(this.file());\n }\n\n // Default information\n const file = this.file();\n const size = this.formatFileSize(file.size);\n return `${size} • ${file.type || 'Unknown type'}`;\n });\n\n readonly isInline = computed(() => this.format() === 'inline');\n\n readonly stateModifier = computed(() => {\n if (this.invalid()) return 'error';\n if (this.uploading()) return 'loading';\n return 'default';\n });\n\n readonly modifierClass = computed(() => {\n const state = this.stateModifier();\n return state !== 'default' ? `mc-file-uploader-item--${state}` : '';\n });\n\n readonly isUploading = computed(() => this.stateModifier() === 'loading');\n\n readonly stateIcon = computed(() => {\n const state = this.stateModifier();\n const iconMap = {\n default: CheckCircle32,\n loading: Uploading32,\n error: WarningCircle32,\n };\n return iconMap[state];\n });\n\n readonly showInlineActions = computed(() => this.isInline() && !this.isUploading());\n\n readonly showStackedActions = computed(() => !this.isInline() && !this.isUploading());\n\n onDelete(): void {\n this.delete.emit(this.file());\n }\n\n onRetry(): void {\n this.retry.emit(this.file());\n }\n\n onPreview(): void {\n this.preview.emit(this.file());\n }\n\n private formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];\n }\n}\n","<div class=\"mc-file-uploader-item\" [class]=\"modifierClass()\">\n <div class=\"mc-file-uploader-item__container mc-file-uploader-item__container--{{ format() }}\">\n <div\n class=\"mc-file-uploader-item__meta-row\"\n [class.mc-file-uploader-item__meta-row--with-info]=\"true\"\n >\n @if (isUploading() && !invalid()) {\n <Uploading32 class=\"mc-file-uploader-item__status-icon\" />\n } @else if(invalid()) {\n <WarningCircle32 class=\"mc-file-uploader-item__status-icon\" />\n } @else {\n <CheckCircle32 class=\"mc-file-uploader-item__status-icon\" />\n }\n <div class=\"mc-file-uploader-item__info-content\">\n <span class=\"mc-file-uploader-item__label\">{{ fileName() }}</span>\n <span class=\"mc-file-uploader-item__details\">{{ fileInfo() }}</span>\n </div>\n </div>\n\n @if (showInlineActions()) {\n <div class=\"mc-file-uploader-item__inline-actions\">\n @if (invalid()) {\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onRetry()\"\n >\n <Refresh32 icon />\n <span class=\"mc-button__label\">{{ retryButtonLabel() }}</span>\n </button>\n } @if (!invalid() && hasPreview()) {\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onPreview()\"\n >\n <span class=\"mc-button__label\">{{ previewButtonLabel() }}</span>\n </button>\n }\n </div>\n <div class=\"mc-file-uploader-item__delete-button-container\">\n <moz-icon-button\n [id]=\"'file-uploader-item-delete-button'\"\n (activated)=\"onDelete()\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n >\n <CrossCircleFilled20 icon />\n </moz-icon-button>\n </div>\n } @if (showStackedActions()) {\n <moz-divider orientation=\"horizontal\"></moz-divider>\n <div class=\"mc-file-uploader-item__actions-container\">\n @if (!invalid() && hasPreview()) {\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onPreview()\"\n [iconPosition]=\"'left'\"\n >\n <Eye20 icon />\n <span class=\"mc-button__label\">{{ previewButtonLabel() }}</span>\n </button>\n } @if (invalid()) {\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onRetry()\"\n [iconPosition]=\"'left'\"\n >\n <Refresh20 icon />\n <span class=\"mc-button__label\">{{ retryButtonLabel() }}</span>\n </button>\n }\n\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onDelete()\"\n [iconPosition]=\"'left'\"\n >\n <CrossCircleFilled20 icon />\n <span class=\"mc-button__label\">{{ deleteButtonLabel() }}</span>\n </button>\n </div>\n } @if (isUploading() && !invalid()) {\n <moz-linear-progress-bar-buffer size=\"l\" [valuePercent]=\"75\" />\n }\n </div>\n\n @if (errorMessage() && invalid()) {\n <span class=\"mc-file-uploader-item__error-message\">{{ errorMessage() }}</span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n computed,\n forwardRef,\n input,\n OnInit,\n signal,\n output,\n viewChild,\n ElementRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Upload24 } from '@mozaic-ds/icons-angular';\nimport { MozFileUploaderItemComponent } from './item/file-uploader-item';\nexport type MozFileUploaderFormat = 'inline' | 'stacked';\n\n@Component({\n selector: 'moz-file-uploader',\n templateUrl: './file-uploader.html',\n styleUrls: ['./file-uploader.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MozFileUploaderItemComponent, Upload24],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozFileUploaderComponent),\n multi: true,\n },\n ],\n})\nexport class MozFileUploaderComponent implements OnInit, ControlValueAccessor {\n // File input props\n readonly id = input.required<string>();\n readonly label = input<string>();\n readonly helpText = input<string>();\n readonly helpId = input<string>();\n readonly necessityIndicator = input<string>('');\n readonly hasDragDrop = input<boolean>(true);\n readonly showFilesList = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly multipleFiles = input<boolean>(true);\n readonly accept = input<string>();\n readonly title = input<string>('Drag & drop');\n readonly subtitle = input<string>('or');\n readonly uploadButtonLabel = input<string>('Upload file(s)');\n\n // File item props\n readonly format = input<MozFileUploaderFormat>('inline');\n readonly errorMessage = input<string>();\n readonly invalid = input<boolean>(false);\n readonly uploading = input<boolean>(false);\n readonly hasPreview = input<boolean>(false);\n readonly retryButtonLabel = input<string>('Retry');\n readonly deleteButtonLabel = input<string>('Delete');\n readonly previewButtonLabel = input<string>('Preview');\n readonly information = input<string>();\n readonly fileInformation = input<(file: File) => string>();\n\n // Outputs for file operations\n readonly retryFile = output<File>();\n readonly previewFile = output<File>();\n /**\n * Emits the current file list every time it changes because of a user\n * interaction (select, drag & drop, delete). This lets the component be\n * bound outside of Reactive Forms too, e.g. `(filesChange)=\"files = $event\"`.\n *\n * When used inside a `FormGroup`/`FormControl` (via `formControlName` or\n * `[(ngModel)]`), this output fires from the exact same code path as the\n * `ControlValueAccessor` `onChange` callback below — both are always in\n * sync, so most form use cases only need `valueChanges` on the control.\n */\n readonly filesChange = output<File[]>();\n\n // Internal state\n readonly files = signal<File[]>([]);\n readonly isDragged = signal<boolean>(false);\n\n // Set by Angular Forms via `setDisabledState()` when the bound\n // FormControl is disabled (e.g. `this.form.get('attachments').disable()`).\n private readonly formDisabled = signal<boolean>(false);\n\n // Initial files for stories/testing\n readonly initialFiles = input<File[]>([]);\n\n readonly classes = computed(() => ({\n 'file-uploader--draggable': this.hasDragDrop(),\n }));\n\n // True when the uploader is disabled either through the `[disabled]`\n // input OR because the FormControl it is bound to is disabled.\n readonly isDisabledState = computed(() => this.disabled() || this.formDisabled());\n\n readonly inputClasses = computed(() => ({\n 'file-uploader__input--disabled': this.isDisabledState(),\n 'file-uploader__input--dragged': this.isDragged(),\n }));\n\n readonly iconTpl = ContentChild('icon', { descendants: false });\n readonly fileInput = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n ngOnInit(): void {\n const initial = this.initialFiles();\n if (initial.length > 0) {\n this.files.set(initial);\n }\n }\n\n removeFile(index: number): void {\n const currentFiles = this.files();\n const newFiles = currentFiles.filter((_, i) => i !== index);\n this.commitFiles(newFiles);\n }\n\n onDeleteFile(file: File): void {\n const currentFiles = this.files();\n const newFiles = currentFiles.filter((f) => f.name !== file.name);\n this.commitFiles(newFiles);\n }\n\n onRetryFile(file: File): void {\n this.retryFile.emit(file);\n }\n\n onPreviewFile(file: File): void {\n this.previewFile.emit(file);\n }\n\n onFileSelect(event: Event): void {\n const target = event.target as HTMLInputElement;\n if (target.files) {\n const newFiles = Array.from(target.files);\n\n if (this.multipleFiles()) {\n // Mode multiple : ajoute les nouveaux fichiers aux existants\n const currentFiles = this.files();\n this.commitFiles([...currentFiles, ...newFiles]);\n } else {\n // Mode simple : remplace tous les fichiers\n this.commitFiles(newFiles);\n }\n }\n\n // Reset the native input so selecting the exact same file again (e.g.\n // after deleting it) still fires a `change` event.\n target.value = '';\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.isDragged.set(false);\n\n if (this.isDisabledState()) return;\n\n if (event.dataTransfer?.files) {\n const newFiles = Array.from(event.dataTransfer.files);\n\n if (this.multipleFiles()) {\n // Mode multiple : ajoute les nouveaux fichiers aux existants\n const currentFiles = this.files();\n this.commitFiles([...currentFiles, ...newFiles]);\n } else {\n // Mode simple : remplace tous les fichiers\n this.commitFiles(newFiles);\n }\n }\n }\n\n openFileDialog(): void {\n if (this.isDisabledState()) return;\n\n const input = this.fileInput()?.nativeElement;\n input?.click();\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n this.isDragged.set(true);\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.isDragged.set(false);\n }\n\n // --- ControlValueAccessor -------------------------------------------\n // Implementing this interface is what allows `moz-file-uploader` to be\n // bound with `formControlName`, `[formControl]` or `[(ngModel)]`, exactly\n // like `moz-text-input` or any other Mozaic form control. The FormControl\n // value is a plain `File[]`.\n\n private onChange: (files: File[]) => void = () => void 0;\n private onTouched: () => void = () => void 0;\n\n /**\n * Called by Angular Forms to push a value INTO the component (e.g. on\n * `form.reset()`, `patchValue()`, or when the form is initialized with a\n * non-empty value). Must only update local state, never call `onChange`\n * back — otherwise it would create a feedback loop with the form.\n */\n writeValue(files: File[] | null): void {\n this.files.set(files ?? []);\n }\n\n registerOnChange(fn: (files: File[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n /**\n * Single entry point for every user-driven mutation of the file list\n * (select, drag & drop, delete). Updates the internal signal, then\n * notifies both the `filesChange` output and the Reactive Forms\n * `onChange`/`onTouched` callbacks so the two stay in sync.\n */\n private commitFiles(files: File[]): void {\n this.files.set(files);\n this.filesChange.emit(files);\n this.onChange(files);\n this.onTouched();\n }\n}\n","<div class=\"file-uploader\" [class]=\"classes()\">\n <div class=\"file-uploader__container\">\n <div class=\"field\">\n <label class=\"field__label\" [attr.for]=\"id()\">\n {{ label() }}\n @if (necessityIndicator()) {\n <span class=\"field__requirement\">\n {{ necessityIndicator() }}\n </span>\n }\n </label>\n @if (helpText()) {\n <span [id]=\"helpId()\" class=\"field__help\">\n {{ helpText() }}\n </span>\n }\n <div class=\"field__content\">\n <input\n #fileInput\n [id]=\"id()\"\n aria-label=\"file input\"\n type=\"file\"\n class=\"file-uploader__hidden-input\"\n [disabled]=\"isDisabledState()\"\n (change)=\"onFileSelect($event)\"\n [multiple]=\"multipleFiles()\"\n [accept]=\"accept()\"\n />\n\n <div\n class=\"file-uploader__input\"\n [class]=\"inputClasses()\"\n (click)=\"openFileDialog()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n @if (hasDragDrop()) {\n <span class=\"file-uploader__input-title\">{{ title() }}</span>\n <span class=\"file-uploader__input-subtitle\">{{ subtitle() }}</span>\n }\n\n <div class=\"button button--outlined file-uploader__button\">\n <Upload24 />\n <span class=\"button__label\">{{ uploadButtonLabel() }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n @if (showFilesList() && files().length > 0) {\n <div class=\"file-uploader__files-list\">\n @for (file of files(); track file; let i = $index) {\n <moz-file-uploader-item\n [format]=\"format()\"\n [invalid]=\"invalid()\"\n [uploading]=\"uploading()\"\n [errorMessage]=\"errorMessage()\"\n [hasPreview]=\"hasPreview()\"\n [file]=\"file\"\n [fileInformation]=\"fileInformation()\"\n [retryButtonLabel]=\"retryButtonLabel()\"\n [deleteButtonLabel]=\"deleteButtonLabel()\"\n [previewButtonLabel]=\"previewButtonLabel()\"\n (delete)=\"onDeleteFile($event)\"\n (retry)=\"onRetryFile($event)\"\n (preview)=\"onPreviewFile($event)\"\n />\n }\n </div>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterLink, RouterLinkActive, RouterLinkWithHref } from '@angular/router';\nimport { MozLinkAppearance, MozLinkSize, MozLinkIconPosition } from './model/link.model';\n\n@Component({\n selector: 'moz-link',\n imports: [NgTemplateOutlet, RouterLink],\n templateUrl: './link.html',\n styleUrls: ['./link.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozLinkComponent {\n readonly href = input<string | undefined>();\n readonly target = input<string | undefined>();\n readonly appearance = input<MozLinkAppearance>('standard');\n readonly size = input<MozLinkSize>('m');\n readonly inline = input<boolean>(false);\n readonly router = input<boolean>(false);\n readonly iconPosition = input<MozLinkIconPosition>('left');\n readonly current = input<boolean>(false);\n readonly ariaCurrent = input<string | null>(null);\n\n private readonly routerLinkActive = inject(RouterLinkActive, {\n optional: true,\n });\n\n public readonly routerLink = inject(RouterLinkWithHref, { optional: true });\n\n readonly classes = computed(() => {\n return {\n 'link': true,\n [`link--${this.appearance()}`]: this.appearance(),\n [`link--${this.size()}`]: this.size(),\n 'link--inline': this.inline() && !this.current(),\n 'link--stand-alone': !this.inline(),\n 'link--active': this.routerLinkActive?.isActive ?? false,\n 'link--breadcrumb__current': this.current(),\n };\n });\n}\n","@if (router()) {\n<a\n [routerLink]=\"href()\"\n [attr.href]=\"href()\"\n [class]=\"classes()\"\n [attr.target]=\"target()\"\n [attr.aria-current]=\"ariaCurrent()\"\n (click)=\"$event.preventDefault()\"\n>\n <ng-container [ngTemplateOutlet]=\"linkContent\"></ng-container>\n</a>\n} @else {\n<a\n [attr.href]=\"href()\"\n [class]=\"classes()\"\n [attr.target]=\"target()\"\n [attr.aria-current]=\"ariaCurrent()\"\n>\n <ng-container [ngTemplateOutlet]=\"linkContent\"></ng-container>\n</a>\n}\n\n<ng-template #linkContent>\n @if(iconPosition() === 'left'){\n <span class=\"link__icon\" aria-hidden=\"true\">\n <ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\n </span>\n }\n\n <span class=\"link__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\"></ng-container>\n </span>\n\n @if(iconPosition() === 'right'){\n <span class=\"link__icon\" aria-hidden=\"true\">\n <ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\n </span>\n }\n</ng-template>\n\n<ng-template #iconTemplate>\n <ng-content select=\"[icon]\"></ng-content>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-content></ng-content>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozLoaderAppearance, MozLoaderSize } from './model/loader.model';\n\n@Component({\n selector: 'moz-loader',\n templateUrl: './loader.html',\n styleUrls: ['./loader.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozLoaderComponent {\n readonly appearance = input<MozLoaderAppearance>('standard');\n readonly size = input<MozLoaderSize>('m');\n readonly text = input<string>();\n\n readonly classes = computed(() => {\n return {\n 'loader': true,\n [`loader--${this.size()}`]: this.size(),\n [`loader--${this.appearance()}`]: this.appearance(),\n [`loader--text-visible`]: this.text() !== '',\n };\n });\n\n readonly viewBox = computed(() => {\n switch (this.size()) {\n case 'xs':\n return '0 0 20 20';\n case 's':\n return '0 0 24 24';\n case 'l':\n return '0 0 64 64';\n default:\n return '0 0 32 32';\n }\n });\n\n readonly circleRadius = computed(() => {\n switch (this.size()) {\n case 'xs':\n return 3;\n case 's':\n return 6;\n case 'l':\n return 19;\n default:\n return 9;\n }\n });\n}\n","<div [class]=\"classes()\">\n <span class=\"loader__spinner\">\n <svg\n class=\"loader__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.viewBox]=\"viewBox()\"\n aria-hidden=\"true\"\n >\n <circle class=\"loader__path\" cx=\"50%\" cy=\"50%\" [attr.r]=\"circleRadius()\"></circle>\n </svg>\n </span>\n\n @if (text()) {\n <span class=\"loader__text\" role=\"status\">{{ text() }}</span>\n }\n</div>\n","import { Component, input } from '@angular/core';\nimport { MozLoaderComponent } from '../loader/loader';\n\n@Component({\n selector: 'moz-loading-overlay',\n imports: [MozLoaderComponent],\n templateUrl: './loading-overlay.html',\n styleUrl: './loading-overlay.scss',\n})\nexport class MozLoadingOverlayComponent {\n readonly label = input<string>('Loading...');\n readonly visible = input<boolean>(true);\n}\n","@if (visible()) {\n<div class=\"mc-loading-loader\" [class.is-visible]=\"visible()\">\n <div role=\"dialog\" tabindex=\"-1\" [attr.aria-labelledby]=\"'dialogLabel'\">\n <moz-loader [size]=\"'l'\" [appearance]=\"'inverse'\" [text]=\"label()\">\n </moz-loader>\n </div>\n</div>\n}\n","// standalone/modal.component.ts\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n model,\n TemplateRef,\n} from '@angular/core';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Cross24 } from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button';\nimport { MozModalSize } from './model/modal.model';\n\n@Component({\n selector: 'moz-modal',\n imports: [MozIconButtonComponent, Cross24, NgClass, NgTemplateOutlet],\n templateUrl: './modal.html',\n styleUrls: ['./modal.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozModalComponent {\n readonly title = input.required<string>();\n readonly size = input<MozModalSize>('m');\n readonly hasCloseButton = input(true);\n readonly closeOnBackdrop = input(true);\n readonly isOpen = model<boolean>(false);\n\n readonly footerTpl = contentChild<TemplateRef<void>>('modalFooter');\n\n readonly classes = computed(() => ({\n 'modal': true,\n 'is-open': this.isOpen(),\n [`modal--${this.size()}`]: this.size() !== 'm',\n }));\n\n open(): void {\n this.isOpen.set(true);\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n onBackdropClick(): void {\n if (this.closeOnBackdrop()) {\n this.close();\n }\n }\n}\n","<div\n [class]=\"classes()\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"modalTitle\"\n [attr.aria-modal]=\"isOpen() ? 'true' : 'false'\"\n>\n <div class=\"modal__dialog\" role=\"document\" (click)=\"$event.stopPropagation()\">\n <header class=\"modal__header\">\n <h2 class=\"modal__title\" id=\"modalTitle\">{{ title() }}</h2>\n\n @if (hasCloseButton()) {\n <moz-icon-button\n class=\"modal__close\"\n aria-label=\"Close\"\n [ghost]=\"true\"\n (activated)=\"close()\"\n [id]=\"'modal-close-button'\"\n >\n <Cross24 icon />\n </moz-icon-button>\n }\n </header>\n\n <main class=\"modal__body\">\n <ng-content />\n </main>\n\n @if (footerTpl()) {\n <footer class=\"modal__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl()!\" />\n </footer>\n }\n </div>\n\n @if (isOpen()) {\n <div class=\"overlay is-visible\" tabindex=\"-1\" (click)=\"onBackdropClick()\"></div>\n }\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { MozModalSize } from '../model/modal.model';\n\nexport interface MozModalConfig<D = unknown> {\n title: string;\n size?: MozModalSize;\n hasCloseButton?: boolean;\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n data?: D;\n}\n\nexport const MODAL_CONFIG = new InjectionToken<MozModalConfig>('MODAL_CONFIG');\nexport const MODAL_DATA = new InjectionToken<unknown>('MODAL_DATA');\n\nexport const DEFAULT_MODAL_CONFIG: Partial<MozModalConfig> = {\n size: 'm',\n hasCloseButton: true,\n closeOnBackdrop: true,\n closeOnEscape: true,\n};\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject, Observable } from 'rxjs';\nimport { signal } from '@angular/core';\nimport { MozModalSize } from '../model/modal.model';\n\nexport class MozModalRef<R = unknown> {\n private readonly afterClosed$ = new Subject<R | undefined>();\n private readonly afterOpened$ = new Subject<void>();\n\n readonly isOpen = signal(false);\n readonly title = signal('');\n readonly size = signal<MozModalSize>('m');\n readonly hasCloseButton = signal(true);\n readonly closeOnBackdrop = signal(true);\n readonly closeOnEscape = signal(true);\n\n private animationDuration = 300;\n\n constructor(private readonly overlayRef: OverlayRef) {}\n\n open(): void {\n requestAnimationFrame(() => {\n this.isOpen.set(true);\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n }\n\n close(result?: R): void {\n this.isOpen.set(false);\n\n setTimeout(() => {\n this.overlayRef.dispose();\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n }, this.animationDuration);\n }\n\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n HostListener,\n TemplateRef,\n computed,\n inject,\n viewChild,\n Type,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { Cross24 } from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { MODAL_CONFIG, MozModalConfig } from '../config/modal.config';\nimport { MozModalRef } from '../ref/modal-ref';\n\n@Component({\n selector: 'moz-modal-container',\n imports: [MozIconButtonComponent, Cross24, NgTemplateOutlet, CdkPortalOutlet],\n templateUrl: './modal-container.html',\n styleUrls: ['../modal.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalContainerComponent {\n readonly modalRef = inject(MozModalRef);\n readonly config = inject<MozModalConfig>(MODAL_CONFIG);\n\n readonly portalOutlet = viewChild(CdkPortalOutlet);\n\n footerTpl: TemplateRef<void> | null = null;\n\n private componentRef: ComponentRef<unknown> | null = null;\n\n readonly classes = computed(() => ({\n 'modal': true,\n 'is-open': this.modalRef.isOpen(),\n [`modal--${this.modalRef.size()}`]: this.modalRef.size() !== 'm',\n }));\n\n readonly ariaModal = computed(() => (this.modalRef.isOpen() ? 'true' : 'false'));\n\n attachComponent<C>(component: Type<C>): ComponentRef<C> {\n const portal = new ComponentPortal(component);\n const outlet = this.portalOutlet();\n\n if (!outlet) {\n throw new Error('Portal outlet is not available');\n }\n\n this.componentRef = outlet.attachComponentPortal(portal);\n return this.componentRef as ComponentRef<C>;\n }\n\n registerFooter(tpl: TemplateRef<void>): void {\n this.footerTpl = tpl;\n }\n\n onBackdropClick(event: MouseEvent): void {\n event.stopPropagation();\n if (this.modalRef.closeOnBackdrop()) {\n this.modalRef.close();\n }\n }\n\n @HostListener('keydown.escape')\n onEscape(): void {\n if (this.modalRef.closeOnEscape() && this.modalRef.isOpen()) {\n this.modalRef.close();\n }\n }\n}\n","<div\n [class]=\"classes()\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"modalTitle\"\n [attr.aria-modal]=\"ariaModal()\"\n [attr.aria-hidden]=\"!modalRef.isOpen()\"\n>\n <div class=\"modal__dialog\" role=\"document\" (click)=\"$event.stopPropagation()\">\n <header class=\"modal__header\">\n <h2 class=\"modal__title\" id=\"modalTitle\">{{ modalRef.title() }}</h2>\n\n @if (modalRef.hasCloseButton()) {\n <moz-icon-button\n class=\"modal__close\"\n aria-label=\"Close\"\n [ghost]=\"true\"\n (activated)=\"modalRef.close()\"\n [id]=\"'modal-close-button'\"\n >\n <Cross24 icon />\n </moz-icon-button>\n }\n </header>\n\n <main class=\"modal__body\">\n <ng-template cdkPortalOutlet />\n </main>\n\n @if (footerTpl) {\n <footer class=\"modal__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl\" />\n </footer>\n }\n </div>\n\n @if (modalRef.isOpen()) {\n <div class=\"overlay is-visible\" tabindex=\"-1\" (click)=\"onBackdropClick($event)\"></div>\n }\n</div>\n","// service/modal.service.ts\nimport { Injectable, Injector, Type, inject } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n MozModalConfig,\n MODAL_CONFIG,\n MODAL_DATA,\n DEFAULT_MODAL_CONFIG,\n} from '../config/modal.config';\nimport { MozModalRef } from '../ref/modal-ref';\nimport { ModalContainerComponent } from '../container/modal-container';\n\n@Injectable({ providedIn: 'root' })\nexport class MozModalService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n open<C, D = unknown, R = unknown>(component: Type<C>, config: MozModalConfig<D>): MozModalRef<R> {\n const mergedConfig: MozModalConfig<D> = {\n ...DEFAULT_MODAL_CONFIG,\n ...config,\n } as MozModalConfig<D>;\n\n const overlayRef = this.createOverlay();\n const modalRef = new MozModalRef<R>(overlayRef);\n\n modalRef.title.set(mergedConfig.title);\n modalRef.size.set(mergedConfig.size ?? 'm');\n modalRef.hasCloseButton.set(mergedConfig.hasCloseButton ?? true);\n modalRef.closeOnBackdrop.set(mergedConfig.closeOnBackdrop ?? true);\n modalRef.closeOnEscape.set(mergedConfig.closeOnEscape ?? true);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: MozModalRef, useValue: modalRef },\n { provide: MODAL_CONFIG, useValue: mergedConfig },\n { provide: MODAL_DATA, useValue: mergedConfig.data },\n ],\n });\n\n const containerPortal = new ComponentPortal(ModalContainerComponent, null, injector);\n const containerRef = overlayRef.attach(containerPortal);\n\n // Attacher le composant contenu dans le portal outlet\n containerRef.instance.attachComponent(component);\n\n modalRef.open();\n\n return modalRef;\n }\n\n private createOverlay(): OverlayRef {\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n return this.overlay.create(config);\n }\n}\n","import { Directive, TemplateRef, inject, afterNextRender } from '@angular/core';\nimport { ModalContainerComponent } from '../container/modal-container';\n\n@Directive({\n selector: '[mozModalFooter]',\n standalone: true,\n})\nexport class MozModalFooterDirective {\n private readonly tpl = inject(TemplateRef<void>);\n private readonly container = inject(ModalContainerComponent);\n\n constructor() {\n afterNextRender(() => {\n this.container.registerFooter(this.tpl);\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozNumberBadgeAppearance, MozNumberBadgeSize } from './model/number-badge.model';\n\n@Component({\n selector: 'moz-number-badge',\n templateUrl: './number-badge.html',\n styleUrls: ['./number-badge.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'style': 'display: flex;',\n },\n})\nexport class MozNumberBadgeComponent {\n readonly label = input<number>(0);\n readonly appearance = input<MozNumberBadgeAppearance>('standard');\n readonly size = input<MozNumberBadgeSize>('s');\n\n readonly classes = computed(() => {\n return {\n 'mc-number-badge': true,\n [`mc-number-badge--${this.appearance()}`]: this.appearance(),\n [`mc-number-badge--${this.size()}`]: this.size(),\n };\n });\n}\n","<span [class]=\"classes()\">{{ label() }}</span>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\n@Component({\n selector: 'moz-overlay',\n templateUrl: './overlay.html',\n styleUrls: ['./overlay.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozOverlayComponent {\n readonly backdropClick = output<void>();\n readonly backdropKeydown = output<void>();\n\n /**\n * Controls the visibility of the overlay.\n */\n readonly isVisible = input<boolean>();\n\n /**\n * Accessible label for the overlay dialog.\n */\n readonly dialogLabel = input<string>();\n\n readonly classes = computed(() => {\n return {\n 'overlay': true,\n 'is-visible': this.isVisible(),\n };\n });\n\n onBackdropClick() {\n this.backdropClick.emit();\n }\n\n noop() {}\n}\n","<div\n [class]=\"classes()\"\n (click)=\"onBackdropClick()\"\n (keydown)=\"noop()\"\n tabindex=\"-1\"\n aria-label=\"Close pannel\"\n>\n <div role=\"dialog\" tabindex=\"-1\" [attr.aria-labelledby]=\"dialogLabel()\">\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MozSelectOption, MozSelectSize, MozSelectValue } from './model/select.model';\n\n@Component({\n selector: 'moz-select',\n templateUrl: './select.html',\n styleUrls: ['./select.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozSelectComponent),\n multi: true,\n },\n ],\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozSelectComponent implements ControlValueAccessor {\n readonly id = input<string>();\n readonly name = input.required<string>();\n readonly options = input<MozSelectOption[]>();\n readonly placeholder = input<string>();\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly size = input<MozSelectSize>('m');\n\n readonly _value = signal<MozSelectValue>(null);\n\n onChange: (value: MozSelectValue) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: MozSelectValue): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: MozSelectValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n handleChange(event: Event) {\n const target = event.target as HTMLSelectElement;\n const value = target.value;\n this._value.set(value);\n this.onChange(value);\n }\n\n readonly hostClasses = computed(() => {\n return {\n 'select': true,\n [`select--${this.size()}`]: this.size(),\n };\n });\n\n readonly classes = computed(() => {\n return {\n 'select--control': true,\n 'select--readonly': this.readonly(),\n 'is-invalid': this.isInvalid(),\n };\n });\n}\n","<div [class]=\"hostClasses()\">\n <select\n [id]=\"id()\"\n [class]=\"classes()\"\n [name]=\"name()\"\n [disabled]=\"disabled() || readonly()\"\n (change)=\"handleChange($event)\"\n >\n <option value=\"\" [selected]=\"!_value()\" disabled>\n {{ placeholder() || 'Select an option' }}\n </option>\n @for (option of options(); track $index) {\n <option\n [value]=\"option.value\"\n [selected]=\"_value() === option.value\"\n [disabled]=\"option.disabled\"\n [attr.data-id]=\"option.id\"\n [attr.*]=\"option.attributes\"\n >\n {{ option.text }}\n </option>\n }\n </select>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n linkedSignal,\n output,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MozSelectComponent } from '../select/select';\nimport {\n ChevronLeft24,\n ChevronRight24,\n ChevronLeft20,\n ChevronRight20,\n} from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { MozButtonComponent } from '../button/button';\nimport { MozPaginationButtonAppearance, MozPaginationButtonSize } from './model/pagination.model';\n\n@Component({\n selector: 'moz-pagination',\n imports: [\n MozIconButtonComponent,\n MozSelectComponent,\n MozButtonComponent,\n ChevronLeft24,\n ChevronRight24,\n FormsModule,\n ChevronLeft20,\n ChevronRight20,\n ],\n templateUrl: './pagination.html',\n styleUrls: ['./pagination.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozPaginationComponent {\n readonly id = input.required<string>();\n readonly compact = input<boolean>(false);\n readonly options = input.required<{ text: string; value: number }[]>();\n readonly selectLabel = input<string>('Select page');\n readonly buttonAppearance = input<MozPaginationButtonAppearance>('square');\n readonly buttonSize = input<MozPaginationButtonSize>('m');\n\n readonly value = input<number>();\n readonly updateValue = output<number>();\n\n readonly _currentValue = linkedSignal(this.value);\n\n readonly currentIndex = computed(\n () => this.options()?.findIndex((opt) => opt.value === this._currentValue()) ?? 0\n );\n\n readonly isFirstPage = computed(() => this.currentIndex() === 0);\n readonly isLastPage = computed(() => this.currentIndex() === this.options().length - 1);\n\n readonly currentPageText = computed(\n () => this.options().find((option) => option.value === this._currentValue())?.text || ''\n );\n\n previous(): void {\n const currentIndex = this.currentIndex();\n if (currentIndex > 0) {\n const newValue = this.options()[currentIndex - 1].value;\n this._currentValue.set(newValue);\n this.updateValue.emit(newValue);\n }\n }\n\n next(): void {\n const currentIndex = this.currentIndex();\n if (currentIndex < this.options().length - 1) {\n const newValue = this.options()[currentIndex + 1].value;\n this._currentValue.set(newValue);\n this.updateValue.emit(newValue);\n }\n }\n\n onSelectChange(value: string): void {\n this._currentValue.set(+value);\n this.updateValue.emit(+value);\n }\n}\n","<nav class=\"pagination\" role=\"navigation\">\n @if (!compact() && buttonAppearance() === 'square') {\n <button\n moz-button\n iconPosition=\"only\"\n aria-label=\"Previous page\"\n [disabled]=\"isFirstPage()\"\n (click)=\"previous()\"\n [size]=\"buttonSize()\"\n >\n @if(buttonSize() === 'm') {\n <ChevronLeft24 icon />\n } @else {\n <ChevronLeft20 icon />\n }\n </button>\n } @else {\n <moz-icon-button\n aria-label=\"Previous page\"\n [disabled]=\"isFirstPage()\"\n (activated)=\"previous()\"\n [size]=\"buttonSize()\"\n [id]=\"'pagination-previous-button'\"\n >\n @if(buttonSize() === 'm') {\n <ChevronLeft24 icon />\n } @else {\n <ChevronLeft20 icon />\n }\n </moz-icon-button>\n } @if (!compact()) {\n <div class=\"pagination__field\">\n <moz-select\n class=\"pagination__select\"\n [id]=\"id()\"\n [name]=\"id()\"\n [options]=\"options()\"\n [ngModel]=\"_currentValue()\"\n (ngModelChange)=\"onSelectChange($event)\"\n [ariaLabel]=\"selectLabel()\"\n [size]=\"buttonSize()\"\n />\n </div>\n } @else {\n <span class=\"pagination__label\" aria-current=\"page\">\n {{ currentPageText() }}\n </span>\n } @if (!compact() && buttonAppearance() === 'square') {\n <button\n moz-button\n iconPosition=\"only\"\n aria-label=\"Next page\"\n [disabled]=\"isLastPage()\"\n (click)=\"next()\"\n [size]=\"buttonSize()\"\n >\n @if(buttonSize() === 'm') {\n <ChevronRight24 icon />\n } @else {\n <ChevronRight20 icon />\n }\n </button>\n } @else {\n <moz-icon-button\n aria-label=\"Next page\"\n [disabled]=\"isLastPage()\"\n (activated)=\"next()\"\n [size]=\"buttonSize()\"\n [id]=\"'pagination-next-button'\"\n >\n @if(buttonSize() === 'm') {\n <ChevronRight24 icon />\n } @else {\n <ChevronRight20 icon />\n }\n </moz-icon-button>\n }\n</nav>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n computed,\n createComponent,\n ElementRef,\n EnvironmentInjector,\n forwardRef,\n inject,\n input,\n OnDestroy,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CrossCircleFilled24 } from '@mozaic-ds/icons-angular';\n\n/**\n * Directive that transforms a simple input into a styled password input with toggle visibility and clearable button.\n * Wraps the input element in a container and adds additional elements as needed.\n */\n@Component({\n selector: 'input[moz-password-input]',\n template: '',\n styleUrls: ['./password-input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozPasswordInputDirective),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"password-input__control text-input__control\"',\n '[attr.aria-invalid]': 'isInvalid()',\n '[attr.aria-valuetext]': 'getValue()',\n '[type]': 'inputType()',\n '(input)': 'onInput($event)',\n '(blur)': 'onTouched()',\n '[disabled]': 'disabled()',\n },\n})\nexport class MozPasswordInputDirective implements ControlValueAccessor, AfterViewInit, OnDestroy {\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(false);\n readonly clearLabel = input<string>('Clear content');\n readonly buttonLabel = input<{ show: string; hide: string }>({\n show: 'Show',\n hide: 'Hide',\n });\n\n private wrapper: HTMLElement | null = null;\n private clearButton: HTMLElement | null = null;\n private toggleButton: HTMLElement | null = null;\n private clearIconComponentRef: ComponentRef<CrossCircleFilled24> | null = null;\n private environmentInjector = inject(EnvironmentInjector);\n protected _value = signal<string>('');\n private _isVisible = signal(false);\n\n readonly inputType = computed(() => (this._isVisible() ? 'text' : 'password'));\n readonly ariaChecked = computed(() => (this._isVisible() ? 'true' : 'false'));\n readonly isClearable = computed(() => this.clearable() && this._value().length > 0);\n\n /** Get the current value of the input */\n getValue(): string {\n return this._value();\n }\n\n onChange: (value: string) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n constructor(private elementRef: ElementRef<HTMLInputElement>, private renderer: Renderer2) {}\n\n ngAfterViewInit(): void {\n this.wrapInput();\n }\n\n ngOnDestroy(): void {\n if (this.clearIconComponentRef) {\n this.clearIconComponentRef.destroy();\n }\n }\n\n private wrapInput(): void {\n const input = this.elementRef.nativeElement;\n const parent = input.parentElement;\n\n if (!parent) return;\n\n // Create wrapper div\n this.wrapper = this.renderer.createElement('div');\n this.renderer.addClass(this.wrapper, 'password-input');\n this.renderer.addClass(this.wrapper, 'text-input');\n\n if (this.isInvalid()) {\n this.renderer.addClass(this.wrapper, 'is-invalid');\n }\n\n // Insert wrapper before input\n this.renderer.insertBefore(parent, this.wrapper, input);\n\n // Move input into wrapper\n this.renderer.appendChild(this.wrapper, input);\n\n // Add clearable button if needed\n if (this.clearable()) {\n this.createClearButton();\n }\n\n // Add toggle visibility button\n this.createToggleButton();\n }\n\n private createClearButton(): void {\n if (!this.wrapper) return;\n\n this.clearButton = this.renderer.createElement('button');\n this.renderer.setAttribute(this.clearButton, 'type', 'button');\n this.renderer.addClass(this.clearButton, 'controls-options__button');\n this.renderer.listen(this.clearButton, 'click', () => this.clearValue());\n\n // Create icon component dynamically\n this.clearIconComponentRef = createComponent(CrossCircleFilled24, {\n environmentInjector: this.environmentInjector,\n });\n\n const iconElement = this.clearIconComponentRef.location.nativeElement;\n this.renderer.addClass(iconElement, 'controls-options__icon');\n this.renderer.setAttribute(iconElement, 'aria-hidden', 'true');\n\n const label = this.renderer.createElement('span');\n this.renderer.addClass(label, 'controls-options__label');\n this.renderer.setProperty(label, 'textContent', this.clearLabel());\n\n this.renderer.appendChild(this.clearButton, iconElement);\n this.renderer.appendChild(this.clearButton, label);\n this.renderer.appendChild(this.wrapper, this.clearButton);\n\n // Initially hide if no value\n this.updateClearButtonVisibility();\n }\n\n private createToggleButton(): void {\n if (!this.wrapper) return;\n\n // Create button element with manual CSS classes\n this.toggleButton = this.renderer.createElement('button');\n this.renderer.setAttribute(this.toggleButton, 'type', 'button');\n this.renderer.setAttribute(this.toggleButton, 'role', 'switch');\n this.renderer.addClass(this.toggleButton, 'button');\n this.renderer.addClass(this.toggleButton, 'button--s');\n this.renderer.addClass(this.toggleButton, 'button--ghost');\n\n // Add click listener\n this.renderer.listen(this.toggleButton, 'click', () => this.toggleVisibility());\n\n // Set initial button text and aria-checked\n this.updateToggleButtonText(this.toggleButton || undefined);\n\n this.renderer.appendChild(this.wrapper, this.toggleButton);\n }\n\n private updateClearButtonVisibility(): void {\n if (!this.clearButton || !this.clearable()) return;\n\n if (this.isClearable()) {\n this.renderer.setStyle(this.clearButton, 'display', 'block');\n } else {\n this.renderer.setStyle(this.clearButton, 'display', 'none');\n }\n }\n\n private updateToggleButtonText(buttonElement?: HTMLElement): void {\n const button = buttonElement || this.toggleButton;\n if (!button) return;\n\n const text = this._isVisible() ? this.buttonLabel().hide : this.buttonLabel().show;\n this.renderer.setProperty(button, 'textContent', text);\n this.renderer.setAttribute(button, 'aria-checked', this.ariaChecked());\n }\n\n clearValue(): void {\n this._value.set('');\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', '');\n this.onChange('');\n this.onTouched();\n this.updateClearButtonVisibility();\n }\n\n toggleVisibility(): void {\n this._isVisible.update((v) => !v);\n this.updateToggleButtonText();\n }\n\n onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this._value.set(value);\n this.onChange(value);\n this.updateClearButtonVisibility();\n }\n\n writeValue(value: string): void {\n const normalizedValue = value ?? '';\n this._value.set(normalizedValue);\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', normalizedValue);\n this.updateClearButtonVisibility();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import {\n Component,\n forwardRef,\n ElementRef,\n OnInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n NgZone,\n signal,\n WritableSignal,\n input,\n inject,\n computed,\n viewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MozPincodeLength } from './model/pincode.model';\n\n@Component({\n selector: 'moz-pincode',\n templateUrl: './pincode.html',\n styleUrls: ['./pincode.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozPincodeInputComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozPincodeInputComponent implements OnInit, ControlValueAccessor {\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly ngZone = inject(NgZone);\n\n readonly id = input.required<string>();\n readonly length = input<MozPincodeLength>(6);\n readonly name = input<string | undefined>(undefined);\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly otp: WritableSignal<string[]> = signal([]);\n\n readonly inputRefs = viewChildren<ElementRef<HTMLInputElement>>('pincodeItem');\n\n private _value = '';\n\n public onChange: (value: string) => void = () => void 0;\n public onTouched: () => void = () => void 0;\n\n readonly classes = computed(() => ({\n 'mc-pincode-input': true,\n 'is-invalid': this.isInvalid(),\n }));\n\n ngOnInit(): void {\n this.otp.set(Array(this.length()).fill(''));\n if (this._value) {\n this.writeValue(this._value);\n }\n }\n\n writeValue(value: string): void {\n this._value = String(value ?? '');\n const newOtp = Array.from({ length: this.length() }, (_, i) => this._value[i] ?? '');\n this.otp.set(newOtp);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private focusInput(index: number): void {\n const refs = this.inputRefs();\n if (refs && refs.length > index && index >= 0) {\n this.ngZone.runOutsideAngular(() => {\n refs[index]?.nativeElement.focus();\n });\n }\n }\n\n onInput(event: Event, index: number): void {\n this.ngZone.runOutsideAngular(() => {\n const inputElement = event.target as HTMLInputElement;\n const val = inputElement.value.replace(/\\D/g, '');\n\n this.otp.update((currentOtp) => {\n const newOtp = [...currentOtp];\n newOtp[index] = val ? val[0] : '';\n return newOtp;\n });\n\n inputElement.value = this.otp()[index];\n\n const newValue = this.otp().join('');\n this._value = newValue;\n this.onChange(newValue);\n if (val && index + 1 < this.length()) {\n this.focusInput(index + 1);\n }\n this.onTouched();\n this.cdr.detectChanges();\n });\n }\n\n onKeyDown(event: KeyboardEvent, index: number): void {\n this.ngZone.runOutsideAngular(() => {\n if (event.key === 'ArrowLeft' && index > 0) {\n this.focusInput(index - 1);\n } else if (event.key === 'ArrowRight' && index < this.length() - 1) {\n this.focusInput(index + 1);\n } else if (event.key === 'Backspace') {\n this.onBackspace(event, index);\n }\n this.onTouched();\n });\n }\n\n onBackspace(event: KeyboardEvent, index: number): void {\n this.ngZone.runOutsideAngular(() => {\n if (!this.otp()[index] && index > 0) {\n event.preventDefault();\n\n this.otp.update((currentOtp) => {\n const newOtp = [...currentOtp];\n newOtp[index - 1] = '';\n return newOtp;\n });\n\n const newValue = this.otp().join('');\n this._value = newValue;\n this.onChange(newValue);\n this.focusInput(index - 1);\n this.cdr.detectChanges();\n }\n });\n }\n\n onPaste(event: ClipboardEvent): void {\n this.ngZone.runOutsideAngular(() => {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const digits = pasted.replace(/\\D/g, '').slice(0, this.length()).split('');\n\n this.otp.set(Array.from({ length: this.length() }, (_, i) => digits[i] ?? ''));\n\n const newValue = this.otp().join('');\n this._value = newValue;\n this.onChange(newValue);\n this.focusInput(Math.min(digits.length - 1, this.length() - 1));\n this.onTouched();\n this.cdr.detectChanges();\n });\n }\n}\n","<div [class]=\"classes()\" (paste)=\"onPaste($event)\">\n @for (digit of otp(); track $index) {\n <input\n #pincodeItem\n [id]=\"'pincodeItem' + $index\"\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n pattern=\"\\d*\"\n autocomplete=\"one-time-code\"\n [name]=\"name()\"\n class=\"mc-pincode-input__control\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [value]=\"digit\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (blur)=\"onTouched()\"\n />\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Less24, More24 } from '@mozaic-ds/icons-angular';\nimport { MozQuantitySelectorSize } from './model/quantity-selector.model';\n\n@Component({\n selector: 'moz-quantity-selector',\n imports: [More24, Less24],\n templateUrl: './quantity-selector.html',\n styleUrls: ['./quantity-selector.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozQuantitySelectorComponent),\n multi: true,\n },\n ],\n})\nexport class MozQuantitySelectorComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly name = input<string>('quantity-selector-input');\n readonly size = input<MozQuantitySelectorSize>('m');\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly min = input<number>(1);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n readonly incrementLabel = input<string>('Increment');\n readonly decrementLabel = input<string>('Decrement');\n\n readonly _value = signal<number>(1);\n\n readonly classes = computed(() => ({\n 'quantity-selector': true,\n [`quantity-selector--${this.size()}`]: this.size(),\n 'is-invalid': this.isInvalid(),\n }));\n\n private onChange: (value: number) => void = () => void 0;\n private onTouched: () => void = () => void 0;\n\n writeValue(value: number): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onChangeInput(event: Event): void {\n let value = Number((event.target as HTMLInputElement).value);\n\n value = Math.max(this.min(), Math.min(this.max(), value));\n this._value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n\n increment(): void {\n const value = Math.min(this.max(), this._value() + this.step());\n this._value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n\n decrement(): void {\n const value = Math.max(this.min(), this._value() - this.step());\n this._value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n}\n","<div [class]=\"classes()\">\n <input\n class=\"quantity-selector__control\"\n type=\"number\"\n [id]=\"id()\"\n [name]=\"name()\"\n [disabled]=\"disabled()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"isInvalid()\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"_value()\"\n [value]=\"_value()\"\n (change)=\"onChangeInput($event)\"\n />\n\n @if (!readonly()) {\n <button\n type=\"button\"\n [attr.aria-controls]=\"id()\"\n class=\"quantity-selector__button quantity-selector__button--increase\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || _value() === max()\"\n (click)=\"increment()\"\n >\n <span class=\"quantity-selector__icon\">\n <More24 />\n </span>\n <span class=\"quantity-selector__label\">{{ incrementLabel() }}</span>\n </button>\n\n <button\n type=\"button\"\n [attr.aria-controls]=\"id()\"\n class=\"quantity-selector__button quantity-selector__button--decrease\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || _value() === min()\"\n (click)=\"decrement()\"\n >\n <span class=\"quantity-selector__icon\">\n <Less24 />\n </span>\n <span class=\"quantity-selector__label\">{{ decrementLabel() }}</span>\n </button>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'moz-radio',\n templateUrl: './radio.html',\n styleUrls: ['./radio.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozRadioComponent),\n multi: true,\n },\n ],\n})\nexport class MozRadioComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly name = input<string | undefined>();\n readonly label = input<string | undefined>();\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n\n readonly _value = signal<boolean>(false);\n\n onChange: (_: boolean) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n handleChange(event: Event): void {\n const isChecked = (event.target as HTMLInputElement).checked;\n this._value.set(isChecked);\n this.onChange(isChecked);\n this.onTouched();\n }\n\n writeValue(value: boolean): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n readonly classes = computed(() => {\n return {\n 'radio__input': true,\n 'is-invalid': this.isInvalid(),\n };\n });\n}\n","<div class=\"radio\">\n <input\n [class]=\"classes()\"\n [id]=\"id()\"\n [type]=\"'radio'\"\n [name]=\"name()\"\n [checked]=\"_value()\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"isInvalid()\"\n (change)=\"handleChange($event)\"\n />\n @if (label()) {\n <label class=\"radio__label\" [for]=\"id()\"> {{ label() }} </label>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MozRadioComponent } from '../radio/radio';\n\n@Component({\n selector: 'moz-radio-group',\n templateUrl: './radio-group.html',\n styleUrls: ['./radio-group.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozRadioGroupComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MozRadioComponent, FormsModule],\n})\nexport class MozRadioGroupComponent implements ControlValueAccessor {\n readonly name = input.required<string>();\n readonly options = input<{ id: string; label: string; value: string; disabled?: boolean }[]>([]);\n readonly isInvalid = input(false);\n readonly inline = input(false);\n\n readonly _value = signal<string | null>(null);\n\n onChange: (value: string) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: string): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n select(value: string) {\n this._value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n\n readonly classes = computed(() => {\n return {\n 'field__content': true,\n 'field__content--inline': this.inline(),\n };\n });\n}\n","<fieldset class=\"field field--group\">\n <div [class]=\"classes()\">\n @for (option of options(); track $index) {\n <moz-radio\n [id]=\"option.id\"\n [label]=\"option.label\"\n [name]=\"name()\"\n [ngModel]=\"_value() === option.value\"\n [disabled]=\"option.disabled ?? false\"\n [isInvalid]=\"isInvalid()\"\n (change)=\"select(option.value)\"\n ></moz-radio>\n }\n </div>\n</fieldset>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozStatusDotStatus, MozStatusDotSize } from './model/status-dot.model';\n\n@Component({\n selector: 'moz-status-dot',\n templateUrl: './status-dot.html',\n styleUrls: ['./status-dot.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozStatusDotComponent {\n readonly status = input<MozStatusDotStatus>('info');\n readonly size = input<MozStatusDotSize>('m');\n\n readonly classes = computed(() => {\n return {\n 'mc-status-dot': true,\n [`mc-status-dot--${this.status()}`]: this.status(),\n [`mc-status-dot--${this.size()}`]: this.size(),\n };\n });\n}\n","<span [class]=\"classes()\"></span>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozStatusDotComponent } from '../status-dot/status-dot';\nimport { MozStatusBadgeStatus } from './model/status-badge.model';\n\n@Component({\n selector: 'moz-status-badge',\n imports: [MozStatusDotComponent],\n templateUrl: './status-badge.html',\n styleUrls: ['./status-badge.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozStatusBadgeComponent {\n readonly label = input<string>();\n readonly status = input<MozStatusBadgeStatus>('info');\n\n readonly classes = computed(() => {\n return {\n 'mc-status-badge': true,\n [`mc-status-badge--${this.status()}`]: this.status(),\n };\n });\n}\n","<div [class]=\"classes()\">\n <moz-status-dot [status]=\"status()\" />\n <span class=\"mc-status-badge__label\">{{ label() }}</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n output,\n Signal,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport {\n CheckCircleFilled24,\n Cross20,\n ErrorFilled24,\n InfoCircleFilled24,\n WarningTriangleFilled24,\n} from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { MozStatusNotificationStatus } from './model/status-notification.model';\n\n@Component({\n selector: 'moz-status-notification',\n templateUrl: './status-notification.html',\n styleUrls: ['./status-notification.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Cross20, MozIconButtonComponent, NgComponentOutlet, NgTemplateOutlet],\n})\nexport class MozStatusNotificationComponent {\n readonly id = input<string>('status-notification');\n readonly title = input<string>();\n readonly status = input<MozStatusNotificationStatus>('info');\n readonly closable = input<boolean>(false);\n readonly closed = output<void>();\n readonly descriptionTpl = contentChild<TemplateRef<void>>('description', { descendants: false });\n readonly footerTpl = contentChild<TemplateRef<void>>('footer', { descendants: false });\n\n readonly classes = computed(() => ({\n 'mc-status-notification': true,\n [`mc-status-notification--${this.status()}`]: this.status(),\n }));\n\n readonly iconComponent: Signal<Type<unknown>> = computed(() => {\n switch (this.status()) {\n case 'success':\n return CheckCircleFilled24;\n case 'warning':\n return WarningTriangleFilled24;\n case 'error':\n return ErrorFilled24;\n default:\n return InfoCircleFilled24;\n }\n });\n\n onCloseClick(): void {\n this.closed.emit();\n }\n}\n","<section role=\"status\" [class]=\"classes()\" [id]=\"id()\">\n <div class=\"mc-status-notification__icon\">\n <ng-container [ngComponentOutlet]=\"iconComponent()\" />\n </div>\n\n <div class=\"mc-status-notification__content\">\n @if(title()){\n <span class=\"mc-status-notification__title\">{{ title() }}</span>\n } @if (descriptionTpl()) {\n <div class=\"mc-status-notification__message\">\n <ng-container [ngTemplateOutlet]=\"descriptionTpl()\" />\n </div>\n } @if (footerTpl()) {\n <div class=\"mc-status-notification__footer\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n </div>\n\n @if (closable()) {\n <moz-icon-button\n size=\"s\"\n class=\"mc-status-notification-closable__close\"\n [ghost]=\"true\"\n type=\"button\"\n [appearance]=\"'standard'\"\n (activated)=\"onCloseClick()\"\n ariaLabel=\"Close notification\"\n [id]=\"'status-notification-close-button'\"\n >\n <Cross20 icon />\n </moz-icon-button>\n }\n</section>\n","import { ChangeDetectionStrategy, Component, Type, input } from '@angular/core';\n\n@Component({\n selector: 'moz-tab',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozTabComponent {\n id = input.required<string>();\n label = input.required<string>();\n icon = input<Type<unknown>>();\n disabled = input(false);\n routerLink = input<string>();\n badge = input<number | string | undefined>();\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n QueryList,\n computed,\n effect,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { MozDividerComponent } from '../divider/divider';\nimport { MozTabComponent } from './tab/tab';\nimport { MozTabItem } from './model/tab.model';\n\n@Component({\n selector: 'moz-tabs',\n templateUrl: './tabs.html',\n styleUrls: ['./tabs.scss'],\n imports: [NgComponentOutlet, RouterLink, MozDividerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozTabsComponent implements AfterContentInit {\n @ContentChildren(MozTabComponent) tabs!: QueryList<MozTabComponent>;\n\n description = input<string | undefined>();\n divider = input(true);\n centered = input(false);\n selectedIndex = model<number>(0);\n tabsInput = input<MozTabItem[]>([], { alias: 'tabs' });\n\n tabsArray = signal<MozTabComponent[]>([]);\n virtualTabs = signal<MozTabItem[]>([]);\n\n constructor() {\n effect(() => {\n const inputTabs = this.tabsInput();\n if (inputTabs.length > 0) {\n this.virtualTabs.set(inputTabs);\n }\n });\n }\n\n ngAfterContentInit(): void {\n this.tabsArray.set(this.tabs.toArray());\n this.tabs.changes.subscribe(() => {\n this.tabsArray.set(this.tabs.toArray());\n });\n }\n\n hasVirtualTabs = computed(() => this.virtualTabs().length > 0);\n\n readonly classes = computed(() => ({\n 'tabs': true,\n 'tabs--centered': this.centered(),\n }));\n\n isTabSelected = (index: number): boolean => index === this.selectedIndex();\n\n getTabClasses(index: number) {\n return computed(() => {\n const tab = this.tabsArray()[index];\n return {\n 'tabs__tab': true,\n 'tabs__tab--selected': this.isTabSelected(index),\n 'tabs__tab--disabled': !!tab?.disabled(),\n };\n });\n }\n\n getVirtualTabClasses(index: number) {\n return computed(() => {\n const tab = this.virtualTabs()[index];\n return {\n 'tabs__tab': true,\n 'tabs__tab--selected': this.isTabSelected(index),\n 'tabs__tab--disabled': !!tab?.disabled,\n };\n });\n }\n\n onClickTab(index: number): void {\n const tab = this.tabsArray()[index];\n if (!tab || tab.disabled()) return;\n if (index !== this.selectedIndex()) {\n this.selectedIndex.set(index);\n }\n }\n\n onClickVirtualTab(index: number, tab: MozTabItem): void {\n if (tab.disabled) return;\n if (index !== this.selectedIndex()) {\n this.selectedIndex.set(index);\n }\n }\n}\n","<nav [class]=\"classes()\" aria-label=\"Tabs\">\n <ul class=\"tabs__list\" role=\"tablist\" [attr.aria-label]=\"description()\">\n @if (hasVirtualTabs()) { @for (tab of virtualTabs(); let index = $index; track index) {\n <li class=\"tabs__item\" role=\"presentation\">\n @if (tab.routerLink) {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id\"\n [class]=\"getVirtualTabClasses(index)()\"\n [routerLink]=\"tab.routerLink\"\n [attr.aria-selected]=\"isTabSelected(index)\"\n (click)=\"onClickTab(index)\"\n >\n @if (tab.icon) {\n <span class=\"tabs__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"tab.icon\"></ng-container>\n </span>\n }\n <div class=\"tabs__label\">\n <span>{{ tab.label }}</span>\n </div>\n @if (tab.badge != null) {\n <span class=\"mc-number-badge mc-tabs__badge\" [class.mc-number-badge--accent]=\"isTabSelected(index)\">{{ tab.badge }}</span>\n }\n </button>\n } @else {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id\"\n [class]=\"getVirtualTabClasses(index)()\"\n [attr.aria-selected]=\"isTabSelected(index)\"\n (click)=\"onClickVirtualTab(index, tab)\"\n >\n @if (tab.icon) {\n <span class=\"tabs__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"tab.icon\"></ng-container>\n </span>\n }\n <div class=\"tabs__label\">\n <span>{{ tab.label }}</span>\n </div>\n @if (tab.badge != null) {\n <span class=\"mc-number-badge mc-tabs__badge\" [class.mc-number-badge--accent]=\"isTabSelected(index)\">{{ tab.badge }}</span>\n }\n </button>\n }\n </li>\n } } @else { @for (tab of tabsArray(); let index = $index; track index) {\n <li class=\"tabs__item\" role=\"presentation\">\n @if (tab.routerLink()) {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id()\"\n [class]=\"getTabClasses(index)()\"\n [routerLink]=\"tab.routerLink()\"\n [attr.aria-selected]=\"isTabSelected(index)\"\n (click)=\"onClickTab(index)\"\n >\n @if (tab.icon()) {\n <span class=\"tabs__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"tab.icon() ?? null\"></ng-container>\n </span>\n }\n <div class=\"tabs__label\">\n <span>{{ tab.label() }}</span>\n </div>\n @if (tab.badge() != null) {\n <span class=\"mc-number-badge mc-tabs__badge\" [class.mc-number-badge--accent]=\"isTabSelected(index)\">{{ tab.badge() }}</span>\n }\n </button>\n } @else {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id()\"\n [class]=\"getTabClasses(index)()\"\n [attr.aria-selected]=\"isTabSelected(index)\"\n (click)=\"onClickTab(index)\"\n >\n @if (tab.icon()) {\n <span class=\"tabs__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"tab.icon() ?? null\"></ng-container>\n </span>\n }\n <div class=\"tabs__label\">\n <span>{{ tab.label() }}</span>\n </div>\n @if (tab.badge() != null) {\n <span class=\"mc-number-badge mc-tabs__badge\" [class.mc-number-badge--accent]=\"isTabSelected(index)\">{{ tab.badge() }}</span>\n }\n </button>\n }\n </li>\n } }\n </ul>\n\n @if (divider()) {\n <moz-divider></moz-divider>\n }\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CrossCircleFilled24 } from '@mozaic-ds/icons-angular';\nimport { MozNumberBadgeComponent } from '../number-badge/number-badge';\nimport { MozTagSize, MozTagType } from './model/tag.model';\n\n@Component({\n selector: 'moz-tag',\n imports: [CrossCircleFilled24, MozNumberBadgeComponent, NgTemplateOutlet],\n templateUrl: './tag.html',\n styleUrls: ['./tag.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozTagComponent),\n multi: true,\n },\n ],\n})\nexport class MozTagComponent implements ControlValueAccessor {\n readonly type = input<MozTagType>('informative');\n readonly size = input<MozTagSize>('m');\n readonly id = input.required<string>();\n readonly name = input<string>();\n readonly disabled = input<boolean>(false);\n readonly contextualisedNumber = input<number>(99);\n readonly removableLabel = input<string>('Remove');\n\n readonly _value = signal<boolean>(true);\n\n readonly removeTag = output<string>();\n\n readonly classes = computed(() => ({\n [`tag-${this.type()}`]: this.type(),\n [`tag--${this.size()}`]: this.size(),\n }));\n\n private onChange: (value: boolean) => void = () => void 0;\n private onTouched: () => void = () => void 0;\n\n writeValue(value: boolean): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onCheckboxChange(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n this._value.set(checked);\n this.onChange(checked);\n this.onTouched();\n }\n\n onRemove(): void {\n this.removeTag.emit(this.id());\n }\n}\n","<ng-template #labelTemplate>\n <ng-content />\n</ng-template>\n\n<!-- Selectable -->\n@if (type() === 'selectable') {\n<label class=\"tag\" [class]=\"classes()\" [attr.for]=\"id()\">\n <input\n type=\"checkbox\"\n class=\"tag__input\"\n [id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"_value()\"\n [disabled]=\"disabled()\"\n (change)=\"onCheckboxChange($event)\"\n />\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n</label>\n}\n<!-- Interactive -->\n@if (type() === 'interactive') {\n<button type=\"button\" class=\"tag\" [class]=\"classes()\" [disabled]=\"disabled()\">\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n</button>\n}\n<!-- Contextualised -->\n@if (type() === 'contextualised') {\n<button type=\"button\" class=\"tag\" [class]=\"classes()\" [disabled]=\"disabled()\">\n <moz-number-badge\n appearance=\"inverse\"\n [label]=\"contextualisedNumber()\"\n [size]=\"size() === 'l' ? 'm' : 's'\"\n />\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n</button>\n}\n<!-- Removable -->\n@if (type() === 'removable') {\n<span class=\"tag\" [class]=\"classes()\">\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n <button class=\"tag-removable__remove\" type=\"button\" (click)=\"onRemove()\">\n <CrossCircleFilled24 class=\"tag-removable__icon\" aria-hidden=\"true\" />\n <span class=\"tag-removable__text\">{{ removableLabel() }}</span>\n </button>\n</span>\n}\n<!-- Informative -->\n@if (type() === 'informative') {\n<span class=\"tag\" [class]=\"classes()\">\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n</span>\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n OnDestroy,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Directive that transforms a simple textarea into a styled textarea.\n * Applies Mozaic Design System styles to native textarea elements.\n */\n@Component({\n selector: 'textarea[moz-text-area]',\n template: '',\n styleUrls: ['./text-area.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozTextarea),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.textarea]': 'true',\n '[class.is-invalid]': 'isInvalid()',\n '[class.is-disabled]': 'isDisabledState()',\n '[attr.aria-invalid]': 'isInvalid()',\n '[disabled]': 'isDisabledState()',\n '(input)': 'handleInput($event)',\n '(blur)': 'onTouched()',\n },\n})\nexport class MozTextarea implements ControlValueAccessor, AfterViewInit, OnDestroy {\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly rows = input<number>(2);\n readonly minLength = input<number | undefined>();\n readonly maxLength = input<number | undefined>();\n\n private _value = signal<string>('');\n private _isDisabled = signal<boolean>(false);\n\n readonly isDisabledState = computed(() => this.disabled() || this._isDisabled());\n\n onChange: (value: string) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n constructor(private elementRef: ElementRef<HTMLTextAreaElement>, private renderer: Renderer2) {}\n\n ngAfterViewInit(): void {\n this.applyAttributes();\n }\n\n ngOnDestroy(): void {\n // Cleanup if needed\n }\n\n private applyAttributes(): void {\n const textarea = this.elementRef.nativeElement;\n\n if (this.rows()) {\n this.renderer.setAttribute(textarea, 'rows', String(this.rows()));\n }\n\n if (this.minLength() !== undefined) {\n this.renderer.setAttribute(textarea, 'minlength', String(this.minLength()));\n }\n\n if (this.maxLength() !== undefined) {\n this.renderer.setAttribute(textarea, 'maxlength', String(this.maxLength()));\n }\n }\n\n handleInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value;\n this._value.set(value);\n this.onChange(value);\n }\n\n writeValue(value: string): void {\n const normalizedValue = value ?? '';\n this._value.set(normalizedValue);\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', normalizedValue);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._isDisabled.set(isDisabled);\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n }\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n computed,\n createComponent,\n effect,\n ElementRef,\n EnvironmentInjector,\n forwardRef,\n inject,\n input,\n Injector,\n OnDestroy,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CrossCircleFilled24 } from '@mozaic-ds/icons-angular';\n\nexport type MozTextInputSize = 's' | 'm';\n\n@Component({\n selector: 'input[moz-text-input]',\n template: '',\n styleUrls: ['./text-input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozTextInput),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"text-input__control\"',\n '[attr.aria-invalid]': 'isInvalid()',\n '[readOnly]': 'readonly()',\n '[disabled]': 'isDisabledState()',\n '(input)': 'onInput($event)',\n '(blur)': 'onTouched()',\n },\n})\nexport class MozTextInput implements ControlValueAccessor, AfterViewInit, OnDestroy {\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly size = input<MozTextInputSize>('m');\n readonly clearable = input<boolean>(false);\n readonly clearLabel = input<string>('Clear content');\n readonly prefix = input<string>('');\n readonly suffix = input<string>('');\n\n private wrapper: HTMLElement | null = null;\n private clearButton: HTMLElement | null = null;\n private iconContainer: HTMLElement | null = null;\n private iconComponentRef: ComponentRef<CrossCircleFilled24> | null = null;\n private _value = signal<string>('');\n private _isDisabled = signal<boolean>(false);\n\n readonly isClearable = computed(() => this.clearable() && this._value());\n readonly isDisabledState = computed(() => this.disabled() || this._isDisabled());\n\n private environmentInjector = inject(EnvironmentInjector);\n private applicationRef = inject(ApplicationRef);\n private renderer = inject(Renderer2);\n private elementRef = inject(ElementRef<HTMLInputElement>);\n private injector = inject(Injector);\n\n ngAfterViewInit(): void {\n this.wrapInput();\n this.setupEffects();\n }\n\n ngOnDestroy(): void {\n if (this.iconComponentRef) {\n this.applicationRef.detachView(this.iconComponentRef.hostView);\n this.iconComponentRef.destroy();\n }\n }\n\n private setupEffects(): void {\n // Effect pour mettre à jour la classe 'is-invalid'\n effect(\n () => {\n if (this.wrapper) {\n if (this.isInvalid()) {\n this.renderer.addClass(this.wrapper, 'is-invalid');\n } else {\n this.renderer.removeClass(this.wrapper, 'is-invalid');\n }\n }\n },\n { injector: this.injector }\n );\n\n // Effect pour mettre à jour la classe de taille\n effect(\n () => {\n if (this.wrapper) {\n // Retirer toutes les classes de taille existantes\n this.renderer.removeClass(this.wrapper, 'text-input--s');\n this.renderer.removeClass(this.wrapper, 'text-input--m');\n\n // Ajouter la nouvelle classe de taille\n if (this.size()) {\n this.renderer.addClass(this.wrapper, `text-input--${this.size()}`);\n }\n }\n },\n { injector: this.injector }\n );\n\n // Effect pour mettre à jour la visibilité du bouton clear\n effect(\n () => {\n this.updateClearButtonVisibility();\n },\n { injector: this.injector }\n );\n }\n\n private wrapInput(): void {\n const input = this.elementRef.nativeElement;\n const parent = input.parentElement;\n\n if (!parent) return;\n\n this.wrapper = this.renderer.createElement('div');\n this.renderer.addClass(this.wrapper, 'text-input');\n\n // Appliquer les classes initiales\n if (this.size()) {\n this.renderer.addClass(this.wrapper, `text-input--${this.size()}`);\n }\n if (this.isInvalid()) {\n this.renderer.addClass(this.wrapper, 'is-invalid');\n }\n\n this.renderer.insertBefore(parent, this.wrapper, input);\n\n const iconElement = this.findIconElement(parent);\n if (iconElement) {\n this.createIconContainer(iconElement);\n }\n\n // Add prefix before input\n if (this.prefix()) {\n this.createAddon(this.prefix(), 'prefix');\n }\n\n // Move input into wrapper\n this.renderer.appendChild(this.wrapper, input);\n\n // Add suffix after input\n if (this.suffix()) {\n this.createAddon(this.suffix(), 'suffix');\n }\n\n if (this.clearable()) {\n this.createClearButton();\n }\n }\n\n private createAddon(text: string, type: 'prefix' | 'suffix'): void {\n if (!this.wrapper) return;\n\n const addon = this.renderer.createElement('span');\n this.renderer.addClass(addon, 'text-input__addon');\n this.renderer.addClass(addon, `text-input__addon--${type}`);\n this.renderer.setProperty(addon, 'textContent', text);\n this.renderer.appendChild(this.wrapper, addon);\n }\n\n private findIconElement(parent: HTMLElement): Element | null {\n const children = Array.from(parent.children);\n return children.find((child) => child.hasAttribute('icon')) || null;\n }\n\n private createIconContainer(iconElement: Element): void {\n if (!this.wrapper) return;\n\n this.iconContainer = this.renderer.createElement('div');\n this.renderer.addClass(this.iconContainer, 'text-input__icon');\n this.renderer.appendChild(this.iconContainer, iconElement);\n this.renderer.appendChild(this.wrapper, this.iconContainer);\n }\n\n private createClearButton(): void {\n if (!this.wrapper) return;\n\n const controlsDiv = this.renderer.createElement('div');\n this.renderer.addClass(controlsDiv, 'controls-options');\n\n this.clearButton = this.renderer.createElement('button');\n this.renderer.setAttribute(this.clearButton, 'type', 'button');\n this.renderer.addClass(this.clearButton, 'controls-options__button');\n this.renderer.listen(this.clearButton, 'click', () => this.clearValue());\n\n this.iconComponentRef = createComponent(CrossCircleFilled24, {\n environmentInjector: this.environmentInjector,\n });\n\n // Attacher la vue à ApplicationRef pour activer la détection de changements\n this.applicationRef.attachView(this.iconComponentRef.hostView);\n\n const iconElement = this.iconComponentRef.location.nativeElement;\n this.renderer.addClass(iconElement, 'controls-options__icon');\n this.renderer.setAttribute(iconElement, 'aria-hidden', 'true');\n\n const label = this.renderer.createElement('span');\n this.renderer.addClass(label, 'controls-options__label');\n this.renderer.setProperty(label, 'textContent', this.clearLabel());\n\n this.renderer.appendChild(this.clearButton, iconElement);\n this.renderer.appendChild(this.clearButton, label);\n this.renderer.appendChild(controlsDiv, this.clearButton);\n this.renderer.appendChild(this.wrapper, controlsDiv);\n\n this.updateClearButtonVisibility();\n }\n\n private updateClearButtonVisibility(): void {\n if (!this.clearButton || !this.clearable()) return;\n\n const parent = this.clearButton.parentElement;\n if (parent) {\n if (this.isClearable()) {\n this.renderer.setStyle(parent, 'display', 'flex');\n } else {\n this.renderer.setStyle(parent, 'display', 'none');\n }\n }\n }\n\n clearValue(): void {\n this._value.set('');\n const input = this.elementRef.nativeElement;\n this.renderer.setProperty(input, 'value', '');\n this.onChange('');\n this.onTouched();\n const event = new Event('input', { bubbles: true });\n input.dispatchEvent(event);\n }\n\n onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this._value.set(value);\n this.onChange(value);\n }\n\n onChange: (value: string | number) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: string | number): void {\n const normalizedValue = value == null ? '' : String(value);\n this._value.set(normalizedValue);\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', normalizedValue);\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._isDisabled.set(isDisabled);\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MozToggleSize } from './model/toggle.model';\n\n@Component({\n selector: 'moz-toggle',\n imports: [FormsModule, ReactiveFormsModule],\n templateUrl: './toggle.html',\n styleUrls: ['./toggle.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozToggleComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozToggleComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly name = input<string | undefined>();\n readonly size = input<MozToggleSize>('s');\n readonly disabled = input<boolean>(false);\n readonly classes = computed(() => {\n return {\n 'toggle': true,\n [`toggle--${this.size()}`]: this.size(),\n };\n });\n\n _value = signal(false);\n\n onChange: (_: boolean) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: boolean): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onInputChange(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n this._value.set(checked);\n this.onChange(checked);\n this.onTouched();\n }\n}\n","<div [class]=\"classes()\">\n <label class=\"toggle__container\">\n <input\n [id]=\"id()\"\n type=\"checkbox\"\n class=\"toggle__input\"\n [name]=\"name()\"\n [checked]=\"_value()\"\n [disabled]=\"disabled()\"\n (change)=\"onInputChange($event)\"\n [attr.aria-labelledby]=\"id() + '-label'\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-checked]=\"_value()\"\n />\n <span class=\"toggle__label\" [id]=\"id() + '-label'\" [attr.for]=\"id()\">\n <ng-content></ng-content>\n </span>\n </label>\n</div>\n","import { Component, input, ChangeDetectionStrategy, computed } from '@angular/core';\nimport { MozFlagType } from './model/flag.model';\n\n@Component({\n selector: 'moz-flag',\n templateUrl: './flag.html',\n styleUrls: ['./flag.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozFlagComponent {\n readonly type = input<MozFlagType>('default');\n\n readonly classes = computed(() => {\n const baseClass = 'flag';\n switch (this.type()) {\n case 'accent':\n return `${baseClass} flag--accent`;\n case 'danger':\n return `${baseClass} flag--danger`;\n case 'inverse':\n return `${baseClass} flag--inverse`;\n default:\n return baseClass;\n }\n });\n}\n","<div [class]=\"classes()\">\n <span class=\"flag__label\">\n <ng-content />\n </span>\n</div>\n","import {\n Component,\n input,\n signal,\n ChangeDetectionStrategy,\n forwardRef,\n computed,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CrossCircle24 } from '@mozaic-ds/icons-angular';\nimport { MozDatepickerSize } from './model/datepicker.model';\n\n@Component({\n selector: 'moz-datepicker',\n templateUrl: './datepicker.html',\n styleUrls: ['./datepicker.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozDatepickerComponent),\n multi: true,\n },\n ],\n imports: [CrossCircle24],\n})\nexport class MozDatepickerComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly error = input<string | undefined>(undefined);\n readonly clearable = input<boolean>(false);\n readonly size = input<MozDatepickerSize>('default');\n readonly label = input<string>('Date');\n\n readonly _value = signal<string | null>(null);\n\n readonly classes = computed(() => ({\n 'mc-datepicker': true,\n 'mc-text-input': true,\n 'is-invalid': this.invalid(),\n 'mc-datepicker--s': this.size() === 's',\n 'mc-text-input--s': this.size() === 's',\n }));\n\n private onChange: (value: string | null) => void = () => void 0;\n private onTouched: () => void = () => void 0;\n\n writeValue(val: string | null): void {\n this._value.set(val);\n }\n\n registerOnChange(fn: (val: string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onInput(event: Event) {\n const input = event.target as HTMLInputElement;\n const newVal = input.value || null;\n this._value.set(newVal);\n this.onChange(newVal);\n }\n\n onClear() {\n this._value.set(null);\n this.onChange(null);\n }\n\n onBlur() {\n this.onTouched();\n }\n}\n","<div class=\"mc-field\">\n <label class=\"mc-field__label\" [attr.for]=\"id()\"> {{ label() }} </label>\n\n <div class=\"mc-field__content\">\n <div [class]=\"classes()\">\n <input\n type=\"date\"\n [id]=\"id()\"\n class=\"mc-datepicker__control mc-text-input__control\"\n [value]=\"_value() ?? ''\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [attr.aria-invalid]=\"invalid()\"\n />\n\n @if (clearable() && !disabled() && !readonly() && _value()) {\n <div class=\"mc-controls-options mc-datepicker__controls-options\">\n <button\n type=\"button\"\n class=\"mc-controls-options__button\"\n (click)=\"onClear()\"\n aria-label=\"Clear\"\n tabindex=\"-1\"\n >\n <CrossCircle24 class=\"mc-controls-options__icon\" />\n <span class=\"mc-controls-options__label\">Clear content</span>\n </button>\n </div>\n }\n </div>\n </div>\n\n @if (invalid() && error()) {\n <span class=\"mc-field__validation-message is-invalid\"> {{ error() }} </span>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { MozTooltipPosition } from './model/tooltip.model';\n\n@Component({\n selector: 'moz-tooltip',\n templateUrl: './tooltip.html',\n styleUrls: ['./tooltip.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozTooltipComponent {\n readonly id = input.required<string>();\n readonly position = input<MozTooltipPosition>('top');\n readonly noPointer = input<boolean>(false);\n readonly standalone = input<boolean>(false);\n content = '';\n\n readonly classes = computed(() => ({\n 'tooltip': true,\n [`tooltip--${this.position()}`]: !!this.position(),\n 'tooltip--no-pointer': this.noPointer(),\n 'tooltip--standalone': this.standalone(),\n }));\n}\n","<div [class]=\"classes()\">\n @if (!standalone()) {\n <div>\n <ng-content select=\"[trigger]\"></ng-content>\n </div>\n }\n\n <span [id]=\"id()\" class=\"tooltip__content\" role=\"tooltip\">\n @if (content) {\n {{ content }}\n } @else {\n <ng-content select=\"[content]\"></ng-content>\n }\n </span>\n</div>\n","import { Directive, ElementRef, HostListener, OnDestroy, inject, Input } from '@angular/core';\nimport {\n Overlay,\n OverlayRef,\n OverlayPositionBuilder,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { MozTooltipComponent } from './tooltip';\nimport { MozTooltipPosition } from './model/tooltip.model';\n\n@Directive({\n selector: '[mozTooltip]',\n})\nexport class MozTooltipDirective implements OnDestroy {\n @Input('mozTooltip') content = '';\n @Input() tooltipPosition: MozTooltipPosition = 'top';\n @Input() tooltipNoPointer = false;\n\n private overlayRef: OverlayRef | null = null;\n private overlay = inject(Overlay);\n private overlayPositionBuilder = inject(OverlayPositionBuilder);\n private elementRef = inject(ElementRef);\n\n @HostListener('mouseenter')\n show(): void {\n if (this.overlayRef?.hasAttached()) {\n return;\n }\n\n const offset = 20;\n const positionStrategy = this.overlayPositionBuilder\n .flexibleConnectedTo(this.elementRef)\n .withPositions(this.getPositions());\n\n if (this.tooltipPosition === 'top') {\n positionStrategy.withDefaultOffsetY(-offset);\n } else if (this.tooltipPosition === 'bottom') {\n positionStrategy.withDefaultOffsetY(offset);\n } else if (this.tooltipPosition === 'left') {\n positionStrategy.withDefaultOffsetX(-offset);\n } else if (this.tooltipPosition === 'right') {\n positionStrategy.withDefaultOffsetX(offset);\n }\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n const tooltipPortal = new ComponentPortal(MozTooltipComponent);\n const tooltipRef = this.overlayRef.attach(tooltipPortal);\n\n tooltipRef.setInput('id', `tooltip-${Math.random().toString(36).substr(2, 9)}`);\n tooltipRef.setInput('position', this.tooltipPosition);\n tooltipRef.setInput('noPointer', this.tooltipNoPointer);\n tooltipRef.setInput('standalone', true);\n tooltipRef.instance.content = this.content;\n }\n\n @HostListener('mouseleave')\n hide(): void {\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n }\n\n ngOnDestroy(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n }\n\n private getPositions(): ConnectedPosition[] {\n const positions: Record<MozTooltipPosition, ConnectedPosition> = {\n top: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n bottom: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n left: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n },\n right: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n },\n };\n\n return [positions[this.tooltipPosition]];\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozCircularProgessBarSize } from './model/circular-progress-bar.model';\n\n@Component({\n selector: 'moz-circular-progress-bar',\n templateUrl: './ciruclar-progress-bar.html',\n styleUrls: ['./circular-progress-bar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozCircularProgressBarComponent {\n readonly valuePercent = input<number>(0);\n readonly size = input<MozCircularProgessBarSize>('l');\n readonly ariaLabel = input<string>('Progress bar');\n readonly numberLabel = input<string | null>(null);\n readonly textLabel = input<string | null>(null);\n readonly showPercentage = input<boolean>(false);\n\n readonly classes = computed(() => {\n const classes = ['mc-circular-progressbar'];\n if (this.size() === 's') classes.push('mc-circular-progressbar--s');\n if (this.size() === 'm') classes.push('mc-circular-progressbar--m');\n return classes.join(' ');\n });\n\n readonly hasNumberOrText = computed(() => !!(this.numberLabel() || this.textLabel()));\n}\n","<div\n [class]=\"classes()\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabel()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"valuePercent()\"\n [style.--progress-value]=\"valuePercent()\"\n>\n <svg\n class=\"mc-circular-progressbar__line\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n viewBox=\"0 0 100 100\"\n >\n <circle class=\"mc-circular-progressbar__track\" cx=\"50\" cy=\"50\" r=\"46\"></circle>\n <circle class=\"mc-circular-progressbar__indicator\" cx=\"50\" cy=\"50\" r=\"46\"></circle>\n </svg>\n\n @if (showPercentage()) {\n <div class=\"mc-circular-progressbar__percentage\">\n <p class=\"mc-circular-progressbar__value\">{{ valuePercent() }}</p>\n <p class=\"mc-circular-progressbar__unit\">%</p>\n </div>\n } @else if (hasNumberOrText()) {\n <div class=\"mc-circular-progressbar__content\">\n @if (numberLabel()) {\n <p class=\"mc-circular-progressbar__number\">{{ numberLabel() }}</p>\n } @if (textLabel()) {\n <p class=\"mc-circular-progressbar__text\">{{ textLabel() }}</p>\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'moz-linear-progress-bar-percentage',\n templateUrl: './linear-progress-bar-percentage.html',\n styleUrls: ['./linear-progress-bar-percentage.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozLinearProgressBarPercentageComponent {\n readonly valuePercent = input<number>(0);\n readonly ariaLabel = input<string>('Progress bar');\n readonly showLabel = input<boolean>(false);\n}\n","<div class=\"mc-linear-progressbar-percentage\">\n <div\n class=\"mc-linear-progressbar-percentage__indicator\"\n role=\"progressbar\"\n [style.--progress-value]=\"valuePercent()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-valuenow]=\"valuePercent()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n @if (showLabel()) {\n <div class=\"mc-linear-progressbar-percentage__label\">\n <p class=\"mc-linear-progressbar-percentage__value\">\n {{ valuePercent() }}<span\n class=\"mc-linear-progressbar-percentage__unit\"\n >%</span\n >\n </p>\n </div>\n }\n </div>\n</div>\n","import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { ImageAlt32 } from '@mozaic-ds/icons-angular';\nimport { MozCalloutVariant } from './model/callout.model';\n\n@Component({\n selector: 'moz-callout',\n imports: [NgComponentOutlet, NgTemplateOutlet],\n templateUrl: './callout.html',\n styleUrls: ['./callout.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozCalloutComponent {\n readonly title = input<string | null>(null);\n readonly message = input<string | null>(null);\n readonly role = input<string>('status');\n readonly variant = input<MozCalloutVariant>('default');\n readonly icon = input<Type<unknown>>(ImageAlt32);\n readonly footerTpl = contentChild<TemplateRef<void>>('footer', { descendants: false });\n\n readonly classes = computed(() => {\n const classes = ['mc-callout'];\n if (this.variant() === 'default') classes.push('mc-callout--default');\n if (this.variant() === 'inverse') classes.push('mc-callout--inverse');\n if (this.variant() === 'tips') classes.push('mc-callout--tips');\n if (this.variant() === 'accent') classes.push('mc-callout--accent');\n return classes.join(' ');\n });\n}\n","<section [attr.role]=\"role()\" [class]=\"classes()\">\n <span class=\"mc-callout__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"icon()\" />\n </span>\n <div class=\"mc-callout__content\">\n @if (title()) {\n <h2 class=\"mc-callout__title\">{{ title() }}</h2>\n }\n @if (message()) {\n <p class=\"mc-callout__message\">{{ message() }}</p>\n }\n @if (footerTpl()) {\n <div class=\"mc-callout__footer\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozAvatarSize } from './model/avatar.model';\n\n@Component({\n selector: 'moz-avatar',\n templateUrl: './avatar.html',\n styleUrls: ['./avatar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozAvatarComponent {\n readonly size = input<MozAvatarSize>('s');\n\n readonly classes = computed(() => {\n const size = this.size();\n return ['mc-avatar', size === 'm' ? 'mc-avatar--m' : '', size === 'l' ? 'mc-avatar--l' : '']\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"classes()\">\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n computed,\n booleanAttribute,\n signal,\n effect,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { ChevronDown24 } from '@mozaic-ds/icons-angular';\nimport parsePhoneNumberFromString, {\n isValidPhoneNumber,\n getCountries,\n getCountryCallingCode,\n getExampleNumber,\n type CountryCode,\n type Examples,\n} from 'libphonenumber-js';\nimport examples from 'libphonenumber-js/mobile/examples';\nimport {\n MozPhoneNumberCountry,\n MozPhoneNumberValue,\n MozPhoneNumberSize,\n} from './model/phone-number-input.model';\n\nlet UID = 0;\n\n@Component({\n selector: 'moz-phone-number',\n imports: [FormsModule, ReactiveFormsModule, ChevronDown24],\n templateUrl: './phone-number-input.html',\n styleUrls: ['./phone-number-input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozPhoneNumberComponent),\n multi: true,\n },\n ],\n})\nexport class MozPhoneNumberComponent implements ControlValueAccessor {\n readonly label = input<string>('Phone number');\n readonly requirementText = input<string | null>('(required / optional)');\n readonly showRequirement = input<boolean, unknown>(true, {\n transform: booleanAttribute,\n });\n readonly helpText = input<string | null>('Help text');\n readonly size = input<MozPhoneNumberSize>('m');\n readonly placeholder = input<string | null>(null);\n readonly defaultCountry = input<string>('fr');\n readonly locale = input<string>('en');\n\n readonly countryCodes = input<string[] | null>(null);\n\n readonly countries = input<MozPhoneNumberCountry[]>([\n {\n code: 'br',\n name: 'Brazil',\n dialCode: '+55',\n },\n {\n code: 'fr',\n name: 'France',\n dialCode: '+33',\n },\n {\n code: 'gr',\n name: 'Greece',\n dialCode: '+30',\n },\n {\n code: 'it',\n name: 'Italy',\n dialCode: '+39',\n },\n {\n code: 'pl',\n name: 'Poland',\n dialCode: '+48',\n },\n {\n code: 'pt',\n name: 'Portugal',\n dialCode: '+351',\n },\n {\n code: 'ro',\n name: 'Romania',\n dialCode: '+40',\n },\n {\n code: 'za',\n name: 'South Africa',\n dialCode: '+27',\n },\n {\n code: 'es',\n name: 'Spain',\n dialCode: '+34',\n },\n {\n code: 'ua',\n name: 'Ukraine',\n dialCode: '+380',\n },\n ]);\n\n readonly showCountrySelect = input<boolean, unknown>(true, {\n transform: booleanAttribute,\n });\n readonly showCountryCode = input<boolean, unknown>(true, {\n transform: booleanAttribute,\n });\n\n readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly readonly = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n readonly invalid = input<boolean | null>(null);\n readonly errorMessage = input<string | null>(null);\n\n readonly selectName = input<string>('selectComponentName');\n readonly inputName = input<string>('example-small');\n\n private readonly _country = signal<string>('fr');\n private readonly _number = signal<string>('');\n\n private readonly uid = ++UID;\n readonly selectId = `phone_select_${this.uid}`;\n readonly flagImgId = `phone_flag_${this.uid}`;\n readonly inputId = `phone_input_${this.uid}`;\n readonly helpId = `help_${this.uid}`;\n readonly errorId = `err_${this.uid}`;\n readonly ccId = `countryCode_${this.uid}`;\n\n readonly selectedCountryCode = computed(() => this._country());\n readonly availableCountries = computed(() => {\n const explicitCodes = this.countryCodes();\n if (explicitCodes && explicitCodes.length) {\n return explicitCodes.map((c) => c.toLowerCase());\n }\n\n const legacyCountries = this.countries();\n if (legacyCountries && legacyCountries.length) {\n return legacyCountries.map((c) => c.code.toLowerCase());\n }\n\n return getCountries().map((c) => c.toLowerCase());\n });\n\n readonly selectedCountryName = computed(() => this.getCountryName(this._country()));\n readonly selectedDialCode = computed(() => {\n const dialCode = this.getCountryCallingCodeFor(this._country());\n return dialCode ? `+${dialCode}` : '';\n });\n readonly selectedFlagUrl = computed(() => `https://flagcdn.com/${this._country()}.svg`);\n\n readonly number = computed(() => this._number());\n\n readonly dynamicPlaceholder = computed(() => {\n const manual = this.placeholder();\n if (manual && manual.length > 0) {\n return manual;\n }\n\n const country = this.selectedLibCountryCode();\n if (!country) {\n return '';\n }\n\n try {\n const example = getExampleNumber(country, examples as Examples);\n return example?.formatNational() ?? '';\n } catch {\n return '';\n }\n });\n\n private selectedLibCountryCode = computed<CountryCode | undefined>(() => {\n const code = this._country();\n if (!code) {\n return undefined;\n }\n return code.toUpperCase() as CountryCode;\n });\n\n private parsedNumber = computed(() => {\n const number = this._number().trim();\n const country = this.selectedLibCountryCode();\n if (!number || !country) {\n return null;\n }\n\n try {\n return parsePhoneNumberFromString(number, country);\n } catch {\n return null;\n }\n });\n\n private phoneIsValid = computed(() => {\n const number = this._number().trim();\n const country = this.selectedLibCountryCode();\n if (!number || !country) {\n return false;\n }\n\n try {\n return isValidPhoneNumber(number, country);\n } catch {\n return false;\n }\n });\n\n getCountryName(countryCode: string): string {\n const upper = countryCode.toUpperCase();\n\n try {\n const regionNames = new Intl.DisplayNames([this.locale()], {\n type: 'region',\n });\n return regionNames.of(upper) ?? upper;\n } catch {\n return upper;\n }\n }\n\n getCountryCallingCodeFor(countryCode: string): string {\n const upper = countryCode.toUpperCase() as CountryCode;\n\n try {\n return getCountryCallingCode(upper);\n } catch {\n return '';\n }\n }\n\n // aria-describedby\n describedBy = computed(() => {\n const ids: string[] = [];\n if (this.helpText()) ids.push(this.helpId);\n if (this.isInvalid() && this.errorToShow()) ids.push(this.errorId);\n return ids.length ? ids.join(' ') : null;\n });\n\n // invalid combiné (input override > form state)\n private formInvalid = signal<boolean>(false);\n private formErrorMsg = signal<string | null>(null);\n\n isInvalid = computed(() => {\n const explicit = this.invalid();\n if (explicit !== null) {\n return !!explicit;\n }\n\n if (this.formInvalid()) {\n return true;\n }\n\n const value = this._number().trim();\n if (!value) {\n return false;\n }\n\n return !this.phoneIsValid();\n });\n\n errorToShow = computed(() => this.errorMessage() ?? this.formErrorMsg());\n\n // ----- CVA\n private onChange?: (value: MozPhoneNumberValue) => void;\n onTouched?: () => void;\n\n writeValue(value: MozPhoneNumberValue | null): void {\n if (!value) {\n this._number.set('');\n return;\n }\n\n if (value.country) {\n this._country.set(value.country.toLowerCase());\n }\n\n const incoming = value.number ?? '';\n if (!incoming) {\n this._number.set('');\n return;\n }\n\n const current = this._number();\n if (incoming === current) {\n return;\n }\n\n if (incoming.startsWith('+')) {\n try {\n const parsed = parsePhoneNumberFromString(incoming);\n if (parsed) {\n if (parsed.country) {\n this._country.set(parsed.country.toLowerCase());\n }\n this._number.set(parsed.formatNational());\n return;\n }\n } catch {\n // ignore and fallback to raw value\n }\n }\n\n this._number.set(incoming);\n }\n\n registerOnChange(fn: (value: MozPhoneNumberValue) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Appels depuis le template\n onCountryChange(code: string) {\n this._country.set(code.toLowerCase());\n\n const parsed = this.parsedNumber();\n if (parsed && this.phoneIsValid()) {\n const formatted = parsed.formatNational();\n if (formatted !== this._number()) {\n this._number.set(formatted);\n }\n }\n\n this.emitChange();\n }\n onNumberChange(val: string) {\n const sanitized = this.sanitize(val);\n this._number.set(sanitized);\n\n const parsed = this.parsedNumber();\n if (parsed && this.phoneIsValid()) {\n const formatted = parsed.formatNational();\n if (formatted !== sanitized) {\n this._number.set(formatted);\n }\n }\n\n this.emitChange();\n }\n\n private emitChange() {\n if (!this.onChange) {\n return;\n }\n\n const parsed = this.parsedNumber();\n const fullNumber = parsed?.number ?? this._number();\n\n this.onChange({\n country: this._country(),\n number: fullNumber,\n });\n }\n\n private sanitize(value: string): string {\n return value.replace(/[^0-9+\\s()-]/g, '');\n }\n\n // ---- Sync validation depuis le parent (optionnel)\n // Tu peux appeler ces helpers depuis un directive/validator externe si besoin.\n setFormInvalidState(invalid: boolean, message?: string | null) {\n this.formInvalid.set(invalid);\n this.formErrorMsg.set(message ?? null);\n }\n\n constructor() {\n // fallback si la country par défaut n'est pas dans la liste\n effect(() => {\n const codes = this.availableCountries();\n if (!codes.length) {\n return;\n }\n\n const preferred = this.defaultCountry()?.toLowerCase();\n const target = preferred && codes.includes(preferred) ? preferred : codes[0];\n\n if (!this._country() || !codes.includes(this._country())) {\n this._country.set(target);\n }\n });\n }\n}\n","<div\n class=\"field\"\n [class.is-disabled]=\"disabled()\"\n [class.is-readonly]=\"readonly()\"\n>\n <legend class=\"field__legend\">\n {{ label() }} @if (showRequirement() && requirementText()) {\n <span class=\"field__requirement\">{{ requirementText() }}</span>\n }\n </legend>\n\n @if (helpText()) {\n <span [id]=\"helpId\" class=\"field__help\">{{ helpText() }}</span>\n }\n\n <div class=\"field__content\">\n <div id=\"mc-phone-number-input\" class=\"phone-number-input\">\n <!-- Select pays + flag -->\n <div\n class=\"phone-number-input__select-wrapper\"\n [class.phone-number-input__select-wrapper--hidden]=\"\n !showCountrySelect()\n \"\n >\n <select\n [id]=\"selectId\"\n [name]=\"selectName()\"\n class=\"select phone-number-input__select\"\n [class.select--s]=\"size() === 's'\"\n [disabled]=\"disabled() || readonly()\"\n [ngModel]=\"selectedCountryCode()\"\n (ngModelChange)=\"onCountryChange($event)\"\n aria-label=\"Country\"\n >\n <option value=\"\" selected hidden></option>\n @for (code of availableCountries(); track code) {\n <option\n [attr.data-flag]=\"code\"\n [value]=\"code\"\n [selected]=\"code === selectedCountryCode()\"\n >\n {{ getCountryName(code) }} (+{{ getCountryCallingCodeFor(code) }})\n </option>\n }\n </select>\n\n @if (showCountrySelect()) {\n <div class=\"phone-number-input__select-display\">\n <div class=\"phone-number-input__flag\">\n <img\n class=\"phone-number-input__flag-image\"\n [id]=\"flagImgId\"\n [src]=\"selectedFlagUrl()\"\n [alt]=\"selectedCountryName()\"\n width=\"20\"\n />\n </div>\n <ChevronDown24 class=\"phone-number-input__chevron\" />\n </div>\n }\n </div>\n\n <!-- Input numéro -->\n <div\n class=\"text-input phone-number-input__input\"\n [class.text-input--s]=\"size() === 's'\"\n [class.is-invalid]=\"isInvalid()\"\n >\n @if (showCountryCode()) {\n <span [id]=\"ccId\" class=\"phone-number-input__country-code\"\n >{{ selectedDialCode() }}</span\n >\n }\n\n <input\n type=\"tel\"\n [id]=\"inputId\"\n class=\"phone-number-input__control text-input__control\"\n [placeholder]=\"dynamicPlaceholder()\"\n [name]=\"inputName()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n [ngModel]=\"number()\"\n (ngModelChange)=\"onNumberChange($event)\"\n (blur)=\"onTouched?.()\"\n />\n </div>\n </div>\n </div>\n\n <!-- Message d'erreur -->\n @if (isInvalid() && errorToShow()) {\n <span [id]=\"errorId\" class=\"field__validation-message is-invalid\">\n {{ errorToShow() }}\n </span>\n }\n</div>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n input,\n output,\n signal,\n booleanAttribute,\n contentChild,\n} from '@angular/core';\nimport { MozLinearProgressBarBufferComponent } from '../linear-progress-bar-buffer/linear-progress-bar-buffer';\nimport {\n CheckCircleFilled32,\n WarningCircleFilled32,\n CrossCircleFilled32,\n InfoCircleFilled32,\n Cross20,\n} from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { MozToasterPosition, MozToasterStatus, MozToasterRole } from './model/toaster.model';\n\n@Component({\n selector: 'moz-toaster',\n imports: [\n MozLinearProgressBarBufferComponent,\n CheckCircleFilled32,\n WarningCircleFilled32,\n CrossCircleFilled32,\n InfoCircleFilled32,\n Cross20,\n MozIconButtonComponent,\n ],\n templateUrl: './toaster.html',\n styleUrls: ['./toaster.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozToasterComponent implements AfterContentInit {\n readonly open = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly position = input<MozToasterPosition>('top');\n readonly description = input<string>('');\n readonly status = input<MozToasterStatus>('info');\n readonly closable = input<boolean, unknown>(true, { transform: booleanAttribute });\n readonly progress = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly timeout = input<number | null>(null);\n readonly role = input<MozToasterRole>('status');\n readonly closeAriaLabel = input<string>('Close');\n\n readonly openChange = output<boolean>();\n readonly closed = output<void>();\n\n readonly actionSlot = contentChild<ElementRef<HTMLElement>>('[action]', { descendants: false });\n readonly hasAction = signal(false);\n\n ngAfterContentInit() {\n this.hasAction.set(!!this.actionSlot());\n }\n\n classes = computed(() => {\n const classes = [];\n if (this.open()) {\n classes.push('is-open');\n }\n const s = this.status();\n const p = this.position();\n if (s && s !== 'info') {\n classes.push(`mc-toaster--${s}`);\n }\n if (p && p !== 'top') {\n classes.push(`mc-toaster--${p}`);\n }\n return classes.join(' ');\n });\n\n private _progressValue = signal(0); // 0 → 100\n progressValue = () => this._progressValue();\n\n private intervalId: number | null = null;\n private timeoutId: number | null = null;\n private startAt = 0;\n\n constructor() {\n effect(() => {\n const isOpen = this.open();\n const ms = this.timeout();\n const showProgress = this.progress();\n\n this.clearTimers();\n this._progressValue.set(0);\n\n if (!isOpen || !ms || ms <= 0) {\n return;\n }\n\n if (showProgress) {\n this.startAt = Date.now();\n const step = 100;\n this.intervalId = setInterval(() => {\n const elapsed = Date.now() - this.startAt;\n const pct = Math.min(100, (elapsed / ms) * 100);\n this._progressValue.set(pct);\n if (pct >= 100) {\n this.onCloseClick();\n }\n }, step) as unknown as number;\n } else {\n this.timeoutId = setTimeout(() => this.onCloseClick(), ms) as unknown as number;\n }\n });\n }\n\n onCloseClick() {\n if (!this.open()) {\n return;\n }\n this.clearTimers();\n this._progressValue.set(100);\n this.openChange.emit(false);\n this.closed.emit();\n }\n\n private clearTimers() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n","<section class=\"mc-toaster\" [class]=\"classes()\" [attr.role]=\"role()\">\n <div class=\"mc-toaster__icon\">\n @switch (status()) { @case ('success') {\n <CheckCircleFilled32 />\n } @case ('warning') {\n <WarningCircleFilled32 />\n } @case ('error') {\n <CrossCircleFilled32 />\n } @case ('info') {\n <InfoCircleFilled32 />\n } }\n </div>\n\n <div class=\"mc-toaster__content\">\n <p class=\"mc-toaster__message\">{{ description() }}</p>\n\n @if (hasAction()) {\n <div class=\"mc-toaster__action\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n }\n </div>\n\n @if (closable()) {\n <moz-icon-button\n type=\"button\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (activated)=\"onCloseClick()\"\n [appearance]=\"'inverse'\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n [id]=\"'toaster-close-button'\"\n >\n <Cross20 icon />\n </moz-icon-button>\n } @if (progress() && timeout() && timeout()! > 0) {\n <moz-linear-progress-bar-buffer\n class=\"mc-toaster__indicator\"\n [valuePercent]=\"progressValue()\"\n size=\"m\"\n >\n </moz-linear-progress-bar-buffer>\n }\n</section>\n","import { InjectionToken } from '@angular/core';\nimport { MozToasterPosition, MozToasterRole, MozToasterStatus } from '../model/toaster.model';\n\nexport interface MozToasterConfig {\n open?: boolean;\n position?: MozToasterPosition;\n description: string;\n status?: MozToasterStatus;\n closable?: boolean;\n progress?: boolean;\n timeout?: number | null;\n role?: MozToasterRole;\n closeAriaLabel?: string;\n}\n\nexport const TOASTER_CONFIG = new InjectionToken<MozToasterConfig>('TOASTER_CONFIG');\n\nexport const DEFAULT_TOASTER_CONFIG: Partial<MozToasterConfig> = {\n open: false,\n position: 'top',\n description: '',\n status: 'info',\n closable: true,\n progress: false,\n timeout: null,\n role: 'status',\n closeAriaLabel: 'Close',\n};\n","import { Subject, Observable } from 'rxjs';\nimport { signal } from '@angular/core';\nimport { MozToasterPosition, MozToasterStatus } from '../model/toaster.model';\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport class MozToasterRef {\n private readonly afterClosed$ = new Subject<undefined>();\n private readonly afterOpened$ = new Subject<void>();\n\n readonly isOpen = signal<boolean>(false);\n readonly description = signal<string>('');\n readonly status = signal<MozToasterStatus>('info');\n readonly closable = signal<boolean>(true);\n readonly timeout = signal<number | null>(null);\n readonly progress = signal<boolean>(false);\n readonly position = signal<MozToasterPosition>('top');\n\n private animationDuration = 300;\n\n constructor(private readonly overlayRef: OverlayRef) {}\n\n open(): void {\n requestAnimationFrame(() => {\n this.isOpen.set(true);\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n }\n\n close(): void {\n this.isOpen.set(false);\n\n setTimeout(() => {\n this.overlayRef.dispose();\n this.afterClosed$.next(undefined);\n this.afterClosed$.complete();\n }, this.animationDuration);\n }\n\n afterClosed(): Observable<undefined> {\n return this.afterClosed$.asObservable();\n }\n\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport {\n CheckCircleFilled32,\n Cross20,\n CrossCircleFilled32,\n InfoCircleFilled32,\n WarningCircleFilled32,\n} from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { MozLinearProgressBarBufferComponent } from '../../linear-progress-bar-buffer';\nimport { MozToasterConfig, TOASTER_CONFIG } from '../config/toaster.config';\nimport { MozToasterRef } from '../ref/toaster-ref';\n\n@Component({\n selector: 'moz-toaster-container',\n imports: [\n MozLinearProgressBarBufferComponent,\n CheckCircleFilled32,\n WarningCircleFilled32,\n CrossCircleFilled32,\n InfoCircleFilled32,\n Cross20,\n MozIconButtonComponent,\n ],\n templateUrl: './toaster-container.html',\n styleUrls: ['../toaster.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToasterContainerComponent {\n readonly toasterRef = inject(MozToasterRef);\n readonly config = inject<MozToasterConfig>(TOASTER_CONFIG);\n\n classes = computed(() => {\n const classes = [];\n if (this.toasterRef.isOpen()) {\n classes.push('is-open');\n }\n const s = this.toasterRef.status();\n const p = this.toasterRef.position();\n if (s && s !== 'info') {\n classes.push(`mc-toaster--${s}`);\n }\n if (p && p !== 'top') {\n classes.push(`mc-toaster--${p}`);\n }\n return classes.join(' ');\n });\n\n private _progressValue = signal(0); // 0 → 100\n progressValue = () => this._progressValue();\n\n private intervalId: number | null = null;\n private timeoutId: number | null = null;\n private startAt = 0;\n\n constructor() {\n effect(() => {\n const isOpen = this.toasterRef.isOpen();\n const ms = this.toasterRef.timeout();\n const showProgress = this.toasterRef.progress();\n\n this.clearTimers();\n this._progressValue.set(0);\n\n if (!isOpen || !ms || ms <= 0) {\n return;\n }\n\n if (showProgress) {\n this.startAt = Date.now();\n const step = 100;\n this.intervalId = setInterval(() => {\n const elapsed = Date.now() - this.startAt;\n const pct = Math.min(100, (elapsed / ms) * 100);\n this._progressValue.set(pct);\n if (pct >= 100) {\n this.toasterRef.close();\n }\n }, step) as unknown as number;\n } else {\n this.timeoutId = setTimeout(() => this.toasterRef.close(), ms) as unknown as number;\n }\n });\n }\n\n private clearTimers() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n","<section class=\"mc-toaster\" [class]=\"classes()\">\n <div class=\"mc-toaster__icon\">\n @switch (toasterRef.status()) {\n @case ('success') {\n <CheckCircleFilled32 />\n }\n @case ('warning') {\n <WarningCircleFilled32 />\n }\n @case ('error') {\n <CrossCircleFilled32 />\n }\n @case ('info') {\n <InfoCircleFilled32 />\n }\n }\n </div>\n\n <div class=\"mc-toaster__content\">\n <p class=\"mc-toaster__message\">{{ toasterRef.description() }}</p>\n </div>\n\n @if (toasterRef.closable()) {\n <moz-icon-button\n type=\"button\"\n (activated)=\"toasterRef.close()\"\n [appearance]=\"'inverse'\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n [id]=\"'toaster-close-button'\"\n >\n <Cross20 icon />\n </moz-icon-button>\n }\n @if (toasterRef.progress() && toasterRef.timeout() && toasterRef.timeout()! > 0) {\n <moz-linear-progress-bar-buffer\n class=\"mc-toaster__indicator\"\n [valuePercent]=\"progressValue()\"\n size=\"m\"\n >\n </moz-linear-progress-bar-buffer>\n }\n</section>\n","// service/toaster.service.ts\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { DEFAULT_TOASTER_CONFIG, MozToasterConfig, TOASTER_CONFIG } from '../config/toaster.config';\nimport { ToasterContainerComponent } from '../container/toaster-container';\nimport { MozToasterRef } from '../ref/toaster-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class MozToasterService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n open(config: MozToasterConfig): MozToasterRef {\n const mergedConfig: MozToasterConfig = {\n ...DEFAULT_TOASTER_CONFIG,\n ...config,\n } as MozToasterConfig;\n\n const overlayRef = this.createOverlay();\n const toasterRef = new MozToasterRef(overlayRef);\n\n toasterRef.description.set(mergedConfig.description);\n toasterRef.status.set(mergedConfig.status ?? 'info');\n toasterRef.closable.set(mergedConfig.closable ?? true);\n toasterRef.timeout.set(mergedConfig.timeout ?? null);\n toasterRef.progress.set(mergedConfig.progress ?? false);\n toasterRef.position.set(mergedConfig.position ?? 'top');\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: MozToasterRef, useValue: toasterRef },\n { provide: TOASTER_CONFIG, useValue: mergedConfig },\n ],\n });\n\n const containerPortal = new ComponentPortal(ToasterContainerComponent, null, injector);\n overlayRef.attach(containerPortal);\n\n toasterRef.open();\n\n return toasterRef;\n }\n\n private createOverlay(): OverlayRef {\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n });\n\n return this.overlay.create(config);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n booleanAttribute,\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ChevronDown20, SidebarExpand24 } from '@mozaic-ds/icons-angular';\nimport { MozSidebarItem } from './model/sidebar.model';\n\n@Component({\n selector: 'moz-sidebar',\n imports: [NgComponentOutlet, SidebarExpand24, ChevronDown20],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './sidebar.html',\n styleUrls: ['./sidebar.scss'],\n})\nexport class MozSidebarComponent {\n readonly expanded = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly items = input<MozSidebarItem[]>([]);\n readonly title = input<string>('ADEO Design System');\n readonly logoSrc = input<string | null>('/images/logo.svg');\n readonly logoAlt = input<string>('logo');\n\n readonly showFooter = input<boolean, unknown>(true, { transform: booleanAttribute });\n readonly showProfile = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n readonly profileName = input<string | null>('Dieter Rams');\n readonly profileTitle = input<string | null>('Industrial designer');\n readonly profileAvatarSrc = input<string | null>('/images/Avatar.png');\n\n readonly expandedChange = output<boolean>();\n readonly itemClick = output<{ itemId: string; subItemId: string | null }>();\n\n readonly hostClasses = computed(() =>\n ['sidebar', this.expanded() ? '' : 'sidebar--collapsed'].filter(Boolean).join(' ')\n );\n\n readonly expandButtonAriaLabel = computed(() => (this.expanded() ? 'Collapse' : 'Expand'));\n\n shouldOpen = (i: MozSidebarItem) => !!i.open || !!i.children?.some((c) => c.selected);\n\n toggleExpanded() {\n this.expandedChange.emit(!this.expanded());\n }\n\n onItemClick(itemId: string, subItemId: string | null, ev: Event) {\n this.itemClick.emit({ itemId, subItemId });\n if ((ev.currentTarget as HTMLAnchorElement)?.getAttribute('href') === '#') ev.preventDefault();\n }\n\n toggleOpen(item: MozSidebarItem) {\n item.open = !item.open;\n }\n}\n","<aside [class]=\"hostClasses()\">\n <header class=\"sidebar__header\">\n @if (logoSrc()) {\n <img class=\"sidebar__header-logo\" [src]=\"logoSrc()!\" [alt]=\"logoAlt()\" />\n } @if (title()) {\n <p class=\"sidebar__header-title\">{{ title() }}</p>\n }\n </header>\n\n <section class=\"sidebar__container\">\n <nav class=\"sidebar__menu\" role=\"navigation\">\n <ul class=\"sidebar__list\">\n @for (item of items(); track item.id) {\n <li class=\"sidebar__item\">\n @if (expanded() && !!item.children?.length) {\n <details\n class=\"sidebar__link-expand\"\n (click)=\"toggleOpen(item)\"\n [attr.open]=\"item.open || null\"\n >\n <summary class=\"sidebar__link\" (click)=\"$event.preventDefault()\">\n @if (item.icon) {\n <span class=\"sidebar__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n <span class=\"sidebar__text\">{{ item.label }}</span>\n <span aria-hidden=\"true\" class=\"sidebar__sub\">\n <ChevronDown20 />\n </span>\n </summary>\n\n <ul class=\"sidebar__sublist\">\n @for (sub of item.children!; track sub.id) {\n <li class=\"sidebar__item\">\n <a\n class=\"sidebar__sublink\"\n [class.sidebar__sublink--selected]=\"!!sub.selected\"\n [attr.href]=\"sub.href || '#'\"\n (click)=\"onItemClick(item.id, sub.id, $event)\"\n >\n <span class=\"sidebar__text\">{{ sub.label }}</span>\n </a>\n </li>\n }\n </ul>\n </details>\n } @else {\n <a\n class=\"sidebar__link\"\n [class.sidebar__link--selected]=\"!!item.selected\"\n [attr.title]=\"item.label\"\n [attr.href]=\"item.href || '#'\"\n (click)=\"onItemClick(item.id, null, $event)\"\n >\n @if (item.icon) {\n <span class=\"sidebar__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n <span class=\"sidebar__text\">{{ item.label }}</span>\n </a>\n }\n </li>\n }\n </ul>\n </nav>\n </section>\n\n @if (showFooter()) {\n <footer class=\"sidebar__footer\">\n <div class=\"divider-horizontal\"></div>\n <div class=\"sidebar__footer-container\">\n @if (showProfile() && (profileName() || profileTitle() || profileAvatarSrc())) {\n <a href=\"#\" class=\"sidebar__footer-profile\" (click)=\"$event.preventDefault()\">\n @if (profileAvatarSrc()) {\n <img\n class=\"sidebar__footer-avatar\"\n [src]=\"profileAvatarSrc()!\"\n [alt]=\"profileName() || 'User'\"\n loading=\"lazy\"\n />\n }\n <div class=\"sidebar__footer-content\">\n @if (profileName()) {\n <p class=\"sidebar__footer-identity\">\n {{ profileName() }}\n </p>\n } @if (profileTitle()) {\n <p class=\"sidebar__footer-title\">{{ profileTitle() }}</p>\n }\n </div>\n </a>\n }\n <button\n class=\"sidebar__footer-expand button button--ghost\"\n type=\"button\"\n [attr.aria-label]=\"expandButtonAriaLabel()\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggleExpanded()\"\n >\n <SidebarExpand24 class=\"button__icon\" />\n </button>\n </div>\n </footer>\n }\n</aside>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n model,\n computed,\n booleanAttribute,\n viewChildren,\n} from '@angular/core';\nimport { MozSegmentedItem, MozSegmentedControlSize } from './model/segmented-control.model';\n\n@Component({\n selector: 'moz-segmented-control',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './segmented-control.html',\n styleUrls: ['./segmented-control.scss'],\n})\nexport class MozSegmentedControlComponent {\n readonly items = input<MozSegmentedItem[]>([]);\n\n readonly size = input<MozSegmentedControlSize>('s');\n readonly full = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('Segmented control');\n\n readonly selectedIndex = model<number>(0);\n readonly change = output<{ index: number; value: string | number }>();\n\n readonly classes = computed(() => ({\n 'segmented-control': true,\n 'segmented-control--disabled': this.disabled(),\n 'segmented-control--m': this.size() === 'm',\n 'segmented-control--full': this.full(),\n }));\n\n readonly segmentClasses = (index: number) =>\n computed(() => ({\n 'segmented-control__segment--disabled': this.disabled() || !!this.items()[index]?.disabled,\n 'segmented-control__segment': true,\n 'segmented-control__segment--selected': index === this.selectedIndex(),\n }));\n\n private readonly buttons = viewChildren<ElementRef<HTMLButtonElement>>('segBtn');\n\n onSelect(index: number) {\n if (this.disabled() || this.items()[index]?.disabled) {\n return;\n }\n\n const item = this.items()[index];\n this.selectedIndex.set(index);\n this.change.emit({ index, value: item.value });\n queueMicrotask(() => this.focusIndex(index));\n }\n\n private focusIndex(index: number) {\n const btns = this.buttons();\n const btn = btns[index]?.nativeElement;\n btn?.focus();\n }\n}\n","<div [class]=\"classes()\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of items(); track item.value; let i = $index) {\n <button\n #segBtn\n type=\"button\"\n [class]=\"segmentClasses(i)()\"\n role=\"tab\"\n [attr.aria-selected]=\"i === selectedIndex()\"\n [attr.aria-disabled]=\"disabled() || !!item.disabled\"\n [attr.tabindex]=\"i === selectedIndex() ? 0 : -1\"\n [disabled]=\"disabled() || !!item.disabled\"\n (click)=\"onSelect(i)\"\n >\n {{ item.label }}\n </button>\n }\n</div>\n","import { Component, viewChild, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'moz-accordion-header',\n templateUrl: './accordion-header.html',\n styleUrls: ['./accordion-header.scss'],\n})\nexport class MozAccordionHeaderComponent {\n readonly tpl = viewChild('tpl', { read: TemplateRef });\n}\n","<ng-template #tpl>\n <div class=\"accordion__title-wrapper\">\n <span class=\"accordion__title-text\" #titleWrapper>\n <ng-content select=\"[title]\"></ng-content>\n </span>\n <span class=\"accordion__subtitle\" #subtitleWrapper>\n <ng-content select=\"[subtitle]\"></ng-content>\n </span>\n </div>\n</ng-template>\n","import { Component, TemplateRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'moz-accordion-content',\n templateUrl: './accordion-content.html',\n})\nexport class MozAccordionContentComponent {\n readonly tpl = viewChild('tpl', { read: TemplateRef });\n}\n","<ng-template #tpl><ng-content></ng-content></ng-template>\n","import { Component, Type, contentChild, linkedSignal } from '@angular/core';\nimport { input } from '@angular/core';\nimport { MozAccordionHeaderComponent } from '../header/accordion-header';\nimport { MozAccordionContentComponent } from '../content/accordion-content';\n\n@Component({\n selector: 'moz-accordion-panel',\n template: ``,\n})\nexport class MozAccordionPanelComponent {\n readonly icon = input<Type<unknown> | null>(null);\n readonly open = input(false);\n readonly state = linkedSignal(() => this.open());\n\n readonly header = contentChild(MozAccordionHeaderComponent);\n readonly content = contentChild(MozAccordionContentComponent);\n}\n","import { Component, ChangeDetectionStrategy, contentChildren, computed } from '@angular/core';\nimport { input } from '@angular/core';\nimport { NgTemplateOutlet, NgComponentOutlet } from '@angular/common';\nimport { MozAccordionPanelComponent } from './components/panel/accordion-panel';\n\n/**\n * Accordion component for organizing content in collapsible sections.\n *\n * @description\n * The accordion component allows users to show and hide sections of content.\n * Each section consists of a header and content area that can be expanded or collapsed.\n * Supports both custom and native HTML implementation.\n *\n * @example\n * ```html\n * <moz-accordion [ghost]=\"false\" [native]=\"false\">\n * <moz-accordion-panel [icon]=\"HomeIcon\" [open]=\"true\">\n * <moz-accordion-header>\n * <span title=\"\">Panel Title</span>\n * <span subtitle=\"\">Panel Subtitle</span>\n * </moz-accordion-header>\n * <moz-accordion-content>\n * <p>Panel content goes here</p>\n * </moz-accordion-content>\n * </moz-accordion-panel>\n * </moz-accordion>\n * ```\n */\n@Component({\n selector: 'moz-accordion',\n imports: [NgTemplateOutlet, NgComponentOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './accordion.html',\n styleUrls: ['./accordion.scss'],\n})\nexport class MozAccordionComponent {\n /**\n * Applies ghost styling to the accordion for a lighter visual appearance.\n * Useful for nested or secondary accordions.\n *\n * @default false\n */\n readonly ghost = input(false);\n\n /**\n * Uses native HTML `<details>` and `<summary>` elements instead of custom implementation.\n * Provides better accessibility and performance with browser-native behavior.\n *\n * @default false\n */\n readonly native = input(false);\n\n /**\n * Computed CSS classes based on component inputs.\n * Automatically updates when ghost input changes.\n *\n * @internal\n */\n readonly cssClasses = computed(() => ({\n 'accordion': true,\n 'accordion--ghost': this.ghost(),\n }));\n\n /**\n * Signal containing all accordion panels projected into this component.\n * Automatically synchronized with content children.\n *\n * @internal\n */\n readonly panels = contentChildren(MozAccordionPanelComponent);\n\n /**\n * Toggles the open/closed state of an accordion panel.\n *\n * @param p - The accordion panel to toggle\n */\n toggle(p: MozAccordionPanelComponent) {\n p.state.update((v: boolean) => !v);\n }\n\n /**\n * Handles the native toggle event for accordion panels using HTML details/summary.\n * Synchronizes the panel state with the native element's open state.\n *\n * @param ev - The native toggle event\n * @param p - The accordion panel being toggled\n */\n onNativeToggle(ev: Event, p: MozAccordionPanelComponent) {\n p.state.set((ev.currentTarget as HTMLDetailsElement).open);\n }\n}\n","<div [class]=\"cssClasses()\">\n @for (panel of panels(); track panel; let i = $index) { @if (!native()) {\n <div class=\"accordion__item\">\n <div class=\"accordion__header\">\n <h2 class=\"accordion__title\">\n <button\n class=\"accordion__trigger\"\n type=\"button\"\n [attr.id]=\"'accordion-' + (i + 1)\"\n data-mc-component=\"accordion\"\n [attr.aria-controls]=\"'content-' + (i + 1)\"\n [attr.aria-expanded]=\"panel.state()\"\n (click)=\"toggle(panel)\"\n >\n @if (panel.icon()) {\n <span class=\"accordion__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"panel.icon()\"></ng-container>\n </span>\n } @if (panel.header()) {\n <ng-container [ngTemplateOutlet]=\"panel.header()?.tpl()\"></ng-container>\n }\n </button>\n </h2>\n </div>\n\n <div\n class=\"accordion__content\"\n [class.accordion__content--open]=\"panel.state()\"\n [attr.id]=\"'content-' + (i + 1)\"\n [attr.aria-labelledby]=\"'accordion-' + (i + 1)\"\n [attr.aria-hidden]=\"!panel.state()\"\n >\n @if (panel.content()) {\n <ng-container [ngTemplateOutlet]=\"panel.content()?.tpl()\"></ng-container>\n }\n </div>\n </div>\n } @else {\n <details\n class=\"accordion__item\"\n [attr.open]=\"panel.state() ? '' : null\"\n (toggle)=\"onNativeToggle($event, panel)\"\n >\n <summary class=\"accordion__header\">\n <span class=\"accordion__title\">\n <span class=\"accordion__trigger\">\n @if (panel.icon()) {\n <span class=\"accordion__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"panel.icon()\"></ng-container>\n </span>\n } @if (panel.header()) {\n <ng-container [ngTemplateOutlet]=\"panel.header()?.tpl()\"></ng-container>\n }\n </span>\n </span>\n </summary>\n <div class=\"accordion__content\" [class.accordion__content--open]=\"panel.state()\" [attr.aria-hidden]=\"!panel.state()\">\n @if (panel.content()) {\n <ng-container [ngTemplateOutlet]=\"panel.content()?.tpl()\"></ng-container>\n }\n </div>\n </details>\n } }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MozDividerComponent } from '../divider';\n\n@Component({\n selector: 'moz-action-bottom-bar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './action-bottom-bar.html',\n styleUrls: ['./action-bottom-bar.scss'],\n imports: [MozDividerComponent],\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozActionBottomBarComponent {\n readonly boxShadow = input<boolean>(false);\n\n readonly classes = computed(() => ({\n 'mc-action-bottom-bar': true,\n 'mc-action-bottom-bar--shadow': this.boxShadow(),\n }));\n}\n","<div [class]=\"classes()\">\n <moz-divider\n class=\"mc-action-bottom-bar__divider\"\n orientation=\"horizontal\"\n size=\"s\"\n ></moz-divider>\n <div class=\"mc-action-bottom-bar__left\">\n <ng-content select=\"[left]\"></ng-content>\n </div>\n\n <div class=\"mc-action-bottom-bar__right\">\n <ng-content select=\"[right]\"></ng-content>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, computed, output } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { Cross24 } from '@mozaic-ds/icons-angular';\nimport { MozActionListItem } from './model/action-listbox.model';\n\n/**\n * An action list is a contextual menu that presents a list of available actions related to a specific element or interface area.\n * It allows users to quickly access functions such as editing, sharing, deleting, or navigating to sub-actions.\n * Action Lists are commonly triggered by buttons, icons (e.g., three-dot menus), or right-click interactions, ensuring a clean and efficient UI.\n */\n@Component({\n selector: 'moz-action-listbox',\n templateUrl: './action-listbox.html',\n styleUrls: ['./action-listbox.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgComponentOutlet, Cross24],\n})\nexport class MozActionListboxComponent {\n /**\n * Title displayed in mobile version.\n */\n readonly title = input<string>();\n\n /**\n * An array of objects that allows you to provide all the data needed to generate the content for each item.\n */\n readonly items = input.required<MozActionListItem[]>();\n\n /**\n * Emitted when an item is clicked.\n */\n readonly itemClick = output<MozActionListItem>();\n\n /**\n * Computed signal that maps items to their CSS classes.\n */\n readonly itemsWithClasses = computed(() =>\n this.items().map((item) => ({\n item,\n classes: {\n 'action-list__element': true,\n 'action-list__element--danger': item.appearance === 'danger',\n 'action-list__element--disabled': item.disabled === true,\n },\n }))\n );\n}\n","<div class=\"listbox\">\n <div class=\"listbox__content\">\n <div class=\"listbox__header\">\n @if (title()) {\n <h3 class=\"listbox__title\">{{ title() }}</h3>\n }\n <button\n class=\"listbox__close button button--icon-button button--ghost\"\n type=\"button\"\n aria-label=\"Close\"\n >\n <Cross24 icon />\n </button>\n </div>\n <div class=\"listbox__body\">\n <ul class=\"action-list\" role=\"menu\">\n @for (itemWithClasses of itemsWithClasses(); track $index) { @if\n (itemWithClasses.item.divider) {\n <li class=\"divider-horizontal action-list__divider\"></li>\n }\n <li [class]=\"itemWithClasses.classes\" role=\"menuitem\" [attr.id]=\"itemWithClasses.item.id\">\n <button\n type=\"button\"\n class=\"action-list__button\"\n [disabled]=\"itemWithClasses.item.disabled\"\n (click)=\"!itemWithClasses.item.disabled && itemClick.emit(itemWithClasses.item)\"\n >\n @if (itemWithClasses.item.icon) {\n <div class=\"action-list__icon\">\n <ng-container [ngComponentOutlet]=\"itemWithClasses.item.icon\"> </ng-container>\n </div>\n }\n <p class=\"action-list__text\">\n {{ itemWithClasses.item.label }}\n </p>\n </button>\n </li>\n }\n </ul>\n </div>\n </div>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject, Observable } from 'rxjs';\nimport { MozActionListItem } from '../model/action-listbox.model';\n\nexport class ActionListboxRef {\n private readonly afterClosed$ = new Subject<void>();\n private readonly itemClicked$ = new Subject<MozActionListItem>();\n\n constructor(private readonly overlayRef: OverlayRef) {\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this.overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n this.close();\n }\n });\n\n // Fermeture par scrollStrategy ou autre détachement externe\n this.overlayRef.detachments().subscribe(() => {\n this.afterClosed$.next();\n this.afterClosed$.complete();\n });\n }\n\n close(): void {\n this.overlayRef.dispose();\n this.afterClosed$.next();\n this.afterClosed$.complete();\n }\n\n selectItem(item: MozActionListItem): void {\n this.itemClicked$.next(item);\n this.close();\n }\n\n afterClosed(): Observable<void> {\n return this.afterClosed$.asObservable();\n }\n\n onItemClick(): Observable<MozActionListItem> {\n return this.itemClicked$.asObservable();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { MozActionListItem } from '../model/action-listbox.model';\n\nexport type ActionListboxPosition = 'below' | 'above' | 'before' | 'after';\n\nexport interface ActionListboxConfig {\n items: MozActionListItem[];\n title?: string;\n position?: ActionListboxPosition;\n hasBackdrop?: boolean;\n}\n\nexport const ACTION_LISTBOX_CONFIG = new InjectionToken<ActionListboxConfig>(\n 'ACTION_LISTBOX_CONFIG'\n);\n\nexport const DEFAULT_ACTION_LISTBOX_CONFIG: Omit<Partial<ActionListboxConfig>, 'items'> = {\n position: 'below',\n hasBackdrop: true,\n};\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MozActionListboxComponent } from '../action-listbox';\nimport { ActionListboxRef } from '../ref/action-listbox-ref';\nimport { ActionListboxConfig, ACTION_LISTBOX_CONFIG } from '../config/action-listbox.config';\nimport { MozActionListItem } from '../model/action-listbox.model';\n\n@Component({\n selector: 'moz-action-listbox-container',\n imports: [MozActionListboxComponent],\n templateUrl: './action-listbox-container.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActionListboxContainerComponent {\n readonly config = inject<ActionListboxConfig>(ACTION_LISTBOX_CONFIG);\n private readonly listboxRef = inject(ActionListboxRef);\n\n onItemClick(item: MozActionListItem): void {\n this.listboxRef.selectItem(item);\n }\n}\n","<moz-action-listbox\n [items]=\"config.items\"\n [title]=\"config.title\"\n (itemClick)=\"onItemClick($event)\"\n/>\n","import {\n Directive,\n ElementRef,\n Injector,\n inject,\n input,\n output,\n OnDestroy,\n HostListener,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { MozActionListItem } from '../model/action-listbox.model';\nimport { ActionListboxRef } from '../ref/action-listbox-ref';\nimport {\n ActionListboxConfig,\n ActionListboxPosition,\n ACTION_LISTBOX_CONFIG,\n DEFAULT_ACTION_LISTBOX_CONFIG,\n} from '../config/action-listbox.config';\nimport { ActionListboxContainerComponent } from '../container/action-listbox-container';\n\n@Directive({\n selector: '[mozActionListboxTrigger]',\n standalone: true,\n exportAs: 'mozActionListboxTrigger',\n})\nexport class MozActionListboxTriggerDirective implements OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly elementRef = inject(ElementRef);\n private readonly injector = inject(Injector);\n\n /** The list of items to display */\n readonly mozActionListboxTrigger = input.required<MozActionListItem[]>();\n\n /** Optional title for the listbox */\n readonly actionListboxTitle = input<string>();\n\n /** Position relative to the trigger element */\n readonly actionListboxPosition = input<ActionListboxPosition>('below');\n\n /** Emits the clicked item */\n readonly itemClick = output<MozActionListItem>();\n\n private listboxRef: ActionListboxRef | null = null;\n\n @HostListener('click')\n toggle(): void {\n if (this.listboxRef) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.listboxRef) {\n return;\n }\n\n const config: ActionListboxConfig = {\n ...DEFAULT_ACTION_LISTBOX_CONFIG,\n items: this.mozActionListboxTrigger(),\n title: this.actionListboxTitle(),\n position: this.actionListboxPosition(),\n };\n\n const overlayRef = this.createOverlay(config.position ?? 'below');\n const listboxRef = new ActionListboxRef(overlayRef);\n this.listboxRef = listboxRef;\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: ActionListboxRef, useValue: listboxRef },\n { provide: ACTION_LISTBOX_CONFIG, useValue: config },\n ],\n });\n\n const portal = new ComponentPortal(ActionListboxContainerComponent, null, injector);\n\n overlayRef.attach(portal);\n\n listboxRef.onItemClick().subscribe((item) => {\n this.itemClick.emit(item);\n });\n\n listboxRef.afterClosed().subscribe(() => {\n this.listboxRef = null;\n });\n }\n\n close(): void {\n this.listboxRef?.close();\n this.listboxRef = null;\n }\n\n ngOnDestroy(): void {\n this.close();\n }\n\n private createOverlay(position: ActionListboxPosition): OverlayRef {\n const positions = this.getPositions(position);\n\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(positions)\n .withPush(true)\n .withViewportMargin(8),\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n return this.overlay.create(config);\n }\n\n private getPositions(position: ActionListboxPosition): ConnectedPosition[] {\n const positionMap: Record<ActionListboxPosition, ConnectedPosition[]> = {\n below: [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\n ],\n above: [\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n ],\n before: [\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -4 },\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: 4 },\n ],\n after: [\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: 4 },\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -4 },\n ],\n };\n\n return positionMap[position];\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n computed,\n input,\n model,\n signal,\n viewChild,\n afterNextRender,\n} from '@angular/core';\nimport { ChevronLeft20, ChevronRight20 } from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\n\n@Component({\n selector: 'moz-carousel',\n imports: [ChevronLeft20, ChevronRight20, MozIconButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './carousel.html',\n styleUrls: ['./carousel.scss'],\n})\nexport class MozCarouselComponent implements OnDestroy {\n readonly ariaLabelledby = input<string | null>(null);\n readonly previousButtonAriaLabel = input('previous');\n readonly nextButtonAriaLabel = input('next');\n readonly index = model(0);\n\n private readonly contentEl = viewChild<ElementRef<HTMLElement>>('content');\n\n private metrics = signal({ left: 0, cw: 0, sw: 0 });\n private raf = 0;\n private cleanup: Array<() => void> = [];\n\n private eps = 1;\n\n readonly canPrev = computed(() => this.metrics().left > this.eps);\n readonly canNext = computed(() => {\n const { left, cw, sw } = this.metrics();\n return left + cw < sw - this.eps;\n });\n\n private updateLogicalIndexFromScroll() {\n const root = this.contentEl()?.nativeElement;\n if (!root) return;\n const children = Array.from(root.children) as HTMLElement[];\n if (!children.length) return;\n\n const center = this.metrics().left + this.metrics().cw / 2;\n let best = 0;\n let bestDist = Number.POSITIVE_INFINITY;\n children.forEach((el, i) => {\n const mid = el.offsetLeft + el.offsetWidth / 2;\n const d = Math.abs(mid - center);\n if (d < bestDist) {\n bestDist = d;\n best = i;\n }\n });\n if (best !== this.index()) this.index.set(best);\n }\n\n constructor() {\n afterNextRender(() => {\n const root = this.contentEl()?.nativeElement;\n if (!root) return;\n\n const update = () => {\n this.metrics.set({\n left: root.scrollLeft,\n cw: root.clientWidth,\n sw: root.scrollWidth,\n });\n this.updateLogicalIndexFromScroll();\n };\n\n update();\n\n const onScroll = () => {\n cancelAnimationFrame(this.raf);\n this.raf = requestAnimationFrame(update);\n };\n root.addEventListener('scroll', onScroll, { passive: true });\n\n const onResize = () => update();\n window.addEventListener('resize', onResize, { passive: true });\n\n this.cleanup.push(\n () => root.removeEventListener('scroll', onScroll),\n () => window.removeEventListener('resize', onResize),\n () => cancelAnimationFrame(this.raf)\n );\n });\n }\n\n ngOnDestroy(): void {\n this.cleanup.forEach((fn) => fn());\n }\n\n goPrevious(): void {\n const root = this.contentEl()?.nativeElement;\n if (!root) return;\n root.scrollBy({ left: -root.clientWidth, behavior: 'smooth' });\n }\n\n goNext(): void {\n const root = this.contentEl()?.nativeElement;\n if (!root) return;\n root.scrollBy({ left: root.clientWidth, behavior: 'smooth' });\n }\n}\n","<div\n class=\"mc-carousel\"\n role=\"group\"\n aria-roledescription=\"carousel\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n>\n <div class=\"mc-carousel__header\">\n <div class=\"mc-carousel__headings\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div class=\"mc-carousel__controls\">\n <moz-icon-button\n (activated)=\"goPrevious()\"\n [disabled]=\"!canPrev()\"\n [ariaLabel]=\"previousButtonAriaLabel()\"\n [size]=\"'s'\"\n [outlined]=\"true\"\n [id]=\"'carousel-previous-button'\"\n >\n <ChevronLeft20 icon aria-hidden=\"true\" />\n </moz-icon-button>\n\n <moz-icon-button\n (activated)=\"goNext()\"\n [disabled]=\"!canNext()\"\n [ariaLabel]=\"nextButtonAriaLabel()\"\n [size]=\"'s'\"\n [outlined]=\"true\"\n [id]=\"'carousel-next-button'\"\n >\n <ChevronRight20 icon aria-hidden=\"true\" />\n </moz-icon-button>\n </div>\n </div>\n\n <div class=\"mc-carousel__content\" #content>\n <ng-content></ng-content>\n </div>\n</div>\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, Signal, Type } from '@angular/core';\nimport {\n CheckCircleFilled24,\n ErrorFilled24,\n InfoCircleFilled24,\n WarningTriangleFilled24,\n} from '@mozaic-ds/icons-angular';\nimport { MozLoaderComponent } from '../loader/loader';\nimport { MozStatusMessageStatus } from './model/status-message.model';\n\n@Component({\n selector: 'moz-status-message',\n imports: [NgComponentOutlet, MozLoaderComponent],\n templateUrl: './status-message.html',\n styleUrls: ['./status-message.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozStatusMessageComponent {\n readonly status = input<MozStatusMessageStatus>('info');\n readonly description = input<string | null>(null);\n readonly id = input<string>('status-message');\n\n readonly classes = computed(() => ({\n 'mc-status-message': true,\n [`mc-status-message--${this.status()}`]: this.status(),\n }));\n\n readonly iconComponent: Signal<Type<unknown>> = computed(() => {\n switch (this.status()) {\n case 'success':\n return CheckCircleFilled24;\n case 'warning':\n return WarningTriangleFilled24;\n case 'error':\n return ErrorFilled24;\n case 'neutral':\n case 'inprogress':\n default:\n return InfoCircleFilled24;\n }\n });\n}\n","<div [class]=\"classes()\" [id]=\"id()\">\n @if (status() === 'inprogress') {\n <moz-loader size=\"s\"></moz-loader>\n } @else {\n <div class=\"mc-status-message__icon\">\n <ng-container [ngComponentOutlet]=\"iconComponent()\"></ng-container>\n </div>\n }\n\n <p class=\"mc-status-message__description\">\n @if (description()) {\n {{ description() }}\n }\n </p>\n</div>\n","import { ChangeDetectionStrategy, Component, Type, computed, input } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ArrowBottomRight24, ArrowTopRight24, Less24 } from '@mozaic-ds/icons-angular';\nimport { MozKpiTrend, MozKpiStatus, MozKpiSize } from './model/kpi.model';\n\n@Component({\n selector: 'moz-kpi',\n imports: [NgComponentOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './kpi.html',\n styleUrls: ['./kpi.scss'],\n})\nexport class MozKpiComponent {\n /** The current value of the KPI item. */\n readonly value = input.required<string>();\n\n /** Defines the evolution of the KPI. */\n readonly trend = input<MozKpiTrend | null>(null);\n\n /** Label of the KPI item. */\n readonly label = input<string | null>(null);\n\n /** Allows to define the KPI item status. */\n readonly status = input<MozKpiStatus>('info');\n\n /** The evolution information defining the KPI. */\n readonly information = input<string | null>(null);\n\n /** Allows to define the KPI item size. */\n readonly size = input<MozKpiSize>('s');\n\n readonly isMedium = computed(() => this.size() === 'm');\n readonly isLarge = computed(() => this.size() === 'l');\n\n readonly rootClasses = computed(() => ({\n 'kpi': true,\n 'kpi--s': this.size() === 's',\n 'kpi--m': this.size() === 'm',\n 'kpi--l': this.size() === 'l',\n 'kpi--info': this.status() === 'info',\n 'kpi--warning': this.status() === 'warning',\n 'kpi--error': this.status() === 'error',\n 'kpi--success': this.status() === 'success',\n 'kpi--neutral': this.status() === 'neutral',\n }));\n\n private readonly iconMap: Record<MozKpiTrend, Type<unknown>> = {\n increasing: ArrowTopRight24,\n decreasing: ArrowBottomRight24,\n stable: Less24,\n };\n\n readonly IconComponent = computed<Type<unknown> | null>(() => {\n const t = this.trend();\n return t ? this.iconMap[t] : null;\n });\n}\n","<div [class]=\"rootClasses()\">\n @if (isMedium() && label()) {\n <span class=\"kpi__label\">\n {{ label() }}\n </span>\n }\n\n <div class=\"kpi__content\">\n <div class=\"kpi__main\">\n @if (isLarge() && label()) {\n <span class=\"kpi__label\">\n {{ label() }}\n </span>\n }\n\n <span class=\"kpi__value\">\n {{ value() }}\n </span>\n </div>\n\n @if (trend() || information()) {\n <div class=\"kpi__aside\">\n @if (isLarge() && information()) {\n <span class=\"kpi__detail\">\n {{ information() }}\n </span>\n } @if (IconComponent()) {\n <div class=\"button__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"IconComponent()\"></ng-container>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'moz-stepper-compact',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './stepper-compact.html',\n styleUrls: ['./stepper-compact.scss'],\n})\nexport class MozStepperCompactComponent {\n value = input.required<number>();\n maxSteps = input<number>(4);\n label = input<string>('');\n description = input<string>('');\n\n readonly hasLabel = computed(() => !!this.label() && this.label().trim().length > 0);\n\n readonly safeMaxSteps = computed(() => {\n const max = this.maxSteps();\n return max && max > 0 ? max : 4;\n });\n\n readonly progressPercentage = computed(() => {\n const max = this.safeMaxSteps();\n const current = this.value();\n const clamped = Math.max(0, Math.min(current, max));\n return (clamped / max) * 100;\n });\n}\n","<div class=\"mc-stepper-compact\">\n <div\n class=\"mc-circular-progressbar mc-stepper-compact__progress\"\n role=\"progressbar\"\n aria-label=\"Progress bar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"safeMaxSteps()\"\n [attr.aria-valuenow]=\"value()\"\n [style.--progress-value]=\"progressPercentage()\"\n >\n <svg\n class=\"mc-circular-progressbar__line\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n viewBox=\"0 0 100 100\"\n >\n <circle class=\"mc-circular-progressbar__track\" cx=\"50\" cy=\"50\" r=\"46\"></circle>\n <circle\n class=\"mc-circular-progressbar__indicator mc-stepper-compact__indicator\"\n cx=\"50\"\n cy=\"50\"\n r=\"46\"\n ></circle>\n </svg>\n <div class=\"mc-circular-progressbar__content\">\n <p class=\"mc-circular-progressbar__number mc-stepper-compact__number\">\n {{ value() }} / {{ safeMaxSteps() }}\n </p>\n </div>\n </div>\n\n @if (hasLabel()) {\n <div class=\"mc-stepper-compact__label-container\">\n <p class=\"mc-stepper-compact__label\">\n {{ label() }}\n </p>\n\n @if (description().trim().length) {\n <p class=\"mc-stepper-compact__description\">\n {{ description() }}\n </p>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Type,\n computed,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport {\n Star20,\n Star24,\n Star32,\n StarFilled20,\n StarFilled24,\n StarFilled32,\n StarHalf20,\n StarHalf24,\n StarHalf32,\n} from '@mozaic-ds/icons-angular';\nimport { MozStarRatingSize, MozStarRatingAppearance } from './model/star-rating.model';\n\n@Component({\n selector: 'moz-star-rating',\n imports: [NgComponentOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './star-rating.html',\n styleUrls: ['./star-rating.scss'],\n})\nexport class MozStarRatingComponent {\n /**\n * The current rating value of the component.\n * Used with two-way binding [(value)].\n * When the rating changes (via click or keyboard), the model is automatically updated.\n */\n readonly value = model<number>(0);\n\n /**\n * Determines whether the rating is interactive or read-only.\n * When true, all user interactions (click, hover, keyboard) are disabled.\n * Automatically set to true when `compact`, `href`, or `text` are provided.\n */\n readonly readonly = input<boolean>(true);\n\n /**\n * Enables a compact display mode that shows only one star instead of five.\n * Typically used for summaries or quick visual cues.\n * When enabled, the component automatically becomes read-only.\n */\n readonly compact = input<boolean>(false);\n\n /**\n * Defines the visual size of the star icons and the accompanying text.\n */\n readonly size = input<MozStarRatingSize>('s');\n\n /**\n * Specifies the color scheme of the stars.\n */\n readonly appearance = input<MozStarRatingAppearance>('accent');\n\n /**\n * Optional text displayed next to the star rating.\n * If provided, the component automatically becomes read-only.\n */\n readonly text = input<string | null>(null);\n\n /**\n * URL for the link (for external links).\n */\n readonly href = input<string | null>(null);\n\n /**\n * Where to open the link.\n */\n readonly target = input<string | null>(null);\n\n // -------- logique dérivée --------\n\n readonly maxValue = computed(() => (this.compact() ? 1 : 5));\n\n readonly isReadonly = computed(\n () =>\n this.readonly() ||\n this.compact() ||\n !!this.href() ||\n !!(this.text() && this.text()!.trim().length)\n );\n\n readonly hasInfoText = computed(() => !!(this.text() || this.href()));\n\n readonly ariaLabel = computed(() => `Note ${this.displayValue()} sur ${this.maxValue()}`);\n\n readonly stars = computed(() => Array.from({ length: this.maxValue() }, (_, i) => i));\n\n readonly classes = computed(() => ({\n 'star-rating': true,\n 'star-rating--link': !!this.href(),\n 'star-rating--slider': !this.isReadonly(),\n 'star-rating--s': this.size() === 's',\n 'star-rating--m': this.size() === 'm',\n 'star-rating--l': this.size() === 'l',\n 'star-rating--standard': this.appearance() === 'standard',\n 'star-rating--accent': this.appearance() === 'accent',\n }));\n\n // Icon maps for each size\n private readonly iconMaps = {\n s: {\n star: Star20,\n 'star-filled': StarFilled20,\n 'star-half': StarHalf20,\n },\n m: {\n star: Star24,\n 'star-filled': StarFilled24,\n 'star-half': StarHalf24,\n },\n l: {\n star: Star32,\n 'star-filled': StarFilled32,\n 'star-half': StarHalf32,\n },\n };\n\n // -------- gestion preview / hover & clavier --------\n\n private hoverValue = signal<number | null>(null);\n\n /**\n * valeur réellement utilisée pour afficher les étoiles :\n * - en readonly : toujours value()\n * - en interactif : hoverValue si non nul, sinon value()\n */\n readonly displayValue = computed(() => {\n if (this.isReadonly()) return this.value();\n return this.hoverValue() ?? this.value();\n });\n\n private clampValue(newValue: number): number {\n const max = this.maxValue();\n // dans le JS ils ne descendent jamais sous 1 via clavier\n return Math.min(max, Math.max(1, Math.floor(newValue)));\n }\n\n /** JS: onClick(index) -> setValue(index+1) + updateStarIcons */\n onStarClick(index: number): void {\n if (this.isReadonly()) return;\n const newValue = this.clampValue(index + 1);\n this.hoverValue.set(null);\n this.value.set(newValue);\n }\n\n /** JS: onHover(index) -> hoverValue=index+1 + updateStarIcons(hoverValue) */\n onStarMouseMove(index: number): void {\n if (this.isReadonly()) return;\n this.hoverValue.set(this.clampValue(index + 1));\n }\n\n /** JS: resetHoverValue() -> hoverValue=null + updateStarIcons(value) */\n clearHover(): void {\n if (this.isReadonly()) return;\n this.hoverValue.set(null);\n }\n\n /** JS: onKeydown (ArrowRight / ArrowLeft) */\n onWrapperKeydown(event: KeyboardEvent): void {\n if (this.isReadonly()) return;\n\n const key = event.key;\n const max = this.maxValue();\n let current = Math.floor(this.value() || 0);\n\n if (key === 'ArrowRight') {\n current = Math.min(max, current + 1);\n } else if (key === 'ArrowLeft') {\n current = Math.max(1, current - 1);\n } else {\n return;\n }\n\n this.hoverValue.set(null);\n this.value.set(current);\n event.preventDefault();\n }\n\n // -------- calcul du composant d'étoile (JS: getStarComponent) --------\n\n getStarComponent(index: number): Type<unknown> {\n const compact = this.compact();\n const isReadonly = this.isReadonly();\n const baseValue = this.displayValue();\n const size = this.size();\n const iconMap = this.iconMaps[size];\n\n if (compact || baseValue >= index + 1) {\n return iconMap['star-filled'];\n } else if (isReadonly && baseValue >= index + 0.5) {\n // half star uniquement en readonly comme en JS\n return iconMap['star-half'];\n } else {\n return iconMap['star'];\n }\n }\n}\n","@if (href()) {\n<a [class]=\"classes()\" [href]=\"href()!\" [attr.target]=\"target()\">\n <div\n class=\"star-rating__wrapper\"\n [attr.tabindex]=\"isReadonly() ? -1 : 0\"\n [attr.role]=\"isReadonly() ? 'img' : 'slider'\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-readonly]=\"isReadonly() ? true : null\"\n [attr.aria-valuemin]=\"!isReadonly() ? 0 : null\"\n [attr.aria-valuemax]=\"!isReadonly() ? maxValue() : null\"\n [attr.aria-valuenow]=\"!isReadonly() ? value() : null\"\n (keydown)=\"isReadonly() ? null : onWrapperKeydown($event)\"\n (mouseleave)=\"isReadonly() ? null : clearHover()\"\n (blur)=\"isReadonly() ? null : clearHover()\"\n >\n @for (index of stars(); track index) {\n <span\n class=\"star-rating__icon\"\n (click)=\"isReadonly() ? null : onStarClick(index)\"\n (mousemove)=\"isReadonly() ? null : onStarMouseMove(index)\"\n >\n <ng-container [ngComponentOutlet]=\"getStarComponent(index)\"></ng-container>\n </span>\n }\n </div>\n\n @if (hasInfoText()) {\n <span class=\"star-rating__info\">\n {{ text() || href() }}\n </span>\n }\n</a>\n} @else {\n<div [class]=\"classes()\">\n <div\n class=\"star-rating__wrapper\"\n [attr.tabindex]=\"isReadonly() ? -1 : 0\"\n [attr.role]=\"isReadonly() ? 'img' : 'slider'\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-readonly]=\"isReadonly() ? true : null\"\n [attr.aria-valuemin]=\"!isReadonly() ? 0 : null\"\n [attr.aria-valuemax]=\"!isReadonly() ? maxValue() : null\"\n [attr.aria-valuenow]=\"!isReadonly() ? value() : null\"\n (keydown)=\"isReadonly() ? null : onWrapperKeydown($event)\"\n (mouseleave)=\"isReadonly() ? null : clearHover()\"\n (blur)=\"isReadonly() ? null : clearHover()\"\n >\n @for (index of stars(); track index) {\n <span\n class=\"star-rating__icon\"\n (click)=\"isReadonly() ? null : onStarClick(index)\"\n (mousemove)=\"isReadonly() ? null : onStarMouseMove(index)\"\n >\n <ng-container [ngComponentOutlet]=\"getStarComponent(index)\"></ng-container>\n </span>\n }\n </div>\n\n @if (hasInfoText()) {\n <span class=\"star-rating__info\">\n {{ text() || href() }}\n </span>\n }\n</div>\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ChevronRight20 } from '@mozaic-ds/icons-angular';\nimport { MozBuiltInMenuItem } from './model/built-in-menu.model';\n\n/**\n * A built-in menu is a structured list of navigational or interactive options,\n * typically displayed as a vertical stack.\n */\n@Component({\n selector: 'moz-built-in-menu',\n templateUrl: './built-in-menu.html',\n styleUrls: ['./built-in-menu.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgComponentOutlet, ChevronRight20, RouterLink],\n})\nexport class BuiltInMenuComponent {\n /**\n * Items displayed in the menu.\n */\n readonly items = input.required<MozBuiltInMenuItem[]>();\n\n /**\n * Index of the currently selected menu item.\n * Used with two-way binding: [(selectedIndex)].\n */\n readonly selectedIndex = model<number | null>(null);\n\n /**\n * When enabled, adds a visible border around the wrapper.\n */\n readonly outlined = input(false);\n\n /**\n * Accessible label for the navigation.\n */\n readonly ariaLabel = input<string>('menu');\n\n readonly hostClasses = computed(() =>\n ['mc-built-in-menu', this.outlined() ? 'mc-built-in-menu--outlined' : '']\n .filter(Boolean)\n .join(' ')\n );\n\n isSelected(index: number): boolean {\n return this.selectedIndex() === index;\n }\n\n onItemClick(index: number, event: Event): void {\n if (this.selectedIndex() !== index) {\n this.selectedIndex.set(index);\n }\n\n const target = event.currentTarget as HTMLAnchorElement | HTMLButtonElement | null;\n if (target && target instanceof HTMLAnchorElement && target.getAttribute('href') === '#') {\n event.preventDefault();\n }\n }\n}\n","<nav [class]=\"hostClasses()\" role=\"navigation\" [attr.aria-label]=\"ariaLabel()\">\n <ul class=\"mc-built-in-menu__list\">\n @for (item of items(); let index = $index; track index) {\n <li\n class=\"mc-built-in-menu__item\"\n [class.mc-built-in-menu__item--selected]=\"isSelected(index)\"\n [attr.aria-current]=\"isSelected(index) ? 'true' : null\"\n >\n @if (item.href) {\n <a\n class=\"mc-built-in-menu__link\"\n [attr.href]=\"item.href\"\n [attr.target]=\"item.target || '_self'\"\n (click)=\"onItemClick(index, $event)\"\n >\n @if (item.icon) {\n <span class=\"mc-built-in-menu__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n\n <span class=\"mc-built-in-menu__label\">{{ item.label }}</span>\n\n <ChevronRight20 class=\"mc-built-in-menu__icon\" />\n </a>\n } @else if (item.routerLink) {\n <a\n class=\"mc-built-in-menu__link\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target || '_self'\"\n (click)=\"onItemClick(index, $event)\"\n >\n @if (item.icon) {\n <span class=\"mc-built-in-menu__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n\n <span class=\"mc-built-in-menu__label\">{{ item.label }}</span>\n\n <ChevronRight20 class=\"mc-built-in-menu__icon\" />\n </a>\n } @else {\n <button type=\"button\" class=\"mc-built-in-menu__button\" (click)=\"onItemClick(index, $event)\">\n @if (item.icon) {\n <span class=\"mc-built-in-menu__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n\n <span class=\"mc-built-in-menu__label\">{{ item.label }}</span>\n\n <ChevronRight20 class=\"mc-built-in-menu__icon\" />\n </button>\n }\n </li>\n }\n </ul>\n</nav>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { BuiltInMenuComponent } from '../built-in-menu/built-in-menu';\nimport { CheckCircleFilled24 } from '@mozaic-ds/icons-angular';\nimport { MozBuiltInMenuItem } from '../built-in-menu/model/built-in-menu.model';\nimport { MozCheckListMenuItem } from './model/check-list-menu.model';\n\n@Component({\n selector: 'moz-check-list-menu',\n templateUrl: './check-list-menu.html',\n styleUrls: ['./check-list-menu.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [BuiltInMenuComponent],\n})\nexport class MozCheckListMenuComponent {\n /**\n * Defines the menu items, each of which sets a checked state and can act as a button or link.\n */\n readonly items = input<MozCheckListMenuItem[]>([]);\n\n /**\n * When enabled, adds a visible border around the wrapper.\n */\n readonly outlined = input(false);\n\n /**\n * Currently selected item index (two-way bindable with [(selectedIndex)]).\n */\n readonly selectedIndex = model<number | null>(null);\n\n /**\n * Internal mapping to BuiltInMenuItem with an icon for checked items.\n */\n readonly menuItems = computed<MozBuiltInMenuItem[]>(() =>\n this.items().map((item) => ({\n ...item,\n icon: item.checked ? CheckCircleFilled24 : undefined,\n }))\n );\n}\n","<moz-built-in-menu\n [items]=\"menuItems()\"\n [outlined]=\"outlined()\"\n [selectedIndex]=\"selectedIndex()\"\n (selectedIndexChange)=\"selectedIndex.set($event)\"\n></moz-built-in-menu>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Check20, ChevronRight20 } from '@mozaic-ds/icons-angular';\nimport { MozStepperInlineStep } from './model/stepper-inline.model';\n\n@Component({\n selector: 'moz-stepper-inline',\n templateUrl: './stepper-inline.html',\n styleUrls: ['./stepper-inline.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Check20, ChevronRight20],\n})\nexport class MozStepperInlineComponent {\n /**\n * Current step of the stepper inline (1-based index).\n */\n readonly currentStep = input<number>(1);\n\n /**\n * Steps of the stepper inline.\n */\n readonly steps = input<MozStepperInlineStep[]>([]);\n\n /**\n * Clamped current step between 1 and steps.length.\n */\n readonly safeStep = computed(() => {\n const steps = this.steps();\n const max = steps.length || 1;\n const raw = this.currentStep();\n return Math.min(Math.max(raw, 1), max);\n });\n\n /**\n * Derived state for each step: completed / current.\n */\n readonly stepStates = computed(() =>\n this.steps().map((_, i) => ({\n completed: i + 1 < this.safeStep(),\n current: i + 1 === this.safeStep(),\n }))\n );\n}\n","<nav class=\"mc-stepper-inline\" aria-label=\"Stepper\">\n <ol class=\"mc-stepper-inline__container\">\n @for (step of steps(); let i = $index; track i) {\n <li\n class=\"mc-stepper-inline__item\"\n [class.is-completed]=\"stepStates()[i].completed\"\n [attr.tabindex]=\"stepStates()[i].completed ? 0 : null\"\n >\n @if (stepStates()[i].completed) {\n <Check20 class=\"mc-stepper-inline__icon mc-stepper-inline__icon--check\" aria-hidden=\"true\" />\n } @else {\n <span class=\"mc-stepper-inline__circle\" [class.is-current]=\"stepStates()[i].current\">\n {{ i + 1 }}\n </span>\n }\n\n <div class=\"mc-stepper-inline__content\">\n <span class=\"mc-stepper-inline__label\" [class.is-current]=\"stepStates()[i].current\">\n {{ step.label }}\n </span>\n @if (step.additionalInfo) {\n <span class=\"mc-stepper-inline__additional\">\n {{ step.additionalInfo }}\n </span>\n }\n </div>\n\n @if (i < steps().length - 1) {\n <ChevronRight20 class=\"mc-stepper-inline__icon mc-stepper-inline__icon--chevron\" />\n }\n </li>\n }\n </ol>\n</nav>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Check24 } from '@mozaic-ds/icons-angular';\nimport { MozStepperStackedStep } from './model/stepper-stacked.model';\n\nlet _nextId = 0;\n\n@Component({\n selector: 'moz-stepper-stacked',\n templateUrl: './stepper-stacked.html',\n styleUrls: ['./stepper-stacked.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Check24],\n})\nexport class MozStepperStackedComponent {\n /**\n * Optional prefix used to build auto-generated step IDs when a step\n * doesn't provide its own `id`. Defaults to a unique `moz-stepper-N`.\n * Override this when multiple steppers share the same page so their\n * auto-generated IDs don't collide.\n */\n readonly componentId = input<string>(`moz-stepper-${++_nextId}`);\n\n /**\n * Current step of the stepper stacked (1-based index).\n */\n readonly currentStep = input<number>(1);\n\n /**\n * Steps of the stepper stacked.\n */\n readonly steps = input<MozStepperStackedStep[]>([]);\n\n /**\n * Clamped current step between 1 and steps.length.\n */\n readonly safeStep = computed(() => {\n const steps = this.steps();\n const max = steps.length || 1;\n const raw = this.currentStep();\n return Math.min(Math.max(raw, 1), max);\n });\n\n /**\n * Whether all steps are completed (currentStep exceeds the number of steps).\n */\n readonly allCompleted = computed(() => this.currentStep() > this.steps().length);\n\n /**\n * Derived state for each step: completed / current.\n */\n readonly stepStates = computed(() =>\n this.steps().map((_, i) => ({\n completed: i + 1 < this.safeStep() || this.allCompleted(),\n current: i + 1 === this.safeStep() && !this.allCompleted(),\n }))\n );\n\n /**\n * Returns the resolved ID for the step at index `i`: the explicit\n * `step.id` if provided, otherwise an auto-generated stable value.\n */\n stepId(step: MozStepperStackedStep, i: number): string {\n return step.id ?? `${this.componentId()}-step-${i}`;\n }\n}\n","<nav [id]=\"componentId()\" class=\"mc-stepper-stacked\" aria-label=\"Stepper\">\n <ol [id]=\"componentId() + '-list'\" class=\"mc-stepper-stacked__container\">\n @for (step of steps(); let i = $index; track i) {\n <li\n class=\"mc-stepper-stacked__item\"\n [id]=\"stepId(step, i)\"\n [class.is-current]=\"stepStates()[i].current\"\n [class.has-additional]=\"!!step.additionalInfo\"\n >\n <div [id]=\"componentId() + '-step-' + i + '-indicator'\" class=\"mc-stepper-stacked__indicator\">\n @if (stepStates()[i].completed) {\n <Check24\n class=\"mc-stepper-stacked__icon mc-stepper-stacked__icon--check\"\n aria-hidden=\"true\"\n />\n } @else {\n <span\n [id]=\"componentId() + '-step-' + i + '-circle'\"\n class=\"mc-stepper-stacked__circle\"\n [class.is-current]=\"stepStates()[i].current\"\n >\n {{ i + 1 }}\n </span>\n }\n </div>\n <div [id]=\"componentId() + '-step-' + i + '-content'\" class=\"mc-stepper-stacked__content\">\n <span\n [id]=\"componentId() + '-step-' + i + '-label'\"\n class=\"mc-stepper-stacked__label\"\n [class.is-current]=\"stepStates()[i].current\"\n >\n {{ step.label }}\n </span>\n @if (step.additionalInfo) {\n <span\n [id]=\"componentId() + '-step-' + i + '-additional'\"\n class=\"mc-stepper-stacked__additional\"\n >\n {{ step.additionalInfo }}\n </span>\n }\n </div>\n </li>\n }\n </ol>\n</nav>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { ArrowBack24, ArrowNext24 } from '@mozaic-ds/icons-angular';\n\n/**\n * Step position in the stepper workflow.\n */\nexport type MozStepperBottomBarStep = 'start' | 'middle' | 'end';\n\n/**\n * Stepper Bottom Bar component for navigation in multi-step processes.\n *\n * @description\n * The stepper bottom bar provides navigation controls for multi-step workflows,\n * with cancel, previous, next, and validate buttons that adapt based on the current step.\n */\n@Component({\n selector: 'moz-stepper-bottom-bar',\n templateUrl: './stepper-bottom-bar.html',\n styleUrls: ['./stepper-bottom-bar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ArrowBack24, ArrowNext24],\n})\nexport class MozStepperBottomBarComponent {\n /**\n * Base ID for the stepper component.\n */\n id = input<string>('stepper-bottom-bar');\n\n /**\n * Step of the process.\n */\n step = input<MozStepperBottomBarStep>('start');\n\n /**\n * If `true`, display the cancel button.\n */\n hasCancel = input<boolean>(true);\n\n /**\n * Text for the cancel button.\n */\n cancelText = input<string>('Cancel');\n\n /**\n * Text for the previous button.\n */\n previousText = input<string>('Previous');\n\n /**\n * Text for the next button.\n */\n nextText = input<string>('Next');\n\n /**\n * Text for the validate button.\n */\n validateText = input<string>('Validate');\n\n /**\n * If `true`, disable the next button.\n */\n disabledNext = input<boolean>(false);\n\n /**\n * Event emitted when cancel button is clicked.\n */\n cancel = output<void>();\n\n /**\n * Event emitted when previous button is clicked.\n */\n previous = output<void>();\n\n /**\n * Event emitted when next button is clicked.\n */\n next = output<void>();\n\n /**\n * Event emitted when validate button is clicked.\n */\n validate = output<void>();\n\n handleCancel() {\n this.cancel.emit();\n }\n\n handlePrevious() {\n this.previous.emit();\n }\n\n handleNext() {\n this.next.emit();\n }\n\n handleValidate() {\n this.validate.emit();\n }\n\n /**\n * Computed IDs for buttons\n */\n cancelButtonId = computed(() => `${this.id()}-cancel`);\n cancelButtonIconId = computed(() => `${this.id()}-cancel-icon`);\n previousButtonId = computed(() => `${this.id()}-previous`);\n previousButtonIconId = computed(() => `${this.id()}-previous-icon`);\n nextButtonId = computed(() => `${this.id()}-next`);\n nextButtonIconId = computed(() => `${this.id()}-next-icon`);\n validateButtonId = computed(() => `${this.id()}-validate`);\n validateButtonIconId = computed(() => `${this.id()}-validate-icon`);\n}\n","<div class=\"stepper-bottom-bar\">\n <div class=\"divider-horizontal stepper-bottom-bar__divider\"></div>\n <div class=\"stepper-bottom-bar__left\">\n @if (hasCancel()) {\n <button\n type=\"button\"\n class=\"button button--ghost button--s stepper-bottom-bar__button--text\"\n [id]=\"cancelButtonId()\"\n (click)=\"handleCancel()\"\n >\n {{ cancelText() }}\n </button>\n\n <button\n type=\"button\"\n class=\"button button--ghost button--icon stepper-bottom-bar__button--icon\"\n [id]=\"cancelButtonIconId()\"\n [attr.aria-label]=\"cancelText()\"\n (click)=\"handleCancel()\"\n >\n {{ cancelText() }}\n </button>\n }\n <ng-content [select]=\"'custom-content-left'\"></ng-content>\n </div>\n\n <div class=\"stepper-bottom-bar__right\">\n <ng-content [select]=\"'custom-content-right'\"></ng-content>\n @if (step() !== 'start') {\n <button\n type=\"button\"\n class=\"button button--outlined button--s stepper-bottom-bar__button--text\"\n [id]=\"previousButtonId()\"\n (click)=\"handlePrevious()\"\n >\n {{ previousText() }}\n </button>\n\n <button\n type=\"button\"\n class=\"button button--outlined button--icon stepper-bottom-bar__button--icon\"\n [id]=\"previousButtonIconId()\"\n [attr.aria-label]=\"previousText()\"\n (click)=\"handlePrevious()\"\n >\n <ArrowBack24 class=\"stepper-bottom-bar__icon\" />\n </button>\n } @if (step() !== 'end') {\n <button\n type=\"button\"\n class=\"button button--accent button--s stepper-bottom-bar__button--text\"\n [id]=\"nextButtonId()\"\n [disabled]=\"disabledNext()\"\n (click)=\"handleNext()\"\n >\n {{ nextText() }}\n </button>\n <button\n type=\"button\"\n class=\"button button--accent button--icon stepper-bottom-bar__button--icon\"\n [id]=\"nextButtonIconId()\"\n [attr.aria-label]=\"nextText()\"\n [disabled]=\"disabledNext()\"\n (click)=\"handleNext()\"\n >\n <ArrowNext24 class=\"stepper-bottom-bar__icon\" />\n </button>\n } @if (step() === 'end') {\n <button\n type=\"button\"\n class=\"button button--accent button--s stepper-bottom-bar__button--text\"\n [id]=\"validateButtonId()\"\n (click)=\"handleValidate()\"\n [disabled]=\"disabledNext()\"\n >\n {{ validateText() }}\n </button>\n <button\n type=\"button\"\n class=\"button button--accent button--icon stepper-bottom-bar__button--icon\"\n [id]=\"validateButtonIconId()\"\n [attr.aria-label]=\"validateText()\"\n [disabled]=\"disabledNext()\"\n (click)=\"handleValidate()\"\n >\n {{ validateText() }}\n </button>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport {\n ArrowBack24,\n HelpCircle20,\n Menu24,\n Notification20,\n Search20,\n} from '@mozaic-ds/icons-angular';\nimport { MozSelectComponent } from '../select/select';\nimport { MozStatusBadgeComponent } from '../status-badge/status-badge';\nimport { MozTagComponent } from '../tag/tag';\nimport { MozTabsComponent } from '../tabs/tabs';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { MozPageHeaderScope } from './model/page-header.model';\nimport { MozStatusBadgeStatus } from '../status-badge';\nimport { MozTabItem } from '../tabs';\n\n@Component({\n selector: 'moz-page-header',\n templateUrl: './page-header.html',\n styleUrls: ['./page-header.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MozIconButtonComponent,\n MozTagComponent,\n MozSelectComponent,\n MozStatusBadgeComponent,\n MozTabsComponent,\n ArrowBack24,\n HelpCircle20,\n Menu24,\n Notification20,\n Search20,\n MozIconButtonComponent,\n MozTagComponent,\n ReactiveFormsModule,\n MozSelectComponent,\n FormsModule,\n MozTabsComponent,\n ],\n})\nexport class MozPageHeaderComponent {\n readonly title = input.required<string>();\n readonly shadow = input<boolean>(false);\n readonly backButton = input<boolean>(false);\n readonly searchButton = input<boolean>(false);\n readonly helpButton = input<boolean>(false);\n readonly notificationButton = input<boolean>(false);\n readonly status = input<MozStatusBadgeStatus>();\n readonly statusLabel = input<string>();\n readonly extraInfo = input<string>();\n readonly scope = input<string | MozPageHeaderScope[]>();\n readonly scopeValue = input<string | number | boolean>();\n readonly scopePlaceholder = input<string>();\n readonly tabs = input<MozTabItem[]>();\n readonly activeTab = model<number>(0);\n\n readonly back = output<void>();\n readonly search = output<void>();\n readonly help = output<void>();\n readonly notification = output<void>();\n readonly toggleMenu = output<void>();\n readonly toggleScope = output<boolean | undefined>();\n readonly scopeValueChange = output<string | number | boolean>();\n\n readonly classes = computed(() => ({\n 'mc-page-header': true,\n 'mc-page-header--with-shadow': this.shadow(),\n }));\n\n readonly isScopeString = computed(() => typeof this.scope() === 'string');\n readonly isScopeArray = computed(() => Array.isArray(this.scope()));\n readonly isScopeValueBoolean = computed(() => typeof this.scopeValue() === 'boolean');\n readonly isScopeValueNotBoolean = computed(() => typeof this.scopeValue() !== 'boolean');\n\n readonly hasStatusOrExtraInfo = computed(() => this.status() || this.extraInfo());\n readonly hasStatusBadge = computed(() => this.statusLabel() && this.status());\n readonly hasIconButtons = computed(\n () => this.searchButton() || this.helpButton() || this.notificationButton()\n );\n\n readonly scopeAsArray = computed(() => {\n const scope = this.scope();\n return Array.isArray(scope) ? scope : [];\n });\n\n readonly mobileTagLabel = computed(() => {\n const scope = this.scope();\n if (!Array.isArray(scope)) return '';\n const scopeValue = this.scopeValue();\n if (!scopeValue) {\n return this.scopePlaceholder() ?? '';\n }\n const found = scope.find((opt) => opt.value === scopeValue);\n return found?.text ?? this.scopePlaceholder() ?? '';\n });\n\n onBack(): void {\n this.back.emit();\n }\n\n onSearch(): void {\n this.search.emit();\n }\n\n onHelp(): void {\n this.help.emit();\n }\n\n onNotification(): void {\n this.notification.emit();\n }\n\n onToggleMenu(): void {\n this.toggleMenu.emit();\n }\n\n onToggleScope(): void {\n this.toggleScope.emit(true);\n }\n\n onScopeTagClick(): void {\n const currentValue = this.scopeValue() as boolean;\n this.scopeValueChange.emit(!currentValue);\n }\n\n onScopeSelectChange(value: string | number): void {\n this.scopeValueChange.emit(value);\n }\n}\n","<div [class]=\"classes()\">\n <div class=\"mc-page-header__top-wrapper\">\n <div class=\"mc-page-header__top-content\">\n <div class=\"mc-page-header__content-wrapper\">\n <div class=\"mc-page-header__title-wrapper\">\n @if (backButton()) {\n <moz-icon-button\n [ghost]=\"true\"\n [id]=\"'page-header-back-button'\"\n ariaLabel=\"Back button\"\n (activated)=\"onBack()\"\n >\n <ArrowBack24 icon />\n </moz-icon-button>\n }\n\n <span class=\"mc-page-header__title\">\n {{ title() }}\n </span>\n </div>\n\n @if (hasStatusOrExtraInfo()) {\n <div class=\"mc-page-header__info-wrapper\">\n @if (hasStatusBadge()) {\n <moz-status-badge [label]=\"statusLabel()!\" [status]=\"status()!\" />\n } @if (extraInfo()) {\n <span class=\"mc-page-header__extra-info\">\n {{ extraInfo() }}\n </span>\n }\n </div>\n }\n\n <ng-content select=\"[content]\" />\n </div>\n </div>\n\n <div class=\"mc-page-header__actions-wrapper\">\n <moz-icon-button\n class=\"mc-page-header__burger-menu\"\n [ghost]=\"true\"\n [id]=\"'page-header-burger-menu'\"\n ariaLabel=\"Burger menu\"\n (activated)=\"onToggleMenu()\"\n >\n <Menu24 icon />\n </moz-icon-button>\n\n <ng-content select=\"[actions]\">\n <div class=\"mc-page-header__actions-content\">\n @if (hasIconButtons()) {\n <div class=\"mc-page-header__features-wrapper\">\n @if (searchButton()) {\n <button\n type=\"button\"\n class=\"mc-page-header__feature-item\"\n id=\"page-header-search-button\"\n aria-label=\"Search button\"\n (click)=\"onSearch()\"\n >\n <Search20 hostClass=\"mc-page-header__feature-item-icon\" />\n <span>Search</span>\n </button>\n } @if (helpButton()) {\n <button\n type=\"button\"\n class=\"mc-page-header__feature-item\"\n id=\"page-header-help-button\"\n aria-label=\"Help button\"\n (click)=\"onHelp()\"\n >\n <HelpCircle20 hostClass=\"mc-page-header__feature-item-icon\" />\n <span>Help</span>\n </button>\n } @if (notificationButton()) {\n <button\n type=\"button\"\n class=\"mc-page-header__feature-item\"\n id=\"page-header-notification-button\"\n aria-label=\"Notification button\"\n (click)=\"onNotification()\"\n >\n <Notification20 hostClass=\"mc-page-header__feature-item-icon\" />\n <span>Notifications</span>\n </button>\n }\n </div>\n } @if (isScopeString() && isScopeValueBoolean()) {\n <moz-tag type=\"interactive\" [id]=\"'scope-tag'\" (click)=\"onScopeTagClick()\">{{\n $any(scope())\n }}</moz-tag>\n } @if (isScopeArray() && isScopeValueNotBoolean()) {\n <div class=\"mc-page-header__scope--select\">\n <moz-select\n [name]=\"'scope-select'\"\n id=\"scope-select\"\n size=\"s\"\n [options]=\"scopeAsArray()\"\n [placeholder]=\"scopePlaceholder()\"\n [ngModel]=\"scopeValue()\"\n (ngModelChange)=\"onScopeSelectChange($event)\"\n />\n </div>\n\n <div class=\"mc-page-header__scope--tag\">\n <moz-tag type=\"interactive\" [id]=\"'mobile-scope-tag'\" (click)=\"onToggleScope()\">{{\n mobileTagLabel()\n }}</moz-tag>\n </div>\n }\n </div>\n </ng-content>\n </div>\n </div>\n\n @if (tabs() && tabs()!.length > 0) {\n <div class=\"mc-page-header__tabs\">\n <moz-tabs [tabs]=\"tabs()!\" [(selectedIndex)]=\"activeTab\" />\n </div>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { MozTileAppearance } from './model/tile.model';\n\n@Component({\n selector: 'moz-tile',\n imports: [NgTemplateOutlet],\n templateUrl: './tile.html',\n styleUrls: ['./tile.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozTileComponent {\n readonly appearance = input<MozTileAppearance>('primary');\n readonly isBordered = input(false);\n readonly extraAction = input(false);\n\n readonly classes = computed(() => ({\n 'mc-tile': true,\n [`mc-tile--${this.appearance()}`]: this.appearance() !== 'primary',\n 'mc-tile--bordered': this.isBordered(),\n }));\n}\n","<div [class]=\"classes()\">\n <div class=\"mc-tile__header\">\n @if (extraAction()) {\n <div class=\"mc-tile__body\">\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\"></ng-container>\n </div>\n <div class=\"mc-tile__action\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n } @else {\n <div class=\"mc-tile__body\">\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\"></ng-container>\n </div>\n }\n </div>\n <div class=\"mc-tile__content\">\n <ng-content select=\"[segmented]\"></ng-content>\n </div>\n\n <ng-template #bodyTemplate>\n <ng-content select=\"[body]\"></ng-content>\n </ng-template>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n forwardRef,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n MozTileSelectableAppearance,\n MozTileInputVerticalPosition,\n MozTileInputPosition,\n MozTileSelectableType,\n} from './model/selectable-tile.model';\n\n@Component({\n selector: 'moz-tile-selectable',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './selectable-tile.html',\n styleUrls: ['./selectable-tile.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozTileSelectableComponent),\n multi: true,\n },\n ],\n})\nexport class MozTileSelectableComponent implements ControlValueAccessor {\n readonly appearance = input<MozTileSelectableAppearance>('primary');\n readonly bordered = input(false);\n readonly name = input<string>('tile-select-group');\n readonly value = input<string>('');\n readonly checked = input(false);\n readonly disabled = input(false);\n readonly inputVerticalPosition = input<MozTileInputVerticalPosition>('top');\n readonly inputPosition = input<MozTileInputPosition>('right');\n readonly inputType = input<MozTileSelectableType>('checkbox');\n\n private readonly innerValue = signal<boolean | string>('');\n private readonly isControlledByForm = signal(false);\n private onTouchedCallback: () => void = () => {};\n private onChangeCallback: (value: boolean | string) => void = () => {};\n\n constructor() {\n // Synchronise l'input checked avec innerValue\n // sauf si le composant est piloté par un formulaire réactif (writeValue)\n effect(() => {\n const checkedValue = this.checked();\n if (!this.isControlledByForm()) {\n if (this.isCheckbox()) {\n this.innerValue.set(checkedValue);\n } else if (checkedValue) {\n this.innerValue.set(this.value());\n }\n }\n });\n }\n\n protected readonly isCheckbox = computed(() => this.inputType() === 'checkbox');\n protected readonly isRadio = computed(() => this.inputType() === 'radio');\n\n protected readonly isChecked = computed(() => {\n if (this.isCheckbox()) {\n return this.innerValue() === true;\n }\n return this.innerValue() === this.value();\n });\n\n protected readonly classes = computed(() => {\n const cls = ['mc-tile', 'mc-tile--selectable'];\n\n if (this.appearance() !== 'primary') cls.push(`mc-tile--${this.appearance()}`);\n if (this.bordered()) cls.push('mc-tile--bordered');\n if (this.disabled()) cls.push('mc-tile--disabled');\n if (this.isChecked()) cls.push('mc-tile--selected');\n\n cls.push(`mc-tile--input-${this.inputVerticalPosition()}`);\n cls.push(`mc-tile--input-${this.inputPosition()}`);\n\n return cls.join(' ');\n });\n\n // ControlValueAccessor methods\n writeValue(value: boolean | string): void {\n this.isControlledByForm.set(true);\n this.innerValue.set(value);\n }\n\n registerOnChange(fn: (value: boolean | string) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n onTileChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n if (this.isCheckbox()) {\n this.innerValue.set(target.checked);\n this.onChangeCallback(target.checked);\n } else {\n this.innerValue.set(target.value);\n this.onChangeCallback(target.value);\n }\n\n this.onTouchedCallback();\n }\n}\n","<label [class]=\"classes()\" [class.mc-tile--disabled]=\"disabled()\">\n <div class=\"mc-tile__header\">\n <div class=\"mc-tile__body\">\n <ng-content select=\"[body]\"></ng-content>\n </div>\n <div class=\"mc-tile__action\">\n @if (isCheckbox()) {\n <input\n type=\"checkbox\"\n class=\"mc-checkbox__input\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n (change)=\"onTileChange($event)\"\n />\n } @else if (isRadio()) {\n <input\n type=\"radio\"\n class=\"mc-radio__input\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n (change)=\"onTileChange($event)\"\n />\n }\n </div>\n </div>\n <div class=\"mc-tile__content\">\n <ng-content select=\"[segmented]\"></ng-content>\n </div>\n</label>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { MozButtonComponent } from '../../button/button';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { ChevronDown24 } from '@mozaic-ds/icons-angular';\nimport { MozTileExpandableTrigger } from './model/expandable-tile.model';\n\n@Component({\n selector: 'moz-tile-expandable',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './expandable-tile.html',\n styleUrls: ['./expandable-tile.scss'],\n imports: [NgTemplateOutlet, MozButtonComponent, MozIconButtonComponent, ChevronDown24],\n})\nexport class MozTileExpandableComponent {\n readonly triggerMode = input<MozTileExpandableTrigger>('container');\n readonly id = input<number>(0);\n readonly expanded = signal(false);\n readonly contentId = `tile-content-${this.id()}`;\n\n readonly isContainerTrigger = computed(() => this.triggerMode() === 'container');\n readonly isIconTrigger = computed(() => this.triggerMode() === 'icon');\n readonly isButtonTrigger = computed(() => this.triggerMode() === 'button');\n\n readonly toggle = () => {\n this.expanded.update((v) => !v);\n };\n\n readonly hostClass = computed(() => {\n const cls = ['mc-tile', 'mc-tile--expandable'];\n\n if (!this.isContainerTrigger()) {\n cls.push(`mc-tile--trigger-${this.triggerMode()}`);\n }\n\n return cls.join(' ');\n });\n}\n","<div [class]=\"hostClass()\">\n @if (isContainerTrigger()) {\n <button\n class=\"mc-tile__header\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n (click)=\"toggle()\"\n >\n <div class=\"mc-tile__body\">\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\"></ng-container>\n </div>\n <div class=\"mc-tile__action\"></div>\n </button>\n } @else {\n <div class=\"mc-tile__header\">\n <div class=\"mc-tile__body\">\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\"></ng-container>\n </div>\n <div class=\"mc-tile__action\">\n @if (isButtonTrigger()) {\n <button\n moz-button\n class=\"mc-tile__action-button\"\n [ghost]=\"true\"\n [iconPosition]=\"'right'\"\n (click)=\"toggle(); $event.stopPropagation()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n >\n <span class=\"mc-tile__action-label\">See more</span>\n <ChevronDown24 icon />\n </button>\n } @else if (isIconTrigger()) {\n <moz-icon-button\n class=\"mc-tile__action-button\"\n [ghost]=\"true\"\n [ariaLabel]=\"'Toggle content'\"\n (activated)=\"toggle(); $event.stopPropagation()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n [id]=\"'expandable-tile-toggle-button'\"\n >\n <ChevronDown24 icon />\n </moz-icon-button>\n }\n </div>\n </div>\n }\n\n <div class=\"mc-tile__content\" [id]=\"contentId\" [attr.aria-hidden]=\"!expanded()\">\n <ng-content select=\"[segmented]\" />\n </div>\n\n <ng-template #bodyTemplate>\n <ng-content select=\"[body]\" />\n </ng-template>\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { MozDrawerPosition } from '../model/drawer.model';\n\nexport interface MozDrawerConfig<D = unknown> {\n title: string;\n contentTitle?: string;\n position?: MozDrawerPosition;\n extended?: boolean;\n back?: boolean;\n panelClass?: string;\n data?: D;\n}\n\nexport const DRAWER_CONFIG = new InjectionToken<MozDrawerConfig>('DRAWER_CONFIG');\nexport const DRAWER_DATA = new InjectionToken<unknown>('DRAWER_DATA');\n\nexport const DEFAULT_DRAWER_CONFIG: Partial<MozDrawerConfig> = {\n position: 'right',\n extended: false,\n back: false,\n};\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject, Observable } from 'rxjs';\nimport { signal } from '@angular/core';\nimport { MozDrawerPosition } from '../model/drawer.model';\n\nexport class MozDrawerRef<R = unknown> {\n private readonly afterClosed$ = new Subject<R | undefined>();\n private readonly afterOpened$ = new Subject<void>();\n private readonly backClicked$ = new Subject<void>();\n\n readonly isOpen = signal(false);\n readonly title = signal('');\n readonly contentTitle = signal('');\n readonly position = signal<MozDrawerPosition>('right');\n readonly extended = signal(false);\n readonly back = signal(false);\n readonly panelClass = signal<string | undefined>(undefined);\n\n private animationDuration = 300;\n\n constructor(private readonly overlayRef: OverlayRef) {}\n\n open(): void {\n requestAnimationFrame(() => {\n this.isOpen.set(true);\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n }\n\n close(result?: R): void {\n this.isOpen.set(false);\n\n setTimeout(() => {\n this.overlayRef.dispose();\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n }, this.animationDuration);\n }\n\n backClick(): void {\n this.backClicked$.next();\n }\n\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n\n onBackClick(): Observable<void> {\n return this.backClicked$.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n HostListener,\n TemplateRef,\n computed,\n inject,\n viewChild,\n Type,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { ArrowBack24, Cross24 } from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { MozDrawerConfig, DRAWER_CONFIG } from '../config/drawer.config';\nimport { MozDrawerRef } from '../ref/drawer-ref';\n\n@Component({\n selector: 'moz-drawer-container',\n imports: [MozIconButtonComponent, ArrowBack24, Cross24, NgTemplateOutlet, CdkPortalOutlet],\n templateUrl: './drawer-container.html',\n styleUrls: ['../drawer.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DrawerContainerComponent {\n readonly drawerRef = inject(MozDrawerRef);\n readonly config = inject<MozDrawerConfig>(DRAWER_CONFIG);\n\n readonly portalOutlet = viewChild(CdkPortalOutlet);\n\n footerTpl: TemplateRef<void> | null = null;\n\n private componentRef: ComponentRef<unknown> | null = null;\n\n readonly ariaModal = computed(() => (this.drawerRef.isOpen() ? 'true' : 'false'));\n\n attachComponent<C>(component: Type<C>): ComponentRef<C> {\n const portal = new ComponentPortal(component);\n const outlet = this.portalOutlet();\n\n if (!outlet) {\n throw new Error('Portal outlet is not available');\n }\n\n this.componentRef = outlet.attachComponentPortal(portal);\n return this.componentRef as ComponentRef<C>;\n }\n\n registerFooter(tpl: TemplateRef<void>): void {\n this.footerTpl = tpl;\n }\n\n noop(): void {}\n\n onBackClick(): void {\n this.drawerRef.backClick();\n }\n\n onBackdropClick(event: MouseEvent): void {\n event.stopPropagation();\n this.drawerRef.close();\n }\n\n @HostListener('keydown.escape')\n onEscape(): void {\n if (this.drawerRef.isOpen()) {\n this.drawerRef.close();\n }\n }\n}\n","<section\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"noop()\"\n class=\"mc-drawer\"\n [class.is-open]=\"drawerRef.isOpen()\"\n [class.mc-drawer--extend]=\"drawerRef.extended()\"\n [class.mc-drawer--left]=\"drawerRef.position() === 'left'\"\n role=\"dialog\"\n aria-labelledby=\"drawerTitle\"\n [attr.aria-modal]=\"ariaModal()\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"!drawerRef.isOpen()\"\n>\n <div class=\"mc-drawer__dialog\" [class]=\"drawerRef.panelClass()\" role=\"document\">\n <div class=\"mc-drawer__header\">\n @if (drawerRef.back()) {\n <moz-icon-button\n class=\"mc-drawer__back\"\n aria-label=\"Back\"\n [ghost]=\"true\"\n (activated)=\"onBackClick()\"\n [id]=\"'drawer-back-button'\"\n >\n <ArrowBack24 icon />\n </moz-icon-button>\n }\n\n <h2 class=\"mc-drawer__title\" id=\"drawerTitle\">{{ drawerRef.title() }}</h2>\n\n <moz-icon-button\n class=\"mc-drawer__close\"\n aria-label=\"Close\"\n [ghost]=\"true\"\n (activated)=\"drawerRef.close()\"\n [id]=\"'drawer-close-button'\"\n >\n <Cross24 icon />\n </moz-icon-button>\n </div>\n\n <div class=\"mc-drawer__body\">\n <div class=\"mc-drawer__content\" tabindex=\"0\">\n @if (drawerRef.contentTitle()) {\n <h2 class=\"mc-drawer__content__title\">\n {{ drawerRef.contentTitle() }}\n </h2>\n }\n\n <ng-template cdkPortalOutlet />\n </div>\n </div>\n\n @if (footerTpl) {\n <div class=\"mc-drawer__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl\" />\n </div>\n }\n </div>\n\n @if (drawerRef.isOpen()) {\n <div class=\"mc-overlay is-visible\" tabindex=\"-1\" (click)=\"onBackdropClick($event)\"></div>\n }\n</section>\n","import { Injectable, Injector, Type, inject } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n MozDrawerConfig,\n DEFAULT_DRAWER_CONFIG,\n DRAWER_CONFIG,\n DRAWER_DATA,\n} from '../config/drawer.config';\nimport { MozDrawerRef } from '../ref/drawer-ref';\nimport { DrawerContainerComponent } from '../container/drawer-container';\n\n@Injectable({ providedIn: 'root' })\nexport class MozDrawerService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n open<C, D = unknown, R = unknown>(\n component: Type<C>,\n config: MozDrawerConfig<D>\n ): MozDrawerRef<R> {\n const mergedConfig = {\n ...DEFAULT_DRAWER_CONFIG,\n ...config,\n } as MozDrawerConfig<D>;\n\n const overlayRef = this.createOverlay();\n const drawerRef = new MozDrawerRef<R>(overlayRef);\n\n drawerRef.title.set(mergedConfig.title);\n drawerRef.contentTitle.set(mergedConfig.contentTitle ?? '');\n drawerRef.position.set(mergedConfig.position ?? 'right');\n drawerRef.extended.set(mergedConfig.extended ?? false);\n drawerRef.back.set(mergedConfig.back ?? false);\n drawerRef.panelClass.set(mergedConfig.panelClass);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: MozDrawerRef, useValue: drawerRef },\n { provide: DRAWER_CONFIG, useValue: mergedConfig },\n { provide: DRAWER_DATA, useValue: mergedConfig.data ?? null },\n ],\n });\n\n const containerPortal = new ComponentPortal(DrawerContainerComponent, null, injector);\n\n const containerRef = overlayRef.attach(containerPortal);\n const containerInstance = containerRef.instance;\n\n // Render the closed state synchronously so the CSS slide-in transition has a\n // committed starting point (`transform: translate3d(100%, 0, 0)`).\n containerRef.changeDetectorRef.detectChanges();\n\n const host = containerRef.location.nativeElement as HTMLElement;\n const dialog = host.querySelector('.mc-drawer__dialog');\n\n // CDK inserts the container's DOM *before* Angular applies its class bindings\n // (`is-open`, `mc-drawer--left`, `panelClass`, ...) and forces a style/layout\n // read while attaching (scroll-block strategy). The browser therefore sees a\n // real style change on an already-styled element and starts a spurious\n // transition (e.g. `transform: none` -> `translate3d(100%, 0, 0)`), which is\n // still in flight when `.is-open` lands two frames later. The open animation\n // then only interpolates the few pixels left, so the drawer \"pops\" in.\n // Cancelling these entry transitions snaps the dialog to its real closed\n // state before the open animation is triggered.\n dialog?.getAnimations().forEach((animation) => animation.cancel());\n\n // Force a reflow so the closed state is committed before `.is-open` is added.\n void host.offsetWidth;\n\n // Wait for view init, then attach the user component inside the container\n requestAnimationFrame(() => {\n // Override the portal outlet's injector so the child component\n // can inject DrawerRef, DRAWER_DATA, and DrawerContainerComponent\n const childInjector = Injector.create({\n parent: injector,\n providers: [{ provide: DrawerContainerComponent, useValue: containerInstance }],\n });\n\n const portal = new ComponentPortal(component, null, childInjector);\n containerInstance.portalOutlet()?.attach(portal);\n\n drawerRef.open();\n });\n\n return drawerRef;\n }\n\n private createOverlay(): OverlayRef {\n const config = new OverlayConfig({\n hasBackdrop: false, // We handle backdrop ourselves\n panelClass: 'moz-drawer-overlay-pane',\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n return this.overlay.create(config);\n }\n}\n","import { Directive, TemplateRef, inject, afterNextRender } from '@angular/core';\nimport { DrawerContainerComponent } from '../container/drawer-container';\n\n@Directive({\n selector: '[mozDrawerFooter]',\n standalone: true,\n})\nexport class MozDrawerFooterDirective {\n private readonly tpl = inject(TemplateRef<void>);\n private readonly container = inject(DrawerContainerComponent);\n\n constructor() {\n afterNextRender(() => {\n this.container.registerFooter(this.tpl);\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n contentChild,\n input,\n output,\n signal,\n effect,\n computed,\n HostListener,\n} from '@angular/core';\nimport { ArrowBack24, Cross24 } from '@mozaic-ds/icons-angular';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { MozDrawerPosition } from './model/drawer.model';\n\n@Component({\n selector: 'moz-drawer',\n imports: [MozIconButtonComponent, ArrowBack24, Cross24, NgTemplateOutlet],\n templateUrl: './drawer.html',\n styleUrls: ['./drawer.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozDrawerComponent {\n readonly open = input<boolean>(false);\n readonly position = input<MozDrawerPosition>('right');\n readonly extended = input<boolean>(false);\n readonly back = input<boolean>(false);\n readonly title = input.required<string>();\n readonly contentTitle = input<string | undefined>();\n readonly panelClass = input<string>();\n\n readonly updateOpen = output<boolean>();\n readonly backEvent = output<void>();\n\n readonly footerTpl = contentChild<TemplateRef<void>>('footer', { descendants: false });\n\n readonly isOpen = signal(this.open());\n\n readonly classes = computed(() => ({\n 'mc-drawer': true,\n 'is-open': this.isOpen(),\n 'mc-drawer--extend': this.extended(),\n [`mc-drawer--${this.position()}`]: this.position() !== 'right',\n }));\n\n readonly dialogClasses = computed(() => {\n const extra = this.panelClass();\n return extra ? `mc-drawer__dialog ${extra}` : 'mc-drawer__dialog';\n });\n\n readonly ariaModal = computed(() => (this.isOpen() ? 'true' : 'false'));\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.open());\n });\n }\n\n close(): void {\n this.updateOpen.emit(false);\n }\n\n backClick(): void {\n this.backEvent.emit();\n }\n\n noop() {}\n\n @HostListener('keydown.escape')\n onEscape(): void {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n onBackdropClick(event: MouseEvent): void {\n event.stopPropagation();\n this.close();\n }\n}\n","<section\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"noop()\"\n [class]=\"classes()\"\n role=\"dialog\"\n aria-labelledby=\"drawerTitle\"\n [attr.aria-modal]=\"ariaModal()\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"!isOpen()\"\n>\n <div [class]=\"dialogClasses()\" role=\"document\">\n <div class=\"mc-drawer__header\">\n @if (back()) {\n <moz-icon-button\n class=\"mc-drawer__back\"\n aria-label=\"Back\"\n [ghost]=\"true\"\n (activated)=\"backClick()\"\n [id]=\"'drawer-back-button'\"\n >\n <ArrowBack24 icon />\n </moz-icon-button>\n }\n\n <h2 class=\"mc-drawer__title\" id=\"drawerTitle\">{{ title() }}</h2>\n\n <moz-icon-button\n class=\"mc-drawer__close\"\n aria-label=\"Close\"\n [ghost]=\"true\"\n (activated)=\"close()\"\n [id]=\"'drawer-close-button'\"\n >\n <Cross24 icon />\n </moz-icon-button>\n </div>\n\n <div class=\"mc-drawer__body\">\n <div class=\"mc-drawer__content\" tabindex=\"0\">\n @if (contentTitle()) {\n <h2 class=\"mc-drawer__content__title\">\n {{ contentTitle() }}\n </h2>\n }\n\n <ng-content />\n </div>\n </div>\n\n @if (footerTpl()) {\n <div class=\"mc-drawer__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl()\" />\n </div>\n }\n </div>\n @if(isOpen()){\n <div\n class=\"mc-overlay is-visible\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"modalTitle\"\n (click)=\"onBackdropClick($event)\"\n ></div>\n }\n</section>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n TemplateRef,\n contentChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Cross20 } from '@mozaic-ds/icons-angular';\nimport { MozPopoverAppearance, MozPopoverPosition, MozPopoverSize } from './config/popover.config';\nimport { MozIconButtonComponent } from '../icon-button';\n\n@Component({\n selector: 'moz-popover',\n imports: [NgTemplateOutlet, Cross20, MozIconButtonComponent],\n templateUrl: './popover.html',\n styleUrls: ['./popover.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'mozPopover',\n})\nexport class MozPopoverComponent {\n readonly appearance = input<MozPopoverAppearance>('default');\n readonly position = input<MozPopoverPosition>('bottom');\n readonly size = input<MozPopoverSize>('s');\n readonly pointer = input<boolean>(true);\n readonly closable = input<boolean>(false);\n readonly title = input<string>();\n readonly description = input<string>();\n readonly buttonLabel = input<string>();\n readonly open = input<boolean>(false);\n\n readonly closeClick = output<void>();\n\n footerTpl = contentChild<TemplateRef<void>>('footer', { descendants: false });\n\n readonly classMap = computed(() => {\n const appearance = this.appearance();\n const position = this.position();\n const size = this.size();\n const pointer = this.pointer();\n\n return {\n 'mc-popover': true,\n 'mc-popover--inverse': appearance === 'inverse',\n [`mc-popover--${position}`]: true,\n [`mc-popover--${size}`]: true,\n 'mc-popover--no-pointer': !pointer,\n };\n });\n\n onClose(): void {\n this.closeClick.emit();\n }\n}\n","<div [class]=\"classMap()\">\n <div class=\"mc-popover__wrapper\">\n <div class=\"mc-popover__content\">\n @if (title() || description()) {\n <div class=\"mc-popover__headings\">\n @if (title()) {\n <p class=\"mc-popover__title\">{{ title() }}</p>\n } @if (description()) {\n <p class=\"mc-popover__description\">{{ description() }}</p>\n }\n </div>\n } @if (closable()) {\n <moz-icon-button\n id=\"popover-close\"\n class=\"mc-popover__close\"\n aria-label=\"Close\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n (activated)=\"onClose()\"\n >\n <Cross20 icon />\n </moz-icon-button>\n }\n\n <ng-content />\n\n @if (footerTpl()) {\n <div class=\"mc-popover__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl()\" />\n </div>\n }\n </div>\n </div>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport type MozPopoverAppearance = 'default' | 'inverse';\nexport type MozPopoverPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type MozPopoverSize = 's' | 'm';\n\nexport interface PopoverConfig<D = unknown> {\n title?: string;\n description?: string;\n appearance?: MozPopoverAppearance;\n position?: MozPopoverPosition;\n size?: MozPopoverSize;\n pointer?: boolean;\n closable?: boolean;\n buttonLabel?: string;\n data?: D;\n}\n\nexport const POPOVER_CONFIG = new InjectionToken<PopoverConfig>('POPOVER_CONFIG');\nexport const POPOVER_DATA = new InjectionToken<unknown>('POPOVER_DATA');\n\nexport const DEFAULT_POPOVER_CONFIG: Omit<Partial<PopoverConfig>, 'data'> = {\n appearance: 'default',\n position: 'bottom',\n size: 's',\n pointer: true,\n closable: false,\n};\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject, Observable } from 'rxjs';\n\nexport class PopoverRef<R = unknown> {\n private readonly afterClosed$ = new Subject<R | undefined>();\n private _closed = false;\n\n constructor(private readonly overlayRef: OverlayRef) {\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this.overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n this.close();\n }\n });\n\n // Fermeture par scrollStrategy ou autre détachement externe\n this.overlayRef.detachments().subscribe(() => {\n if (!this._closed) {\n this._closed = true;\n this.afterClosed$.next(undefined);\n this.afterClosed$.complete();\n }\n });\n }\n\n close(result?: R): void {\n if (this._closed) return;\n this._closed = true;\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n this.overlayRef.dispose();\n }\n\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n TemplateRef,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { PopoverRef } from '../ref/popover-ref';\nimport { PopoverConfig, POPOVER_CONFIG } from '../config/popover.config';\nimport { MozPopoverComponent } from '../popover';\n\n@Component({\n selector: 'moz-popover-container',\n imports: [MozPopoverComponent, CdkPortalOutlet, NgTemplateOutlet],\n template: `\n <moz-popover\n [appearance]=\"config.appearance ?? 'default'\"\n [position]=\"config.position ?? 'bottom'\"\n [size]=\"config.size ?? 's'\"\n [pointer]=\"config.pointer ?? true\"\n [closable]=\"config.closable ?? false\"\n [title]=\"config.title\"\n [description]=\"config.description\"\n [buttonLabel]=\"config.buttonLabel\"\n [open]=\"true\"\n (closeClick)=\"popoverRef.close()\"\n >\n <ng-template cdkPortalOutlet />\n\n @if (footerTpl()) {\n <ng-template #footer>\n <ng-container *ngTemplateOutlet=\"footerTpl()\" />\n </ng-template>\n }\n </moz-popover>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopoverContainerComponent {\n readonly popoverRef = inject(PopoverRef);\n readonly config = inject<PopoverConfig>(POPOVER_CONFIG);\n private readonly cdr = inject(ChangeDetectorRef);\n\n readonly portalOutlet = viewChild(CdkPortalOutlet);\n\n readonly footerTpl = signal<TemplateRef<void> | null>(null);\n\n registerFooter(tpl: TemplateRef<void>): void {\n this.footerTpl.set(tpl);\n this.cdr.detectChanges();\n }\n}\n","import {\n Directive,\n ElementRef,\n Injector,\n NgZone,\n inject,\n input,\n output,\n OnInit,\n OnDestroy,\n Type,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { PopoverRef } from '../ref/popover-ref';\nimport {\n PopoverConfig,\n MozPopoverPosition,\n POPOVER_CONFIG,\n POPOVER_DATA,\n DEFAULT_POPOVER_CONFIG,\n} from '../config/popover.config';\nimport { PopoverContainerComponent } from '../container/popover-container';\n\nexport type PopoverTriggerMode = 'click' | 'hover';\n\n@Directive({\n selector: '[mozPopoverTrigger]',\n exportAs: 'mozPopoverTrigger',\n host: {\n '(click)': 'onHostClick()',\n '(mouseenter)': 'onHostMouseEnter()',\n '(mouseleave)': 'onHostMouseLeave()',\n },\n})\nexport class MozPopoverTriggerDirective implements OnInit, OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly elementRef = inject(ElementRef);\n private readonly injector = inject(Injector);\n private readonly ngZone = inject(NgZone);\n\n /** The component to inject inside the popover, or null for config-only popover */\n readonly mozPopoverTrigger = input<Type<unknown> | null>(null);\n\n /** Trigger mode: 'click' (default) or 'hover' */\n readonly popoverTriggerMode = input<PopoverTriggerMode>('click');\n\n /** Popover config */\n readonly popoverTitle = input<string>();\n readonly popoverDescription = input<string>();\n readonly popoverAppearance = input<PopoverConfig['appearance']>('default');\n readonly popoverPosition = input<MozPopoverPosition>('bottom');\n readonly popoverSize = input<PopoverConfig['size']>('s');\n readonly popoverPointer = input<boolean>(true);\n readonly popoverClosable = input<boolean>(false);\n readonly popoverButtonLabel = input<string>();\n readonly popoverData = input<unknown>();\n\n /** Delay in ms before opening/closing on hover (prevents flicker) */\n readonly popoverHoverDelay = input<number>(100);\n\n /** Emits when popover closes */\n readonly popoverClosed = output<unknown>();\n\n private popoverRef: PopoverRef | null = null;\n private overlayRef: OverlayRef | null = null;\n\n // Hover-mode timers & listeners\n private hoverOpenTimer: ReturnType<typeof setTimeout> | null = null;\n private hoverCloseTimer: ReturnType<typeof setTimeout> | null = null;\n private overlayMouseEnterHandler: (() => void) | null = null;\n private overlayMouseLeaveHandler: (() => void) | null = null;\n\n ngOnInit(): void {\n // Nothing special — listeners are host-bound\n }\n\n // -----------------------------------------------------------------------\n // Host event handlers\n // -----------------------------------------------------------------------\n\n onHostClick(): void {\n if (this.popoverTriggerMode() !== 'click') return;\n if (this.popoverRef) {\n this.close();\n } else {\n this.open();\n }\n }\n\n onHostMouseEnter(): void {\n if (this.popoverTriggerMode() !== 'hover') return;\n this.cancelHoverClose();\n if (this.popoverRef) return;\n this.hoverOpenTimer = setTimeout(() => {\n this.hoverOpenTimer = null;\n this.open();\n }, this.popoverHoverDelay());\n }\n\n onHostMouseLeave(): void {\n if (this.popoverTriggerMode() !== 'hover') return;\n this.cancelHoverOpen();\n this.scheduleHoverClose();\n }\n\n // -----------------------------------------------------------------------\n // Public API\n // -----------------------------------------------------------------------\n\n toggle(): void {\n if (this.popoverRef) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.popoverRef) {\n return;\n }\n\n // Nothing to render (no injected component and no textual content) — don't\n // open an empty popover (e.g. a hover trigger on a non-overflowing cell).\n if (\n !this.mozPopoverTrigger() &&\n !this.popoverTitle() &&\n !this.popoverDescription() &&\n !this.popoverButtonLabel()\n ) {\n return;\n }\n\n const isHover = this.popoverTriggerMode() === 'hover';\n\n const config: PopoverConfig = {\n ...DEFAULT_POPOVER_CONFIG,\n title: this.popoverTitle(),\n description: this.popoverDescription(),\n appearance: this.popoverAppearance(),\n position: this.popoverPosition(),\n size: this.popoverSize(),\n pointer: this.popoverPointer(),\n closable: this.popoverClosable(),\n buttonLabel: this.popoverButtonLabel(),\n data: this.popoverData(),\n };\n\n const overlayRef = this.createOverlay(config.position ?? 'bottom', isHover);\n this.overlayRef = overlayRef;\n const popoverRef = new PopoverRef(overlayRef);\n this.popoverRef = popoverRef;\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: PopoverRef, useValue: popoverRef },\n { provide: POPOVER_CONFIG, useValue: config },\n { provide: POPOVER_DATA, useValue: config.data ?? null },\n ],\n });\n\n const containerPortal = new ComponentPortal(PopoverContainerComponent, null, injector);\n\n const containerRef = overlayRef.attach(containerPortal);\n const containerInstance = containerRef.instance;\n\n // If a component is provided, inject it inside the container\n const component = this.mozPopoverTrigger();\n if (component) {\n requestAnimationFrame(() => {\n const childInjector = Injector.create({\n parent: injector,\n providers: [{ provide: PopoverContainerComponent, useValue: containerInstance }],\n });\n\n const portal = new ComponentPortal(component, null, childInjector);\n containerInstance.portalOutlet()?.attach(portal);\n });\n }\n\n // Attach hover listeners on the overlay pane itself\n if (isHover) {\n this.attachOverlayHoverListeners(overlayRef);\n }\n\n popoverRef.afterClosed().subscribe((result) => {\n this.popoverClosed.emit(result);\n this.detachOverlayHoverListeners();\n this.popoverRef = null;\n this.overlayRef = null;\n });\n }\n\n close(): void {\n this.cancelHoverOpen();\n this.cancelHoverClose();\n this.popoverRef?.close();\n this.popoverRef = null;\n this.overlayRef = null;\n }\n\n ngOnDestroy(): void {\n this.cancelHoverOpen();\n this.cancelHoverClose();\n this.detachOverlayHoverListeners();\n this.close();\n }\n\n // -----------------------------------------------------------------------\n // Hover helpers\n // -----------------------------------------------------------------------\n\n private scheduleHoverClose(): void {\n this.cancelHoverClose();\n this.hoverCloseTimer = setTimeout(() => {\n this.hoverCloseTimer = null;\n this.close();\n }, this.popoverHoverDelay());\n }\n\n private cancelHoverClose(): void {\n if (this.hoverCloseTimer !== null) {\n clearTimeout(this.hoverCloseTimer);\n this.hoverCloseTimer = null;\n }\n }\n\n private cancelHoverOpen(): void {\n if (this.hoverOpenTimer !== null) {\n clearTimeout(this.hoverOpenTimer);\n this.hoverOpenTimer = null;\n }\n }\n\n private attachOverlayHoverListeners(overlayRef: OverlayRef): void {\n const pane = overlayRef.overlayElement;\n this.ngZone.runOutsideAngular(() => {\n this.overlayMouseEnterHandler = () => {\n this.cancelHoverClose();\n };\n this.overlayMouseLeaveHandler = () => {\n this.ngZone.run(() => this.scheduleHoverClose());\n };\n pane.addEventListener('mouseenter', this.overlayMouseEnterHandler);\n pane.addEventListener('mouseleave', this.overlayMouseLeaveHandler);\n });\n }\n\n private detachOverlayHoverListeners(): void {\n if (this.overlayRef && this.overlayRef.overlayElement) {\n const pane = this.overlayRef.overlayElement;\n if (this.overlayMouseEnterHandler) {\n pane.removeEventListener('mouseenter', this.overlayMouseEnterHandler);\n }\n if (this.overlayMouseLeaveHandler) {\n pane.removeEventListener('mouseleave', this.overlayMouseLeaveHandler);\n }\n }\n this.overlayMouseEnterHandler = null;\n this.overlayMouseLeaveHandler = null;\n }\n\n // -----------------------------------------------------------------------\n // Overlay creation\n // -----------------------------------------------------------------------\n\n private createOverlay(position: MozPopoverPosition, hoverMode: boolean): OverlayRef {\n const positions = this.getPositions(position);\n\n const config = new OverlayConfig({\n hasBackdrop: !hoverMode,\n backdropClass: hoverMode ? '' : 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(positions)\n .withPush(true)\n .withViewportMargin(8),\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n return this.overlay.create(config);\n }\n\n private getPositions(position: MozPopoverPosition): ConnectedPosition[] {\n const positionMap: Record<MozPopoverPosition, ConnectedPosition[]> = {\n bottom: [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n ],\n top: [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n ],\n left: [\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n ],\n right: [\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n ],\n };\n\n return positionMap[position];\n }\n}\n","import { Injectable, Injector, ElementRef, Type, inject } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { PopoverRef } from '../ref/popover-ref';\nimport {\n PopoverConfig,\n MozPopoverPosition,\n POPOVER_CONFIG,\n POPOVER_DATA,\n DEFAULT_POPOVER_CONFIG,\n} from '../config/popover.config';\nimport { PopoverContainerComponent } from '../container/popover-container';\n\n@Injectable({ providedIn: 'root' })\nexport class PopoverService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n /**\n * Open a popover attached to an element.\n */\n open<C, D = unknown, R = unknown>(\n component: Type<C>,\n origin: ElementRef | HTMLElement,\n config: PopoverConfig<D>\n ): PopoverRef<R> {\n const mergedConfig = {\n ...DEFAULT_POPOVER_CONFIG,\n ...config,\n } as PopoverConfig<D>;\n\n const overlayRef = this.createOverlay(origin, mergedConfig.position ?? 'bottom');\n const popoverRef = new PopoverRef<R>(overlayRef);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: PopoverRef, useValue: popoverRef },\n { provide: POPOVER_CONFIG, useValue: mergedConfig },\n { provide: POPOVER_DATA, useValue: mergedConfig.data ?? null },\n ],\n });\n\n const containerPortal = new ComponentPortal(PopoverContainerComponent, null, injector);\n\n const containerRef = overlayRef.attach(containerPortal);\n const containerInstance = containerRef.instance;\n\n requestAnimationFrame(() => {\n const childInjector = Injector.create({\n parent: injector,\n providers: [{ provide: PopoverContainerComponent, useValue: containerInstance }],\n });\n\n const portal = new ComponentPortal(component, null, childInjector);\n containerInstance.portalOutlet()?.attach(portal);\n });\n\n return popoverRef;\n }\n\n private createOverlay(\n origin: ElementRef | HTMLElement,\n position: MozPopoverPosition\n ): OverlayRef {\n const positions = this.getPositions(position);\n\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions(positions)\n .withPush(true)\n .withViewportMargin(8),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n return this.overlay.create(config);\n }\n\n private getPositions(position: MozPopoverPosition): ConnectedPosition[] {\n const positionMap: Record<MozPopoverPosition, ConnectedPosition[]> = {\n bottom: [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n ],\n top: [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n ],\n left: [\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n ],\n right: [\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n ],\n };\n\n return positionMap[position];\n }\n}\n","import { Directive, TemplateRef, inject, afterNextRender } from '@angular/core';\nimport { PopoverContainerComponent } from '../container/popover-container';\n\n@Directive({\n selector: '[mozPopoverFooter]',\n standalone: true,\n})\nexport class MozPopoverFooterDirective {\n private readonly tpl = inject(TemplateRef<void>);\n private readonly container = inject(PopoverContainerComponent);\n\n constructor() {\n afterNextRender(() => {\n this.container.registerFooter(this.tpl);\n });\n }\n}\n","// Component (standalone static usage)\nexport { MozPopoverComponent } from './popover';\n\n// Config & tokens\nexport type {\n PopoverConfig,\n MozPopoverAppearance,\n MozPopoverPosition,\n MozPopoverSize,\n} from './config/popover.config';\nexport { POPOVER_CONFIG, POPOVER_DATA } from './config/popover.config';\n\n// Ref\nexport { PopoverRef } from './ref/popover-ref';\n\n// Directive trigger\nexport { MozPopoverTriggerDirective } from './directives/popover-trigger.directive';\nexport type { PopoverTriggerMode } from './directives/popover-trigger.directive';\n\n// Dynamic\nexport { PopoverService } from './service/popover.service';\nexport { PopoverContainerComponent } from './container/popover-container';\nexport { MozPopoverFooterDirective } from './directives/popover-footer.directive';\n","import { ChangeDetectionStrategy, Component, input, output, computed, model } from '@angular/core';\nimport { MozButtonComponent } from '../button/button';\nimport { PauseCircle24, PlayCircle24 } from '@mozaic-ds/icons-angular';\nimport { MozNavigationIndicatorAction } from './model/navigation-indicator.model';\n\n@Component({\n selector: 'moz-navigation-indicator',\n templateUrl: './navigation-indicator.html',\n styleUrls: ['./navigation-indicator.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MozButtonComponent, PauseCircle24, PlayCircle24],\n})\nexport class MozNavigationIndicatorComponent {\n /** Total number of steps */\n readonly steps = input.required<number>();\n\n /** Currently active step index (0-based) */\n readonly active = model<number>(0);\n\n /** Action button type: 'pause' or 'resume' */\n readonly action = input<MozNavigationIndicatorAction>('pause');\n\n /** Use light (icon-only) variant for the action button */\n readonly light = input<boolean>(false);\n\n /** Hide the action button entirely */\n readonly hideAction = input<boolean>(false);\n\n /** Label for the pause button */\n readonly pauseLabel = input<string>('Pause');\n\n /** Label for the resume button */\n readonly resumeLabel = input<string>('Resume');\n\n /** Emits when a step indicator is clicked */\n readonly stepClick = output<number>();\n\n /** Emits when the action button (pause/resume) is clicked */\n readonly actionClick = output<MozNavigationIndicatorAction>();\n\n /** Array of step indices for iteration */\n readonly stepsArray = computed(() => Array.from({ length: this.steps() }, (_, i) => i));\n\n /** Current action label */\n readonly actionLabel = computed(() =>\n this.action() === 'pause' ? this.pauseLabel() : this.resumeLabel()\n );\n\n onStepClick(index: number): void {\n this.active.set(index);\n this.stepClick.emit(index);\n }\n\n onActionClick(): void {\n this.actionClick.emit(this.action());\n }\n}\n","<div class=\"mc-navigation-indicator\" role=\"navigation\" aria-label=\"Progress steps\">\n <ul class=\"mc-navigation-indicator__list\">\n @for (step of stepsArray(); track step) {\n <li class=\"mc-navigation-indicator__item\">\n <button\n class=\"mc-navigation-indicator__button\"\n [class.mc-navigation-indicator__button--active]=\"step === active()\"\n [attr.aria-current]=\"step === active() ? 'step' : null\"\n (click)=\"onStepClick(step)\"\n ></button>\n </li>\n }\n </ul>\n\n @if (!hideAction()) { @if (light()) {\n <button\n moz-button\n appearance=\"standard\"\n size=\"s\"\n [ariaLabel]=\"actionLabel()\"\n (click)=\"onActionClick()\"\n [iconPosition]=\"'only'\"\n >\n @if(this.action() === 'pause'){\n <PauseCircle24 icon></PauseCircle24>\n }@else {\n <PlayCircle24 icon></PlayCircle24>\n }\n </button>\n } @else {\n <button\n moz-button\n appearance=\"standard\"\n size=\"s\"\n [ghost]=\"true\"\n [ariaLabel]=\"actionLabel()\"\n [iconPosition]=\"'left'\"\n (click)=\"onActionClick()\"\n >\n @if(this.action() === 'pause'){\n <PauseCircle24 icon></PauseCircle24>\n }@else {\n <PlayCircle24 icon></PlayCircle24>\n }\n <span>{{ actionLabel() }}</span>\n </button>\n } }\n</div>\n","export function generateRandomIntMinMax(min: number, max: number): number {\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n const n = (array[0] % (max - min + 1)) + min;\n return n;\n}\n\nexport function generateRandomInt(numberOfDigits: number): number {\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n const n = array[0] % Math.pow(10, numberOfDigits);\n return n;\n}\n","/**\n * McCombobox — Data models & type guards\n *\n * @packageDocumentation\n */\n\n// ---------------------------------------------------------------------------\n// Option\n// ---------------------------------------------------------------------------\n\nexport interface MozComboboxOption<T = unknown> {\n /** Unique value used for selection comparison */\n value: T;\n /** Display label */\n label: string;\n /** Optional secondary text rendered below the label */\n content?: string;\n /** Whether the option is individually disabled */\n disabled?: boolean;\n /** Optional icon identifier (rendered in the prepend slot) */\n icon?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Section (group header + children)\n// ---------------------------------------------------------------------------\n\nexport interface MozComboboxSection<T = unknown> {\n /** Section heading text */\n title: string;\n /** Options belonging to this section */\n options: MozComboboxOption<T>[];\n /** When `true` in `multiple` mode, clicking the header toggles all children */\n checkable?: boolean;\n /**\n * When `true`, the section header's \"toggle all\" action is disabled, but\n * children remain individually interactable. The header checkbox still\n * reflects the selection state (checked / indeterminate) of its children.\n */\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Union & helpers\n// ---------------------------------------------------------------------------\n\nexport type MozComboboxItem<T = unknown> = MozComboboxOption<T> | MozComboboxSection<T>;\n\nexport type MozComboboxSize = 's' | 'm';\n\n/** Type-guard: returns `true` when the item is a section header */\nexport function isSection<T>(item: MozComboboxItem<T>): item is MozComboboxSection<T> {\n return 'options' in item;\n}\n\n// ---------------------------------------------------------------------------\n// Internal flat representation (used for rendering)\n// ---------------------------------------------------------------------------\n\nexport interface FlatOption<T = unknown> {\n type: 'option';\n value: T;\n label: string;\n content?: string;\n disabled?: boolean;\n icon?: string;\n /** Parent section title (if any) */\n sectionTitle?: string;\n}\n\nexport interface FlatSection {\n type: 'section';\n title: string;\n checkable?: boolean;\n disabled?: boolean;\n}\n\nexport type FlatItem<T = unknown> = FlatOption<T> | FlatSection;\n\nexport function isFlatSection<T>(item: FlatItem<T>): item is FlatSection {\n return item.type === 'section';\n}\n\nexport function isFlatOption<T>(item: FlatItem<T>): item is FlatOption<T> {\n return item.type === 'option';\n}\n","import {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n Overlay,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n CheckCircle24,\n ChevronDown24,\n CrossCircleFilled24,\n Search24,\n} from '@mozaic-ds/icons-angular';\nimport { MozButtonComponent } from '../button';\nimport { MozCheckboxComponent } from '../checkbox/checkbox';\nimport { MozLoaderComponent } from '../loader/loader';\nimport { MozTextInput } from '../text-input/text-input.directive';\nimport { generateRandomInt } from '../utils/generate-random-int';\nimport {\n FlatItem,\n FlatOption,\n FlatSection,\n isFlatOption,\n isFlatSection,\n isSection,\n MozComboboxItem,\n MozComboboxOption,\n MozComboboxSize,\n} from './combobox.model';\n\n/** Height of a single option row in px (matches design system 3rem @ 16px base) */\nexport const ITEM_SIZE_PX = 48;\n\n/** Visible viewport height in px (matches design system max-height of 18.75rem) */\nconst VIEWPORT_HEIGHT_PX = 300;\n\n/**\n * CDK virtual-scroll buffers (px). Sized so lists up to ~110-120 items render\n * fully — no virtualization — which keeps every option in the DOM and sidesteps\n * the CDK 22 zoneless scroll-freeze for all realistic list sizes. Larger lists\n * fall back to true virtual scrolling, where onViewportScroll() keeps the\n * rendered window in sync. (100 / 120 rows × ITEM_SIZE_PX.)\n */\nconst MIN_BUFFER_PX = 100 * ITEM_SIZE_PX;\nconst MAX_BUFFER_PX = 120 * ITEM_SIZE_PX;\n\n@Component({\n selector: 'moz-combobox',\n imports: [\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ScrollingModule,\n MozLoaderComponent,\n MozButtonComponent,\n CrossCircleFilled24,\n ChevronDown24,\n Search24,\n MozTextInput,\n MozCheckboxComponent,\n FormsModule,\n CheckCircle24,\n ],\n templateUrl: './combobox.component.html',\n styleUrl: './combobox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozComboboxComponent),\n multi: true,\n },\n ],\n})\nexport class MozComboboxComponent<T = string> implements ControlValueAccessor {\n private readonly _doc = inject(DOCUMENT);\n private readonly _overlay = inject(Overlay);\n\n /** Timestamp of the last viewport re-measure, to throttle onViewportScroll(). */\n private _lastViewportSync = 0;\n\n /**\n * No-op scroll strategy: the dropdown embeds a CDK virtual-scroll viewport,\n * which is a global `CdkScrollable`. With the default `reposition` strategy,\n * every internal scroll event repositions the overlay, making the panel\n * \"bounce\" and preventing the user from reaching the bottom of long lists.\n */\n readonly scrollStrategy: ScrollStrategy = this._overlay.scrollStrategies.noop();\n\n // -----------------------------------------------------------------------\n // Public inputs\n // -----------------------------------------------------------------------\n\n /** Items to display (flat options or sections) */\n readonly items = input<MozComboboxItem<T>[]>([]);\n\n /** Currently selected value(s) — two-way binding with model() */\n readonly value = model<T | T[] | null>(null);\n\n /** Placeholder text shown when nothing is selected */\n readonly placeholder = input<string>('Select an option');\n\n /** Enable multi-selection */\n readonly multiple = input<boolean>(false);\n\n /** Show counter instead of tags in multi mode */\n readonly compact = input<boolean>(false);\n\n /** Component size variant */\n readonly size = input<MozComboboxSize>('m');\n\n /** Disable the entire component */\n readonly disabled = input<boolean>(false);\n\n /** Readonly mode — no interaction allowed */\n readonly readonly = input<boolean>(false);\n\n /** Show invalid/error styling */\n readonly invalid = input<boolean>(false);\n\n /** Show a clear button when a value is selected */\n readonly clearable = input<boolean>(false);\n\n /** Show a search/filter input inside the dropdown */\n readonly searchable = input<boolean>(false);\n\n /**\n * When true, the search query is split on spaces/commas and each term is\n * matched independently (e.g. \"red shoe\" matches labels containing either\n * \"red\" or \"shoe\"). When false, the query is matched as a single substring\n * so users can search for multi-word labels like \"Item 1\".\n */\n readonly multiSearch = input<boolean>(false);\n\n /**\n * Server-side search mode. When `true`, the dropdown no longer filters\n * `items` locally on the label — it renders exactly what the parent provides.\n * Use it for async autocomplete: subscribe to `(searched)`, fetch matching\n * items from the backend and feed them back through `items`. This lets the\n * search match fields that are not part of the visible label (e.g. an id\n * shown only as secondary `content`). Has no effect when `searchable` is\n * `false`.\n */\n readonly serverSide = input<boolean>(false);\n\n /** Show \"Select all / Clear\" action buttons (multiple only) */\n readonly showActions = input<boolean>(false);\n\n /** Whether the component is in a loading state (e.g. async data) */\n readonly loading = input<boolean>(false);\n\n /** Custom comparator for option values */\n readonly compareWith = input<(a: T, b: T) => boolean>((a, b) => a === b);\n\n /**\n * Predicate used by `selectAll()` to decide whether a non-disabled option\n * should be included. Receives each candidate option and must return `true`\n * to keep it. Defaults to including every selectable option. Use this to\n * apply custom business rules (quotas, role-based filtering, etc.) when the\n * user triggers the \"Select all\" action.\n */\n readonly canSelectAll = input<(option: MozComboboxOption<T>) => boolean>(() => true);\n\n /** Accessible label */\n readonly ariaLabel = input<string | undefined>(undefined);\n\n /** Reference to an external label element */\n readonly ariaLabelledBy = input<string | undefined>(undefined);\n\n // -----------------------------------------------------------------------\n // Customizable text labels (i18n)\n // -----------------------------------------------------------------------\n\n /** Placeholder shown inside the search input */\n readonly searchPlaceholder = input<string>('Find an option...');\n\n /** Text shown when no items match the search query */\n readonly noResultsText = input<string>('No results found');\n\n /** Label for the \"Select all\" action button */\n readonly selectAllText = input<string>('Select all');\n\n /** Label for the \"Clear\" action button */\n readonly clearText = input<string>('Clear');\n\n /** Suffix for the compact counter (e.g. \"3 selected\") */\n readonly selectedSuffix = input<string>('selected');\n\n /** Accessible label for the clear button */\n readonly clearAriaLabel = input<string>('Clear selection');\n\n /** Text shown inside the dropdown while loading */\n readonly loadingText = input<string>('Loading...');\n\n /** Whether to show the \"No results found\" message when no items match */\n readonly showNoResultText = input<boolean>(true);\n\n // -----------------------------------------------------------------------\n // Outputs\n // -----------------------------------------------------------------------\n\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly searched = output<string>();\n\n // -----------------------------------------------------------------------\n // View queries\n // -----------------------------------------------------------------------\n\n private readonly triggerEl = viewChild<ElementRef<HTMLButtonElement>>('triggerBtn');\n private readonly viewportEl = viewChild<CdkVirtualScrollViewport>('viewport');\n\n // -----------------------------------------------------------------------\n // Internal state\n // -----------------------------------------------------------------------\n\n /** Unique instance id */\n readonly uniqId = generateRandomInt(5); // random 5 digits number to avoid ID collisions when multiple comboboxes are present\n readonly comboboxId = `mc-combobox-${this.uniqId}`;\n readonly listboxId = `${this.comboboxId}-listbox`;\n\n /** Whether the dropdown panel is open */\n readonly isOpen = signal(false);\n\n /** Keyboard-focused item index within filteredItems() */\n readonly focusedIndex = signal(-1);\n\n /** Current search/filter query */\n readonly searchQuery = signal('');\n\n /** Disabled state from ControlValueAccessor */\n private readonly _disabledFromForm = signal(false);\n\n /** Cache of value → label for all options ever seen (survives items changes) */\n private readonly _labelCache = new Map<T, string>();\n\n /** CVA callbacks */\n private _onChange: (val: T | T[] | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n // -----------------------------------------------------------------------\n // Computed signals\n // -----------------------------------------------------------------------\n\n /** Effective disabled state (input OR form-driven) */\n readonly isEffectivelyDisabled = computed(() => this.disabled() || this._disabledFromForm());\n\n /** CSS classes for the wrapper element */\n readonly wrapperClasses = computed(() => {\n const classes = ['mc-combobox'];\n if (this.isOpen()) classes.push('mc-combobox--open');\n if (this.multiple()) classes.push('mc-combobox--multiple');\n if (this.invalid()) classes.push('mc-combobox--invalid');\n if (this.isEffectivelyDisabled()) classes.push('mc-combobox--disabled');\n if (this.readonly()) classes.push('mc-combobox--readonly');\n if (this.size() === 's') classes.push('mc-combobox--s');\n return classes.join(' ');\n });\n\n /** Flatten items into a renderable list */\n readonly flatItems = computed<FlatItem<T>[]>(() => {\n const result: FlatItem<T>[] = [];\n for (const item of this.items()) {\n if (isSection(item)) {\n result.push({\n type: 'section',\n title: item.title,\n checkable: item.checkable,\n disabled: item.disabled,\n });\n for (const opt of item.options) {\n result.push({ type: 'option', ...opt, sectionTitle: item.title });\n }\n } else {\n result.push({ type: 'option', ...item });\n }\n }\n return result;\n });\n\n /** Filtered items based on search query */\n readonly filteredItems = computed<FlatItem<T>[]>(() => {\n // Server-side mode: the parent already returns the matching items, render\n // them as-is (no local label filtering).\n if (this.serverSide()) return this.flatItems();\n\n const query = this.searchQuery().trim();\n if (!query) return this.flatItems();\n\n const flat = this.flatItems();\n const parts = this.multiSearch()\n ? query\n .split(/[,\\s]+/)\n .map((s) => s.toLowerCase().trim())\n .filter(Boolean)\n : [query.toLowerCase()];\n\n // Find which section titles have matching children\n const matchingSections = new Set<string>();\n for (const item of flat) {\n if (isFlatOption(item)) {\n const label = item.label.toLowerCase();\n const match = parts.some((p) => label.includes(p));\n if (match && item.sectionTitle) matchingSections.add(item.sectionTitle);\n }\n }\n\n return flat.filter((item) => {\n if (isFlatSection(item)) {\n return matchingSections.has(item.title);\n }\n const label = item.label.toLowerCase();\n return parts.some((p) => label.includes(p));\n });\n });\n\n /** All selectable (non-disabled) option values */\n readonly allSelectableValues = computed<T[]>(() =>\n this.filteredItems()\n .filter((i): i is FlatOption<T> => isFlatOption(i) && !i.disabled)\n .map((i) => i.value)\n );\n\n /** The display string shown on the trigger button */\n readonly displayValue = computed<string>(() => {\n const val = this.value();\n if (val == null) return '';\n const flat = this.flatItems();\n const options = flat.filter(isFlatOption) as FlatOption<T>[];\n const cmp = this.compareWith();\n const cache = this._labelCache;\n\n const findLabel = (v: T): string =>\n options.find((o) => cmp(o.value, v))?.label ?? cache.get(v) ?? '';\n\n if (Array.isArray(val)) {\n return val.map(findLabel).filter(Boolean).join(', ');\n }\n return findLabel(val);\n });\n\n /** Number of selected items (for compact counter) */\n readonly selectedCount = computed<number>(() => {\n const val = this.value();\n if (val == null) return 0;\n if (Array.isArray(val)) return val.length;\n if (this.multiple()) return 0;\n return 1;\n });\n\n /** Whether the clear button should be visible */\n readonly showClear = computed(\n () =>\n this.clearable() &&\n this.selectedCount() > 0 &&\n !this.isEffectivelyDisabled() &&\n !this.readonly()\n );\n\n /** Viewport height: capped to VIEWPORT_HEIGHT_PX, shrinks for small lists */\n readonly viewportHeight = computed(() => {\n const count = this.filteredItems().length;\n return Math.min(count * ITEM_SIZE_PX, VIEWPORT_HEIGHT_PX);\n });\n\n /**\n * Whether all non-disabled children of a section are selected. Disabled\n * children are ignored so the header state stays aligned with what a click\n * on the section checkbox will actually toggle.\n */\n readonly isSectionFullySelected = (sectionTitle: string): boolean => {\n const val = this._currentValueAsArray();\n if (val.length === 0) return false;\n const cmp = this.compareWith();\n const children = this.flatItems()\n .filter(\n (i): i is FlatOption<T> => isFlatOption(i) && i.sectionTitle === sectionTitle && !i.disabled\n )\n .map((i) => i.value);\n return children.length > 0 && children.every((cv) => val.some((sv) => cmp(sv, cv)));\n };\n\n /** Whether a section's non-disabled children are partially selected. */\n readonly isSectionPartiallySelected = (sectionTitle: string): boolean => {\n const val = this._currentValueAsArray();\n if (val.length === 0) return false;\n const cmp = this.compareWith();\n const children = this.flatItems()\n .filter(\n (i): i is FlatOption<T> => isFlatOption(i) && i.sectionTitle === sectionTitle && !i.disabled\n )\n .map((i) => i.value);\n const selectedCount = children.filter((cv) => val.some((sv) => cmp(sv, cv))).length;\n return selectedCount > 0 && selectedCount < children.length;\n };\n\n // -----------------------------------------------------------------------\n // Overlay positions\n // -----------------------------------------------------------------------\n\n readonly overlayPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ];\n\n /** Width of the trigger (to match overlay width) */\n readonly triggerWidth = signal<number>(0);\n\n // -----------------------------------------------------------------------\n // Constructor effects\n // -----------------------------------------------------------------------\n\n constructor() {\n // Propagate value changes to CVA\n effect(() => {\n const val = this.value();\n this._onChange(val);\n });\n\n // Keep the label cache up to date whenever items change\n effect(() => {\n const flat = this.flatItems();\n for (const item of flat) {\n if (isFlatOption(item)) {\n this._labelCache.set(item.value, item.label);\n }\n }\n });\n\n // Inject global overlay styles — CDK teleports content outside the\n // component host so scoped CSS never reaches .cdk-overlay-pane.\n // Check DOM each render — Storybook may remove the tag on navigation.\n afterNextRender(() => {\n if (!this._doc.head.querySelector('style[data-moz-combobox-overlay]')) {\n const style = this._doc.createElement('style');\n style.setAttribute('data-moz-combobox-overlay', '');\n style.textContent = `\n .cdk-overlay-pane .mc-combobox__listbox.mc-combobox__listbox {\n position: static;\n visibility: visible;\n opacity: 1;\n width: 100%;\n }\n /* A bare <input> keeps an intrinsic, size-attribute-based\n min-width, so on a narrow panel the search field refuses to\n shrink and its placeholder overflows the dropdown. Allow it\n to shrink to the available width. */\n .cdk-overlay-pane .mc-combobox__listbox .mc-option-listbox__search .text-input__control {\n min-width: 0;\n }\n .mc-combobox-backdrop {\n background: transparent;\n }\n `;\n this._doc.head.appendChild(style);\n }\n });\n }\n\n // -----------------------------------------------------------------------\n // Open / Close\n // -----------------------------------------------------------------------\n\n open(): void {\n if (this.isOpen() || this.isEffectivelyDisabled() || this.readonly()) {\n return;\n }\n this._updateTriggerWidth();\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n close(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.focusedIndex.set(-1);\n this.closed.emit();\n this._onTouched();\n }\n\n /** Fully reset the combobox: clear value, search query, and close the panel. */\n reset(): void {\n this.value.set(null);\n this.searchQuery.set('');\n this.searched.emit('');\n this.close();\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n // -----------------------------------------------------------------------\n // Trigger keyboard handler (manual ARIA combobox)\n // -----------------------------------------------------------------------\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isEffectivelyDisabled() || this.readonly()) return;\n\n // When the panel is already open, delegate navigation keys to the panel handler\n if (this.isOpen()) {\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Home':\n case 'End':\n case 'Enter':\n this.onPanelKeydown(event);\n return;\n case ' ':\n this.onPanelKeydown(event);\n return;\n case 'Escape':\n event.preventDefault();\n this.close();\n return;\n case 'Tab':\n this.close();\n return;\n }\n }\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.open();\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n event.preventDefault();\n this.open();\n break;\n case 'Escape':\n break;\n case 'Tab':\n break;\n case 'Home':\n case 'End':\n event.preventDefault();\n this.open();\n break;\n }\n }\n\n // -----------------------------------------------------------------------\n // Panel keyboard handler\n // -----------------------------------------------------------------------\n\n onPanelKeydown(event: KeyboardEvent): void {\n const items = this.filteredItems();\n const navigableIndices = items\n .map((item, i) => ({ item, i }))\n .filter(({ item }) => isFlatOption(item) && !(item as FlatOption<T>).disabled)\n .map(({ i }) => i);\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n const cur = this.focusedIndex();\n const next = navigableIndices.find((i) => i > cur) ?? navigableIndices[0];\n if (next !== undefined) {\n this.focusedIndex.set(next);\n this.viewportEl()?.scrollToIndex(next);\n }\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n const cur = this.focusedIndex();\n const prev =\n [...navigableIndices].reverse().find((i) => i < cur) ??\n navigableIndices[navigableIndices.length - 1];\n if (prev !== undefined) {\n this.focusedIndex.set(prev);\n this.viewportEl()?.scrollToIndex(prev);\n }\n break;\n }\n case 'Enter':\n case ' ': {\n // Allow space to type in the search input\n if (event.key === ' ' && (event.target as HTMLElement).tagName === 'INPUT') {\n break;\n }\n const fi = this.focusedIndex();\n if (fi >= 0) {\n const item = items[fi];\n if (isFlatOption(item) && !item.disabled) {\n event.preventDefault();\n this.selectOption(item.value as T);\n }\n }\n break;\n }\n case 'Home': {\n event.preventDefault();\n if (navigableIndices.length) {\n this.focusedIndex.set(navigableIndices[0]);\n this.viewportEl()?.scrollToIndex(navigableIndices[0]);\n }\n break;\n }\n case 'End': {\n event.preventDefault();\n if (navigableIndices.length) {\n const last = navigableIndices[navigableIndices.length - 1];\n this.focusedIndex.set(last);\n this.viewportEl()?.scrollToIndex(last);\n }\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.close();\n this.triggerEl()?.nativeElement.focus();\n break;\n case 'Tab':\n this.close();\n break;\n }\n }\n\n // -----------------------------------------------------------------------\n // Selection handling\n // -----------------------------------------------------------------------\n\n selectOption(optionValue: T): void {\n if (this.multiple()) {\n const cmp = this.compareWith();\n const current = this._currentValueAsArray();\n const idx = current.findIndex((v) => cmp(v, optionValue));\n const next = idx >= 0 ? current.filter((_, i) => i !== idx) : [...current, optionValue];\n this.value.set(next as T & T[]);\n } else {\n this.value.set(optionValue);\n this.close();\n this.triggerEl()?.nativeElement.focus();\n }\n }\n\n // -----------------------------------------------------------------------\n // Actions\n // -----------------------------------------------------------------------\n\n selectAll(): void {\n if (!this.multiple()) return;\n const cmp = this.compareWith();\n const predicate = this.canSelectAll();\n const disabledValues = this.flatItems()\n .filter((i): i is FlatOption<T> => isFlatOption(i) && !!i.disabled)\n .map((i) => i.value);\n const current = this._currentValueAsArray();\n const keptDisabled = current.filter((sv) => disabledValues.some((dv) => cmp(sv, dv)));\n const next = this.filteredItems()\n .filter((i): i is FlatOption<T> => isFlatOption(i) && !i.disabled && predicate(i))\n .map((i) => i.value);\n for (const dv of keptDisabled) {\n if (!next.some((sv) => cmp(sv, dv))) next.push(dv);\n }\n this.value.set(next as T & T[]);\n }\n\n clearSelection(): void {\n const cmp = this.compareWith();\n const disabledValues = this.flatItems()\n .filter((i): i is FlatOption<T> => isFlatOption(i) && !!i.disabled)\n .map((i) => i.value);\n\n if (this.multiple()) {\n const current = this._currentValueAsArray();\n const kept = current.filter((sv) => disabledValues.some((dv) => cmp(sv, dv)));\n this.value.set(kept as T & T[]);\n } else {\n const raw = this.value();\n if (raw != null && !Array.isArray(raw) && disabledValues.some((dv) => cmp(raw, dv))) {\n return;\n }\n this.value.set(null);\n }\n }\n\n onClear(event: MouseEvent): void {\n event.stopPropagation();\n this.clearSelection();\n this.triggerEl()?.nativeElement.focus();\n }\n\n // -----------------------------------------------------------------------\n // Section toggle\n // -----------------------------------------------------------------------\n\n toggleSection(sectionTitle: string): void {\n if (!this.multiple()) return;\n const section = this.flatItems().find(\n (i): i is FlatSection => isFlatSection(i) && i.title === sectionTitle\n );\n if (section?.disabled) return;\n const cmp = this.compareWith();\n const childValues = this.flatItems()\n .filter(\n (i): i is FlatOption<T> => isFlatOption(i) && i.sectionTitle === sectionTitle && !i.disabled\n )\n .map((i) => i.value);\n\n const current = this._currentValueAsArray();\n let next: T[];\n if (this.isSectionFullySelected(sectionTitle)) {\n next = current.filter((sv) => !childValues.some((cv) => cmp(sv, cv)));\n } else {\n const toAdd = childValues.filter((cv) => !current.some((sv) => cmp(sv, cv)));\n next = [...current, ...toAdd];\n }\n this.value.set(next as T & T[]);\n }\n\n // -----------------------------------------------------------------------\n // Search\n // -----------------------------------------------------------------------\n\n onSearchInput(event: Event): void {\n const query = (event.target as HTMLInputElement).value;\n this.searchQuery.set(query);\n this.searched.emit(query);\n }\n\n onSearchKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.stopPropagation();\n this.onPanelKeydown(event);\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n this.triggerEl()?.nativeElement.focus();\n }\n }\n\n // -----------------------------------------------------------------------\n // Overlay events\n // -----------------------------------------------------------------------\n\n onOverlayOutsideClick(): void {\n this.close();\n }\n\n onOverlayAttached(): void {\n this._updateTriggerWidth();\n if (this.searchable()) {\n // viewChild can't resolve elements inside CDK overlay ng-template\n // (they live in a separate view container). Query the DOM directly.\n setTimeout(() => {\n const input = this._doc.querySelector<HTMLInputElement>(\n '.mc-combobox__listbox .mc-option-listbox__search input'\n );\n input?.focus();\n });\n }\n }\n\n /**\n * Zoneless fix for the virtual-scroll viewport.\n *\n * On Angular/CDK 22 in zoneless mode the viewport never recomputes its\n * rendered range while the user scrolls: `onContentScrolled` doesn't refresh\n * the window and the content transform stays frozen, so the panel \"bounces\"\n * and never reaches the bottom of the list. (CDK 21 used a different path and\n * was unaffected — hence Storybook on 21 looked fine while the 22 consumer\n * bounced.) Calling the viewport's public `checkViewportSize()` re-measures\n * and re-renders the correct window; it is idempotent at a valid scroll\n * position (verified — repeated calls don't move the scroll), so there is no\n * feedback loop. The handler receives the viewport through the `#viewport`\n * template reference, which resolves correctly even though the viewport lives\n * in the overlay portal (unlike `viewChild`).\n *\n * Throttled to ~one re-measure per frame (16 ms). Browsers already coalesce\n * scroll events to roughly one per animation frame — even for a high-frequency\n * trackpad / momentum scroll — but the throttle is a defensive cap so this\n * synchronous reflow can never be called in a tight burst. `checkViewportSize()`\n * is idempotent at a valid scroll offset (verified on the real CDK 22 zoneless\n * runtime — repeated calls don't move the scroll), so it never fights the\n * scroll position and there is no feedback loop.\n */\n onViewportScroll(viewport: CdkVirtualScrollViewport): void {\n const now = performance.now();\n if (now - this._lastViewportSync < 16) {\n return;\n }\n this._lastViewportSync = now;\n viewport.checkViewportSize();\n }\n\n /** Coerce the current value into an array (safe for .some/.filter/.every). */\n private _currentValueAsArray(): T[] {\n const raw = this.value();\n if (Array.isArray(raw)) return raw;\n if (raw != null && raw !== '') return [raw];\n return [];\n }\n\n // -----------------------------------------------------------------------\n // ControlValueAccessor\n // -----------------------------------------------------------------------\n\n writeValue(val: T | T[] | null): void {\n this.value.set(val);\n }\n\n registerOnChange(fn: (val: T | T[] | null) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabledFromForm.set(isDisabled);\n }\n\n // -----------------------------------------------------------------------\n // Template helpers\n // -----------------------------------------------------------------------\n\n readonly isFlatSection = isFlatSection;\n readonly isFlatOption = isFlatOption;\n readonly itemSizePx = ITEM_SIZE_PX;\n readonly minBufferPx = MIN_BUFFER_PX;\n readonly maxBufferPx = MAX_BUFFER_PX;\n\n trackByFlatItem(_index: number, item: FlatItem<T>): string {\n if (isFlatSection(item)) return `section-${item.title}`;\n return `option-${item.label}`;\n }\n\n /** Set of currently selected values, recomputed reactively for OnPush */\n readonly selectedValues = computed<T[]>(() => {\n const val = this.value();\n if (val == null) return [];\n if (Array.isArray(val)) return val;\n return [val];\n });\n\n /** Whether a given option value is currently selected */\n isOptionSelected(optionValue: T): boolean {\n const cmp = this.compareWith();\n return this.selectedValues().some((v) => cmp(v, optionValue));\n }\n\n // -----------------------------------------------------------------------\n // Private helpers\n // -----------------------------------------------------------------------\n\n private _updateTriggerWidth(): void {\n const el = this.triggerEl()?.nativeElement;\n if (el) {\n this.triggerWidth.set(el.closest('.mc-combobox__input')?.clientWidth ?? el.clientWidth);\n }\n }\n}\n","<!-- ====================================================================== -->\n<!-- TRIGGER -->\n<!-- ====================================================================== -->\n<div [class]=\"wrapperClasses()\">\n <div class=\"mc-combobox__input\">\n <button\n #triggerBtn\n [id]=\"comboboxId + '-trigger'\"\n type=\"button\"\n class=\"mc-combobox__control\"\n role=\"combobox\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n [disabled]=\"isEffectivelyDisabled()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"\n focusedIndex() >= 0 ? comboboxId + '-opt-' + focusedIndex() : null\n \"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-invalid]=\"invalid() || null\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (displayValue()) {\n <span class=\"mc-combobox__value\">{{ displayValue() }}</span>\n } @else {\n <span class=\"mc-combobox__placeholder\">{{ placeholder() }}</span>\n }\n </button>\n\n <!-- Counter (compact + multiple) -->\n @if (multiple() && compact() && selectedCount() > 0) {\n <span [id]=\"comboboxId + '-counter'\" class=\"mc-combobox__counter\" aria-live=\"polite\">\n {{ selectedCount() }} {{ selectedSuffix() }}\n </span>\n }\n\n <!-- Clear button -->\n @if (showClear()) {\n <button\n [id]=\"comboboxId + '-clear'\"\n type=\"button\"\n class=\"mc-combobox__clear\"\n [attr.aria-label]=\"clearAriaLabel()\"\n (click)=\"onClear($event)\"\n >\n <CrossCircleFilled24 />\n </button>\n }\n\n <!-- Trigger loader -->\n @if (loading()) {\n <moz-loader\n [id]=\"comboboxId + '-trigger-loader'\"\n size=\"s\"\n [appearance]=\"'accent'\"\n class=\"mc-combobox__loader\"\n />\n }\n\n <!-- Chevron -->\n <button\n [id]=\"comboboxId + '-chevron'\"\n type=\"button\"\n class=\"mc-combobox__icon\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n (click)=\"toggle()\"\n >\n <ChevronDown24 />\n </button>\n </div>\n</div>\n\n<!-- ====================================================================== -->\n<!-- OVERLAY / DROPDOWN -->\n<!-- ====================================================================== -->\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayWidth]=\"triggerWidth()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"mc-combobox-backdrop\"\n (backdropClick)=\"onOverlayOutsideClick()\"\n (attach)=\"onOverlayAttached()\"\n>\n <div\n [id]=\"comboboxId + '-panel'\"\n class=\"mc-option-listbox mc-listbox__content mc-combobox__listbox\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n <!-- Search -->\n @if (searchable()) {\n <div [id]=\"comboboxId + '-search'\" class=\"mc-option-listbox__search\">\n <Search24 icon />\n <input\n #searchInput\n [id]=\"comboboxId + '-search-input'\"\n moz-text-input\n type=\"text\"\n [placeholder]=\"searchPlaceholder()\"\n autocomplete=\"off\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"listboxId\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n [size]=\"'s'\"\n />\n </div>\n <hr class=\"mc-option-listbox__separator\" />\n }\n\n <!-- Actions (multiple only) -->\n @if (showActions() && multiple()) {\n <div [id]=\"comboboxId + '-actions'\" class=\"mc-option-listbox__actions\">\n <button\n [id]=\"comboboxId + '-select-all'\"\n moz-button\n type=\"button\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n [appearance]=\"'accent'\"\n (click)=\"selectAll()\"\n >\n {{ selectAllText() }}\n </button>\n <button\n [id]=\"comboboxId + '-clear-selection'\"\n moz-button\n type=\"button\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n (click)=\"clearSelection()\"\n >\n {{ clearText() }}\n </button>\n </div>\n <hr class=\"mc-option-listbox__separator\" />\n }\n\n <!-- Listbox with virtual scroll -->\n <div\n #listbox\n role=\"listbox\"\n [id]=\"listboxId\"\n class=\"mc-option-listbox__list mc-combobox__virtual-host\"\n [attr.aria-multiselectable]=\"multiple() || null\"\n [attr.aria-label]=\"ariaLabel() ?? 'Options'\"\n [attr.aria-busy]=\"loading() || null\"\n [attr.aria-activedescendant]=\"\n focusedIndex() >= 0 ? comboboxId + '-opt-' + focusedIndex() : null\n \"\n tabindex=\"-1\"\n >\n @if (loading()) {\n <div [id]=\"comboboxId + '-loading'\" class=\"mc-combobox__loading\" role=\"status\">\n <moz-loader size=\"s\" [appearance]=\"'accent'\" [text]=\"loadingText()\" />\n </div>\n } @else if (filteredItems().length === 0 && showNoResultText() && searchQuery().length > 0) {\n <div\n [id]=\"comboboxId + '-empty'\"\n class=\"mc-option-listbox__empty\"\n role=\"presentation\"\n aria-live=\"polite\"\n >\n {{ noResultsText() }}\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n #viewport\n [id]=\"comboboxId + '-viewport'\"\n [itemSize]=\"itemSizePx\"\n [minBufferPx]=\"minBufferPx\"\n [maxBufferPx]=\"maxBufferPx\"\n [style.height.px]=\"viewportHeight()\"\n class=\"mc-combobox__viewport\"\n (scroll)=\"onViewportScroll(viewport)\"\n >\n <ng-container\n *cdkVirtualFor=\"let item of filteredItems(); let i = index; trackBy: trackByFlatItem\"\n >\n <!-- Section header -->\n @if (isFlatSection(item)) {\n <div\n [id]=\"comboboxId + '-section-' + i\"\n class=\"mc-option-listbox__item mc-option-listbox__item--section\"\n [class.mc-option-listbox__item--selectable]=\"\n item.checkable && multiple() && !item.disabled\n \"\n [class.mc-option-listbox__item--disabled]=\"item.disabled\"\n [class.mc-option-listbox__item--selected]=\"\n item.checkable &&\n multiple() &&\n (isSectionFullySelected(item.title) || isSectionPartiallySelected(item.title))\n \"\n role=\"presentation\"\n (click)=\"\n item.checkable && multiple() && !item.disabled ? toggleSection(item.title) : null\n \"\n >\n <div class=\"mc-option-listbox__label\">\n <div class=\"mc-option-listbox__content\">\n <span class=\"mc-option-listbox__section-title\">{{ item.title }}</span>\n </div>\n <div class=\"mc-option-listbox__spacer\"></div>\n @if (item.checkable && multiple()) {\n <moz-checkbox\n class=\"mc-option-listbox__checkbox\"\n [id]=\"comboboxId + '-section-cb-' + i\"\n [ngModel]=\"isSectionFullySelected(item.title)\"\n [indeterminate]=\"isSectionPartiallySelected(item.title)\"\n [disabled]=\"!!item.disabled\"\n />\n }\n </div>\n </div>\n }\n\n <!-- Option -->\n @if (isFlatOption(item)) {\n <div\n role=\"option\"\n [id]=\"comboboxId + '-opt-' + i\"\n [attr.aria-selected]=\"isOptionSelected($any(item.value))\"\n [attr.aria-disabled]=\"item.disabled || null\"\n class=\"mc-option-listbox__item\"\n [class.mc-option-listbox__item--selectable]=\"!item.disabled\"\n [class.mc-option-listbox__item--disabled]=\"item.disabled\"\n [class.mc-option-listbox__item--selected]=\"isOptionSelected($any(item.value))\"\n [class.mc-option-listbox__item--active]=\"focusedIndex() === i\"\n (click)=\"!item.disabled && selectOption($any(item.value))\"\n (mouseenter)=\"focusedIndex.set(i)\"\n >\n <div class=\"mc-option-listbox__label\">\n @if (item.icon) {\n <div class=\"mc-option-listbox__prepend\">\n <span class=\"mc-option-listbox__icon\">{{ item.icon }}</span>\n </div>\n }\n <div class=\"mc-option-listbox__content\">\n <span class=\"mc-option-listbox__text\">{{ item.label }}</span>\n @if (item.content) {\n <span class=\"mc-option-listbox__additional\">{{ item.content }}</span>\n }\n </div>\n <div class=\"mc-option-listbox__spacer\"></div>\n\n <!-- Selection indicator -->\n @if (multiple()) {\n <moz-checkbox\n class=\"mc-option-listbox__checkbox\"\n [id]=\"comboboxId + '-cb-' + i\"\n [ngModel]=\"isOptionSelected($any(item.value))\"\n [disabled]=\"!!item.disabled\"\n />\n } @else {\n <CheckCircle24 class=\"mc-option-listbox__selection-icon\" />\n }\n </div>\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n </div>\n</ng-template>\n","import { ComponentHarness, TestKey } from '@angular/cdk/testing';\n\n/**\n * Harness for a single option inside the combobox dropdown.\n */\nexport class MozComboboxOptionHarness extends ComponentHarness {\n static hostSelector = '.mc-option-listbox__item:not(.mc-option-listbox__item--section)';\n\n async getLabel(): Promise<string> {\n const text = await this.locatorForOptional('.mc-option-listbox__text')();\n return text ? text.text() : '';\n }\n\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-selected')) === 'true';\n }\n\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n async select(): Promise<void> {\n const host = await this.host();\n await host.click();\n }\n}\n\n/**\n * Harness for the McCombobox component.\n *\n * Usage:\n * ```ts\n * const harness = await loader.getHarness(McComboboxHarness);\n * await harness.open();\n * await harness.selectOption({ label: 'Option 1' });\n * expect(await harness.getDisplayValue()).toBe('Option 1');\n * ```\n */\nexport class MozComboboxHarness extends ComponentHarness {\n static hostSelector = '.mc-combobox';\n\n // -- Locators ---------------------------------------------------------------\n\n private _getTrigger = this.locatorFor('[role=\"combobox\"]');\n private _getClearButton = this.locatorForOptional('.mc-combobox__clear');\n private _getSearchInput = this.documentRootLocatorFactory().locatorForOptional(\n '.mc-option-listbox__search input[moz-text-input]',\n );\n\n // -- Open / Close -----------------------------------------------------------\n\n async open(): Promise<void> {\n if (await this.isOpen()) return;\n const trigger = await this._getTrigger();\n await trigger.click();\n }\n\n async close(): Promise<void> {\n if (!(await this.isOpen())) return;\n const trigger = await this._getTrigger();\n await trigger.sendKeys(TestKey.ESCAPE);\n }\n\n async isOpen(): Promise<boolean> {\n const trigger = await this._getTrigger();\n return (await trigger.getAttribute('aria-expanded')) === 'true';\n }\n\n // -- Value ------------------------------------------------------------------\n\n async getDisplayValue(): Promise<string> {\n const trigger = await this._getTrigger();\n return trigger.text();\n }\n\n async getPlaceholder(): Promise<string> {\n const placeholder = await this.locatorForOptional('.mc-combobox__placeholder')();\n return placeholder ? placeholder.text() : '';\n }\n\n // -- Options ----------------------------------------------------------------\n\n async getOptions(): Promise<MozComboboxOptionHarness[]> {\n await this.open();\n return this.documentRootLocatorFactory().locatorForAll(MozComboboxOptionHarness)();\n }\n\n async selectOption(filter: { label: string }): Promise<void> {\n await this.open();\n const options = await this.getOptions();\n for (const opt of options) {\n if ((await opt.getLabel()) === filter.label) {\n await opt.select();\n return;\n }\n }\n throw new Error(`Option with label \"${filter.label}\" not found`);\n }\n\n // -- Actions ----------------------------------------------------------------\n\n async clear(): Promise<void> {\n const clearBtn = await this._getClearButton();\n if (!clearBtn) throw new Error('Clear button not found. Is clearable enabled?');\n await clearBtn.click();\n }\n\n async search(query: string): Promise<void> {\n await this.open();\n const input = await this._getSearchInput();\n if (!input) throw new Error('Search input not found. Is searchable enabled?');\n await input.clear();\n await input.sendKeys(query);\n }\n\n // -- State checks -----------------------------------------------------------\n\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mc-combobox--disabled');\n }\n\n async isInvalid(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mc-combobox--invalid');\n }\n\n async isReadonly(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mc-combobox--readonly');\n }\n\n async getSelectedCount(): Promise<number> {\n const counter = await this.locatorForOptional('.mc-combobox__counter')();\n if (!counter) return 0;\n const text = await counter.text();\n const match = text.match(/(\\d+)/);\n return match ? parseInt(match[1], 10) : 0;\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { map, Observable, of, take, tap } from 'rxjs';\nimport { FlatNode, LoadChildrenFn, TreeNode } from '../models/tree.model';\n\n@Injectable()\nexport class TreeStateService<T = unknown> {\n readonly expandedIds = signal<Set<string | number>>(new Set());\n readonly loadingIds = signal<Set<string | number>>(new Set());\n readonly internalNodes = signal<TreeNode<T>[]>([]);\n readonly loadChildrenFn = signal<LoadChildrenFn<T> | null>(null);\n\n /**\n * Parent IDs for which children have been patched in (via lazy-load).\n * Grows monotonically — consumers diff against their own \"processed\" set.\n * Not emitted for statically-populated children present at init.\n */\n readonly loadedParentIds = signal<ReadonlySet<string | number>>(new Set());\n\n readonly flatVisibleNodes = computed<FlatNode<T>[]>(() => {\n const result: FlatNode<T>[] = [];\n this._flatten(this.internalNodes(), result, 0, null);\n return result;\n });\n\n private _flatten(\n nodes: TreeNode<T>[],\n result: FlatNode<T>[],\n depth: number,\n parentId: string | number | null\n ): void {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n result.push({\n node,\n depth,\n parentId,\n siblingCount: nodes.length,\n posInSet: i + 1,\n });\n if (this.expandedIds().has(node.id) && node.children && node.children.length > 0) {\n this._flatten(node.children, result, depth + 1, node.id);\n }\n }\n }\n\n setExpanded(ids: Set<string | number>): void {\n this.expandedIds.set(new Set(ids));\n }\n\n toggleExpanded(id: string | number): void {\n this.expandedIds.update((current) => {\n const next = new Set(current);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n }\n\n expandAndLoad(node: TreeNode<T>): Observable<void> {\n const wasExpanded = this.expandedIds().has(node.id);\n this.toggleExpanded(node.id);\n if (!wasExpanded) {\n return this.loadChildrenFor(node).pipe(map(() => undefined));\n }\n return of(undefined);\n }\n\n /**\n * Loads a node's children on demand when they haven't been loaded yet.\n * Idempotent: a no-op (emits `[]`) when there is no `loadChildrenFn`, the\n * node is already loading, or its children are already present. This is the\n * single load primitive shared by the click-driven `expandAndLoad` and the\n * declarative auto-load effect in `MozTreeComponent` — so expanding a node\n * by clicking it and by writing to `expandedIds` go through the same path.\n */\n loadChildrenFor(node: TreeNode<T>): Observable<TreeNode<T>[]> {\n const loadFn = this.loadChildrenFn();\n const resolved = this.findNode(node.id) ?? node;\n if (!loadFn || this.loadingIds().has(node.id) || resolved.children !== undefined) {\n return of([]);\n }\n this.addLoading(node.id);\n return (loadFn as LoadChildrenFn)(node as TreeNode).pipe(\n take(1),\n tap((children) => {\n this.patchChildren(node.id, children as TreeNode<T>[]);\n this.removeLoading(node.id);\n })\n ) as unknown as Observable<TreeNode<T>[]>;\n }\n\n addLoading(id: string | number): void {\n this.loadingIds.update((s) => new Set([...s, id]));\n }\n\n removeLoading(id: string | number): void {\n this.loadingIds.update((s) => {\n const next = new Set(s);\n next.delete(id);\n return next;\n });\n }\n\n patchChildren(nodeId: string | number, children: TreeNode<T>[]): void {\n this.internalNodes.update((nodes) => this._patchNode(nodes, nodeId, children));\n this.loadedParentIds.update((set) => {\n const next = new Set(set);\n next.add(nodeId);\n return next;\n });\n }\n\n private _patchNode(\n nodes: TreeNode<T>[],\n targetId: string | number,\n children: TreeNode<T>[]\n ): TreeNode<T>[] {\n return nodes.map((n) => {\n if (n.id === targetId) {\n return { ...n, children };\n }\n if (n.children) {\n return { ...n, children: this._patchNode(n.children, targetId, children) };\n }\n return n;\n });\n }\n\n findNode(nodeId: string | number): TreeNode<T> | null {\n return this._findNodeRecursive(this.internalNodes(), nodeId);\n }\n\n private _findNodeRecursive(nodes: TreeNode<T>[], id: string | number): TreeNode<T> | null {\n for (const node of nodes) {\n if (node.id === id) return node;\n if (node.children) {\n const found = this._findNodeRecursive(node.children as TreeNode<T>[], id);\n if (found) return found;\n }\n }\n return null;\n }\n\n findParentId(nodeId: string | number): string | number | null {\n const flat = this.flatVisibleNodes();\n const entry = flat.find((f) => f.node.id === nodeId);\n return entry?.parentId ?? null;\n }\n}\n","import { computed, inject, Injectable, signal } from '@angular/core';\nimport { TreeNode, TreeSelectionMode } from '../models/tree.model';\nimport { TreeStateService } from './tree-state';\n\n@Injectable()\nexport class TreeSelectionService<T = unknown> {\n private readonly stateService = inject(TreeStateService);\n readonly selectedIds = signal<Set<string | number>>(new Set());\n readonly selectionMode = signal<TreeSelectionMode>('none');\n readonly rootNodes = signal<TreeNode<T>[]>([]);\n readonly canSelectFn = signal<((node: TreeNode<T>) => boolean) | null>(null);\n\n setSelectedIds(ids: Set<string | number>): void {\n const pred = this.canSelectFn();\n if (!pred) {\n this.selectedIds.set(new Set(ids));\n return;\n }\n const next = new Set<string | number>();\n for (const id of ids) {\n const node = this._resolveNode({ id } as TreeNode<T>);\n if (pred(node)) next.add(id);\n }\n this.selectedIds.set(next);\n }\n\n setMode(mode: TreeSelectionMode): void {\n this.selectionMode.set(mode);\n }\n\n setRootNodes(nodes: TreeNode<T>[]): void {\n this.rootNodes.set(nodes);\n }\n\n setCanSelect(fn: ((node: TreeNode<T>) => boolean) | null): void {\n this.canSelectFn.set(fn);\n }\n\n canSelect(node: TreeNode<T>): boolean {\n const pred = this.canSelectFn();\n return pred ? pred(node) : true;\n }\n\n isSelected(id: string | number): boolean {\n return this.selectedIds().has(id);\n }\n\n /**\n * A node is considered disabled only by its own `disabled` flag — a disabled\n * parent does not propagate the state to its descendants. Children of a\n * disabled parent remain individually interactable; the parent itself just\n * has its bulk \"toggle all\" action locked. This mirrors the combobox's\n * disabled-section semantics.\n */\n isDisabled(node: TreeNode<T>): boolean {\n return !!node.disabled;\n }\n\n /**\n * A node is indeterminate when it has loaded children AND at least one\n * descendant is selected without the node being fully checked. Disabled\n * descendants count so a pre-selected disabled leaf still surfaces on the\n * parent (useful when the parent itself is also disabled).\n */\n isIndeterminate(node: TreeNode<T>): boolean {\n if (this.isCheckedComputed(node)) return false;\n const resolved = this._resolveNode(node);\n const allLeaves = this._collectLeafIds(resolved, { includeDisabled: true });\n if (allLeaves.length === 0) return false;\n return allLeaves.some((id) => this.selectedIds().has(id));\n }\n\n /**\n * A node is checked when:\n * - Leaf node (no children or children not loaded): its ID is in selectedIds\n * - Parent with loaded children: ALL leaf descendants are selected\n */\n isCheckedComputed(node: TreeNode<T>): boolean {\n if (this.selectionMode() === 'radio') {\n return this.selectedIds().has(node.id);\n }\n const resolved = this._resolveNode(node);\n const leaves = this._collectLeafIds(resolved);\n // Node is a leaf or has no loaded children\n if (leaves.length === 0) {\n return this.selectedIds().has(node.id);\n }\n return leaves.every((id) => this.selectedIds().has(id));\n }\n\n /**\n * Select a node: add all leaf descendant IDs (or the node's own ID if leaf).\n */\n selectNode(node: TreeNode<T>): void {\n if (!this.canSelect(node)) return;\n if (this.selectionMode() === 'radio') {\n this.selectedIds.set(new Set([node.id]));\n return;\n }\n const resolved = this._resolveNode(node);\n this.selectedIds.update((current) => {\n const next = new Set(current);\n const leaves = this._collectLeafIds(resolved);\n if (leaves.length === 0) {\n // Node is a leaf\n if (!node.disabled) next.add(node.id);\n } else {\n leaves.forEach((id) => next.add(id));\n }\n return next;\n });\n }\n\n /**\n * Deselect a node: remove all leaf descendant IDs (or the node's own ID if leaf).\n * Also remove the node's own ID in case it's in the set from external sources.\n */\n deselectNode(node: TreeNode<T>): void {\n if (this.selectionMode() === 'radio') {\n this.selectedIds.update((current) => {\n const next = new Set(current);\n next.delete(node.id);\n return next;\n });\n return;\n }\n const resolved = this._resolveNode(node);\n this.selectedIds.update((current) => {\n const next = new Set(current);\n // Always remove the node itself\n next.delete(node.id);\n // Remove all known descendants (leaf + parents)\n this._collectAllDescendantIds(resolved).forEach((id) => next.delete(id));\n return next;\n });\n }\n\n toggleNode(node: TreeNode<T>): void {\n if (this.isCheckedComputed(node)) {\n this.deselectNode(node);\n } else {\n this.selectNode(node);\n }\n }\n\n /**\n * Called when children are loaded for a node.\n * - If parent ID was in selectedIds: replace it with children's leaf IDs (propagate down).\n * - If parent ID was NOT in selectedIds: remove any orphan children IDs that\n * may have been left from a prior bulk operation (e.g. Select All → deselect parent).\n */\n propagateOnChildrenLoaded(parentId: string | number): void {\n const parent = this._resolveNode({ id: parentId } as TreeNode<T>);\n if (!parent || !parent.children || parent.children.length === 0) return;\n\n const selected = this.selectedIds();\n const next = new Set(selected);\n\n if (selected.has(parentId)) {\n // Parent was selected → replace with leaf children\n next.delete(parentId);\n for (const child of parent.children) {\n if (!(child as TreeNode<T>).disabled) {\n const childLeaves = this._collectLeafIds(this._resolveNode(child as TreeNode<T>));\n if (childLeaves.length === 0) {\n next.add(child.id);\n } else {\n childLeaves.forEach((id) => next.add(id));\n }\n }\n }\n } else {\n // Parent was NOT selected → clean up any orphan descendant IDs\n this._collectAllDescendantIds(parent).forEach((id) => next.delete(id));\n }\n\n this.selectedIds.set(next);\n }\n\n /**\n * Collect leaf-level IDs (terminal nodes that have no loaded children).\n * Returns empty array if the node itself is a leaf.\n * When `includeDisabled` is true, disabled descendants are also collected —\n * used by the indeterminate computation so pre-selected disabled leaves\n * count toward a parent's state.\n */\n private _collectLeafIds(\n node: TreeNode<T>,\n opts: { includeDisabled?: boolean } = {}\n ): Array<string | number> {\n const resolved = this._resolveNode(node);\n if (!resolved.children || resolved.children.length === 0) {\n return [];\n }\n const ids: Array<string | number> = [];\n for (const child of resolved.children) {\n if (!opts.includeDisabled && (child as TreeNode<T>).disabled) continue;\n const resolvedChild = this._resolveNode(child as TreeNode<T>);\n const childLeaves = this._collectLeafIds(resolvedChild, opts);\n if (childLeaves.length === 0) {\n // This child is a leaf\n ids.push(resolvedChild.id);\n } else {\n ids.push(...childLeaves);\n }\n }\n return ids;\n }\n\n /**\n * Collect ALL descendant IDs (both parents and leaves) for thorough cleanup on deselect.\n */\n private _collectAllDescendantIds(node: TreeNode<T>): Array<string | number> {\n const resolved = this._resolveNode(node);\n const ids: Array<string | number> = [];\n if (!resolved.children) return ids;\n for (const child of resolved.children) {\n const resolvedChild = this._resolveNode(child as TreeNode<T>);\n ids.push(resolvedChild.id);\n ids.push(...this._collectAllDescendantIds(resolvedChild));\n }\n return ids;\n }\n\n readonly allSelectedIds = computed(() => new Set(this.selectedIds()));\n\n private _resolveNode(node: TreeNode<T>): TreeNode<T> {\n return (this.stateService.findNode(node.id) as TreeNode<T>) ?? node;\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { TreeStateService } from './tree-state';\nimport { TreeSelectionService } from './tree-selection';\nimport { FlatNode, TreeNode } from '../models/tree.model';\n\n@Injectable()\nexport class TreeKeyboardService<T = unknown> {\n private readonly state = inject<TreeStateService<T>>(TreeStateService);\n private readonly selection = inject<TreeSelectionService<T>>(TreeSelectionService);\n\n readonly focusedNodeId = signal<string | number | null>(null);\n\n initFocus(): void {\n if (this.focusedNodeId() !== null) return;\n const flat = this.state.flatVisibleNodes();\n if (flat.length > 0) {\n this.focusedNodeId.set(flat[0].node.id);\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const flat = this.state.flatVisibleNodes();\n if (flat.length === 0) return;\n\n const focusedId = this.focusedNodeId();\n const currentIndex = focusedId !== null ? flat.findIndex((f) => f.node.id === focusedId) : -1;\n\n if (currentIndex === -1 && !['Home', 'End'].includes(event.key)) return;\n\n const current: FlatNode<T> | undefined = flat[currentIndex];\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n const next = flat[currentIndex + 1];\n if (next) this._setFocusAndScroll(next.node.id);\n break;\n }\n\n case 'ArrowUp': {\n event.preventDefault();\n const prev = flat[currentIndex - 1];\n if (prev) this._setFocusAndScroll(prev.node.id);\n break;\n }\n\n case 'ArrowRight': {\n event.preventDefault();\n if (!current) break;\n const isExpanded = this.state.expandedIds().has(current.node.id);\n\n if (this._hasChildren(current.node) && !isExpanded) {\n this.state.expandAndLoad(current.node as TreeNode<T>).subscribe();\n } else if (isExpanded) {\n const firstChild = flat[currentIndex + 1];\n if (firstChild && firstChild.depth > current.depth) {\n this._setFocusAndScroll(firstChild.node.id);\n }\n }\n break;\n }\n\n case 'ArrowLeft': {\n event.preventDefault();\n if (!current) break;\n const isExpanded = this.state.expandedIds().has(current.node.id);\n\n if (isExpanded) {\n this.state.toggleExpanded(current.node.id);\n } else if (current.parentId !== null) {\n this._setFocusAndScroll(current.parentId);\n }\n break;\n }\n\n case 'Enter': {\n event.preventDefault();\n if (!current) break;\n if (this._hasChildren(current.node)) {\n this.state.expandAndLoad(current.node as TreeNode<T>).subscribe();\n }\n break;\n }\n\n case ' ': {\n event.preventDefault();\n if (!current) break;\n if (this.selection.selectionMode() !== 'none') {\n this.selection.toggleNode(current.node as unknown as TreeNode<T>);\n }\n break;\n }\n\n case '*': {\n event.preventDefault();\n if (!current) break;\n this._expandSiblings(flat, current);\n break;\n }\n\n case 'Home': {\n event.preventDefault();\n this._setFocusAndScroll(flat[0].node.id);\n break;\n }\n\n case 'End': {\n event.preventDefault();\n this._setFocusAndScroll(flat[flat.length - 1].node.id);\n break;\n }\n }\n }\n\n private _setFocusAndScroll(id: string | number): void {\n this.focusedNodeId.set(id);\n requestAnimationFrame(() => {\n const el = document.querySelector<HTMLElement>(`[data-tree-node-id=\"${id}\"]`);\n el?.focus({ preventScroll: false });\n el?.scrollIntoView({ block: 'nearest' });\n });\n }\n\n private _hasChildren(node: FlatNode<T>['node']): boolean {\n return (\n node.hasChildren !== false &&\n (node.children === undefined || node.children.length > 0 || node.hasChildren === true)\n );\n }\n\n private _expandSiblings(flat: readonly FlatNode<T>[], current: FlatNode<T>): void {\n const siblings = flat.filter(\n (f) => f.depth === current.depth && f.parentId === current.parentId\n );\n for (const sibling of siblings) {\n if (this._hasChildren(sibling.node) && !this.state.expandedIds().has(sibling.node.id)) {\n this.state.expandAndLoad(sibling.node as TreeNode<T>).subscribe();\n }\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MozCheckboxComponent } from '../../../checkbox/checkbox';\nimport { MozRadioComponent } from '../../../radio/radio';\nimport { MozLoaderComponent } from '../../../loader/loader';\nimport { ChevronDown20, ChevronRight20 } from '@mozaic-ds/icons-angular';\nimport {\n LoadChildrenFn,\n TreeNode,\n TreeNodeContext,\n TreeSelectionMode,\n} from '../../models/tree.model';\nimport { TreeStateService } from '../../services/tree-state';\nimport { TreeSelectionService } from '../../services/tree-selection';\nimport { TreeKeyboardService } from '../../services/tree-keyboard';\n\n@Component({\n selector: 'moz-tree-node',\n templateUrl: './tree-node.html',\n styleUrls: ['./tree-node.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: block' },\n imports: [\n FormsModule,\n NgTemplateOutlet,\n MozCheckboxComponent,\n MozRadioComponent,\n MozLoaderComponent,\n ChevronDown20,\n ChevronRight20,\n ],\n})\nexport class MozTreeNodeComponent<T = unknown> {\n protected readonly stateService = inject(TreeStateService);\n protected readonly selectionService = inject(TreeSelectionService);\n protected readonly keyboardService = inject(TreeKeyboardService);\n\n readonly node = input.required<TreeNode<T>>();\n readonly depth = input<number>(0);\n readonly selectionMode = input<TreeSelectionMode>('none');\n readonly indentSize = input<number>(24);\n readonly nodeTemplate = input<TemplateRef<TreeNodeContext<T>> | null>(null);\n readonly nodeTemplates = input<Record<string, TemplateRef<TreeNodeContext<T>>> | null>(null);\n readonly loadChildren = input<LoadChildrenFn<T> | null>(null);\n readonly ancestors = input<TreeNode<T>[]>([]);\n readonly flat = input<boolean>(false);\n readonly noResultText = input<string>('No result found');\n readonly expandChange = output<string | number>();\n readonly selectionChange = output<Set<string | number>>();\n\n readonly isExpanded = computed(() => this.stateService.expandedIds().has(this.node().id));\n readonly isLoading = computed(() => this.stateService.loadingIds().has(this.node().id));\n readonly isDisabled = computed(() => this.selectionService.isDisabled(this.node()));\n readonly isSelected = computed(() => this.selectionService.isCheckedComputed(this.node()));\n readonly isIndeterminate = computed(() => this.selectionService.isIndeterminate(this.node()));\n readonly isFocused = computed(() => this.keyboardService.focusedNodeId() === this.node().id);\n readonly isSelectable = computed(() => {\n if (this.selectionMode() === 'none') return false;\n return this.selectionService.canSelect(this.node());\n });\n\n readonly hasChildren = computed(() => {\n const node = this.node();\n return (\n node.hasChildren !== false &&\n (node.children === undefined || node.children.length > 0 || node.hasChildren === true)\n );\n });\n\n readonly resolvedTemplate = computed<TemplateRef<TreeNodeContext<T>> | null>(() => {\n const type = this.node().type;\n if (type) {\n const templates = this.nodeTemplates();\n if (templates?.[type]) return templates[type];\n }\n return this.nodeTemplate();\n });\n\n readonly templateContext = computed<TreeNodeContext<T>>(() => ({\n $implicit: this.node(),\n depth: this.depth(),\n isExpanded: this.isExpanded(),\n isSelected: this.isSelected(),\n isIndeterminate: this.isIndeterminate(),\n isLoading: this.isLoading(),\n isDisabled: this.isDisabled(),\n }));\n\n readonly indentPx = computed(() => this.depth() * this.indentSize());\n\n readonly ancestorsWithSelf = computed<TreeNode<T>[]>(() => [...this.ancestors(), this.node()]);\n\n readonly radioName = 'moz-tree-radio-group';\n\n readonly resolvedChildren = computed<TreeNode<T>[]>(() => {\n const internalNode = this._findNode(\n this.stateService.internalNodes() as TreeNode<T>[],\n this.node().id\n );\n return (internalNode?.children ?? this.node().children ?? []) as TreeNode<T>[];\n });\n\n onHeaderClick(): void {\n this.keyboardService.focusedNodeId.set(this.node().id);\n if (this.hasChildren()) {\n this.onToggleExpand();\n }\n }\n\n onToggleExpand(): void {\n this.stateService.expandAndLoad(this.node() as TreeNode).subscribe();\n this.expandChange.emit(this.node().id);\n }\n\n onCheckboxChange(event: Event): void {\n if (this.isDisabled()) return;\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this.selectionService.selectNode(this.node());\n } else {\n this.selectionService.deselectNode(this.node());\n }\n this.selectionChange.emit(this.selectionService.allSelectedIds());\n }\n\n onRadioChange(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n if (!checked || this.isDisabled()) return;\n this.selectionService.selectNode(this.node());\n this.selectionChange.emit(this.selectionService.allSelectedIds());\n }\n\n private _findNode(nodes: TreeNode<T>[], id: string | number): TreeNode<T> | null {\n for (const node of nodes) {\n if (node.id === id) return node;\n if (node.children) {\n const found = this._findNode(node.children as TreeNode<T>[], id);\n if (found) return found;\n }\n }\n return null;\n }\n}\n","<li\n class=\"tree-node\"\n [class.tree-node--selected]=\"isSelected()\"\n [class.tree-node--disabled]=\"isDisabled()\"\n [class.tree-node--focused]=\"isFocused()\"\n role=\"treeitem\"\n [id]=\"'tree-node-' + node().id\"\n [attr.aria-level]=\"depth() + 1\"\n [attr.aria-expanded]=\"hasChildren() ? isExpanded() : null\"\n [attr.aria-selected]=\"isSelectable() ? isSelected() : null\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [attr.data-tree-node-id]=\"node().id\"\n [tabindex]=\"isFocused() ? 0 : -1\"\n>\n <div\n class=\"tree-node__header\"\n [class.tree-node__header--expandable]=\"hasChildren()\"\n (click)=\"onHeaderClick()\"\n >\n <div class=\"tree-node__indent\" [style.width.px]=\"indentPx()\"></div>\n\n <div class=\"tree-node__row\">\n <span class=\"tree-node__chevron\" [class.tree-node__chevron--leaf]=\"!hasChildren()\">\n @if (hasChildren()) { @if (isExpanded()) {\n <ChevronDown20 />\n } @else {\n <ChevronRight20 />\n } }\n </span>\n\n <div class=\"tree-node__content\">\n @if (resolvedTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"resolvedTemplate()!\"\n [ngTemplateOutletContext]=\"templateContext()\"\n />\n } @else {\n <span class=\"tree-node__label\">{{ node().id }}</span>\n }\n </div>\n\n @if (isSelectable()) { @if (selectionMode() === 'checkbox') {\n <moz-checkbox\n class=\"tree-node__selection\"\n [id]=\"'tree-checkbox-' + node().id\"\n [indeterminate]=\"isIndeterminate()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"isSelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onCheckboxChange($event)\"\n />\n } @else if (selectionMode() === 'radio') {\n <moz-radio\n class=\"tree-node__selection\"\n [id]=\"'tree-radio-' + node().id\"\n [name]=\"radioName\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"isSelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onRadioChange($event)\"\n />\n } }\n </div>\n </div>\n\n @if (isExpanded() && !flat()) {\n <ul class=\"tree-node__children\" role=\"group\">\n @if (isLoading()) {\n <li class=\"tree-node__loading\" role=\"presentation\">\n <moz-loader size=\"s\" [appearance]=\"'accent'\" />\n </li>\n } @else { @if (resolvedChildren().length === 0) {\n <li class=\"tree-node__empty\" role=\"presentation\">\n <span>{{ noResultText() }}</span>\n </li>\n } @for (child of resolvedChildren(); track child.id) {\n <moz-tree-node\n [node]=\"child\"\n [depth]=\"depth() + 1\"\n [selectionMode]=\"selectionMode()\"\n [indentSize]=\"indentSize()\"\n [nodeTemplate]=\"nodeTemplate()\"\n [nodeTemplates]=\"nodeTemplates()\"\n [loadChildren]=\"loadChildren()\"\n [ancestors]=\"ancestorsWithSelf()\"\n (expandChange)=\"expandChange.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n />\n } }\n </ul>\n }\n</li>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n inject,\n input,\n model,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { MozTreeNodeComponent } from './components/tree-node/tree-node';\nimport { TreeNode, TreeNodeContext, TreeSelectionMode, LoadChildrenFn } from './models/tree.model';\nimport { TreeStateService } from './services/tree-state';\nimport { TreeSelectionService } from './services/tree-selection';\nimport { TreeKeyboardService } from './services/tree-keyboard';\n\n@Directive({ selector: 'ng-template[mozTreeNode]' })\nexport class MozTreeNodeTemplateDirective {\n readonly type = input<string>();\n constructor(public readonly templateRef: TemplateRef<TreeNodeContext>) {}\n}\n\n@Component({\n selector: 'moz-tree',\n templateUrl: './tree.html',\n styleUrls: ['./tree.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MozTreeNodeComponent, ScrollingModule],\n providers: [TreeStateService, TreeSelectionService, TreeKeyboardService],\n})\nexport class MozTreeComponent<T = unknown> {\n protected readonly stateService = inject(TreeStateService);\n protected readonly selectionService = inject(TreeSelectionService);\n protected readonly keyboardService = inject(TreeKeyboardService);\n\n // Inputs\n readonly nodes = input<TreeNode<T>[]>([]);\n readonly selectionMode = input<TreeSelectionMode>('none');\n readonly expandedIds = model<Set<string | number>>(new Set());\n readonly selectedIds = input<Set<string | number>>(new Set());\n readonly loadChildren = input<LoadChildrenFn<T> | null>(null);\n readonly canSelect = input<((node: TreeNode<T>) => boolean) | null>(null);\n readonly indentSize = input<number>(24);\n readonly virtualScroll = input<boolean | 'auto'>('auto');\n readonly virtualScrollThreshold = input<number>(100);\n readonly rowHeight = input<number>(57);\n readonly viewportHeight = input<string>('400px');\n\n // Content-projected templates\n readonly _defaultTemplate = contentChild(MozTreeNodeTemplateDirective);\n readonly _typedTemplates = contentChildren(MozTreeNodeTemplateDirective);\n\n readonly nodeTemplate = computed<TemplateRef<TreeNodeContext<T>> | null>(() => {\n const dirs = this._typedTemplates();\n const defaultDir = dirs.find((d) => !d.type());\n return (defaultDir?.templateRef ?? null) as TemplateRef<TreeNodeContext<T>> | null;\n });\n\n readonly nodeTemplates = computed<Record<string, TemplateRef<TreeNodeContext<T>>> | null>(() => {\n const dirs = this._typedTemplates();\n const typed = dirs.filter((d) => !!d.type());\n if (typed.length === 0) return null;\n return Object.fromEntries(\n typed.map((d) => [d.type()!, d.templateRef as TemplateRef<TreeNodeContext<T>>])\n );\n });\n\n // Outputs\n // `expandedIdsChange` is generated automatically by the `expandedIds` model().\n readonly selectionChange = output<Set<string | number>>();\n\n readonly useVirtualScroll = computed(() => {\n const mode = this.virtualScroll();\n if (mode === true) return true;\n if (mode === false) return false;\n return this.stateService.flatVisibleNodes().length > this.virtualScrollThreshold();\n });\n\n readonly itemSize = computed(() => this.rowHeight());\n\n constructor() {\n // Sync inputs → services\n effect(() => {\n this.stateService.internalNodes.set(this.nodes() as TreeNode[]);\n });\n\n effect(() => {\n this.stateService.setExpanded(this.expandedIds());\n });\n\n // Declarative lazy-load: whenever `expandedIds` contains a node whose\n // children aren't loaded yet, fetch them automatically. Reading\n // `internalNodes`/`loadingIds` makes this effect re-run after each\n // `patchChildren`, so a deep pre-expanded path cascades one level at a\n // time (load root → its children appear → load the next expanded level …)\n // without any imperative `expandPath` call. `loadChildrenFor` is\n // idempotent, so re-runs and click-driven expands never double-fetch.\n effect(() => {\n const expanded = this.expandedIds();\n if (!this.stateService.loadChildrenFn()) return;\n this.stateService.internalNodes();\n this.stateService.loadingIds();\n for (const id of expanded) {\n const node = this.stateService.findNode(id);\n if (node && node.children === undefined) {\n this.stateService.loadChildrenFor(node as TreeNode).subscribe();\n }\n }\n });\n\n effect(() => {\n this.selectionService.setSelectedIds(this.selectedIds());\n });\n\n effect(() => {\n this.selectionService.setMode(this.selectionMode());\n });\n\n effect(() => {\n this.selectionService.setRootNodes(this.nodes() as TreeNode[]);\n });\n\n effect(() => {\n this.selectionService.setCanSelect(\n this.canSelect() as ((node: TreeNode) => boolean) | null\n );\n });\n\n effect(() => {\n this.stateService.loadChildrenFn.set(this.loadChildren() as LoadChildrenFn | null);\n });\n\n // React to genuine lazy-load events emitted by patchChildren. Static\n // initial children never go through patchChildren, so pre-selected\n // descendants of statically-populated parents are left untouched.\n const processed = new Set<string | number>();\n effect(() => {\n const loaded = this.stateService.loadedParentIds();\n if (this.selectionService.selectionMode() !== 'checkbox') return;\n for (const parentId of loaded) {\n if (processed.has(parentId)) continue;\n processed.add(parentId);\n this.selectionService.propagateOnChildrenLoaded(parentId);\n }\n });\n }\n\n onTreeKeydown(event: KeyboardEvent): void {\n const prevSelection = this.selectionService.allSelectedIds();\n this.keyboardService.handleKeydown(event);\n const newSelection = this.selectionService.allSelectedIds();\n if (prevSelection !== newSelection) {\n this.selectionChange.emit(newSelection);\n }\n }\n\n onTreeFocus(): void {\n this.keyboardService.initFocus();\n }\n\n onExpandChange(): void {\n this.expandedIds.set(new Set(this.stateService.expandedIds()));\n }\n\n onSelectionChange(ids: Set<string | number>): void {\n this.selectionChange.emit(ids);\n }\n\n /**\n * Convenience helper for the \"expand a deep path, then scroll to it\" pattern.\n * Adds every ancestor in `path` (all ids except the last) to `expandedIds`,\n * which lets the declarative auto-load effect fetch each lazy level, then\n * resolves once those levels have finished loading — so callers can safely\n * `scrollToNode(path.at(-1))` afterwards.\n *\n * Plain declarative usage — binding `[(expandedIds)]` and writing to it — does\n * not need this method; the tree loads expanded lazy nodes on its own. It\n * exists only to give an awaitable signal that the deep node is now visible.\n */\n async expandPath(path: Array<string | number>): Promise<void> {\n if (path.length === 0) return;\n const ancestors = path.slice(0, -1);\n this.expandedIds.update((current) => {\n const next = new Set(current);\n for (const id of ancestors) next.add(id);\n return next;\n });\n for (const id of ancestors) {\n await this._waitForChildren(id);\n }\n }\n\n private _waitForChildren(id: string | number): Promise<void> {\n return new Promise((resolve) => {\n let attempts = 0;\n const check = (): void => {\n const node = this.stateService.findNode(id);\n // Resolve once the node's children are present (loaded or static), the\n // node no longer exists, or we hit the safety cap (~5s at 16ms steps).\n if (!node || node.children !== undefined || attempts++ > 300) {\n resolve();\n return;\n }\n setTimeout(check, 16);\n };\n check();\n });\n }\n\n scrollToNode(nodeId: string | number): void {\n setTimeout(() => {\n const el = document.querySelector<HTMLElement>(`[data-tree-node-id=\"${nodeId}\"]`);\n el?.scrollIntoView({ block: 'center', behavior: 'smooth' });\n });\n }\n\n expandAll(): void {\n const flat = this.stateService.flatVisibleNodes();\n const allIds = new Set(flat.map((f) => f.node.id));\n this.stateService.setExpanded(allIds);\n this.expandedIds.set(new Set(allIds));\n }\n\n collapseAll(): void {\n this.stateService.setExpanded(new Set());\n this.expandedIds.set(new Set());\n }\n\n trackNode(_index: number, node: TreeNode<T>): string | number {\n return node.id;\n }\n\n trackFlatNode(_index: number, flat: import('./models/tree.model').FlatNode<T>): string | number {\n return flat.node.id;\n }\n}\n","<ul\n class=\"tree\"\n role=\"tree\"\n tabindex=\"0\"\n [attr.aria-multiselectable]=\"selectionMode() === 'checkbox' ? 'true' : null\"\n [attr.aria-activedescendant]=\"keyboardService.focusedNodeId() ? 'tree-node-' + keyboardService.focusedNodeId() : null\"\n (keydown)=\"onTreeKeydown($event)\"\n (focus)=\"onTreeFocus()\"\n>\n @if (!useVirtualScroll()) { @for (node of nodes(); track trackNode($index, node)) {\n <moz-tree-node\n [node]=\"node\"\n [depth]=\"0\"\n [selectionMode]=\"selectionMode()\"\n [indentSize]=\"indentSize()\"\n [nodeTemplate]=\"nodeTemplate()\"\n [nodeTemplates]=\"nodeTemplates()\"\n [loadChildren]=\"loadChildren()\"\n [ancestors]=\"[]\"\n (expandChange)=\"onExpandChange()\"\n (selectionChange)=\"onSelectionChange($event)\"\n />\n } } @else {\n <cdk-virtual-scroll-viewport\n class=\"tree__viewport\"\n [itemSize]=\"itemSize()\"\n [style.height]=\"viewportHeight()\"\n >\n <moz-tree-node\n *cdkVirtualFor=\"let flatNode of stateService.flatVisibleNodes(); trackBy: trackFlatNode\"\n [node]=\"flatNode.node\"\n [depth]=\"flatNode.depth\"\n [flat]=\"true\"\n [selectionMode]=\"selectionMode()\"\n [indentSize]=\"indentSize()\"\n [nodeTemplate]=\"nodeTemplate()\"\n [nodeTemplates]=\"nodeTemplates()\"\n [loadChildren]=\"loadChildren()\"\n [ancestors]=\"[]\"\n (expandChange)=\"onExpandChange()\"\n (selectionChange)=\"onSelectionChange($event)\"\n />\n </cdk-virtual-scroll-viewport>\n }\n</ul>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MozDataTableCellType, MozDataTableSortDirection } from '../model/datatable.model';\n\n/**\n * Declarative column configuration of the DataTable.\n * This component renders nothing by itself: it is read by `moz-datatable`\n * to build its headers configuration.\n *\n * Equivalent of the `MDataTableColumn` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-column',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozDataTableColumnComponent {\n /** Header cell label */\n readonly label = input<string>('');\n\n /** Refers to a key, present in the items object, whose content will be displayed in the cells of the column */\n readonly value = input<string>('');\n\n /** Allows you to define the type of content that will be inserted in the cell */\n readonly type = input<MozDataTableCellType | undefined>(undefined);\n\n /** Visually defines the column as sortable by displaying the sort button */\n readonly sortable = input(false, { transform: booleanAttribute });\n\n /** Visually defines the default state of the sort button */\n readonly sortDirectionDefault = input<MozDataTableSortDirection>(null);\n\n /** Adds an identical CSS class to all the cells in the column */\n readonly cellClass = input<string>('');\n\n /** Additional data merged into the payload emitted when sorting this column */\n readonly additionalProps = input<Record<string, unknown> | undefined>(undefined);\n\n /** Misc */\n readonly e2eSelector = input<string>('');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewEncapsulation,\n computed,\n input,\n output,\n booleanAttribute,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { SortDown20, SortTop20, SortTopDown20 } from '@mozaic-ds/icons-angular';\nimport {\n MozDataTableHeader,\n MozDataTableHeaderContext,\n MozDataTableSort,\n MozDataTableSortDirection,\n} from '../model/datatable.model';\n\n/**\n * Header cell (`<th>`) of the DataTable.\n * Displays the sort button when the column is `sortable`.\n *\n * Equivalent of the `MDataTableHeader` component of the Vue implementation.\n */\n@Component({\n selector: 'th[moz-datatable-header]',\n imports: [NgTemplateOutlet, SortDown20, SortTop20, SortTopDown20],\n template: `\n @if (sortable()) {\n <button\n type=\"button\"\n class=\"mc-datatable__sort mc-datatable__btn\"\n [class.asc]=\"sortDirection() === 'ASC'\"\n [class.desc]=\"sortDirection() === 'DESC'\"\n (click)=\"toggleSort()\"\n >\n <span class=\"mc-datatable__sort-label\">\n <span class=\"visually-hidden\">sort by</span>\n <ng-container [ngTemplateOutlet]=\"content\" />\n </span>\n\n @switch (sortDirection()) {\n @case ('ASC') {\n <SortTop20 class=\"mc-datatable__sort-arrow\" />\n }\n @case ('DESC') {\n <SortDown20 class=\"mc-datatable__sort-arrow\" />\n }\n @default {\n <SortTopDown20 class=\"mc-datatable__sort-arrow\" />\n }\n }\n </button>\n } @else {\n <ng-container [ngTemplateOutlet]=\"content\" />\n }\n\n <ng-template #content>\n @if (labelTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"templateContext()\" />\n } @else {\n <ng-content>{{ label() }}</ng-content>\n }\n </ng-template>\n `,\n host: {\n scope: 'col',\n '[class]': 'classes()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableHeaderComponent {\n /** Header cell label */\n readonly label = input<string>('');\n\n /** Refers to a key, present in the items object, whose content will be displayed in the cells of the column */\n readonly value = input<string>('');\n\n /** Defines whether the column is sortable or not */\n readonly sortable = input(false, { transform: booleanAttribute });\n\n /** Defines sort order (Ascending or Descending) */\n readonly sortDirection = input<MozDataTableSortDirection>(null);\n\n /** Defines sort order on component loading */\n readonly sortDirectionDefault = input<MozDataTableSortDirection>(null);\n\n /** Additional data merged into the payload emitted when sorting this column */\n readonly additionalProps = input<Record<string, unknown> | undefined>(undefined);\n\n /** Defines header cell as associated with `selectable` cells */\n readonly selectable = input(false, { transform: booleanAttribute });\n\n /** Defines header cell as associated with `expandable` cells */\n readonly expandable = input(false, { transform: booleanAttribute });\n\n /** Misc */\n readonly e2eSelector = input<string>('');\n\n /** Template used to replace/format the content of the header cell (`mozDataTableHeader` template) */\n readonly labelTemplate = input<TemplateRef<MozDataTableHeaderContext> | null>(null);\n\n /** The header configuration passed as context to `labelTemplate` */\n readonly headerConfig = input<MozDataTableHeader | undefined>(undefined);\n\n /** Emits each time a click on the sort button is made */\n readonly updateSortDirection = output<MozDataTableSort>();\n\n readonly classes = computed(() => ({\n 'mc-datatable__head': true,\n 'mc-datatable__cell-button': this.expandable(),\n 'mc-datatable__cell-checkbox': this.selectable(),\n }));\n\n readonly templateContext = computed<MozDataTableHeaderContext>(() => {\n const header: MozDataTableHeader = this.headerConfig() ?? {\n label: this.label(),\n value: this.value(),\n sortable: this.sortable(),\n };\n return { $implicit: header, header };\n });\n\n toggleSort(): void {\n let direction: MozDataTableSortDirection;\n switch (this.sortDirection()) {\n case 'ASC':\n direction = 'DESC';\n break;\n case 'DESC':\n direction = null;\n break;\n default:\n direction = 'ASC';\n }\n this.updateSortDirection.emit({\n column: this.value(),\n direction,\n ...(this.additionalProps() ?? {}),\n });\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Row (`<tr>`) of the DataTable body.\n *\n * Equivalent of the `MDataTableRow` component of the Vue implementation.\n */\n@Component({\n selector: 'tr[moz-datatable-row]',\n template: '<ng-content />',\n host: {\n '[class]': 'classes()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableRowComponent {\n /** Defines whether the row is clickable or not */\n readonly clickable = input(false, { transform: booleanAttribute });\n\n /** Defines whether this is an \"expandable\" row */\n readonly expandable = input(false, { transform: booleanAttribute });\n\n /** Defines the \"expanded\" state of the row */\n readonly expanded = input(false, { transform: booleanAttribute });\n\n /** Defines the \"selected\" state of the row */\n readonly selected = input(false, { transform: booleanAttribute });\n\n readonly classes = computed(() => ({\n 'mc-datatable__row': true,\n 'mc-datatable__row--clickable': this.clickable(),\n 'mc-datatable__row-parent': this.expandable(),\n 'mc-datatable__row-parent--expanded': this.expanded(),\n 'selected': this.selected(),\n }));\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Expandable row displayed below a parent row of the DataTable.\n *\n * Equivalent of the `MDataTableRowExpand` component of the Vue implementation.\n */\n@Component({\n selector: 'tr[moz-datatable-row-expand]',\n template: `\n <td [attr.colspan]=\"colspan()\">\n <div class=\"mc-datatable__row-inner\">\n <ng-content />\n </div>\n </td>\n `,\n host: {\n class: 'mc-datatable__row-expandable',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableRowExpandComponent {\n /** Defines the number of DataTable headers */\n readonly headers = input.required<number>();\n\n /** Defines whether this is a table with an \"expandable\" column */\n readonly expandable = input(false, { transform: booleanAttribute });\n\n /** Defines whether this is a table with a \"selectable\" column */\n readonly selectable = input(false, { transform: booleanAttribute });\n\n readonly colspan = computed(\n () => this.headers() + Number(this.selectable()) + Number(this.expandable()),\n );\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n} from '@angular/core';\nimport { ChevronDown20, ChevronUp20 } from '@mozaic-ds/icons-angular';\n\n/**\n * \"Fold/unfold\" button of the expandable rows.\n *\n * Equivalent of the `MDataTableExpandButton` component of the Vue implementation.\n */\n@Component({\n selector: 'button[moz-datatable-expand-button]',\n imports: [ChevronDown20, ChevronUp20],\n template: `\n @if (!expanded()) {\n <ChevronDown20 class=\"mc-datatable__btn-icon\" />\n } @else {\n <ChevronUp20 class=\"mc-datatable__btn-icon\" />\n }\n\n @if (label()) {\n <span class=\"mc-datatable__btn-label\">{{ label() }}</span>\n }\n `,\n host: {\n class: 'mc-datatable__btn',\n type: 'button',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableExpandButtonComponent {\n /** The button label. Useful for enhancing accessibility */\n readonly label = input<string | undefined>(undefined);\n\n /** Determines whether the button is expanded or not */\n readonly expanded = input(false, { transform: booleanAttribute });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\nimport { MozDataTableCellType } from '../model/datatable.model';\n\n/**\n * Cell (`<td>` or `<th>`) of the DataTable body.\n *\n * Equivalent of the `MDataTableCell` component of the Vue implementation.\n */\n@Component({\n selector: 'td[moz-datatable-cell], th[moz-datatable-cell]',\n template: '<ng-content />',\n host: {\n '[class]': 'classes()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableCellComponent {\n /** Allows you to define the type of content that will be inserted in the cell */\n readonly type = input<MozDataTableCellType | undefined>(undefined);\n\n /** Refers to a key, present in the items object, whose content is displayed in the cell */\n readonly value = input<string>('');\n\n readonly classes = computed(() => {\n const type = this.type();\n const value = this.value();\n return {\n 'mc-datatable__cell': true,\n 'mc-datatable__cell-button':\n type === 'button' || type === 'expand' || type === 'icon' || type === 'options',\n 'mc-datatable__cell-checkbox': type === 'checkbox',\n 'mc-datatable__cell-field': type === 'input',\n 'mc-datatable__cell-number': type === 'number',\n [`mc-datatable__cell--${value}`]: !!value,\n };\n });\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Empty state of the DataTable, displayed when there is no data/results.\n *\n * Equivalent of the `MDataTableEmpty` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-empty',\n template: '<ng-content />',\n host: {\n class: 'mc-datatable__empty',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableEmptyComponent {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\n\n/**\n * Page count information displayed in the footer of a pageable DataTable\n * (e.g. \"15 - 21 of 50 items\").\n *\n * Equivalent of the `MDataTableInfo` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-info',\n template: `\n <ng-content>\n <strong>{{ start() }} - {{ end() }}</strong> {{ label() }}\n <strong>{{ total() }} {{ labelItems() }}</strong>\n </ng-content>\n `,\n host: {\n class: 'mc-datatable__count mc-datatable__info',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableInfoComponent {\n /** Replaces the preposition \"of\" in the footer sentence */\n readonly label = input<string>('of');\n\n /** Replaces the text \"items\" in the footer sentence */\n readonly labelItems = input<string>('items');\n\n readonly start = input<number | undefined>(undefined);\n readonly end = input<number | undefined>(undefined);\n readonly total = input<number | undefined>(undefined);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n booleanAttribute,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MozSelectComponent } from '../../select/select';\nimport { MozDataTablePageSizeOption } from '../model/datatable.model';\n\n/**\n * \"Rows per page\" selector displayed in the footer of a pageable DataTable.\n *\n * Equivalent of the `MDataTableRowsPerPage` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-rows-per-page',\n imports: [FormsModule, MozSelectComponent],\n template: `\n <label for=\"itemPerPage\" class=\"mc-datatable__select-label mc-datatable__rowsperpage-label\">\n {{ label() }}\n </label>\n <moz-select\n id=\"itemPerPage\"\n name=\"itemPerPage\"\n size=\"s\"\n [options]=\"options()\"\n [disabled]=\"loading()\"\n [ngModel]=\"selectValue()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n `,\n host: {\n class: 'mc-datatable__select mc-datatable__rowsperpage',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableRowsPerPageComponent {\n /** The label associated with the select */\n readonly label = input<string>('');\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n readonly options = input.required<MozDataTablePageSizeOption[]>();\n\n readonly value = input<number | undefined>(undefined);\n\n readonly updateValue = output<number>();\n\n readonly selectValue = computed(() => String(this.value() ?? ''));\n\n onValueChange(value: string | number): void {\n this.updateValue.emit(Number(value));\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n output,\n} from '@angular/core';\n\n/**\n * Selection bar of a selectable DataTable, displayed when all the rows\n * of the current page are selected.\n *\n * Equivalent of the `MDataTableSelectionBar` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-selection-bar',\n template: `\n {{ !selectAll() ? labelPageSelected() : labelAllItemsSelected() }}\n\n @if (!selectAll()) {\n <button type=\"button\" class=\"mc-datatable__selection-btn\" (click)=\"selectAllRows.emit()\">\n {{ labelButtonSelectAll() }}\n </button>\n } @else {\n <button type=\"button\" class=\"mc-datatable__selection-btn\" (click)=\"clearAllRows.emit()\">\n {{ labelButtonClearSelection() }}\n </button>\n }\n `,\n host: {\n class: 'mc-datatable__selection',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableSelectionBarComponent {\n readonly selectAll = input(false, { transform: booleanAttribute });\n readonly labelPageSelected = input<string | undefined>(undefined);\n readonly labelAllItemsSelected = input<string | undefined>(undefined);\n readonly labelButtonSelectAll = input<string | undefined>(undefined);\n readonly labelButtonClearSelection = input<string>('Clear selection');\n\n readonly selectAllRows = output<void>();\n readonly clearAllRows = output<void>();\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\nimport { MozDataTableCellContext, MozDataTableHeaderContext } from '../model/datatable.model';\n\n/**\n * Template used to replace/format the content of the cells of a column.\n * Equivalent of the `cell.<column>` slot of the Vue implementation.\n *\n * ```html\n * <ng-template mozDataTableCell=\"startDate\" let-item>\n * {{ item.startDate | date }}\n * </ng-template>\n * ```\n */\n@Directive({ selector: 'ng-template[mozDataTableCell]' })\nexport class MozDataTableCellTemplateDirective<T = Record<string, unknown>> {\n readonly template = inject<TemplateRef<MozDataTableCellContext<T>>>(TemplateRef);\n\n /** The `value` of the column whose cells the template applies to */\n readonly mozDataTableCell = input.required<string>();\n\n static ngTemplateContextGuard<T>(\n _dir: MozDataTableCellTemplateDirective<T>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in the type predicate\n _ctx: unknown,\n ): _ctx is MozDataTableCellContext<T> {\n return true;\n }\n}\n\n/**\n * Template used to replace/format the content of a header cell.\n * Equivalent of the `header.<column>` slot of the Vue implementation.\n *\n * ```html\n * <ng-template mozDataTableHeader=\"name\" let-header>\n * {{ header.label }} <small>subtitle</small>\n * </ng-template>\n * ```\n */\n@Directive({ selector: 'ng-template[mozDataTableHeader]' })\nexport class MozDataTableHeaderTemplateDirective {\n readonly template = inject<TemplateRef<MozDataTableHeaderContext>>(TemplateRef);\n\n /** The `value` of the column whose header the template applies to */\n readonly mozDataTableHeader = input.required<string>();\n\n static ngTemplateContextGuard(\n _dir: MozDataTableHeaderTemplateDirective,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in the type predicate\n _ctx: unknown,\n ): _ctx is MozDataTableHeaderContext {\n return true;\n }\n}\n\n/**\n * Template inserted inside the expand row of an expandable DataTable.\n * Equivalent of the `expandContent` slot of the Vue implementation.\n */\n@Directive({ selector: 'ng-template[mozDataTableExpand]' })\nexport class MozDataTableExpandTemplateDirective<T = Record<string, unknown>> {\n readonly template = inject<TemplateRef<MozDataTableCellContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n _dir: MozDataTableExpandTemplateDirective<T>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in the type predicate\n _ctx: unknown,\n ): _ctx is MozDataTableCellContext<T> {\n return true;\n }\n}\n\n/**\n * Template displayed when the DataTable is empty (no data/results).\n * Equivalent of the `no-data` slot of the Vue implementation.\n */\n@Directive({ selector: 'ng-template[mozDataTableNoData]' })\nexport class MozDataTableNoDataTemplateDirective {\n readonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n/**\n * Template replacing the whole content of the header row (`<tr>` of the `<thead>`).\n * We recommend using `th[moz-datatable-header]` cells inside this template.\n * Equivalent of the `headers` slot of the Vue implementation.\n */\n@Directive({ selector: 'ng-template[mozDataTableHeaders]' })\nexport class MozDataTableHeadersTemplateDirective {\n readonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n/**\n * Template replacing the entire content of the `<tbody>` tag.\n * We recommend using `tr[moz-datatable-row]` / `td[moz-datatable-cell]` inside this template.\n * Equivalent of the `body` slot of the Vue implementation.\n */\n@Directive({ selector: 'ng-template[mozDataTableBody]' })\nexport class MozDataTableBodyTemplateDirective {\n readonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n/**\n * Marks projected content replacing the built-in selection bar.\n * Equivalent of the `selectionbar` slot of the Vue implementation.\n */\n@Directive({ selector: '[mozDataTableSelectionbar]' })\nexport class MozDataTableSelectionbarDirective {}\n\n/** Marks the \"edition\" zone of the `moz-datatable-top` component */\n@Directive({ selector: '[mozDataTableTopEdition]' })\nexport class MozDataTableTopEditionDirective {}\n\n/** Marks the \"actions\" zone of the `moz-datatable-top` component */\n@Directive({ selector: '[mozDataTableTopActions]' })\nexport class MozDataTableTopActionsDirective {}\n\n/** Marks the \"filters\" zone of the `moz-datatable-top` component */\n@Directive({ selector: '[mozDataTableTopFilters]' })\nexport class MozDataTableTopFiltersDirective {}\n","/**\n * Models for the Mozaic DataTable component.\n * Angular port of `@mozaic-ds/datatable-vue`.\n */\n\nexport type MozDataTableSortDirection = 'ASC' | 'DESC' | null;\n\nexport type MozDataTableSortMode = 'single' | 'multiple';\n\nexport type MozDataTableSize = 's' | 'm' | 'l';\n\nexport type MozDataTableCellType =\n | 'button'\n | 'checkbox'\n | 'expand'\n | 'icon'\n | 'input'\n | 'number'\n | 'multiline'\n | 'options'\n | 'picture';\n\nexport interface MozDataTableSort {\n /** The `value` of the sorted column */\n column: string;\n direction?: MozDataTableSortDirection;\n /** Additional data merged into the sort payload (see `additionalProps` on columns) */\n [key: string]: unknown;\n}\n\nexport interface MozDataTableHeader {\n /** Header cell label */\n label: string;\n /** The key of the item whose content will be displayed in the cells of the column */\n value: string;\n /** Visually defines the column as sortable by displaying the sort button */\n sortable?: boolean;\n /** Defines sort order on component loading */\n sortDirectionDefault?: MozDataTableSortDirection;\n /** Adds an identical CSS class to all the cells of the column */\n class?: string;\n /** Allows you to define the type of content that will be inserted in the cells */\n type?: MozDataTableCellType;\n /** Additional data merged into the payload emitted when sorting this column */\n additionalProps?: Record<string, unknown>;\n /** Misc */\n e2eSelector?: string;\n}\n\nexport type MozDataTablePageSizeOption = { text: string; value: string };\n\nexport interface MozDataTableUpdatePayload {\n sort?: MozDataTableSort | null;\n sortMultiple?: MozDataTableSort[];\n size: number;\n page: number;\n}\n\nexport interface MozDataTableRowEvent<T = Record<string, unknown>> {\n data: T;\n index: number;\n}\n\nexport interface MozDataTableRowsEvent<T = Record<string, unknown>> {\n data: T[];\n}\n\nexport interface MozDataTableAccessibilityLabels {\n paginationAriaLabel?: string;\n checkboxAriaLabel?: string;\n expandButtonLabel?: string;\n}\n\n/** Context of the templates provided through `mozDataTableCell` and `mozDataTableExpand` */\nexport interface MozDataTableCellContext<T = Record<string, unknown>> {\n $implicit: T;\n item: T;\n index: number;\n rowIndex: number;\n}\n\n/** Context of the templates provided through `mozDataTableHeader` */\nexport interface MozDataTableHeaderContext {\n $implicit: MozDataTableHeader;\n header: MozDataTableHeader;\n}\n\nexport const MOZ_DATATABLE_DEFAULT_PAGE_SIZES: number[] = [7, 10, 25, 50, 100];\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n OnInit,\n ViewEncapsulation,\n computed,\n contentChild,\n contentChildren,\n effect,\n input,\n linkedSignal,\n output,\n signal,\n untracked,\n booleanAttribute,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MozPaginationComponent } from '../pagination/pagination';\nimport { MozDataTableColumnComponent } from './components/datatable-column';\nimport { MozDataTableHeaderComponent } from './components/datatable-header';\nimport { MozDataTableRowComponent } from './components/datatable-row';\nimport { MozDataTableRowExpandComponent } from './components/datatable-row-expand';\nimport { MozDataTableExpandButtonComponent } from './components/datatable-expand-button';\nimport { MozDataTableCellComponent } from './components/datatable-cell';\nimport { MozDataTableEmptyComponent } from './components/datatable-empty';\nimport { MozDataTableInfoComponent } from './components/datatable-info';\nimport { MozDataTableRowsPerPageComponent } from './components/datatable-rows-per-page';\nimport { MozDataTableSelectionBarComponent } from './components/datatable-selection-bar';\nimport {\n MozDataTableBodyTemplateDirective,\n MozDataTableCellTemplateDirective,\n MozDataTableExpandTemplateDirective,\n MozDataTableHeadersTemplateDirective,\n MozDataTableHeaderTemplateDirective,\n MozDataTableNoDataTemplateDirective,\n MozDataTableSelectionbarDirective,\n} from './directives/datatable-templates';\nimport {\n MOZ_DATATABLE_DEFAULT_PAGE_SIZES,\n MozDataTableAccessibilityLabels,\n MozDataTableHeader,\n MozDataTablePageSizeOption,\n MozDataTableRowEvent,\n MozDataTableRowsEvent,\n MozDataTableSize,\n MozDataTableSort,\n MozDataTableSortDirection,\n MozDataTableSortMode,\n MozDataTableUpdatePayload,\n} from './model/datatable.model';\n\n/**\n * DataTable component of the ADEO Design System.\n * Angular port of `@mozaic-ds/datatable-vue` (`MDataTable`).\n *\n * Columns are declared either with `moz-datatable-column` elements or through\n * the `headers` input. Cell/header content can be customized with the\n * `mozDataTableCell` / `mozDataTableHeader` templates.\n *\n * ```html\n * <moz-datatable [items]=\"items\">\n * <moz-datatable-column label=\"Name\" value=\"name\" sortable />\n * <moz-datatable-column label=\"Status\" value=\"status\" />\n * <ng-template mozDataTableCell=\"status\" let-item>{{ item.status.code }}</ng-template>\n * </moz-datatable>\n * ```\n */\n@Component({\n selector: 'moz-datatable',\n imports: [\n NgTemplateOutlet,\n MozPaginationComponent,\n MozDataTableHeaderComponent,\n MozDataTableRowComponent,\n MozDataTableRowExpandComponent,\n MozDataTableExpandButtonComponent,\n MozDataTableCellComponent,\n MozDataTableEmptyComponent,\n MozDataTableInfoComponent,\n MozDataTableRowsPerPageComponent,\n MozDataTableSelectionBarComponent,\n ],\n templateUrl: './datatable.html',\n styleUrls: ['./datatable.scss'],\n host: {\n '[class]': 'hostClasses()',\n '[style.--datatable-head-z-index]': 'zIndex()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableComponent<T extends Record<string, unknown> = Record<string, unknown>>\n implements OnInit, AfterContentInit\n{\n // --------------------------------------------------------------------------\n // Inputs — Functional\n // --------------------------------------------------------------------------\n\n /** An array of objects representing the data to be displayed */\n readonly items = input.required<T[]>();\n\n /**\n * An array of objects used to define the DataTable headers.\n * This property is mandatory if you are not using `moz-datatable-column`\n * elements to define your columns.\n */\n readonly headers = input<MozDataTableHeader[] | undefined>(undefined);\n\n /** Displays the loading state to indicate data load is in progress */\n readonly loading = input<boolean | undefined>(undefined);\n\n /** The key used to identify each item (used for selection and row tracking) */\n readonly indexKey = input<string>('id');\n\n // --------------------------------------------------------------------------\n // Inputs — Pagination\n // --------------------------------------------------------------------------\n\n /**\n * Displays the pagination of the DataTable (and the component footer as a whole).\n * This prop must be defined with the `totalItems` prop.\n */\n readonly pageable = input(false, { transform: booleanAttribute });\n\n /**\n * Used to define the value of the Select \"Rows per page\" when the DataTable is\n * initialised. This value must be one of the values of `itemsPerPageOptions`.\n */\n readonly itemsPerPage = input<number | undefined>(undefined);\n\n /** Used to set the desired values for the Select \"Rows per page\" */\n readonly itemsPerPageOptions = input<MozDataTablePageSizeOption[] | number[]>(\n MOZ_DATATABLE_DEFAULT_PAGE_SIZES,\n );\n\n /** Sets the default value for the Select \"Pagination\" */\n readonly currentPage = input<number | undefined>(undefined);\n\n /**\n * Used to indicate the total number of data items.\n * This property must be defined as soon as the `pageable` property is defined.\n */\n readonly totalItems = input<number | undefined>(undefined);\n\n /** Used to define the value of the label associated with the Select \"Rows per page\" */\n readonly itemsPerPageLabel = input<string>('Rows per page');\n\n /** Replaces the preposition \"of\" in the footer sentence, e.g. \"15-21 of 50 items\" */\n readonly countLabel = input<string>('of');\n\n /** Replaces the text \"items\" in the footer sentence, e.g. \"15-21 of 50 items\" */\n readonly infoLabelItems = input<string>('items');\n\n // --------------------------------------------------------------------------\n // Inputs — Sort\n // --------------------------------------------------------------------------\n\n /**\n * Allows to visually define the default state of a sorted column.\n * Works in conjunction with the `sortChange` output (`[(sort)]` two-way binding).\n */\n readonly sort = input<MozDataTableSort | null | undefined>(undefined);\n\n /**\n * Allows to visually define the default state of one or several sorted columns.\n * Works in conjunction with the `sortMultipleChange` output\n * (`[(sortMultiple)]` two-way binding).\n */\n readonly sortMultiple = input<MozDataTableSort[] | undefined>(undefined);\n\n /** Defines whether sorting is done on a single column or on multiple columns */\n readonly sortMode = input<MozDataTableSortMode>('single');\n\n // --------------------------------------------------------------------------\n // Inputs — Display options\n // --------------------------------------------------------------------------\n\n /** Allows you to change the line size */\n readonly size = input<MozDataTableSize>('m');\n\n /** Hides the \"XX - YY of ZZ items\" indication in the footer */\n readonly hidePageCount = input(false, { transform: booleanAttribute });\n\n /** Used to define a maximum height for the DataTable */\n readonly maxHeight = input<string | undefined>(undefined);\n\n /** Allows you to make the header fixed. Works in conjunction with `maxHeight` */\n readonly fixedHeader = input(false, { transform: booleanAttribute });\n\n /** Allows you to pass the z-index for the static header */\n readonly zIndex = input<number | undefined>(undefined);\n\n // --------------------------------------------------------------------------\n // Inputs — Selection\n // --------------------------------------------------------------------------\n\n /** Displays a column of checkboxes allowing rows to be selected */\n readonly selectable = input(false, { transform: booleanAttribute });\n\n /** Displays or hides the selection bar */\n readonly selectionbar = input(false, { transform: booleanAttribute });\n\n /** The selected items (`[(selection)]` two-way binding) */\n readonly selection = input<T[]>([]);\n\n readonly labelButtonClearSelection = input<string>('Clear selection');\n\n readonly selectPage = input(false, { transform: booleanAttribute });\n\n readonly labelPageSelected = input<string | undefined>(undefined);\n\n readonly labelAllItemsSelected = input<string | undefined>(undefined);\n\n /** Defines the \"all items selected\" state (`[(selectAll)]` two-way binding) */\n readonly selectAll = input<boolean | undefined>(undefined);\n\n readonly labelButtonSelectAll = input<string | undefined>(undefined);\n\n /**\n * Makes rows clickable. **Caution! This prop is deprecated and will be removed soon!**\n * Use the `clickable` prop instead.\n * @deprecated\n */\n readonly clickableRows = input(false, { transform: booleanAttribute });\n\n /** Makes rows clickable */\n readonly clickable = input(false, { transform: booleanAttribute });\n\n // --------------------------------------------------------------------------\n // Inputs — Expansion\n // --------------------------------------------------------------------------\n\n /** Allows all the rows in the DataTable to be expandable */\n readonly expandable = input(false, { transform: booleanAttribute });\n\n /** Sets the default text for the \"fold/unfold\" buttons. Useful for enhancing accessibility */\n readonly expanderAccessibleLabel = input<string | undefined>(undefined);\n\n /** Allows to choose the rows (indexes) on which to insert \"expandable\" content */\n readonly expandableList = input<(number | string)[]>([]);\n\n /** The key of the item used to identify expanded rows (defaults to the row index) */\n readonly dataKeyExpand = input<string | undefined>(undefined);\n\n /** Open expandable content by default */\n readonly showExpandableContent = input(false, { transform: booleanAttribute });\n\n /** Allows to pass identical custom CSS classes to all the rows in the table */\n readonly rowClass = input<string | string[] | Record<string, boolean> | undefined>(undefined);\n\n /** An object for passing labels to make component elements more accessible */\n readonly accessibilityLabels = input<MozDataTableAccessibilityLabels | undefined>(undefined);\n\n // --------------------------------------------------------------------------\n // Inputs — Misc\n // --------------------------------------------------------------------------\n\n readonly e2eSelector = input<string>('');\n\n /** Defines whether this is a DataTable nested within another DataTable */\n readonly nested = input(false, { transform: booleanAttribute });\n\n // --------------------------------------------------------------------------\n // Outputs\n // --------------------------------------------------------------------------\n\n /** Emits on \"Single Sort\" mode, each time a click on the sort button of a column is made */\n readonly sortChange = output<MozDataTableSort>();\n\n /** Emits on \"Multiple Sort\" mode, each time a click on the sort button of a column is made */\n readonly sortMultipleChange = output<MozDataTableSort[]>();\n\n readonly currentPageChange = output<number>();\n\n readonly itemsPerPageChange = output<number>();\n\n /** Emits each time the sort, the page size or the current page changes */\n readonly changed = output<MozDataTableUpdatePayload>();\n\n readonly clickRow = output<MozDataTableRowEvent<T>>();\n readonly selectRow = output<MozDataTableRowEvent<T>>();\n readonly unselectRow = output<MozDataTableRowEvent<T>>();\n readonly selectAllRows = output<MozDataTableRowsEvent<T>>();\n readonly unselectAllRows = output<void>();\n readonly selectMultipleRows = output<MozDataTableRowsEvent<T>>();\n readonly unselectMultipleRows = output<MozDataTableRowsEvent<T>>();\n readonly selectPageChange = output<boolean>();\n readonly selectAllChange = output<boolean>();\n readonly selectionChange = output<T[]>();\n readonly expandRow = output<MozDataTableRowEvent<T>>();\n readonly retractRow = output<MozDataTableRowEvent<T>>();\n\n // --------------------------------------------------------------------------\n // Content queries\n // --------------------------------------------------------------------------\n\n protected readonly columns = contentChildren(MozDataTableColumnComponent, {\n descendants: true,\n });\n protected readonly cellTemplates = contentChildren(MozDataTableCellTemplateDirective, {\n descendants: true,\n });\n protected readonly headerTemplates = contentChildren(MozDataTableHeaderTemplateDirective, {\n descendants: true,\n });\n protected readonly expandTemplate = contentChild(MozDataTableExpandTemplateDirective);\n protected readonly noDataTemplate = contentChild(MozDataTableNoDataTemplateDirective);\n protected readonly headersTemplate = contentChild(MozDataTableHeadersTemplateDirective);\n protected readonly bodyTemplate = contentChild(MozDataTableBodyTemplateDirective);\n protected readonly customSelectionbar = contentChild(MozDataTableSelectionbarDirective);\n\n // --------------------------------------------------------------------------\n // Internal state\n // --------------------------------------------------------------------------\n\n private readonly _sortState = signal<MozDataTableSort | undefined>(undefined);\n private readonly _sortMultipleState = signal<MozDataTableSort[]>([]);\n private readonly _itemsPerPageState = signal<number>(7);\n private readonly _currentPageState = signal<number>(1);\n private readonly _selectAllState = signal<boolean>(false);\n protected readonly pageState = signal<boolean>(false);\n private readonly _selectedItems = linkedSignal<T[]>(() => this.selection() ?? []);\n private readonly _lastSelectedItem = signal<T | undefined>(undefined);\n private readonly _expandedRows = signal<(number | string)[]>([]);\n\n constructor() {\n // Sync the internal \"select all\" state from the input (Vue: watch(props.selectAll))\n effect(() => {\n const value = this.selectAll();\n if (value !== undefined) {\n untracked(() => this._selectAllState.set(value));\n }\n });\n\n // Reset the \"select all\" state when items change (Vue: watch(props.items))\n let firstItemsRun = true;\n effect(() => {\n this.items();\n if (firstItemsRun) {\n firstItemsRun = false;\n return;\n }\n untracked(() => this._selectAllState.set(false));\n });\n\n // Emit selectAllChange when the internal state changes (Vue: watch(state.selectAll))\n let firstSelectAllRun = true;\n effect(() => {\n const value = this._selectAllState();\n if (firstSelectAllRun) {\n firstSelectAllRun = false;\n return;\n }\n untracked(() => this.selectAllChange.emit(value));\n });\n\n // Sync the master checkbox state with the page selection\n // (Vue: onMounted + watch(isPageSelected))\n let firstPageSelectedRun = true;\n effect(() => {\n const selected = this.isPageSelected();\n untracked(() => {\n if (this.pageState() !== selected) {\n this.pageState.set(selected);\n if (!firstPageSelectedRun) {\n this.selectPageChange.emit(selected);\n }\n }\n firstPageSelectedRun = false;\n });\n });\n }\n\n // --------------------------------------------------------------------------\n // Lifecycle\n // --------------------------------------------------------------------------\n\n ngOnInit(): void {\n if (this.pageable() && isNaN(Number(this.totalItems()))) {\n throw new Error('MozDataTable: totalItems is required when pageable is true');\n }\n\n if (this.showExpandableContent()) {\n const expandedRows =\n this.expandableList().length > 0\n ? [...this.expandableList()]\n : Array.from({ length: this.items().length }, (_, i) => i);\n this._expandedRows.set(expandedRows);\n }\n }\n\n ngAfterContentInit(): void {\n // Apply the default sort direction of the columns (Vue: onMounted)\n this.getHeaders().forEach((header) => {\n if (header.sortDirectionDefault) {\n if (this.getSort()) {\n throw new Error('MozDataTable: sortDirectionDefault can be set only once per header');\n }\n\n this.updateSort(\n {\n column: header.value,\n direction: header.sortDirectionDefault,\n ...(header.additionalProps ?? {}),\n },\n true,\n );\n }\n });\n }\n\n // --------------------------------------------------------------------------\n // Computed state\n // --------------------------------------------------------------------------\n\n protected readonly getHeaders = computed<MozDataTableHeader[]>(() => {\n const columns = this.columns();\n if (columns.length > 0) {\n return columns.map((column) => ({\n label: column.label(),\n value: column.value(),\n type: column.type(),\n sortable: column.sortable(),\n sortDirectionDefault: column.sortDirectionDefault(),\n class: column.cellClass(),\n additionalProps: column.additionalProps(),\n e2eSelector: column.e2eSelector(),\n }));\n }\n return this.headers() ?? [];\n });\n\n protected readonly getSort = computed<MozDataTableSort | null | undefined>(\n () => this.sort() || this._sortState(),\n );\n\n protected readonly getSortMultiple = computed<MozDataTableSort[]>(\n () => this.sortMultiple() || this._sortMultipleState(),\n );\n\n protected readonly getItemsPerPage = computed<number>(\n () => this.itemsPerPage() || this._itemsPerPageState(),\n );\n\n protected readonly getCurrentPage = computed<number>(\n () => this.currentPage() || this._currentPageState(),\n );\n\n protected readonly getSelectedItems = computed<T[]>(() => this._selectedItems());\n\n protected readonly getSelectAll = computed<boolean>(\n () => this.selectAll() || this._selectAllState(),\n );\n\n protected readonly getClickable = computed<boolean>(\n () => this.clickable() || this.clickableRows(),\n );\n\n protected readonly getPaginationLength = computed<number>(\n () => Math.ceil(Number(this.totalItems()) / this.getItemsPerPage()) || 1,\n );\n\n protected readonly getPageCountInfos = computed(() => {\n const itemsPerPage = this.getItemsPerPage();\n const currentPage = this.getCurrentPage();\n const totalItems = this.totalItems() ?? 0;\n\n const itemsOnCurrentPage = currentPage * itemsPerPage;\n\n return {\n start: itemsOnCurrentPage - itemsPerPage + 1,\n end: Math.min(itemsOnCurrentPage, totalItems),\n total: totalItems,\n };\n });\n\n protected readonly getOptions = computed(() => {\n const totalPages = this.getPaginationLength();\n return Array.from({ length: totalPages }, (_, index) => ({\n text: `${index + 1} of ${totalPages}`,\n value: index + 1,\n }));\n });\n\n protected readonly getItemsPerPageOptions = computed<MozDataTablePageSizeOption[]>(() => {\n const options = this.itemsPerPageOptions();\n if (options.length > 0 && typeof options[0] === 'number') {\n return (options as number[]).map((option) => {\n const value = option.toString();\n return { text: value, value };\n });\n }\n return options as MozDataTablePageSizeOption[];\n });\n\n protected readonly isPageSelected = computed<boolean>(() => {\n const items = this.items();\n const selected = this._selectedItems();\n const indexKey = this.indexKey();\n return (\n items.length > 0 &&\n items.every((item) => selected.some((s) => s[indexKey] === item[indexKey]))\n );\n });\n\n protected readonly isPageIndeterminate = computed<boolean>(() => {\n const indexKey = this.indexKey();\n const itemsState = this._selectedItems().some((item) =>\n this.items().some((p) => p[indexKey] === item[indexKey]),\n );\n\n return itemsState && !this.isPageSelected();\n });\n\n protected readonly multiSelectionPage = computed<boolean>(\n () => this.getSelectedItems().length >= this.items().length,\n );\n\n protected readonly getLabelButtonSelectAll = computed<string>(\n () => this.labelButtonSelectAll() ?? `Select all ${this.totalItems()} rows of this table`,\n );\n\n protected readonly getLabelSelectedPage = computed<string>(\n () =>\n this.labelPageSelected() ??\n `${this.getSelectedItems().length} rows on this table are selected`,\n );\n\n protected readonly getLabelAllItemsSelected = computed<string>(\n () => this.labelAllItemsSelected() ?? `All ${this.totalItems()} rows in the table are selected`,\n );\n\n protected readonly hostClasses = computed(() => ({\n 'mc-datatable': true,\n 'mc-datatable--sticky-header': this.fixedHeader(),\n [`mc-datatable--${this.size()}`]: !!this.size(),\n }));\n\n protected readonly skeletonRows = computed<number[]>(() =>\n Array.from({ length: this.getItemsPerPage() }, (_, i) => i),\n );\n\n // --------------------------------------------------------------------------\n // Templates lookup\n // --------------------------------------------------------------------------\n\n protected cellTemplateFor(column: string): MozDataTableCellTemplateDirective | undefined {\n return this.cellTemplates().find((template) => template.mozDataTableCell() === column);\n }\n\n protected headerTemplateFor(column: string): MozDataTableHeaderTemplateDirective | undefined {\n return this.headerTemplates().find((template) => template.mozDataTableHeader() === column);\n }\n\n // --------------------------------------------------------------------------\n // Sort\n // --------------------------------------------------------------------------\n\n protected getSortDirection(headerKey: string): MozDataTableSortDirection {\n // Multiple Sorting\n if (this.sortMode() === 'multiple') {\n const currentSortColumn = this.getSortMultiple().find((sort) => sort.column === headerKey);\n return currentSortColumn?.direction ?? null;\n }\n\n // Single Sorting\n const sort = this.getSort();\n if (!sort || headerKey !== sort.column) {\n return null;\n }\n\n return sort.direction ?? null;\n }\n\n updateSort(sort: MozDataTableSort, noChange = false): void {\n if (this.sortMode() !== 'multiple') {\n // Single Sorting\n this._sortState.set(sort);\n this.sortChange.emit(sort);\n } else {\n // Multiple Sorting\n const sorts = [...this.getSortMultiple()];\n const index = sorts.findIndex((s) => s.column === sort.column);\n\n if (sort.direction == null) {\n if (index >= 0) {\n sorts.splice(index, 1);\n }\n } else if (index >= 0) {\n sorts[index] = sort;\n } else {\n sorts.push(sort);\n }\n\n const ordered = this.sortByHeaderOrder(sorts);\n this._sortMultipleState.set(ordered);\n this.sortMultipleChange.emit(ordered);\n }\n\n if (!noChange) {\n this.emitChange({ sort });\n }\n }\n\n private sortByHeaderOrder(sorts: MozDataTableSort[]): MozDataTableSort[] {\n const order = this.getHeaders().map((header) => header.value);\n return [...sorts].sort((a, b) => order.indexOf(a.column) - order.indexOf(b.column));\n }\n\n // --------------------------------------------------------------------------\n // Pagination\n // --------------------------------------------------------------------------\n\n protected updatePageSize(size: number): void {\n this._itemsPerPageState.set(size);\n this.itemsPerPageChange.emit(size);\n this.emitChange({ size });\n }\n\n protected updateCurrentPage(page: number): void {\n this._currentPageState.set(page);\n this.currentPageChange.emit(page);\n this.emitChange({ page });\n }\n\n private emitChange(\n partial: { size?: number; sort?: MozDataTableSort | null; page?: number } = {},\n ): void {\n const payload: MozDataTableUpdatePayload = {\n sort: partial.sort || this.getSort(),\n size: partial.size || this.getItemsPerPage(),\n page: partial.page || this.getCurrentPage(),\n sortMultiple: this.getSortMultiple(),\n };\n\n if (this.getPaginationLength() < this._currentPageState()) {\n this._currentPageState.set(this.getPaginationLength());\n payload.page = this._currentPageState();\n }\n\n this.changed.emit(payload);\n }\n\n // --------------------------------------------------------------------------\n // Rows\n // --------------------------------------------------------------------------\n\n protected trackRow(index: number, item: T): unknown {\n const key = item[this.indexKey()];\n return key === undefined ? index : key;\n }\n\n protected displayValue(item: T, key: string): string {\n const value = item[key];\n return value == null ? '' : String(value);\n }\n\n protected onClickRow(rowData: T, rowIndex: number): void {\n this.clickRow.emit({ data: rowData, index: rowIndex });\n }\n\n // --------------------------------------------------------------------------\n // Selection\n // --------------------------------------------------------------------------\n\n protected isSelected(item: T): boolean {\n const indexKey = this.indexKey();\n return this._selectedItems().some((selected) => selected[indexKey] === item[indexKey]);\n }\n\n private onSelectRow(event: Event, rowData: T, rowIndex: number): void {\n const checked = (event.target as HTMLInputElement).checked;\n const eventArg: MozDataTableRowEvent<T> = { data: rowData, index: rowIndex };\n const indexKey = this.indexKey();\n\n if (checked) {\n this.setSelectedItems([...this._selectedItems(), rowData]);\n this.selectRow.emit(eventArg);\n } else {\n this.setSelectedItems(\n this._selectedItems().filter((selected) => selected[indexKey] !== rowData[indexKey]),\n );\n this.unselectRow.emit(eventArg);\n }\n this._lastSelectedItem.set(rowData);\n }\n\n protected onSelectRowWithShift(event: MouseEvent, rowData: T, rowIndex: number): void {\n if (!event.shiftKey) {\n this.onSelectRow(event, rowData, rowIndex);\n return;\n }\n\n const lastSelectedItem = this._lastSelectedItem();\n if (lastSelectedItem !== undefined && lastSelectedItem !== rowData) {\n let inBetween = false;\n const itemsInBetween: T[] = [];\n this.items().forEach((item) => {\n if (item === lastSelectedItem || item === rowData) {\n inBetween = !inBetween;\n }\n if (inBetween) {\n itemsInBetween.push(item);\n }\n });\n itemsInBetween.push(rowData);\n itemsInBetween.push(lastSelectedItem);\n\n if ((event.target as HTMLInputElement).checked) {\n // Remove duplicates by converting to a Set and back to an array\n this.setSelectedItems([...new Set([...this._selectedItems(), ...itemsInBetween])]);\n this.selectMultipleRows.emit({ data: itemsInBetween });\n } else {\n this.setSelectedItems(\n this._selectedItems().filter((selected) => !itemsInBetween.includes(selected)),\n );\n this.unselectMultipleRows.emit({ data: itemsInBetween });\n }\n }\n this._lastSelectedItem.set(rowData);\n }\n\n protected onClickMasterCheckbox(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n\n this.pageState.set(checked);\n this.onPageSelected(checked);\n\n if (!checked) {\n this.clearSelection();\n }\n }\n\n private onPageSelected(checked: boolean): void {\n const indexKey = this.indexKey();\n\n if (checked) {\n const currentPageIds = new Set(this.items().map((item) => item[indexKey]));\n this.setSelectedItems([\n ...this._selectedItems().filter((s) => !currentPageIds.has(s[indexKey])),\n ...this.items(),\n ]);\n\n this.selectAllRows.emit({ data: this._selectedItems() });\n } else if (!checked && !this.isPageIndeterminate()) {\n this.unselectAllRows.emit();\n }\n }\n\n private clearSelection(): void {\n const indexKey = this.indexKey();\n const pageKeys = new Set(this.items().map((item) => item[indexKey]));\n this.setSelectedItems(\n this._selectedItems().filter((selected) => !pageKeys.has(selected[indexKey])),\n );\n }\n\n protected clearAll(): void {\n this.setSelectedItems([]);\n this._selectAllState.set(false);\n }\n\n protected onSelectAllFromBar(): void {\n this._selectAllState.set(true);\n }\n\n private setSelectedItems(items: T[]): void {\n this._selectedItems.set(items);\n this.selectionChange.emit(items);\n }\n\n // --------------------------------------------------------------------------\n // Expansion\n // --------------------------------------------------------------------------\n\n protected displayExpandButton(rowIndex: number): boolean {\n return this.expandableList().includes(rowIndex) || !this.expandableList().length;\n }\n\n protected onClickExpandButton(rowData: T, rowIndex: number): void {\n const rowKey = this.expandRowKey(rowData, rowIndex);\n const expanded = this._expandedRows().includes(rowKey);\n const eventArg: MozDataTableRowEvent<T> = { data: rowData, index: rowIndex };\n\n if (expanded) {\n this._expandedRows.set(this._expandedRows().filter((row) => String(row) !== String(rowKey)));\n this.retractRow.emit(eventArg);\n } else {\n this._expandedRows.set([...this._expandedRows(), rowKey]);\n this.expandRow.emit(eventArg);\n }\n }\n\n protected isRowExpanded(rowData: T, rowIndex: number): boolean {\n return this._expandedRows().includes(this.expandRowKey(rowData, rowIndex));\n }\n\n private expandRowKey(rowData: T, rowIndex: number): number | string {\n const dataKeyExpand = this.dataKeyExpand();\n return dataKeyExpand ? ((rowData[dataKeyExpand] as number | string) ?? rowIndex) : rowIndex;\n }\n}\n","<!-- Topbar -->\n<ng-content select=\"moz-datatable-top, [mozDataTableTopbar]\" />\n\n<!-- Selection bar -->\n<ng-content select=\"[mozDataTableSelectionbar]\" />\n@if (!customSelectionbar() && selectionbar() && multiSelectionPage()) {\n <moz-datatable-selection-bar\n [selectAll]=\"getSelectAll()\"\n [labelPageSelected]=\"getLabelSelectedPage()\"\n [labelAllItemsSelected]=\"getLabelAllItemsSelected()\"\n [labelButtonSelectAll]=\"getLabelButtonSelectAll()\"\n [labelButtonClearSelection]=\"labelButtonClearSelection()\"\n (selectAllRows)=\"onSelectAllFromBar()\"\n (clearAllRows)=\"clearAll()\"\n />\n}\n\n<div class=\"mc-datatable__container\">\n <!-- MAIN -->\n <div class=\"mc-datatable__main\" [style.max-height]=\"maxHeight()\">\n @if (items().length === 0 && !loading()) {\n <moz-datatable-empty>\n @if (noDataTemplate(); as noData) {\n <ng-container [ngTemplateOutlet]=\"noData.template\" />\n }\n </moz-datatable-empty>\n } @else {\n <table [class]=\"!nested() ? 'mc-datatable__table' : 'mc-datatable__subtable'\">\n <thead>\n <tr>\n @if (headersTemplate(); as customHeaders) {\n <ng-container [ngTemplateOutlet]=\"customHeaders.template\" />\n } @else {\n <!-- Selectable -->\n @if (selectable()) {\n <th moz-datatable-header [selectable]=\"true\">\n <div class=\"checkbox\">\n <input\n id=\"masterCheckbox\"\n type=\"checkbox\"\n class=\"checkbox__input\"\n aria-label=\"Select all rows\"\n [checked]=\"pageState()\"\n [indeterminate]=\"isPageIndeterminate()\"\n [disabled]=\"!items().length || (loading() ?? false)\"\n (change)=\"onClickMasterCheckbox($event)\"\n />\n </div>\n </th>\n }\n\n <!-- Expandable -->\n @if (expandable()) {\n <th moz-datatable-header [expandable]=\"true\"></th>\n }\n\n <!-- Headers from configuration -->\n @for (header of getHeaders(); track $index) {\n <th\n moz-datatable-header\n [label]=\"header.label\"\n [value]=\"header.value\"\n [sortable]=\"header.sortable ?? false\"\n [sortDirection]=\"getSortDirection(header.value)\"\n [additionalProps]=\"header.additionalProps\"\n [labelTemplate]=\"headerTemplateFor(header.value)?.template ?? null\"\n [headerConfig]=\"header\"\n (updateSortDirection)=\"updateSort($event)\"\n ></th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @if (bodyTemplate(); as customBody) {\n <ng-container [ngTemplateOutlet]=\"customBody.template\" />\n } @else {\n @if (!items().length && loading()) {\n <!-- Loading skeleton -->\n @for (n of skeletonRows(); track n) {\n <tr moz-datatable-row>\n @if (selectable()) {\n <td moz-datatable-cell type=\"checkbox\">\n <span class=\"skeleton-cell\">&nbsp;</span>\n </td>\n }\n @if (expandable()) {\n <td moz-datatable-cell type=\"expand\">\n <span class=\"skeleton-cell\">&nbsp;</span>\n </td>\n }\n @for (header of getHeaders(); track $index) {\n <td><span class=\"skeleton-cell\">&nbsp;</span></td>\n }\n </tr>\n }\n } @else {\n @for (item of items(); track trackRow($index, item); let rowIndex = $index) {\n <tr\n moz-datatable-row\n [selected]=\"isSelected(item)\"\n [class]=\"rowClass()\"\n [clickable]=\"getClickable()\"\n [expandable]=\"expandable()\"\n [expanded]=\"isRowExpanded(item, rowIndex)\"\n [attr.tabindex]=\"getClickable() ? 0 : null\"\n (keyup.enter)=\"getClickable() && onClickRow(item, rowIndex)\"\n >\n <!-- Cell (Selectable) -->\n @if (selectable()) {\n <td moz-datatable-cell type=\"checkbox\">\n <div class=\"checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox__input\"\n [attr.aria-label]=\"'Select rows n°' + rowIndex\"\n [checked]=\"isSelected(item)\"\n [disabled]=\"loading() ?? false\"\n (click)=\"onSelectRowWithShift($event, item, rowIndex)\"\n />\n </div>\n </td>\n }\n\n <!-- Cell (Expandable) -->\n @if (expandable()) {\n <td moz-datatable-cell type=\"expand\">\n @if (displayExpandButton(rowIndex)) {\n <button\n moz-datatable-expand-button\n [label]=\"accessibilityLabels()?.expandButtonLabel\"\n [expanded]=\"isRowExpanded(item, rowIndex)\"\n [disabled]=\"loading() ?? false\"\n (click)=\"onClickExpandButton(item, rowIndex)\"\n ></button>\n }\n </td>\n }\n\n <!-- Cells from data -->\n @for (header of getHeaders(); track $index) {\n <td\n moz-datatable-cell\n [class]=\"header.class\"\n [value]=\"header.value\"\n [type]=\"header.type\"\n (click)=\"getClickable() && onClickRow(item, rowIndex)\"\n >\n @if (loading()) {\n <span class=\"skeleton-cell\">&nbsp;</span>\n } @else if (cellTemplateFor(header.value); as cellTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"cellTemplate.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n item: item,\n index: rowIndex,\n rowIndex: rowIndex,\n }\"\n />\n } @else {\n {{ displayValue(item, header.value) }}\n }\n </td>\n }\n </tr>\n\n <!-- Expand row -->\n @if (isRowExpanded(item, rowIndex)) {\n <tr\n moz-datatable-row-expand\n [headers]=\"getHeaders().length\"\n [expandable]=\"expandable()\"\n [selectable]=\"selectable()\"\n >\n @if (expandTemplate(); as expand) {\n <ng-container\n [ngTemplateOutlet]=\"expand.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n item: item,\n index: rowIndex,\n rowIndex: rowIndex,\n }\"\n />\n }\n </tr>\n }\n }\n }\n }\n </tbody>\n </table>\n }\n </div>\n\n <!-- FOOTER -->\n @if (pageable()) {\n <div class=\"mc-datatable__footer\">\n <!-- DataTable Rows Per Page Selector -->\n <moz-datatable-rows-per-page\n [label]=\"itemsPerPageLabel()\"\n [value]=\"getItemsPerPage()\"\n [loading]=\"loading() ?? false\"\n [options]=\"getItemsPerPageOptions()\"\n (updateValue)=\"updatePageSize($event)\"\n />\n\n <!-- DataTable Info (count) -->\n @if (!hidePageCount()) {\n <moz-datatable-info\n [label]=\"countLabel()\"\n [labelItems]=\"infoLabelItems()\"\n [start]=\"getPageCountInfos().start\"\n [end]=\"getPageCountInfos().end\"\n [total]=\"getPageCountInfos().total\"\n />\n }\n\n <!-- DataTable Pagination -->\n <div class=\"mc-datatable__pagination\">\n <moz-pagination\n [id]=\"accessibilityLabels()?.paginationAriaLabel ?? 'datatable-pagination'\"\n [selectLabel]=\"accessibilityLabels()?.paginationAriaLabel ?? 'Select page'\"\n [options]=\"getOptions()\"\n [value]=\"getCurrentPage()\"\n buttonSize=\"s\"\n (updateValue)=\"updateCurrentPage($event)\"\n />\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n contentChild,\n} from '@angular/core';\nimport {\n MozDataTableTopActionsDirective,\n MozDataTableTopEditionDirective,\n MozDataTableTopFiltersDirective,\n} from '../directives/datatable-templates';\n\n/**\n * Topbar of the DataTable. Use the `mozDataTableTopEdition`,\n * `mozDataTableTopActions` and `mozDataTableTopFilters` attributes to mark\n * the content of each zone:\n *\n * ```html\n * <moz-datatable [items]=\"items\">\n * <moz-datatable-top>\n * <div mozDataTableTopActions>\n * <button moz-button size=\"s\">Primary action</button>\n * </div>\n * </moz-datatable-top>\n * </moz-datatable>\n * ```\n *\n * Equivalent of the `MDataTableTop` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-top',\n template: `\n @if (edition() || actions()) {\n <div class=\"mc-datatable__topbar\">\n @if (edition()) {\n <div class=\"mc-datatable__topbar-edition\">\n <ng-content select=\"[mozDataTableTopEdition]\" />\n </div>\n }\n @if (actions()) {\n <div class=\"mc-datatable__topbar-actions\">\n <ng-content select=\"[mozDataTableTopActions]\" />\n </div>\n }\n </div>\n }\n @if (filters()) {\n <div class=\"mc-datatable__filters\">\n <ng-content select=\"[mozDataTableTopFilters]\" />\n </div>\n }\n `,\n host: {\n '[class.mc-datatable__header]': 'hasContent()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableTopComponent {\n readonly edition = contentChild(MozDataTableTopEditionDirective);\n readonly actions = contentChild(MozDataTableTopActionsDirective);\n readonly filters = contentChild(MozDataTableTopFiltersDirective);\n\n readonly hasContent = computed(() => !!(this.edition() || this.actions() || this.filters()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"mozaic-ds-angular.mjs","sources":["../../../../projects/mozaic-ng/src/lib/breadcrumb/breadcrumb.ts","../../../../projects/mozaic-ng/src/lib/breadcrumb/breadcrumb.html","../../../../projects/mozaic-ng/src/lib/button/button.ts","../../../../projects/mozaic-ng/src/lib/button/button.html","../../../../projects/mozaic-ng/src/lib/checkbox/checkbox.ts","../../../../projects/mozaic-ng/src/lib/checkbox/checkbox.html","../../../../projects/mozaic-ng/src/lib/checkbox-group/checkbox-group.ts","../../../../projects/mozaic-ng/src/lib/checkbox-group/checkbox-group.html","../../../../projects/mozaic-ng/src/lib/divider/divider.ts","../../../../projects/mozaic-ng/src/lib/divider/divider.html","../../../../projects/mozaic-ng/src/lib/field/field.ts","../../../../projects/mozaic-ng/src/lib/field/field.html","../../../../projects/mozaic-ng/src/lib/field-group/field-group.ts","../../../../projects/mozaic-ng/src/lib/field-group/field-group.html","../../../../projects/mozaic-ng/src/lib/icon-button/icon-button.ts","../../../../projects/mozaic-ng/src/lib/icon-button/icon-button.html","../../../../projects/mozaic-ng/src/lib/linear-progress-bar-buffer/linear-progress-bar-buffer.ts","../../../../projects/mozaic-ng/src/lib/linear-progress-bar-buffer/linear-progress-bar-buffer.html","../../../../projects/mozaic-ng/src/lib/file-uploader/item/file-uploader-item.ts","../../../../projects/mozaic-ng/src/lib/file-uploader/item/file-uploader-item.html","../../../../projects/mozaic-ng/src/lib/file-uploader/file-uploader.ts","../../../../projects/mozaic-ng/src/lib/file-uploader/file-uploader.html","../../../../projects/mozaic-ng/src/lib/link/link.ts","../../../../projects/mozaic-ng/src/lib/link/link.html","../../../../projects/mozaic-ng/src/lib/loader/loader.ts","../../../../projects/mozaic-ng/src/lib/loader/loader.html","../../../../projects/mozaic-ng/src/lib/loading-overlay/loading-overlay.ts","../../../../projects/mozaic-ng/src/lib/loading-overlay/loading-overlay.html","../../../../projects/mozaic-ng/src/lib/modal/modal.ts","../../../../projects/mozaic-ng/src/lib/modal/modal.html","../../../../projects/mozaic-ng/src/lib/modal/config/modal.config.ts","../../../../projects/mozaic-ng/src/lib/modal/ref/modal-ref.ts","../../../../projects/mozaic-ng/src/lib/modal/container/modal-container.ts","../../../../projects/mozaic-ng/src/lib/modal/container/modal-container.html","../../../../projects/mozaic-ng/src/lib/modal/service/modal.service.ts","../../../../projects/mozaic-ng/src/lib/modal/directive/modal-footer.directive.ts","../../../../projects/mozaic-ng/src/lib/number-badge/number-badge.ts","../../../../projects/mozaic-ng/src/lib/number-badge/number-badge.html","../../../../projects/mozaic-ng/src/lib/overlay/overlay.ts","../../../../projects/mozaic-ng/src/lib/overlay/overlay.html","../../../../projects/mozaic-ng/src/lib/select/select.ts","../../../../projects/mozaic-ng/src/lib/select/select.html","../../../../projects/mozaic-ng/src/lib/pagination/pagination.ts","../../../../projects/mozaic-ng/src/lib/pagination/pagination.html","../../../../projects/mozaic-ng/src/lib/password-input/password-input.directive.ts","../../../../projects/mozaic-ng/src/lib/pincode/pincode.ts","../../../../projects/mozaic-ng/src/lib/pincode/pincode.html","../../../../projects/mozaic-ng/src/lib/quantity-selector/quantity-selector.ts","../../../../projects/mozaic-ng/src/lib/quantity-selector/quantity-selector.html","../../../../projects/mozaic-ng/src/lib/radio/radio.ts","../../../../projects/mozaic-ng/src/lib/radio/radio.html","../../../../projects/mozaic-ng/src/lib/radio-group/radio-group.ts","../../../../projects/mozaic-ng/src/lib/radio-group/radio-group.html","../../../../projects/mozaic-ng/src/lib/status-dot/status-dot.ts","../../../../projects/mozaic-ng/src/lib/status-dot/status-dot.html","../../../../projects/mozaic-ng/src/lib/status-badge/status-badge.ts","../../../../projects/mozaic-ng/src/lib/status-badge/status-badge.html","../../../../projects/mozaic-ng/src/lib/status-notification/status-notification.ts","../../../../projects/mozaic-ng/src/lib/status-notification/status-notification.html","../../../../projects/mozaic-ng/src/lib/tabs/tab/tab.ts","../../../../projects/mozaic-ng/src/lib/tabs/tabs.ts","../../../../projects/mozaic-ng/src/lib/tabs/tabs.html","../../../../projects/mozaic-ng/src/lib/tag/tag.ts","../../../../projects/mozaic-ng/src/lib/tag/tag.html","../../../../projects/mozaic-ng/src/lib/text-area/text-area.directive.ts","../../../../projects/mozaic-ng/src/lib/text-input/text-input.directive.ts","../../../../projects/mozaic-ng/src/lib/toggle/toggle.ts","../../../../projects/mozaic-ng/src/lib/toggle/toggle.html","../../../../projects/mozaic-ng/src/lib/flag/flag.ts","../../../../projects/mozaic-ng/src/lib/flag/flag.html","../../../../projects/mozaic-ng/src/lib/datepicker/datepicker.ts","../../../../projects/mozaic-ng/src/lib/datepicker/datepicker.html","../../../../projects/mozaic-ng/src/lib/tooltip/tooltip.ts","../../../../projects/mozaic-ng/src/lib/tooltip/tooltip.html","../../../../projects/mozaic-ng/src/lib/tooltip/tooltip.directive.ts","../../../../projects/mozaic-ng/src/lib/circular-progress-bar/circular-progress-bar.ts","../../../../projects/mozaic-ng/src/lib/circular-progress-bar/ciruclar-progress-bar.html","../../../../projects/mozaic-ng/src/lib/linear-progress-bar-percentage/linear-progress-bar-percentage.ts","../../../../projects/mozaic-ng/src/lib/linear-progress-bar-percentage/linear-progress-bar-percentage.html","../../../../projects/mozaic-ng/src/lib/callout/callout.ts","../../../../projects/mozaic-ng/src/lib/callout/callout.html","../../../../projects/mozaic-ng/src/lib/avatar/avatar.ts","../../../../projects/mozaic-ng/src/lib/avatar/avatar.html","../../../../projects/mozaic-ng/src/lib/phone-number-input/phone-number-input.ts","../../../../projects/mozaic-ng/src/lib/phone-number-input/phone-number-input.html","../../../../projects/mozaic-ng/src/lib/toaster/toaster.ts","../../../../projects/mozaic-ng/src/lib/toaster/toaster.html","../../../../projects/mozaic-ng/src/lib/toaster/config/toaster.config.ts","../../../../projects/mozaic-ng/src/lib/toaster/ref/toaster-ref.ts","../../../../projects/mozaic-ng/src/lib/toaster/container/toaster-container.ts","../../../../projects/mozaic-ng/src/lib/toaster/container/toaster-container.html","../../../../projects/mozaic-ng/src/lib/toaster/service/toaster.service.ts","../../../../projects/mozaic-ng/src/lib/sidebar/sidebar.ts","../../../../projects/mozaic-ng/src/lib/sidebar/sidebar.html","../../../../projects/mozaic-ng/src/lib/segmented-control/segmented-control.ts","../../../../projects/mozaic-ng/src/lib/segmented-control/segmented-control.html","../../../../projects/mozaic-ng/src/lib/accordion/components/header/accordion-header.ts","../../../../projects/mozaic-ng/src/lib/accordion/components/header/accordion-header.html","../../../../projects/mozaic-ng/src/lib/accordion/components/content/accordion-content.ts","../../../../projects/mozaic-ng/src/lib/accordion/components/content/accordion-content.html","../../../../projects/mozaic-ng/src/lib/accordion/components/panel/accordion-panel.ts","../../../../projects/mozaic-ng/src/lib/accordion/accordion.ts","../../../../projects/mozaic-ng/src/lib/accordion/accordion.html","../../../../projects/mozaic-ng/src/lib/action-bottom-bar/action-bottom-bar.ts","../../../../projects/mozaic-ng/src/lib/action-bottom-bar/action-bottom-bar.html","../../../../projects/mozaic-ng/src/lib/action-listbox/action-listbox.ts","../../../../projects/mozaic-ng/src/lib/action-listbox/action-listbox.html","../../../../projects/mozaic-ng/src/lib/action-listbox/ref/action-listbox-ref.ts","../../../../projects/mozaic-ng/src/lib/action-listbox/config/action-listbox.config.ts","../../../../projects/mozaic-ng/src/lib/action-listbox/container/action-listbox-container.ts","../../../../projects/mozaic-ng/src/lib/action-listbox/container/action-listbox-container.html","../../../../projects/mozaic-ng/src/lib/action-listbox/directive/action-listbox-trigger.directive.ts","../../../../projects/mozaic-ng/src/lib/carousel/carousel.ts","../../../../projects/mozaic-ng/src/lib/carousel/carousel.html","../../../../projects/mozaic-ng/src/lib/status-message/status-message.ts","../../../../projects/mozaic-ng/src/lib/status-message/status-message.html","../../../../projects/mozaic-ng/src/lib/kpi/kpi.ts","../../../../projects/mozaic-ng/src/lib/kpi/kpi.html","../../../../projects/mozaic-ng/src/lib/stepper-compact/stepper-compact.ts","../../../../projects/mozaic-ng/src/lib/stepper-compact/stepper-compact.html","../../../../projects/mozaic-ng/src/lib/star-rating/star-rating.ts","../../../../projects/mozaic-ng/src/lib/star-rating/star-rating.html","../../../../projects/mozaic-ng/src/lib/built-in-menu/built-in-menu.ts","../../../../projects/mozaic-ng/src/lib/built-in-menu/built-in-menu.html","../../../../projects/mozaic-ng/src/lib/check-list-menu/check-list-menu.ts","../../../../projects/mozaic-ng/src/lib/check-list-menu/check-list-menu.html","../../../../projects/mozaic-ng/src/lib/stepper-inline/stepper-inline.ts","../../../../projects/mozaic-ng/src/lib/stepper-inline/stepper-inline.html","../../../../projects/mozaic-ng/src/lib/stepper-stacked/stepper-stacked.ts","../../../../projects/mozaic-ng/src/lib/stepper-stacked/stepper-stacked.html","../../../../projects/mozaic-ng/src/lib/stepper-bottom-bar/stepper-bottom-bar.ts","../../../../projects/mozaic-ng/src/lib/stepper-bottom-bar/stepper-bottom-bar.html","../../../../projects/mozaic-ng/src/lib/page-header/page-header.ts","../../../../projects/mozaic-ng/src/lib/page-header/page-header.html","../../../../projects/mozaic-ng/src/lib/tiles/tile/tile.ts","../../../../projects/mozaic-ng/src/lib/tiles/tile/tile.html","../../../../projects/mozaic-ng/src/lib/tiles/selectable/selectable-tile.ts","../../../../projects/mozaic-ng/src/lib/tiles/selectable/selectable-tile.html","../../../../projects/mozaic-ng/src/lib/tiles/expandable/expandable-tile.ts","../../../../projects/mozaic-ng/src/lib/tiles/expandable/expandable-tile.html","../../../../projects/mozaic-ng/src/lib/drawer/config/drawer.config.ts","../../../../projects/mozaic-ng/src/lib/drawer/ref/drawer-ref.ts","../../../../projects/mozaic-ng/src/lib/drawer/container/drawer-container.ts","../../../../projects/mozaic-ng/src/lib/drawer/container/drawer-container.html","../../../../projects/mozaic-ng/src/lib/drawer/service/drawer.service.ts","../../../../projects/mozaic-ng/src/lib/drawer/directive/drawer-footer.directive.ts","../../../../projects/mozaic-ng/src/lib/drawer/drawer.ts","../../../../projects/mozaic-ng/src/lib/drawer/drawer.html","../../../../projects/mozaic-ng/src/lib/popover/popover.ts","../../../../projects/mozaic-ng/src/lib/popover/popover.html","../../../../projects/mozaic-ng/src/lib/popover/config/popover.config.ts","../../../../projects/mozaic-ng/src/lib/popover/ref/popover-ref.ts","../../../../projects/mozaic-ng/src/lib/popover/container/popover-container.ts","../../../../projects/mozaic-ng/src/lib/popover/directives/popover-trigger.directive.ts","../../../../projects/mozaic-ng/src/lib/popover/service/popover.service.ts","../../../../projects/mozaic-ng/src/lib/popover/directives/popover-footer.directive.ts","../../../../projects/mozaic-ng/src/lib/popover/index.ts","../../../../projects/mozaic-ng/src/lib/navigation-indicator/navigation-indicator.ts","../../../../projects/mozaic-ng/src/lib/navigation-indicator/navigation-indicator.html","../../../../projects/mozaic-ng/src/lib/utils/generate-random-int.ts","../../../../projects/mozaic-ng/src/lib/combobox/combobox.model.ts","../../../../projects/mozaic-ng/src/lib/combobox/combobox.component.ts","../../../../projects/mozaic-ng/src/lib/combobox/combobox.component.html","../../../../projects/mozaic-ng/src/lib/combobox/combobox.harness.ts","../../../../projects/mozaic-ng/src/lib/tree/services/tree-state.ts","../../../../projects/mozaic-ng/src/lib/tree/services/tree-selection.ts","../../../../projects/mozaic-ng/src/lib/tree/services/tree-keyboard.ts","../../../../projects/mozaic-ng/src/lib/tree/components/tree-node/tree-node.ts","../../../../projects/mozaic-ng/src/lib/tree/components/tree-node/tree-node.html","../../../../projects/mozaic-ng/src/lib/tree/tree.ts","../../../../projects/mozaic-ng/src/lib/tree/tree.html","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-column.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-header.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-row.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-row-expand.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-expand-button.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-cell.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-empty.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-info.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-rows-per-page.ts","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-selection-bar.ts","../../../../projects/mozaic-ng/src/lib/datatable/directives/datatable-templates.ts","../../../../projects/mozaic-ng/src/lib/datatable/model/datatable.model.ts","../../../../projects/mozaic-ng/src/lib/datatable/datatable.ts","../../../../projects/mozaic-ng/src/lib/datatable/datatable.html","../../../../projects/mozaic-ng/src/lib/datatable/components/datatable-top.ts","../../../../projects/mozaic-ng/src/lib/bottom-bar/bottom-bar.ts","../../../../projects/mozaic-ng/src/lib/bottom-bar/bottom-bar.html","../../../../projects/mozaic-ng/src/lib/empty-state/empty-state.ts","../../../../projects/mozaic-ng/src/lib/empty-state/empty-state.html","../../../../projects/mozaic-ng/src/mozaic-ds-angular.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { MozBreadcrumbAppearance, MozBreadcrumbLink } from './model/breadcrumb.model';\n\n@Component({\n selector: 'moz-breadcrumb',\n templateUrl: './breadcrumb.html',\n styleUrls: ['./breadcrumb.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink],\n})\nexport class MozBreadcrumbComponent {\n readonly appearance = input<MozBreadcrumbAppearance>('standard');\n readonly links = input<MozBreadcrumbLink[]>([]);\n\n readonly classObject = computed(() => {\n return {\n 'breadcrumb': true,\n [`breadcrumb--${this.appearance()}`]: this.appearance(),\n };\n });\n\n getLinkClass(): string {\n const linkClass = this.appearance() !== 'standard' ? ` link--${this.appearance()}` : '';\n return `link link--inline${linkClass}`;\n }\n\n getCurrentLinkClass(): string {\n const linkClass = this.appearance() !== 'standard' ? ` link--${this.appearance()}` : '';\n return `link breadcrumb__current${linkClass}`;\n }\n}\n","<nav [class]=\"classObject()\" aria-label=\"Breadcrumb\">\n <ol class=\"breadcrumb__container\">\n @for (link of links(); track $index; let isLast = $last) {\n <li class=\"breadcrumb__item\">\n @if (isLast) { @if (link.router) {\n <a [routerLink]=\"link.href\" [class]=\"getCurrentLinkClass()\" aria-current=\"page\">\n <span class=\"link__label\">{{ link.label }}</span>\n </a>\n } @else {\n <a [href]=\"link.href\" [class]=\"getCurrentLinkClass()\" aria-current=\"page\">\n <span class=\"link__label\">{{ link.label }}</span>\n </a>\n } } @else { @if (link.router) {\n <a [routerLink]=\"link.href\" [class]=\"getLinkClass()\">\n <span class=\"link__label\">{{ link.label }}</span>\n </a>\n } @else {\n <a [href]=\"link.href\" [class]=\"getLinkClass()\">\n <span class=\"link__label\">{{ link.label }}</span>\n </a>\n } }\n </li>\n }\n </ol>\n</nav>\n","import {\n Component,\n TemplateRef,\n computed,\n contentChild,\n input,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n MozButtonAppearance,\n MozButtonSize,\n MozButtonIconPosition,\n MozButtonType,\n} from './model/button.model';\n\n@Component({\n selector: 'button[moz-button]',\n templateUrl: './button.html',\n styleUrls: ['./button.scss'],\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.type]': 'type()',\n },\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozButtonComponent {\n readonly appearance = input<MozButtonAppearance>('standard');\n readonly size = input<MozButtonSize>();\n readonly disabled = input<boolean>();\n readonly ghost = input<boolean>();\n readonly outlined = input<boolean>();\n readonly iconPosition = input<MozButtonIconPosition>(null);\n readonly type = input<MozButtonType>('button');\n readonly isLoading = input<boolean>();\n readonly iconTpl = contentChild<TemplateRef<void>>('icon', { descendants: false });\n\n readonly classes = computed(() => {\n const classes = ['button'];\n\n if (this.appearance()) {\n classes.push(`button--${this.appearance()}`);\n }\n if (this.size()) {\n classes.push(`button--${this.size()}`);\n }\n if (this.ghost()) {\n classes.push('button--ghost');\n }\n if (this.outlined()) {\n classes.push('button--outlined');\n }\n if (this.iconPosition() === 'only') {\n classes.push('button--icon-only');\n }\n if (this.isLoading()) {\n classes.push('button--loading');\n }\n\n return classes.join(' ');\n });\n}\n","@if (isLoading()) {\n<div class=\"loader loader--s button__loader\">\n <span class=\"loader__spinner\">\n <svg\n class=\"loader__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n aria-hidden=\"true\"\n >\n <circle class=\"loader__path\" cx=\"50%\" cy=\"50%\" r=\"6\"></circle>\n </svg>\n </span>\n</div>\n} @if ((iconPosition() === 'left' || iconPosition() === 'only') && !isLoading()) {\n<ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\n} @if (iconPosition() !== 'only') {\n<span class=\"button__label\">\n <ng-content></ng-content>\n</span>\n} @if (iconPosition() === 'right' && !isLoading()) {\n<ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\n}\n<ng-template #iconTemplate>\n <ng-content select=\"[icon]\"></ng-content>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\n\n@Component({\n selector: 'moz-checkbox',\n imports: [FormsModule, ReactiveFormsModule],\n templateUrl: './checkbox.html',\n styleUrls: ['./checkbox.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozCheckboxComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozCheckboxComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly name = input<string | undefined>();\n readonly label = input<string | undefined>();\n readonly indeterminate = input(false);\n readonly isInvalid = input(false);\n readonly disabled = input(false);\n readonly indented = input(false);\n\n public _value = signal(false);\n\n onChange: (_: boolean) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n readonly classObject = computed(() => {\n return {\n 'is-invalid': this.isInvalid(),\n };\n });\n\n readonly classes = computed(() => {\n return {\n 'checkbox': true,\n 'checkbox--indented': this.indented(),\n };\n });\n\n writeValue(value: boolean): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (_: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onInputChange(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n this._value.set(checked);\n this.onChange(checked);\n this.onTouched();\n }\n}\n","<div [class]=\"classes()\">\n <input\n class=\"checkbox__input\"\n type=\"checkbox\"\n [id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"_value()\"\n [class]=\"classObject()\"\n [attr.aria-invalid]=\"isInvalid()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"disabled()\"\n (change)=\"onInputChange($event)\"\n [attr.aria-label]=\"label()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-checked]=\"_value()\"\n />\n @if (label()) {\n <label class=\"checkbox__label\" [for]=\"id()\"> {{ label() }} </label>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'moz-checkbox-group',\n templateUrl: './checkbox-group.html',\n styleUrls: ['./checkbox-group.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozCheckboxGroupComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozCheckboxGroupComponent implements ControlValueAccessor {\n readonly name = input.required<string>();\n readonly legend = input<string>();\n readonly necessityIndicator = input<string>();\n readonly helpText = input<string>();\n readonly helpId = input<string>();\n readonly options = input<\n {\n id: string;\n label: string;\n value: string;\n disabled?: boolean;\n isInvalid?: boolean;\n }[]\n >();\n readonly inline = input<boolean>(false);\n\n readonly _value = signal<string[]>([]);\n readonly containerClass = computed(() => {\n return {\n 'field__content': true,\n 'field__content--inline': this.inline(),\n };\n });\n\n onChange: (_: string[]) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: string[]): void {\n this._value.set(value || []);\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n toggleSelection(event: Event, val: string) {\n const isChecked = (event.target as HTMLInputElement).checked;\n const values = [...this._value()];\n\n if (isChecked && !values.includes(val)) {\n values.push(val);\n } else if (!isChecked && values.includes(val)) {\n const index = values.indexOf(val);\n values.splice(index, 1);\n }\n\n this._value.set(values);\n this.onChange(values);\n this.onTouched();\n }\n\n isChecked(value: string): boolean {\n return this._value().includes(value);\n }\n\n getCheckboxInputClass(option: { isInvalid?: boolean }): { [key: string]: boolean } {\n return {\n 'checkbox__input': true,\n 'is-invalid': !!option.isInvalid,\n };\n }\n}\n","<fieldset class=\"field field--group\">\n <legend class=\"field__legend\">\n {{ legend() }}\n @if (necessityIndicator()) {\n <span class=\"field__requirement\">{{ necessityIndicator() }}</span>\n }\n </legend>\n @if (helpText()) {\n <span [id]=\"helpId()\" class=\"field__help\">{{ helpText() }}</span>\n }\n\n <div [class]=\"containerClass()\">\n @for (option of options(); track $index) {\n <div class=\"field__item checkbox\">\n <input\n type=\"checkbox\"\n [class]=\"getCheckboxInputClass(option)\"\n [id]=\"option.id\"\n [name]=\"name()\"\n [checked]=\"isChecked(option.value)\"\n [disabled]=\"option.disabled ?? false\"\n (change)=\"toggleSelection($event, option.value)\"\n />\n <label [for]=\"option.id\" class=\"checkbox__label\">{{ option.label }}</label>\n </div>\n }\n </div>\n</fieldset>\n","import { Component, input, ChangeDetectionStrategy, computed } from '@angular/core';\nimport { MozDividerOrientation, MozDividerAppearance, MozDividerSize } from './model/divider.model';\n\n/**\n * A divider is a visual element used to separate content or sections within an interface. It helps improve readability and organization by creating clear distinctions between groups of information. Dividers can be thin lines, thick separators, or even styled with spacing variations, adapting to different layouts. They are commonly used in menus, lists, forms, and content blocks to create a structured visual hierarchy.\n */\n@Component({\n selector: 'moz-divider',\n templateUrl: './divider.html',\n styleUrls: ['./divider.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozDividerComponent {\n /**\n * Determines the orientation of the divider.\n */\n readonly orientation = input<MozDividerOrientation>('horizontal');\n /**\n * Determines the appearance of the divider.\n */\n readonly appearance = input<MozDividerAppearance>('primary');\n /**\n * Determines the size of the divider.\n */\n readonly size = input<MozDividerSize>('s');\n\n readonly classes = computed(() => {\n return {\n [`divider-${this.orientation()}`]: this.orientation(),\n [`divider-horizontal--${this.appearance()}`]:\n this.appearance() && this.appearance() !== 'primary',\n [`divider-horizontal--${this.size()}`]: this.size() && this.size() !== 's',\n };\n });\n}\n","<div class=\"divider\">\n <div [class]=\"classes()\" aria-hidden=\"true\"></div>\n <ng-content></ng-content>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n TemplateRef,\n} from '@angular/core';\n\n@Component({\n selector: 'moz-field',\n templateUrl: './field.html',\n styleUrls: ['./field.scss'],\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozFieldComponent {\n readonly id = input<string>();\n readonly labelTemplate = contentChild<TemplateRef<unknown>>('label');\n readonly requirementTemplate = contentChild<TemplateRef<unknown>>('requirementText');\n readonly helpTemplate = contentChild<TemplateRef<unknown>>('helpText');\n readonly helpId = input<string | undefined>();\n readonly isValid = input<boolean>(false);\n readonly isInvalid = input<boolean>(false);\n readonly messageId = input<string | undefined>();\n readonly message = input<string | undefined>();\n\n readonly classes = computed(() => {\n return {\n 'mc-field__validation-message': true,\n 'is-valid': this.isValid(),\n 'is-invalid': this.isInvalid(),\n };\n });\n}\n","<div class=\"field\">\n <label class=\"field__label\" [attr.for]=\"id()\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate()!\"></ng-container>\n @if (requirementTemplate()) {\n <span class=\"field__requirement\">\n (<ng-container [ngTemplateOutlet]=\"requirementTemplate()!\"></ng-container>)\n </span>\n }\n </label>\n\n @if (helpTemplate()) {\n <span class=\"field__help\" [id]=\"helpId()\">\n <ng-container [ngTemplateOutlet]=\"helpTemplate()!\"></ng-container>\n </span>\n }\n\n <!-- <ng-content select=\"moz-field-content\"></ng-content> -->\n\n <div class=\"field__content\">\n <ng-content></ng-content>\n </div>\n\n @if ((isValid() || isInvalid()) && message()) {\n <span [id]=\"messageId()\" [class]=\"classes()\">\n {{ message() }}\n </span>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'moz-field-group',\n templateUrl: './field-group.html',\n styleUrl: './field-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozFieldGroupComponent {\n readonly id = input.required<string>();\n readonly legend = input.required<string>();\n readonly requirementText = input<string | undefined>();\n readonly helpText = input<string | undefined>();\n readonly isValid = input(false);\n readonly isInvalid = input(false);\n readonly message = input<string | undefined>();\n}\n","<fieldset class=\"field--group\">\n <legend class=\"field__legend\" [attr.for]=\"id()\">\n {{ legend() }} @if (requirementText()) {\n <span class=\"field__requirement\">({{ requirementText() }})</span>\n }\n </legend>\n\n @if (helpText()) {\n <span class=\"field__help\">{{ helpText() }}</span>\n }\n\n <div class=\"field__content\">\n <ng-content></ng-content>\n </div>\n\n @if ((isValid() || isInvalid()) && message()) {\n <span\n class=\"field__validation-message\"\n [class.is-valid]=\"isValid()\"\n [class.is-invalid]=\"isInvalid()\"\n >\n {{ message() }}\n </span>\n }\n</fieldset>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport {\n MozIconButtonAppearance,\n MozIconButtonSize,\n MozIconButtonType,\n} from './model/icon-button.model';\n\n@Component({\n selector: 'moz-icon-button',\n templateUrl: './icon-button.html',\n styleUrls: ['./icon-button.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozIconButtonComponent {\n readonly id = input.required<string>();\n readonly appearance = input<MozIconButtonAppearance>('standard');\n readonly size = input<MozIconButtonSize>('m');\n readonly disabled = input<boolean>();\n readonly ghost = input<boolean>();\n readonly outlined = input<boolean>();\n readonly type = input<MozIconButtonType>('button');\n readonly ariaLabel = input<string>();\n readonly activated = output<MouseEvent>();\n\n readonly classes = computed(() => {\n return {\n 'mc-button': true,\n 'mc-button--icon-button': true,\n [`mc-button--${this.appearance()}`]: this.appearance(),\n [`mc-button--${this.size()}`]: this.size(),\n 'mc-button--ghost': this.ghost() ?? false,\n 'mc-button--outlined': this.outlined() ?? false,\n };\n });\n\n onActivated(event: MouseEvent): void {\n event.stopPropagation();\n this.activated.emit(event);\n }\n}\n","<button\n (click)=\"onActivated($event)\"\n [disabled]=\"disabled()\"\n [attr.type]=\"type()\"\n [class]=\"classes()\"\n [attr.aria-label]=\"ariaLabel()\"\n [id]=\"id()\"\n>\n <span class=\"mc-button__icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n</button>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozLinearProgressBarBufferSize } from './model/linear-progress-bar-buffer.model';\n\n@Component({\n selector: 'moz-linear-progress-bar-buffer',\n templateUrl: './linear-progress-bar-buffer.html',\n styleUrls: ['./linear-progress-bar-buffer.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozLinearProgressBarBufferComponent {\n readonly valuePercent = input<number>(0);\n readonly size = input<MozLinearProgressBarBufferSize>('l');\n readonly ariaLabel = input<string>('Progress bar');\n\n readonly classes = computed(() => {\n const classes = ['mc-linear-progressbar-buffer'];\n if (this.size() === 's') classes.push('mc-linear-progressbar-buffer--s');\n if (this.size() === 'm') classes.push('mc-linear-progressbar-buffer--m');\n if (this.size() === 'l') classes.push('mc-linear-progressbar-buffer--l');\n return classes.join(' ');\n });\n}\n","<div [class]=\"classes()\">\n <div\n class=\"mc-linear-progressbar-buffer__indicator\"\n role=\"progressbar\"\n [style.--progress-value]=\"valuePercent()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-valuenow]=\"valuePercent()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n ></div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport {\n CheckCircle32,\n CrossCircleFilled20,\n Uploading32,\n WarningCircle32,\n Refresh20,\n Refresh32,\n Eye20,\n} from '@mozaic-ds/icons-angular';\nimport { MozDividerComponent } from '../../divider/divider';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { MozLinearProgressBarBufferComponent } from '../../linear-progress-bar-buffer/linear-progress-bar-buffer';\nimport { MozButtonComponent } from '../../button/button';\nimport { MozFileUploaderItemFormat } from './model/file-uploader-item.model';\n\n@Component({\n selector: 'moz-file-uploader-item',\n templateUrl: './file-uploader-item.html',\n styleUrls: ['./file-uploader-item.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MozLinearProgressBarBufferComponent,\n MozButtonComponent,\n CheckCircle32,\n CrossCircleFilled20,\n Refresh32,\n MozDividerComponent,\n MozIconButtonComponent,\n Refresh20,\n Uploading32,\n Eye20,\n WarningCircle32,\n ],\n})\nexport class MozFileUploaderItemComponent {\n readonly format = input<MozFileUploaderItemFormat>('inline');\n readonly invalid = input<boolean>(false);\n readonly uploading = input<boolean>(false);\n readonly errorMessage = input<string>();\n readonly hasPreview = input<boolean>(false);\n readonly file = input.required<File>();\n readonly fileInformation = input<(file: File) => string>();\n readonly retryButtonLabel = input<string>('Retry');\n readonly deleteButtonLabel = input<string>('Delete');\n readonly previewButtonLabel = input<string>('Preview');\n\n readonly delete = output<File>();\n readonly retry = output<File>();\n readonly preview = output<File>();\n\n readonly fileName = computed(() => this.file().name);\n\n readonly fileInfo = computed(() => {\n const customInfo = this.fileInformation();\n if (customInfo) {\n return customInfo(this.file());\n }\n\n // Default information\n const file = this.file();\n const size = this.formatFileSize(file.size);\n return `${size} • ${file.type || 'Unknown type'}`;\n });\n\n readonly isInline = computed(() => this.format() === 'inline');\n\n readonly stateModifier = computed(() => {\n if (this.invalid()) return 'error';\n if (this.uploading()) return 'loading';\n return 'default';\n });\n\n readonly modifierClass = computed(() => {\n const state = this.stateModifier();\n return state !== 'default' ? `mc-file-uploader-item--${state}` : '';\n });\n\n readonly isUploading = computed(() => this.stateModifier() === 'loading');\n\n readonly stateIcon = computed(() => {\n const state = this.stateModifier();\n const iconMap = {\n default: CheckCircle32,\n loading: Uploading32,\n error: WarningCircle32,\n };\n return iconMap[state];\n });\n\n readonly showInlineActions = computed(() => this.isInline() && !this.isUploading());\n\n readonly showStackedActions = computed(() => !this.isInline() && !this.isUploading());\n\n onDelete(): void {\n this.delete.emit(this.file());\n }\n\n onRetry(): void {\n this.retry.emit(this.file());\n }\n\n onPreview(): void {\n this.preview.emit(this.file());\n }\n\n private formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];\n }\n}\n","<div class=\"mc-file-uploader-item\" [class]=\"modifierClass()\">\n <div class=\"mc-file-uploader-item__container mc-file-uploader-item__container--{{ format() }}\">\n <div\n class=\"mc-file-uploader-item__meta-row\"\n [class.mc-file-uploader-item__meta-row--with-info]=\"true\"\n >\n @if (isUploading() && !invalid()) {\n <Uploading32 class=\"mc-file-uploader-item__status-icon\" />\n } @else if(invalid()) {\n <WarningCircle32 class=\"mc-file-uploader-item__status-icon\" />\n } @else {\n <CheckCircle32 class=\"mc-file-uploader-item__status-icon\" />\n }\n <div class=\"mc-file-uploader-item__info-content\">\n <span class=\"mc-file-uploader-item__label\">{{ fileName() }}</span>\n <span class=\"mc-file-uploader-item__details\">{{ fileInfo() }}</span>\n </div>\n </div>\n\n @if (showInlineActions()) {\n <div class=\"mc-file-uploader-item__inline-actions\">\n @if (invalid()) {\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onRetry()\"\n >\n <Refresh32 icon />\n <span class=\"mc-button__label\">{{ retryButtonLabel() }}</span>\n </button>\n } @if (!invalid() && hasPreview()) {\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onPreview()\"\n >\n <span class=\"mc-button__label\">{{ previewButtonLabel() }}</span>\n </button>\n }\n </div>\n <div class=\"mc-file-uploader-item__delete-button-container\">\n <moz-icon-button\n [id]=\"'file-uploader-item-delete-button'\"\n (activated)=\"onDelete()\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n >\n <CrossCircleFilled20 icon />\n </moz-icon-button>\n </div>\n } @if (showStackedActions()) {\n <moz-divider orientation=\"horizontal\"></moz-divider>\n <div class=\"mc-file-uploader-item__actions-container\">\n @if (!invalid() && hasPreview()) {\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onPreview()\"\n [iconPosition]=\"'left'\"\n >\n <Eye20 icon />\n <span class=\"mc-button__label\">{{ previewButtonLabel() }}</span>\n </button>\n } @if (invalid()) {\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onRetry()\"\n [iconPosition]=\"'left'\"\n >\n <Refresh20 icon />\n <span class=\"mc-button__label\">{{ retryButtonLabel() }}</span>\n </button>\n }\n\n <button\n moz-button\n [ghost]=\"true\"\n size=\"s\"\n class=\"mc-file-uploader-item__action\"\n (click)=\"onDelete()\"\n [iconPosition]=\"'left'\"\n >\n <CrossCircleFilled20 icon />\n <span class=\"mc-button__label\">{{ deleteButtonLabel() }}</span>\n </button>\n </div>\n } @if (isUploading() && !invalid()) {\n <moz-linear-progress-bar-buffer size=\"l\" [valuePercent]=\"75\" />\n }\n </div>\n\n @if (errorMessage() && invalid()) {\n <span class=\"mc-file-uploader-item__error-message\">{{ errorMessage() }}</span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n computed,\n forwardRef,\n input,\n OnInit,\n signal,\n output,\n viewChild,\n ElementRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Upload24 } from '@mozaic-ds/icons-angular';\nimport { MozFileUploaderItemComponent } from './item/file-uploader-item';\nexport type MozFileUploaderFormat = 'inline' | 'stacked';\n\n@Component({\n selector: 'moz-file-uploader',\n templateUrl: './file-uploader.html',\n styleUrls: ['./file-uploader.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MozFileUploaderItemComponent, Upload24],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozFileUploaderComponent),\n multi: true,\n },\n ],\n})\nexport class MozFileUploaderComponent implements OnInit, ControlValueAccessor {\n // File input props\n readonly id = input.required<string>();\n readonly label = input<string>();\n readonly helpText = input<string>();\n readonly helpId = input<string>();\n readonly necessityIndicator = input<string>('');\n readonly hasDragDrop = input<boolean>(true);\n readonly showFilesList = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly multipleFiles = input<boolean>(true);\n readonly accept = input<string>();\n readonly title = input<string>('Drag & drop');\n readonly subtitle = input<string>('or');\n readonly uploadButtonLabel = input<string>('Upload file(s)');\n\n // File item props\n readonly format = input<MozFileUploaderFormat>('inline');\n readonly errorMessage = input<string>();\n readonly invalid = input<boolean>(false);\n readonly uploading = input<boolean>(false);\n readonly hasPreview = input<boolean>(false);\n readonly retryButtonLabel = input<string>('Retry');\n readonly deleteButtonLabel = input<string>('Delete');\n readonly previewButtonLabel = input<string>('Preview');\n readonly information = input<string>();\n readonly fileInformation = input<(file: File) => string>();\n\n // Outputs for file operations\n readonly retryFile = output<File>();\n readonly previewFile = output<File>();\n /**\n * Emits the current file list every time it changes because of a user\n * interaction (select, drag & drop, delete). This lets the component be\n * bound outside of Reactive Forms too, e.g. `(filesChange)=\"files = $event\"`.\n *\n * When used inside a `FormGroup`/`FormControl` (via `formControlName` or\n * `[(ngModel)]`), this output fires from the exact same code path as the\n * `ControlValueAccessor` `onChange` callback below — both are always in\n * sync, so most form use cases only need `valueChanges` on the control.\n */\n readonly filesChange = output<File[]>();\n\n // Internal state\n readonly files = signal<File[]>([]);\n readonly isDragged = signal<boolean>(false);\n\n // Set by Angular Forms via `setDisabledState()` when the bound\n // FormControl is disabled (e.g. `this.form.get('attachments').disable()`).\n private readonly formDisabled = signal<boolean>(false);\n\n // Initial files for stories/testing\n readonly initialFiles = input<File[]>([]);\n\n readonly classes = computed(() => ({\n 'file-uploader--draggable': this.hasDragDrop(),\n }));\n\n // True when the uploader is disabled either through the `[disabled]`\n // input OR because the FormControl it is bound to is disabled.\n readonly isDisabledState = computed(() => this.disabled() || this.formDisabled());\n\n readonly inputClasses = computed(() => ({\n 'file-uploader__input--disabled': this.isDisabledState(),\n 'file-uploader__input--dragged': this.isDragged(),\n }));\n\n readonly iconTpl = ContentChild('icon', { descendants: false });\n readonly fileInput = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n ngOnInit(): void {\n const initial = this.initialFiles();\n if (initial.length > 0) {\n this.files.set(initial);\n }\n }\n\n removeFile(index: number): void {\n const currentFiles = this.files();\n const newFiles = currentFiles.filter((_, i) => i !== index);\n this.commitFiles(newFiles);\n }\n\n onDeleteFile(file: File): void {\n const currentFiles = this.files();\n const newFiles = currentFiles.filter((f) => f.name !== file.name);\n this.commitFiles(newFiles);\n }\n\n onRetryFile(file: File): void {\n this.retryFile.emit(file);\n }\n\n onPreviewFile(file: File): void {\n this.previewFile.emit(file);\n }\n\n onFileSelect(event: Event): void {\n const target = event.target as HTMLInputElement;\n if (target.files) {\n const newFiles = Array.from(target.files);\n\n if (this.multipleFiles()) {\n // Mode multiple : ajoute les nouveaux fichiers aux existants\n const currentFiles = this.files();\n this.commitFiles([...currentFiles, ...newFiles]);\n } else {\n // Mode simple : remplace tous les fichiers\n this.commitFiles(newFiles);\n }\n }\n\n // Reset the native input so selecting the exact same file again (e.g.\n // after deleting it) still fires a `change` event.\n target.value = '';\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.isDragged.set(false);\n\n if (this.isDisabledState()) return;\n\n if (event.dataTransfer?.files) {\n const newFiles = Array.from(event.dataTransfer.files);\n\n if (this.multipleFiles()) {\n // Mode multiple : ajoute les nouveaux fichiers aux existants\n const currentFiles = this.files();\n this.commitFiles([...currentFiles, ...newFiles]);\n } else {\n // Mode simple : remplace tous les fichiers\n this.commitFiles(newFiles);\n }\n }\n }\n\n openFileDialog(): void {\n if (this.isDisabledState()) return;\n\n const input = this.fileInput()?.nativeElement;\n input?.click();\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n this.isDragged.set(true);\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.isDragged.set(false);\n }\n\n // --- ControlValueAccessor -------------------------------------------\n // Implementing this interface is what allows `moz-file-uploader` to be\n // bound with `formControlName`, `[formControl]` or `[(ngModel)]`, exactly\n // like `moz-text-input` or any other Mozaic form control. The FormControl\n // value is a plain `File[]`.\n\n private onChange: (files: File[]) => void = () => void 0;\n private onTouched: () => void = () => void 0;\n\n /**\n * Called by Angular Forms to push a value INTO the component (e.g. on\n * `form.reset()`, `patchValue()`, or when the form is initialized with a\n * non-empty value). Must only update local state, never call `onChange`\n * back — otherwise it would create a feedback loop with the form.\n */\n writeValue(files: File[] | null): void {\n this.files.set(files ?? []);\n }\n\n registerOnChange(fn: (files: File[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n /**\n * Single entry point for every user-driven mutation of the file list\n * (select, drag & drop, delete). Updates the internal signal, then\n * notifies both the `filesChange` output and the Reactive Forms\n * `onChange`/`onTouched` callbacks so the two stay in sync.\n */\n private commitFiles(files: File[]): void {\n this.files.set(files);\n this.filesChange.emit(files);\n this.onChange(files);\n this.onTouched();\n }\n}\n","<div class=\"file-uploader\" [class]=\"classes()\">\n <div class=\"file-uploader__container\">\n <div class=\"field\">\n <label class=\"field__label\" [attr.for]=\"id()\">\n {{ label() }}\n @if (necessityIndicator()) {\n <span class=\"field__requirement\">\n {{ necessityIndicator() }}\n </span>\n }\n </label>\n @if (helpText()) {\n <span [id]=\"helpId()\" class=\"field__help\">\n {{ helpText() }}\n </span>\n }\n <div class=\"field__content\">\n <input\n #fileInput\n [id]=\"id()\"\n aria-label=\"file input\"\n type=\"file\"\n class=\"file-uploader__hidden-input\"\n [disabled]=\"isDisabledState()\"\n (change)=\"onFileSelect($event)\"\n [multiple]=\"multipleFiles()\"\n [accept]=\"accept()\"\n />\n\n <div\n class=\"file-uploader__input\"\n [class]=\"inputClasses()\"\n (click)=\"openFileDialog()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n @if (hasDragDrop()) {\n <span class=\"file-uploader__input-title\">{{ title() }}</span>\n <span class=\"file-uploader__input-subtitle\">{{ subtitle() }}</span>\n }\n\n <div class=\"button button--outlined file-uploader__button\">\n <Upload24 />\n <span class=\"button__label\">{{ uploadButtonLabel() }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n @if (showFilesList() && files().length > 0) {\n <div class=\"file-uploader__files-list\">\n @for (file of files(); track file; let i = $index) {\n <moz-file-uploader-item\n [format]=\"format()\"\n [invalid]=\"invalid()\"\n [uploading]=\"uploading()\"\n [errorMessage]=\"errorMessage()\"\n [hasPreview]=\"hasPreview()\"\n [file]=\"file\"\n [fileInformation]=\"fileInformation()\"\n [retryButtonLabel]=\"retryButtonLabel()\"\n [deleteButtonLabel]=\"deleteButtonLabel()\"\n [previewButtonLabel]=\"previewButtonLabel()\"\n (delete)=\"onDeleteFile($event)\"\n (retry)=\"onRetryFile($event)\"\n (preview)=\"onPreviewFile($event)\"\n />\n }\n </div>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterLink, RouterLinkActive, RouterLinkWithHref } from '@angular/router';\nimport { MozLinkAppearance, MozLinkSize, MozLinkIconPosition } from './model/link.model';\n\n@Component({\n selector: 'moz-link',\n imports: [NgTemplateOutlet, RouterLink],\n templateUrl: './link.html',\n styleUrls: ['./link.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozLinkComponent {\n readonly href = input<string | undefined>();\n readonly target = input<string | undefined>();\n readonly appearance = input<MozLinkAppearance>('standard');\n readonly size = input<MozLinkSize>('m');\n readonly inline = input<boolean>(false);\n readonly router = input<boolean>(false);\n readonly iconPosition = input<MozLinkIconPosition>('left');\n readonly current = input<boolean>(false);\n readonly ariaCurrent = input<string | null>(null);\n\n private readonly routerLinkActive = inject(RouterLinkActive, {\n optional: true,\n });\n\n public readonly routerLink = inject(RouterLinkWithHref, { optional: true });\n\n readonly classes = computed(() => {\n return {\n 'link': true,\n [`link--${this.appearance()}`]: this.appearance(),\n [`link--${this.size()}`]: this.size(),\n 'link--inline': this.inline() && !this.current(),\n 'link--stand-alone': !this.inline(),\n 'link--active': this.routerLinkActive?.isActive ?? false,\n 'link--breadcrumb__current': this.current(),\n };\n });\n}\n","@if (router()) {\n<a\n [routerLink]=\"href()\"\n [attr.href]=\"href()\"\n [class]=\"classes()\"\n [attr.target]=\"target()\"\n [attr.aria-current]=\"ariaCurrent()\"\n (click)=\"$event.preventDefault()\"\n>\n <ng-container [ngTemplateOutlet]=\"linkContent\"></ng-container>\n</a>\n} @else {\n<a\n [attr.href]=\"href()\"\n [class]=\"classes()\"\n [attr.target]=\"target()\"\n [attr.aria-current]=\"ariaCurrent()\"\n>\n <ng-container [ngTemplateOutlet]=\"linkContent\"></ng-container>\n</a>\n}\n\n<ng-template #linkContent>\n @if(iconPosition() === 'left'){\n <span class=\"link__icon\" aria-hidden=\"true\">\n <ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\n </span>\n }\n\n <span class=\"link__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\"></ng-container>\n </span>\n\n @if(iconPosition() === 'right'){\n <span class=\"link__icon\" aria-hidden=\"true\">\n <ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\n </span>\n }\n</ng-template>\n\n<ng-template #iconTemplate>\n <ng-content select=\"[icon]\"></ng-content>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-content></ng-content>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozLoaderAppearance, MozLoaderSize } from './model/loader.model';\n\n@Component({\n selector: 'moz-loader',\n templateUrl: './loader.html',\n styleUrls: ['./loader.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozLoaderComponent {\n readonly appearance = input<MozLoaderAppearance>('standard');\n readonly size = input<MozLoaderSize>('m');\n readonly text = input<string>();\n\n readonly classes = computed(() => {\n return {\n 'loader': true,\n [`loader--${this.size()}`]: this.size(),\n [`loader--${this.appearance()}`]: this.appearance(),\n [`loader--text-visible`]: this.text() !== '',\n };\n });\n\n readonly viewBox = computed(() => {\n switch (this.size()) {\n case 'xs':\n return '0 0 20 20';\n case 's':\n return '0 0 24 24';\n case 'l':\n return '0 0 64 64';\n default:\n return '0 0 32 32';\n }\n });\n\n readonly circleRadius = computed(() => {\n switch (this.size()) {\n case 'xs':\n return 3;\n case 's':\n return 6;\n case 'l':\n return 19;\n default:\n return 9;\n }\n });\n}\n","<div [class]=\"classes()\">\n <span class=\"loader__spinner\">\n <svg\n class=\"loader__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.viewBox]=\"viewBox()\"\n aria-hidden=\"true\"\n >\n <circle class=\"loader__path\" cx=\"50%\" cy=\"50%\" [attr.r]=\"circleRadius()\"></circle>\n </svg>\n </span>\n\n @if (text()) {\n <span class=\"loader__text\" role=\"status\">{{ text() }}</span>\n }\n</div>\n","import { Component, input } from '@angular/core';\nimport { MozLoaderComponent } from '../loader/loader';\n\n@Component({\n selector: 'moz-loading-overlay',\n imports: [MozLoaderComponent],\n templateUrl: './loading-overlay.html',\n styleUrl: './loading-overlay.scss',\n})\nexport class MozLoadingOverlayComponent {\n readonly label = input<string>('Loading...');\n readonly visible = input<boolean>(true);\n}\n","@if (visible()) {\n<div class=\"mc-loading-loader\" [class.is-visible]=\"visible()\">\n <div role=\"dialog\" tabindex=\"-1\" [attr.aria-labelledby]=\"'dialogLabel'\">\n <moz-loader [size]=\"'l'\" [appearance]=\"'inverse'\" [text]=\"label()\">\n </moz-loader>\n </div>\n</div>\n}\n","// standalone/modal.component.ts\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n model,\n TemplateRef,\n} from '@angular/core';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Cross24 } from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button';\nimport { MozModalSize } from './model/modal.model';\n\n@Component({\n selector: 'moz-modal',\n imports: [MozIconButtonComponent, Cross24, NgClass, NgTemplateOutlet],\n templateUrl: './modal.html',\n styleUrls: ['./modal.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozModalComponent {\n readonly title = input.required<string>();\n readonly size = input<MozModalSize>('m');\n readonly hasCloseButton = input(true);\n readonly closeOnBackdrop = input(true);\n readonly isOpen = model<boolean>(false);\n\n readonly footerTpl = contentChild<TemplateRef<void>>('modalFooter');\n\n readonly classes = computed(() => ({\n 'modal': true,\n 'is-open': this.isOpen(),\n [`modal--${this.size()}`]: this.size() !== 'm',\n }));\n\n open(): void {\n this.isOpen.set(true);\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n onBackdropClick(): void {\n if (this.closeOnBackdrop()) {\n this.close();\n }\n }\n}\n","<div\n [class]=\"classes()\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"modalTitle\"\n [attr.aria-modal]=\"isOpen() ? 'true' : 'false'\"\n>\n <div class=\"modal__dialog\" role=\"document\" (click)=\"$event.stopPropagation()\">\n <header class=\"modal__header\">\n <h2 class=\"modal__title\" id=\"modalTitle\">{{ title() }}</h2>\n\n @if (hasCloseButton()) {\n <moz-icon-button\n class=\"modal__close\"\n aria-label=\"Close\"\n [ghost]=\"true\"\n (activated)=\"close()\"\n [id]=\"'modal-close-button'\"\n >\n <Cross24 icon />\n </moz-icon-button>\n }\n </header>\n\n <main class=\"modal__body\">\n <ng-content />\n </main>\n\n @if (footerTpl()) {\n <footer class=\"modal__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl()!\" />\n </footer>\n }\n </div>\n\n @if (isOpen()) {\n <div class=\"overlay is-visible\" tabindex=\"-1\" (click)=\"onBackdropClick()\"></div>\n }\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { MozModalSize } from '../model/modal.model';\n\nexport interface MozModalConfig<D = unknown> {\n title: string;\n size?: MozModalSize;\n hasCloseButton?: boolean;\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n data?: D;\n}\n\nexport const MODAL_CONFIG = new InjectionToken<MozModalConfig>('MODAL_CONFIG');\nexport const MODAL_DATA = new InjectionToken<unknown>('MODAL_DATA');\n\nexport const DEFAULT_MODAL_CONFIG: Partial<MozModalConfig> = {\n size: 'm',\n hasCloseButton: true,\n closeOnBackdrop: true,\n closeOnEscape: true,\n};\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject, Observable } from 'rxjs';\nimport { signal } from '@angular/core';\nimport { MozModalSize } from '../model/modal.model';\n\nexport class MozModalRef<R = unknown> {\n private readonly afterClosed$ = new Subject<R | undefined>();\n private readonly afterOpened$ = new Subject<void>();\n\n readonly isOpen = signal(false);\n readonly title = signal('');\n readonly size = signal<MozModalSize>('m');\n readonly hasCloseButton = signal(true);\n readonly closeOnBackdrop = signal(true);\n readonly closeOnEscape = signal(true);\n\n private animationDuration = 300;\n\n constructor(private readonly overlayRef: OverlayRef) {}\n\n open(): void {\n requestAnimationFrame(() => {\n this.isOpen.set(true);\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n }\n\n close(result?: R): void {\n this.isOpen.set(false);\n\n setTimeout(() => {\n this.overlayRef.dispose();\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n }, this.animationDuration);\n }\n\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n HostListener,\n TemplateRef,\n computed,\n inject,\n viewChild,\n Type,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { Cross24 } from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { MODAL_CONFIG, MozModalConfig } from '../config/modal.config';\nimport { MozModalRef } from '../ref/modal-ref';\n\n@Component({\n selector: 'moz-modal-container',\n imports: [MozIconButtonComponent, Cross24, NgTemplateOutlet, CdkPortalOutlet],\n templateUrl: './modal-container.html',\n styleUrls: ['../modal.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalContainerComponent {\n readonly modalRef = inject(MozModalRef);\n readonly config = inject<MozModalConfig>(MODAL_CONFIG);\n\n readonly portalOutlet = viewChild(CdkPortalOutlet);\n\n footerTpl: TemplateRef<void> | null = null;\n\n private componentRef: ComponentRef<unknown> | null = null;\n\n readonly classes = computed(() => ({\n 'modal': true,\n 'is-open': this.modalRef.isOpen(),\n [`modal--${this.modalRef.size()}`]: this.modalRef.size() !== 'm',\n }));\n\n readonly ariaModal = computed(() => (this.modalRef.isOpen() ? 'true' : 'false'));\n\n attachComponent<C>(component: Type<C>): ComponentRef<C> {\n const portal = new ComponentPortal(component);\n const outlet = this.portalOutlet();\n\n if (!outlet) {\n throw new Error('Portal outlet is not available');\n }\n\n this.componentRef = outlet.attachComponentPortal(portal);\n return this.componentRef as ComponentRef<C>;\n }\n\n registerFooter(tpl: TemplateRef<void>): void {\n this.footerTpl = tpl;\n }\n\n onBackdropClick(event: MouseEvent): void {\n event.stopPropagation();\n if (this.modalRef.closeOnBackdrop()) {\n this.modalRef.close();\n }\n }\n\n @HostListener('keydown.escape')\n onEscape(): void {\n if (this.modalRef.closeOnEscape() && this.modalRef.isOpen()) {\n this.modalRef.close();\n }\n }\n}\n","<div\n [class]=\"classes()\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"modalTitle\"\n [attr.aria-modal]=\"ariaModal()\"\n [attr.aria-hidden]=\"!modalRef.isOpen()\"\n>\n <div class=\"modal__dialog\" role=\"document\" (click)=\"$event.stopPropagation()\">\n <header class=\"modal__header\">\n <h2 class=\"modal__title\" id=\"modalTitle\">{{ modalRef.title() }}</h2>\n\n @if (modalRef.hasCloseButton()) {\n <moz-icon-button\n class=\"modal__close\"\n aria-label=\"Close\"\n [ghost]=\"true\"\n (activated)=\"modalRef.close()\"\n [id]=\"'modal-close-button'\"\n >\n <Cross24 icon />\n </moz-icon-button>\n }\n </header>\n\n <main class=\"modal__body\">\n <ng-template cdkPortalOutlet />\n </main>\n\n @if (footerTpl) {\n <footer class=\"modal__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl\" />\n </footer>\n }\n </div>\n\n @if (modalRef.isOpen()) {\n <div class=\"overlay is-visible\" tabindex=\"-1\" (click)=\"onBackdropClick($event)\"></div>\n }\n</div>\n","// service/modal.service.ts\nimport { Injectable, Injector, Type, inject } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n MozModalConfig,\n MODAL_CONFIG,\n MODAL_DATA,\n DEFAULT_MODAL_CONFIG,\n} from '../config/modal.config';\nimport { MozModalRef } from '../ref/modal-ref';\nimport { ModalContainerComponent } from '../container/modal-container';\n\n@Injectable({ providedIn: 'root' })\nexport class MozModalService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n open<C, D = unknown, R = unknown>(component: Type<C>, config: MozModalConfig<D>): MozModalRef<R> {\n const mergedConfig: MozModalConfig<D> = {\n ...DEFAULT_MODAL_CONFIG,\n ...config,\n } as MozModalConfig<D>;\n\n const overlayRef = this.createOverlay();\n const modalRef = new MozModalRef<R>(overlayRef);\n\n modalRef.title.set(mergedConfig.title);\n modalRef.size.set(mergedConfig.size ?? 'm');\n modalRef.hasCloseButton.set(mergedConfig.hasCloseButton ?? true);\n modalRef.closeOnBackdrop.set(mergedConfig.closeOnBackdrop ?? true);\n modalRef.closeOnEscape.set(mergedConfig.closeOnEscape ?? true);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: MozModalRef, useValue: modalRef },\n { provide: MODAL_CONFIG, useValue: mergedConfig },\n { provide: MODAL_DATA, useValue: mergedConfig.data },\n ],\n });\n\n const containerPortal = new ComponentPortal(ModalContainerComponent, null, injector);\n const containerRef = overlayRef.attach(containerPortal);\n\n // Attacher le composant contenu dans le portal outlet\n containerRef.instance.attachComponent(component);\n\n modalRef.open();\n\n return modalRef;\n }\n\n private createOverlay(): OverlayRef {\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n return this.overlay.create(config);\n }\n}\n","import { Directive, TemplateRef, inject, afterNextRender } from '@angular/core';\nimport { ModalContainerComponent } from '../container/modal-container';\n\n@Directive({\n selector: '[mozModalFooter]',\n standalone: true,\n})\nexport class MozModalFooterDirective {\n private readonly tpl = inject(TemplateRef<void>);\n private readonly container = inject(ModalContainerComponent);\n\n constructor() {\n afterNextRender(() => {\n this.container.registerFooter(this.tpl);\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozNumberBadgeAppearance, MozNumberBadgeSize } from './model/number-badge.model';\n\n@Component({\n selector: 'moz-number-badge',\n templateUrl: './number-badge.html',\n styleUrls: ['./number-badge.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'style': 'display: flex;',\n },\n})\nexport class MozNumberBadgeComponent {\n readonly label = input<number>(0);\n readonly appearance = input<MozNumberBadgeAppearance>('standard');\n readonly size = input<MozNumberBadgeSize>('s');\n\n readonly classes = computed(() => {\n return {\n 'mc-number-badge': true,\n [`mc-number-badge--${this.appearance()}`]: this.appearance(),\n [`mc-number-badge--${this.size()}`]: this.size(),\n };\n });\n}\n","<span [class]=\"classes()\">{{ label() }}</span>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\n@Component({\n selector: 'moz-overlay',\n templateUrl: './overlay.html',\n styleUrls: ['./overlay.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozOverlayComponent {\n readonly backdropClick = output<void>();\n readonly backdropKeydown = output<void>();\n\n /**\n * Controls the visibility of the overlay.\n */\n readonly isVisible = input<boolean>();\n\n /**\n * Accessible label for the overlay dialog.\n */\n readonly dialogLabel = input<string>();\n\n readonly classes = computed(() => {\n return {\n 'overlay': true,\n 'is-visible': this.isVisible(),\n };\n });\n\n onBackdropClick() {\n this.backdropClick.emit();\n }\n\n noop() {}\n}\n","<div\n [class]=\"classes()\"\n (click)=\"onBackdropClick()\"\n (keydown)=\"noop()\"\n tabindex=\"-1\"\n aria-label=\"Close pannel\"\n>\n <div role=\"dialog\" tabindex=\"-1\" [attr.aria-labelledby]=\"dialogLabel()\">\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MozSelectOption, MozSelectSize, MozSelectValue } from './model/select.model';\n\n@Component({\n selector: 'moz-select',\n templateUrl: './select.html',\n styleUrls: ['./select.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozSelectComponent),\n multi: true,\n },\n ],\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozSelectComponent implements ControlValueAccessor {\n readonly id = input<string>();\n readonly name = input.required<string>();\n readonly options = input<MozSelectOption[]>();\n readonly placeholder = input<string>();\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly size = input<MozSelectSize>('m');\n\n readonly _value = signal<MozSelectValue>(null);\n\n onChange: (value: MozSelectValue) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: MozSelectValue): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: MozSelectValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n handleChange(event: Event) {\n const target = event.target as HTMLSelectElement;\n const value = target.value;\n this._value.set(value);\n this.onChange(value);\n }\n\n readonly hostClasses = computed(() => {\n return {\n 'select': true,\n [`select--${this.size()}`]: this.size(),\n };\n });\n\n readonly classes = computed(() => {\n return {\n 'select--control': true,\n 'select--readonly': this.readonly(),\n 'is-invalid': this.isInvalid(),\n };\n });\n}\n","<div [class]=\"hostClasses()\">\n <select\n [id]=\"id()\"\n [class]=\"classes()\"\n [name]=\"name()\"\n [disabled]=\"disabled() || readonly()\"\n (change)=\"handleChange($event)\"\n >\n <option value=\"\" [selected]=\"!_value()\" disabled>\n {{ placeholder() || 'Select an option' }}\n </option>\n @for (option of options(); track $index) {\n <option\n [value]=\"option.value\"\n [selected]=\"_value() === option.value\"\n [disabled]=\"option.disabled\"\n [attr.data-id]=\"option.id\"\n [attr.*]=\"option.attributes\"\n >\n {{ option.text }}\n </option>\n }\n </select>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n linkedSignal,\n output,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MozSelectComponent } from '../select/select';\nimport {\n ChevronLeft24,\n ChevronRight24,\n ChevronLeft20,\n ChevronRight20,\n} from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { MozButtonComponent } from '../button/button';\nimport { MozPaginationButtonAppearance, MozPaginationButtonSize } from './model/pagination.model';\n\n@Component({\n selector: 'moz-pagination',\n imports: [\n MozIconButtonComponent,\n MozSelectComponent,\n MozButtonComponent,\n ChevronLeft24,\n ChevronRight24,\n FormsModule,\n ChevronLeft20,\n ChevronRight20,\n ],\n templateUrl: './pagination.html',\n styleUrls: ['./pagination.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozPaginationComponent {\n readonly id = input.required<string>();\n readonly compact = input<boolean>(false);\n readonly options = input.required<{ text: string; value: number }[]>();\n readonly selectLabel = input<string>('Select page');\n readonly buttonAppearance = input<MozPaginationButtonAppearance>('square');\n readonly buttonSize = input<MozPaginationButtonSize>('m');\n\n readonly value = input<number>();\n readonly updateValue = output<number>();\n\n readonly _currentValue = linkedSignal(this.value);\n\n readonly currentIndex = computed(\n () => this.options()?.findIndex((opt) => opt.value === this._currentValue()) ?? 0\n );\n\n readonly isFirstPage = computed(() => this.currentIndex() === 0);\n readonly isLastPage = computed(() => this.currentIndex() === this.options().length - 1);\n\n readonly currentPageText = computed(\n () => this.options().find((option) => option.value === this._currentValue())?.text || ''\n );\n\n previous(): void {\n const currentIndex = this.currentIndex();\n if (currentIndex > 0) {\n const newValue = this.options()[currentIndex - 1].value;\n this._currentValue.set(newValue);\n this.updateValue.emit(newValue);\n }\n }\n\n next(): void {\n const currentIndex = this.currentIndex();\n if (currentIndex < this.options().length - 1) {\n const newValue = this.options()[currentIndex + 1].value;\n this._currentValue.set(newValue);\n this.updateValue.emit(newValue);\n }\n }\n\n onSelectChange(value: string): void {\n this._currentValue.set(+value);\n this.updateValue.emit(+value);\n }\n}\n","<nav class=\"pagination\" role=\"navigation\">\n @if (!compact() && buttonAppearance() === 'square') {\n <button\n moz-button\n iconPosition=\"only\"\n aria-label=\"Previous page\"\n [disabled]=\"isFirstPage()\"\n (click)=\"previous()\"\n [size]=\"buttonSize()\"\n >\n @if(buttonSize() === 'm') {\n <ChevronLeft24 icon />\n } @else {\n <ChevronLeft20 icon />\n }\n </button>\n } @else {\n <moz-icon-button\n aria-label=\"Previous page\"\n [disabled]=\"isFirstPage()\"\n (activated)=\"previous()\"\n [size]=\"buttonSize()\"\n [id]=\"'pagination-previous-button'\"\n >\n @if(buttonSize() === 'm') {\n <ChevronLeft24 icon />\n } @else {\n <ChevronLeft20 icon />\n }\n </moz-icon-button>\n } @if (!compact()) {\n <div class=\"pagination__field\">\n <moz-select\n class=\"pagination__select\"\n [id]=\"id()\"\n [name]=\"id()\"\n [options]=\"options()\"\n [ngModel]=\"_currentValue()\"\n (ngModelChange)=\"onSelectChange($event)\"\n [ariaLabel]=\"selectLabel()\"\n [size]=\"buttonSize()\"\n />\n </div>\n } @else {\n <span class=\"pagination__label\" aria-current=\"page\">\n {{ currentPageText() }}\n </span>\n } @if (!compact() && buttonAppearance() === 'square') {\n <button\n moz-button\n iconPosition=\"only\"\n aria-label=\"Next page\"\n [disabled]=\"isLastPage()\"\n (click)=\"next()\"\n [size]=\"buttonSize()\"\n >\n @if(buttonSize() === 'm') {\n <ChevronRight24 icon />\n } @else {\n <ChevronRight20 icon />\n }\n </button>\n } @else {\n <moz-icon-button\n aria-label=\"Next page\"\n [disabled]=\"isLastPage()\"\n (activated)=\"next()\"\n [size]=\"buttonSize()\"\n [id]=\"'pagination-next-button'\"\n >\n @if(buttonSize() === 'm') {\n <ChevronRight24 icon />\n } @else {\n <ChevronRight20 icon />\n }\n </moz-icon-button>\n }\n</nav>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n computed,\n createComponent,\n ElementRef,\n EnvironmentInjector,\n forwardRef,\n inject,\n input,\n OnDestroy,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CrossCircleFilled24 } from '@mozaic-ds/icons-angular';\n\n/**\n * Directive that transforms a simple input into a styled password input with toggle visibility and clearable button.\n * Wraps the input element in a container and adds additional elements as needed.\n */\n@Component({\n selector: 'input[moz-password-input]',\n template: '',\n styleUrls: ['./password-input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozPasswordInputDirective),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"password-input__control text-input__control\"',\n '[attr.aria-invalid]': 'isInvalid()',\n '[attr.aria-valuetext]': 'getValue()',\n '[type]': 'inputType()',\n '(input)': 'onInput($event)',\n '(blur)': 'onTouched()',\n '[disabled]': 'disabled()',\n },\n})\nexport class MozPasswordInputDirective implements ControlValueAccessor, AfterViewInit, OnDestroy {\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(false);\n readonly clearLabel = input<string>('Clear content');\n readonly buttonLabel = input<{ show: string; hide: string }>({\n show: 'Show',\n hide: 'Hide',\n });\n\n private wrapper: HTMLElement | null = null;\n private clearButton: HTMLElement | null = null;\n private toggleButton: HTMLElement | null = null;\n private clearIconComponentRef: ComponentRef<CrossCircleFilled24> | null = null;\n private environmentInjector = inject(EnvironmentInjector);\n protected _value = signal<string>('');\n private _isVisible = signal(false);\n\n readonly inputType = computed(() => (this._isVisible() ? 'text' : 'password'));\n readonly ariaChecked = computed(() => (this._isVisible() ? 'true' : 'false'));\n readonly isClearable = computed(() => this.clearable() && this._value().length > 0);\n\n /** Get the current value of the input */\n getValue(): string {\n return this._value();\n }\n\n onChange: (value: string) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n constructor(private elementRef: ElementRef<HTMLInputElement>, private renderer: Renderer2) {}\n\n ngAfterViewInit(): void {\n this.wrapInput();\n }\n\n ngOnDestroy(): void {\n if (this.clearIconComponentRef) {\n this.clearIconComponentRef.destroy();\n }\n }\n\n private wrapInput(): void {\n const input = this.elementRef.nativeElement;\n const parent = input.parentElement;\n\n if (!parent) return;\n\n // Create wrapper div\n this.wrapper = this.renderer.createElement('div');\n this.renderer.addClass(this.wrapper, 'password-input');\n this.renderer.addClass(this.wrapper, 'text-input');\n\n if (this.isInvalid()) {\n this.renderer.addClass(this.wrapper, 'is-invalid');\n }\n\n // Insert wrapper before input\n this.renderer.insertBefore(parent, this.wrapper, input);\n\n // Move input into wrapper\n this.renderer.appendChild(this.wrapper, input);\n\n // Add clearable button if needed\n if (this.clearable()) {\n this.createClearButton();\n }\n\n // Add toggle visibility button\n this.createToggleButton();\n }\n\n private createClearButton(): void {\n if (!this.wrapper) return;\n\n this.clearButton = this.renderer.createElement('button');\n this.renderer.setAttribute(this.clearButton, 'type', 'button');\n this.renderer.addClass(this.clearButton, 'controls-options__button');\n this.renderer.listen(this.clearButton, 'click', () => this.clearValue());\n\n // Create icon component dynamically\n this.clearIconComponentRef = createComponent(CrossCircleFilled24, {\n environmentInjector: this.environmentInjector,\n });\n\n const iconElement = this.clearIconComponentRef.location.nativeElement;\n this.renderer.addClass(iconElement, 'controls-options__icon');\n this.renderer.setAttribute(iconElement, 'aria-hidden', 'true');\n\n const label = this.renderer.createElement('span');\n this.renderer.addClass(label, 'controls-options__label');\n this.renderer.setProperty(label, 'textContent', this.clearLabel());\n\n this.renderer.appendChild(this.clearButton, iconElement);\n this.renderer.appendChild(this.clearButton, label);\n this.renderer.appendChild(this.wrapper, this.clearButton);\n\n // Initially hide if no value\n this.updateClearButtonVisibility();\n }\n\n private createToggleButton(): void {\n if (!this.wrapper) return;\n\n // Create button element with manual CSS classes\n this.toggleButton = this.renderer.createElement('button');\n this.renderer.setAttribute(this.toggleButton, 'type', 'button');\n this.renderer.setAttribute(this.toggleButton, 'role', 'switch');\n this.renderer.addClass(this.toggleButton, 'button');\n this.renderer.addClass(this.toggleButton, 'button--s');\n this.renderer.addClass(this.toggleButton, 'button--ghost');\n\n // Add click listener\n this.renderer.listen(this.toggleButton, 'click', () => this.toggleVisibility());\n\n // Set initial button text and aria-checked\n this.updateToggleButtonText(this.toggleButton || undefined);\n\n this.renderer.appendChild(this.wrapper, this.toggleButton);\n }\n\n private updateClearButtonVisibility(): void {\n if (!this.clearButton || !this.clearable()) return;\n\n if (this.isClearable()) {\n this.renderer.setStyle(this.clearButton, 'display', 'block');\n } else {\n this.renderer.setStyle(this.clearButton, 'display', 'none');\n }\n }\n\n private updateToggleButtonText(buttonElement?: HTMLElement): void {\n const button = buttonElement || this.toggleButton;\n if (!button) return;\n\n const text = this._isVisible() ? this.buttonLabel().hide : this.buttonLabel().show;\n this.renderer.setProperty(button, 'textContent', text);\n this.renderer.setAttribute(button, 'aria-checked', this.ariaChecked());\n }\n\n clearValue(): void {\n this._value.set('');\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', '');\n this.onChange('');\n this.onTouched();\n this.updateClearButtonVisibility();\n }\n\n toggleVisibility(): void {\n this._isVisible.update((v) => !v);\n this.updateToggleButtonText();\n }\n\n onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this._value.set(value);\n this.onChange(value);\n this.updateClearButtonVisibility();\n }\n\n writeValue(value: string): void {\n const normalizedValue = value ?? '';\n this._value.set(normalizedValue);\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', normalizedValue);\n this.updateClearButtonVisibility();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import {\n Component,\n forwardRef,\n ElementRef,\n OnInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n NgZone,\n signal,\n WritableSignal,\n input,\n inject,\n computed,\n viewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MozPincodeLength } from './model/pincode.model';\n\n@Component({\n selector: 'moz-pincode',\n templateUrl: './pincode.html',\n styleUrls: ['./pincode.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozPincodeInputComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozPincodeInputComponent implements OnInit, ControlValueAccessor {\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly ngZone = inject(NgZone);\n\n readonly id = input.required<string>();\n readonly length = input<MozPincodeLength>(6);\n readonly name = input<string | undefined>(undefined);\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly otp: WritableSignal<string[]> = signal([]);\n\n readonly inputRefs = viewChildren<ElementRef<HTMLInputElement>>('pincodeItem');\n\n private _value = '';\n\n public onChange: (value: string) => void = () => void 0;\n public onTouched: () => void = () => void 0;\n\n readonly classes = computed(() => ({\n 'mc-pincode-input': true,\n 'is-invalid': this.isInvalid(),\n }));\n\n ngOnInit(): void {\n this.otp.set(Array(this.length()).fill(''));\n if (this._value) {\n this.writeValue(this._value);\n }\n }\n\n writeValue(value: string): void {\n this._value = String(value ?? '');\n const newOtp = Array.from({ length: this.length() }, (_, i) => this._value[i] ?? '');\n this.otp.set(newOtp);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private focusInput(index: number): void {\n const refs = this.inputRefs();\n if (refs && refs.length > index && index >= 0) {\n this.ngZone.runOutsideAngular(() => {\n refs[index]?.nativeElement.focus();\n });\n }\n }\n\n onInput(event: Event, index: number): void {\n this.ngZone.runOutsideAngular(() => {\n const inputElement = event.target as HTMLInputElement;\n const val = inputElement.value.replace(/\\D/g, '');\n\n this.otp.update((currentOtp) => {\n const newOtp = [...currentOtp];\n newOtp[index] = val ? val[0] : '';\n return newOtp;\n });\n\n inputElement.value = this.otp()[index];\n\n const newValue = this.otp().join('');\n this._value = newValue;\n this.onChange(newValue);\n if (val && index + 1 < this.length()) {\n this.focusInput(index + 1);\n }\n this.onTouched();\n this.cdr.detectChanges();\n });\n }\n\n onKeyDown(event: KeyboardEvent, index: number): void {\n this.ngZone.runOutsideAngular(() => {\n if (event.key === 'ArrowLeft' && index > 0) {\n this.focusInput(index - 1);\n } else if (event.key === 'ArrowRight' && index < this.length() - 1) {\n this.focusInput(index + 1);\n } else if (event.key === 'Backspace') {\n this.onBackspace(event, index);\n }\n this.onTouched();\n });\n }\n\n onBackspace(event: KeyboardEvent, index: number): void {\n this.ngZone.runOutsideAngular(() => {\n if (!this.otp()[index] && index > 0) {\n event.preventDefault();\n\n this.otp.update((currentOtp) => {\n const newOtp = [...currentOtp];\n newOtp[index - 1] = '';\n return newOtp;\n });\n\n const newValue = this.otp().join('');\n this._value = newValue;\n this.onChange(newValue);\n this.focusInput(index - 1);\n this.cdr.detectChanges();\n }\n });\n }\n\n onPaste(event: ClipboardEvent): void {\n this.ngZone.runOutsideAngular(() => {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const digits = pasted.replace(/\\D/g, '').slice(0, this.length()).split('');\n\n this.otp.set(Array.from({ length: this.length() }, (_, i) => digits[i] ?? ''));\n\n const newValue = this.otp().join('');\n this._value = newValue;\n this.onChange(newValue);\n this.focusInput(Math.min(digits.length - 1, this.length() - 1));\n this.onTouched();\n this.cdr.detectChanges();\n });\n }\n}\n","<div [class]=\"classes()\" (paste)=\"onPaste($event)\">\n @for (digit of otp(); track $index) {\n <input\n #pincodeItem\n [id]=\"'pincodeItem' + $index\"\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n pattern=\"\\d*\"\n autocomplete=\"one-time-code\"\n [name]=\"name()\"\n class=\"mc-pincode-input__control\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [value]=\"digit\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (blur)=\"onTouched()\"\n />\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Less24, More24 } from '@mozaic-ds/icons-angular';\nimport { MozQuantitySelectorSize } from './model/quantity-selector.model';\n\n@Component({\n selector: 'moz-quantity-selector',\n imports: [More24, Less24],\n templateUrl: './quantity-selector.html',\n styleUrls: ['./quantity-selector.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozQuantitySelectorComponent),\n multi: true,\n },\n ],\n})\nexport class MozQuantitySelectorComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly name = input<string>('quantity-selector-input');\n readonly size = input<MozQuantitySelectorSize>('m');\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly min = input<number>(1);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n readonly incrementLabel = input<string>('Increment');\n readonly decrementLabel = input<string>('Decrement');\n\n readonly _value = signal<number>(1);\n\n readonly classes = computed(() => ({\n 'quantity-selector': true,\n [`quantity-selector--${this.size()}`]: this.size(),\n 'is-invalid': this.isInvalid(),\n }));\n\n private onChange: (value: number) => void = () => void 0;\n private onTouched: () => void = () => void 0;\n\n writeValue(value: number): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onChangeInput(event: Event): void {\n let value = Number((event.target as HTMLInputElement).value);\n\n value = Math.max(this.min(), Math.min(this.max(), value));\n this._value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n\n increment(): void {\n const value = Math.min(this.max(), this._value() + this.step());\n this._value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n\n decrement(): void {\n const value = Math.max(this.min(), this._value() - this.step());\n this._value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n}\n","<div [class]=\"classes()\">\n <input\n class=\"quantity-selector__control\"\n type=\"number\"\n [id]=\"id()\"\n [name]=\"name()\"\n [disabled]=\"disabled()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"isInvalid()\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"_value()\"\n [value]=\"_value()\"\n (change)=\"onChangeInput($event)\"\n />\n\n @if (!readonly()) {\n <button\n type=\"button\"\n [attr.aria-controls]=\"id()\"\n class=\"quantity-selector__button quantity-selector__button--increase\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || _value() === max()\"\n (click)=\"increment()\"\n >\n <span class=\"quantity-selector__icon\">\n <More24 />\n </span>\n <span class=\"quantity-selector__label\">{{ incrementLabel() }}</span>\n </button>\n\n <button\n type=\"button\"\n [attr.aria-controls]=\"id()\"\n class=\"quantity-selector__button quantity-selector__button--decrease\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || _value() === min()\"\n (click)=\"decrement()\"\n >\n <span class=\"quantity-selector__icon\">\n <Less24 />\n </span>\n <span class=\"quantity-selector__label\">{{ decrementLabel() }}</span>\n </button>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'moz-radio',\n templateUrl: './radio.html',\n styleUrls: ['./radio.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozRadioComponent),\n multi: true,\n },\n ],\n})\nexport class MozRadioComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly name = input<string | undefined>();\n readonly label = input<string | undefined>();\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n\n readonly _value = signal<boolean>(false);\n\n onChange: (_: boolean) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n handleChange(event: Event): void {\n const isChecked = (event.target as HTMLInputElement).checked;\n this._value.set(isChecked);\n this.onChange(isChecked);\n this.onTouched();\n }\n\n writeValue(value: boolean): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n readonly classes = computed(() => {\n return {\n 'radio__input': true,\n 'is-invalid': this.isInvalid(),\n };\n });\n}\n","<div class=\"radio\">\n <input\n [class]=\"classes()\"\n [id]=\"id()\"\n [type]=\"'radio'\"\n [name]=\"name()\"\n [checked]=\"_value()\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"isInvalid()\"\n (change)=\"handleChange($event)\"\n />\n @if (label()) {\n <label class=\"radio__label\" [for]=\"id()\"> {{ label() }} </label>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MozRadioComponent } from '../radio/radio';\n\n@Component({\n selector: 'moz-radio-group',\n templateUrl: './radio-group.html',\n styleUrls: ['./radio-group.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozRadioGroupComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MozRadioComponent, FormsModule],\n})\nexport class MozRadioGroupComponent implements ControlValueAccessor {\n readonly name = input.required<string>();\n readonly options = input<{ id: string; label: string; value: string; disabled?: boolean }[]>([]);\n readonly isInvalid = input(false);\n readonly inline = input(false);\n\n readonly _value = signal<string | null>(null);\n\n onChange: (value: string) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: string): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n select(value: string) {\n this._value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n\n readonly classes = computed(() => {\n return {\n 'field__content': true,\n 'field__content--inline': this.inline(),\n };\n });\n}\n","<fieldset class=\"field field--group\">\n <div [class]=\"classes()\">\n @for (option of options(); track $index) {\n <moz-radio\n [id]=\"option.id\"\n [label]=\"option.label\"\n [name]=\"name()\"\n [ngModel]=\"_value() === option.value\"\n [disabled]=\"option.disabled ?? false\"\n [isInvalid]=\"isInvalid()\"\n (change)=\"select(option.value)\"\n ></moz-radio>\n }\n </div>\n</fieldset>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozStatusDotStatus, MozStatusDotSize } from './model/status-dot.model';\n\n@Component({\n selector: 'moz-status-dot',\n templateUrl: './status-dot.html',\n styleUrls: ['./status-dot.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozStatusDotComponent {\n readonly status = input<MozStatusDotStatus>('info');\n readonly size = input<MozStatusDotSize>('m');\n\n readonly classes = computed(() => {\n return {\n 'mc-status-dot': true,\n [`mc-status-dot--${this.status()}`]: this.status(),\n [`mc-status-dot--${this.size()}`]: this.size(),\n };\n });\n}\n","<span [class]=\"classes()\"></span>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozStatusDotComponent } from '../status-dot/status-dot';\nimport { MozStatusBadgeStatus } from './model/status-badge.model';\n\n@Component({\n selector: 'moz-status-badge',\n imports: [MozStatusDotComponent],\n templateUrl: './status-badge.html',\n styleUrls: ['./status-badge.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozStatusBadgeComponent {\n readonly label = input<string>();\n readonly status = input<MozStatusBadgeStatus>('info');\n\n readonly classes = computed(() => {\n return {\n 'mc-status-badge': true,\n [`mc-status-badge--${this.status()}`]: this.status(),\n };\n });\n}\n","<div [class]=\"classes()\">\n <moz-status-dot [status]=\"status()\" />\n <span class=\"mc-status-badge__label\">{{ label() }}</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n output,\n Signal,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport {\n CheckCircleFilled24,\n Cross20,\n ErrorFilled24,\n InfoCircleFilled24,\n WarningTriangleFilled24,\n} from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { MozStatusNotificationStatus } from './model/status-notification.model';\n\n@Component({\n selector: 'moz-status-notification',\n templateUrl: './status-notification.html',\n styleUrls: ['./status-notification.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Cross20, MozIconButtonComponent, NgComponentOutlet, NgTemplateOutlet],\n})\nexport class MozStatusNotificationComponent {\n readonly id = input<string>('status-notification');\n readonly title = input<string>();\n readonly status = input<MozStatusNotificationStatus>('info');\n readonly closable = input<boolean>(false);\n readonly closed = output<void>();\n readonly descriptionTpl = contentChild<TemplateRef<void>>('description', { descendants: false });\n readonly footerTpl = contentChild<TemplateRef<void>>('footer', { descendants: false });\n\n readonly classes = computed(() => ({\n 'mc-status-notification': true,\n [`mc-status-notification--${this.status()}`]: this.status(),\n }));\n\n readonly iconComponent: Signal<Type<unknown>> = computed(() => {\n switch (this.status()) {\n case 'success':\n return CheckCircleFilled24;\n case 'warning':\n return WarningTriangleFilled24;\n case 'error':\n return ErrorFilled24;\n default:\n return InfoCircleFilled24;\n }\n });\n\n onCloseClick(): void {\n this.closed.emit();\n }\n}\n","<section role=\"status\" [class]=\"classes()\" [id]=\"id()\">\n <div class=\"mc-status-notification__icon\">\n <ng-container [ngComponentOutlet]=\"iconComponent()\" />\n </div>\n\n <div class=\"mc-status-notification__content\">\n @if(title()){\n <span class=\"mc-status-notification__title\">{{ title() }}</span>\n } @if (descriptionTpl()) {\n <div class=\"mc-status-notification__message\">\n <ng-container [ngTemplateOutlet]=\"descriptionTpl()\" />\n </div>\n } @if (footerTpl()) {\n <div class=\"mc-status-notification__footer\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n </div>\n\n @if (closable()) {\n <moz-icon-button\n size=\"s\"\n class=\"mc-status-notification-closable__close\"\n [ghost]=\"true\"\n type=\"button\"\n [appearance]=\"'standard'\"\n (activated)=\"onCloseClick()\"\n ariaLabel=\"Close notification\"\n [id]=\"'status-notification-close-button'\"\n >\n <Cross20 icon />\n </moz-icon-button>\n }\n</section>\n","import { ChangeDetectionStrategy, Component, Type, input } from '@angular/core';\n\n@Component({\n selector: 'moz-tab',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozTabComponent {\n id = input.required<string>();\n label = input.required<string>();\n icon = input<Type<unknown>>();\n disabled = input(false);\n routerLink = input<string>();\n badge = input<number | string | undefined>();\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n QueryList,\n computed,\n effect,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { MozDividerComponent } from '../divider/divider';\nimport { MozTabComponent } from './tab/tab';\nimport { MozTabItem } from './model/tab.model';\n\n@Component({\n selector: 'moz-tabs',\n templateUrl: './tabs.html',\n styleUrls: ['./tabs.scss'],\n imports: [NgComponentOutlet, RouterLink, MozDividerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozTabsComponent implements AfterContentInit {\n @ContentChildren(MozTabComponent) tabs!: QueryList<MozTabComponent>;\n\n description = input<string | undefined>();\n divider = input(true);\n centered = input(false);\n selectedIndex = model<number>(0);\n tabsInput = input<MozTabItem[]>([], { alias: 'tabs' });\n\n tabsArray = signal<MozTabComponent[]>([]);\n virtualTabs = signal<MozTabItem[]>([]);\n\n constructor() {\n effect(() => {\n const inputTabs = this.tabsInput();\n if (inputTabs.length > 0) {\n this.virtualTabs.set(inputTabs);\n }\n });\n }\n\n ngAfterContentInit(): void {\n this.tabsArray.set(this.tabs.toArray());\n this.tabs.changes.subscribe(() => {\n this.tabsArray.set(this.tabs.toArray());\n });\n }\n\n hasVirtualTabs = computed(() => this.virtualTabs().length > 0);\n\n readonly classes = computed(() => ({\n 'tabs': true,\n 'tabs--centered': this.centered(),\n }));\n\n isTabSelected = (index: number): boolean => index === this.selectedIndex();\n\n getTabClasses(index: number) {\n return computed(() => {\n const tab = this.tabsArray()[index];\n return {\n 'tabs__tab': true,\n 'tabs__tab--selected': this.isTabSelected(index),\n 'tabs__tab--disabled': !!tab?.disabled(),\n };\n });\n }\n\n getVirtualTabClasses(index: number) {\n return computed(() => {\n const tab = this.virtualTabs()[index];\n return {\n 'tabs__tab': true,\n 'tabs__tab--selected': this.isTabSelected(index),\n 'tabs__tab--disabled': !!tab?.disabled,\n };\n });\n }\n\n onClickTab(index: number): void {\n const tab = this.tabsArray()[index];\n if (!tab || tab.disabled()) return;\n if (index !== this.selectedIndex()) {\n this.selectedIndex.set(index);\n }\n }\n\n onClickVirtualTab(index: number, tab: MozTabItem): void {\n if (tab.disabled) return;\n if (index !== this.selectedIndex()) {\n this.selectedIndex.set(index);\n }\n }\n}\n","<nav [class]=\"classes()\" aria-label=\"Tabs\">\n <ul class=\"tabs__list\" role=\"tablist\" [attr.aria-label]=\"description()\">\n @if (hasVirtualTabs()) { @for (tab of virtualTabs(); let index = $index; track index) {\n <li class=\"tabs__item\" role=\"presentation\">\n @if (tab.routerLink) {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id\"\n [class]=\"getVirtualTabClasses(index)()\"\n [routerLink]=\"tab.routerLink\"\n [attr.aria-selected]=\"isTabSelected(index)\"\n (click)=\"onClickTab(index)\"\n >\n @if (tab.icon) {\n <span class=\"tabs__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"tab.icon\"></ng-container>\n </span>\n }\n <div class=\"tabs__label\">\n <span>{{ tab.label }}</span>\n </div>\n @if (tab.badge != null) {\n <span class=\"mc-number-badge mc-tabs__badge\" [class.mc-number-badge--accent]=\"isTabSelected(index)\">{{ tab.badge }}</span>\n }\n </button>\n } @else {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id\"\n [class]=\"getVirtualTabClasses(index)()\"\n [attr.aria-selected]=\"isTabSelected(index)\"\n (click)=\"onClickVirtualTab(index, tab)\"\n >\n @if (tab.icon) {\n <span class=\"tabs__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"tab.icon\"></ng-container>\n </span>\n }\n <div class=\"tabs__label\">\n <span>{{ tab.label }}</span>\n </div>\n @if (tab.badge != null) {\n <span class=\"mc-number-badge mc-tabs__badge\" [class.mc-number-badge--accent]=\"isTabSelected(index)\">{{ tab.badge }}</span>\n }\n </button>\n }\n </li>\n } } @else { @for (tab of tabsArray(); let index = $index; track index) {\n <li class=\"tabs__item\" role=\"presentation\">\n @if (tab.routerLink()) {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id()\"\n [class]=\"getTabClasses(index)()\"\n [routerLink]=\"tab.routerLink()\"\n [attr.aria-selected]=\"isTabSelected(index)\"\n (click)=\"onClickTab(index)\"\n >\n @if (tab.icon()) {\n <span class=\"tabs__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"tab.icon() ?? null\"></ng-container>\n </span>\n }\n <div class=\"tabs__label\">\n <span>{{ tab.label() }}</span>\n </div>\n @if (tab.badge() != null) {\n <span class=\"mc-number-badge mc-tabs__badge\" [class.mc-number-badge--accent]=\"isTabSelected(index)\">{{ tab.badge() }}</span>\n }\n </button>\n } @else {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id()\"\n [class]=\"getTabClasses(index)()\"\n [attr.aria-selected]=\"isTabSelected(index)\"\n (click)=\"onClickTab(index)\"\n >\n @if (tab.icon()) {\n <span class=\"tabs__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"tab.icon() ?? null\"></ng-container>\n </span>\n }\n <div class=\"tabs__label\">\n <span>{{ tab.label() }}</span>\n </div>\n @if (tab.badge() != null) {\n <span class=\"mc-number-badge mc-tabs__badge\" [class.mc-number-badge--accent]=\"isTabSelected(index)\">{{ tab.badge() }}</span>\n }\n </button>\n }\n </li>\n } }\n </ul>\n\n @if (divider()) {\n <moz-divider></moz-divider>\n }\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CrossCircleFilled24 } from '@mozaic-ds/icons-angular';\nimport { MozNumberBadgeComponent } from '../number-badge/number-badge';\nimport { MozTagSize, MozTagType } from './model/tag.model';\n\n@Component({\n selector: 'moz-tag',\n imports: [CrossCircleFilled24, MozNumberBadgeComponent, NgTemplateOutlet],\n templateUrl: './tag.html',\n styleUrls: ['./tag.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozTagComponent),\n multi: true,\n },\n ],\n})\nexport class MozTagComponent implements ControlValueAccessor {\n readonly type = input<MozTagType>('informative');\n readonly size = input<MozTagSize>('m');\n readonly id = input.required<string>();\n readonly name = input<string>();\n readonly disabled = input<boolean>(false);\n readonly contextualisedNumber = input<number>(99);\n readonly removableLabel = input<string>('Remove');\n\n readonly _value = signal<boolean>(true);\n\n readonly removeTag = output<string>();\n\n readonly classes = computed(() => ({\n [`tag-${this.type()}`]: this.type(),\n [`tag--${this.size()}`]: this.size(),\n }));\n\n private onChange: (value: boolean) => void = () => void 0;\n private onTouched: () => void = () => void 0;\n\n writeValue(value: boolean): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onCheckboxChange(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n this._value.set(checked);\n this.onChange(checked);\n this.onTouched();\n }\n\n onRemove(): void {\n this.removeTag.emit(this.id());\n }\n}\n","<ng-template #labelTemplate>\n <ng-content />\n</ng-template>\n\n<!-- Selectable -->\n@if (type() === 'selectable') {\n<label class=\"tag\" [class]=\"classes()\" [attr.for]=\"id()\">\n <input\n type=\"checkbox\"\n class=\"tag__input\"\n [id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"_value()\"\n [disabled]=\"disabled()\"\n (change)=\"onCheckboxChange($event)\"\n />\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n</label>\n}\n<!-- Interactive -->\n@if (type() === 'interactive') {\n<button type=\"button\" class=\"tag\" [class]=\"classes()\" [disabled]=\"disabled()\">\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n</button>\n}\n<!-- Contextualised -->\n@if (type() === 'contextualised') {\n<button type=\"button\" class=\"tag\" [class]=\"classes()\" [disabled]=\"disabled()\">\n <moz-number-badge\n appearance=\"inverse\"\n [label]=\"contextualisedNumber()\"\n [size]=\"size() === 'l' ? 'm' : 's'\"\n />\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n</button>\n}\n<!-- Removable -->\n@if (type() === 'removable') {\n<span class=\"tag\" [class]=\"classes()\">\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n <button class=\"tag-removable__remove\" type=\"button\" (click)=\"onRemove()\">\n <CrossCircleFilled24 class=\"tag-removable__icon\" aria-hidden=\"true\" />\n <span class=\"tag-removable__text\">{{ removableLabel() }}</span>\n </button>\n</span>\n}\n<!-- Informative -->\n@if (type() === 'informative') {\n<span class=\"tag\" [class]=\"classes()\">\n <span class=\"tag__label\">\n <ng-container [ngTemplateOutlet]=\"labelTemplate\" />\n </span>\n</span>\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n OnDestroy,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Directive that transforms a simple textarea into a styled textarea.\n * Applies Mozaic Design System styles to native textarea elements.\n */\n@Component({\n selector: 'textarea[moz-text-area]',\n template: '',\n styleUrls: ['./text-area.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozTextarea),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.textarea]': 'true',\n '[class.is-invalid]': 'isInvalid()',\n '[class.is-disabled]': 'isDisabledState()',\n '[attr.aria-invalid]': 'isInvalid()',\n '[disabled]': 'isDisabledState()',\n '(input)': 'handleInput($event)',\n '(blur)': 'onTouched()',\n },\n})\nexport class MozTextarea implements ControlValueAccessor, AfterViewInit, OnDestroy {\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly rows = input<number>(2);\n readonly minLength = input<number | undefined>();\n readonly maxLength = input<number | undefined>();\n\n private _value = signal<string>('');\n private _isDisabled = signal<boolean>(false);\n\n readonly isDisabledState = computed(() => this.disabled() || this._isDisabled());\n\n onChange: (value: string) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n constructor(private elementRef: ElementRef<HTMLTextAreaElement>, private renderer: Renderer2) {}\n\n ngAfterViewInit(): void {\n this.applyAttributes();\n }\n\n ngOnDestroy(): void {\n // Cleanup if needed\n }\n\n private applyAttributes(): void {\n const textarea = this.elementRef.nativeElement;\n\n if (this.rows()) {\n this.renderer.setAttribute(textarea, 'rows', String(this.rows()));\n }\n\n if (this.minLength() !== undefined) {\n this.renderer.setAttribute(textarea, 'minlength', String(this.minLength()));\n }\n\n if (this.maxLength() !== undefined) {\n this.renderer.setAttribute(textarea, 'maxlength', String(this.maxLength()));\n }\n }\n\n handleInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value;\n this._value.set(value);\n this.onChange(value);\n }\n\n writeValue(value: string): void {\n const normalizedValue = value ?? '';\n this._value.set(normalizedValue);\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', normalizedValue);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._isDisabled.set(isDisabled);\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n }\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n computed,\n createComponent,\n effect,\n ElementRef,\n EnvironmentInjector,\n forwardRef,\n inject,\n input,\n Injector,\n OnDestroy,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CrossCircleFilled24 } from '@mozaic-ds/icons-angular';\n\nexport type MozTextInputSize = 's' | 'm';\n\n@Component({\n selector: 'input[moz-text-input]',\n template: '',\n styleUrls: ['./text-input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozTextInput),\n multi: true,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"text-input__control\"',\n '[attr.aria-invalid]': 'isInvalid()',\n '[readOnly]': 'readonly()',\n '[disabled]': 'isDisabledState()',\n '(input)': 'onInput($event)',\n '(blur)': 'onTouched()',\n },\n})\nexport class MozTextInput implements ControlValueAccessor, AfterViewInit, OnDestroy {\n readonly isInvalid = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly size = input<MozTextInputSize>('m');\n readonly clearable = input<boolean>(false);\n readonly clearLabel = input<string>('Clear content');\n readonly prefix = input<string>('');\n readonly suffix = input<string>('');\n\n private wrapper: HTMLElement | null = null;\n private clearButton: HTMLElement | null = null;\n private iconContainer: HTMLElement | null = null;\n private iconComponentRef: ComponentRef<CrossCircleFilled24> | null = null;\n private _value = signal<string>('');\n private _isDisabled = signal<boolean>(false);\n\n readonly isClearable = computed(() => this.clearable() && this._value());\n readonly isDisabledState = computed(() => this.disabled() || this._isDisabled());\n\n private environmentInjector = inject(EnvironmentInjector);\n private applicationRef = inject(ApplicationRef);\n private renderer = inject(Renderer2);\n private elementRef = inject(ElementRef<HTMLInputElement>);\n private injector = inject(Injector);\n\n ngAfterViewInit(): void {\n this.wrapInput();\n this.setupEffects();\n }\n\n ngOnDestroy(): void {\n if (this.iconComponentRef) {\n this.applicationRef.detachView(this.iconComponentRef.hostView);\n this.iconComponentRef.destroy();\n }\n }\n\n private setupEffects(): void {\n // Effect pour mettre à jour la classe 'is-invalid'\n effect(\n () => {\n if (this.wrapper) {\n if (this.isInvalid()) {\n this.renderer.addClass(this.wrapper, 'is-invalid');\n } else {\n this.renderer.removeClass(this.wrapper, 'is-invalid');\n }\n }\n },\n { injector: this.injector }\n );\n\n // Effect pour mettre à jour la classe de taille\n effect(\n () => {\n if (this.wrapper) {\n // Retirer toutes les classes de taille existantes\n this.renderer.removeClass(this.wrapper, 'text-input--s');\n this.renderer.removeClass(this.wrapper, 'text-input--m');\n\n // Ajouter la nouvelle classe de taille\n if (this.size()) {\n this.renderer.addClass(this.wrapper, `text-input--${this.size()}`);\n }\n }\n },\n { injector: this.injector }\n );\n\n // Effect pour mettre à jour la visibilité du bouton clear\n effect(\n () => {\n this.updateClearButtonVisibility();\n },\n { injector: this.injector }\n );\n }\n\n private wrapInput(): void {\n const input = this.elementRef.nativeElement;\n const parent = input.parentElement;\n\n if (!parent) return;\n\n this.wrapper = this.renderer.createElement('div');\n this.renderer.addClass(this.wrapper, 'text-input');\n\n // Appliquer les classes initiales\n if (this.size()) {\n this.renderer.addClass(this.wrapper, `text-input--${this.size()}`);\n }\n if (this.isInvalid()) {\n this.renderer.addClass(this.wrapper, 'is-invalid');\n }\n\n this.renderer.insertBefore(parent, this.wrapper, input);\n\n const iconElement = this.findIconElement(parent);\n if (iconElement) {\n this.createIconContainer(iconElement);\n }\n\n // Add prefix before input\n if (this.prefix()) {\n this.createAddon(this.prefix(), 'prefix');\n }\n\n // Move input into wrapper\n this.renderer.appendChild(this.wrapper, input);\n\n // Add suffix after input\n if (this.suffix()) {\n this.createAddon(this.suffix(), 'suffix');\n }\n\n if (this.clearable()) {\n this.createClearButton();\n }\n }\n\n private createAddon(text: string, type: 'prefix' | 'suffix'): void {\n if (!this.wrapper) return;\n\n const addon = this.renderer.createElement('span');\n this.renderer.addClass(addon, 'text-input__addon');\n this.renderer.addClass(addon, `text-input__addon--${type}`);\n this.renderer.setProperty(addon, 'textContent', text);\n this.renderer.appendChild(this.wrapper, addon);\n }\n\n private findIconElement(parent: HTMLElement): Element | null {\n const children = Array.from(parent.children);\n return children.find((child) => child.hasAttribute('icon')) || null;\n }\n\n private createIconContainer(iconElement: Element): void {\n if (!this.wrapper) return;\n\n this.iconContainer = this.renderer.createElement('div');\n this.renderer.addClass(this.iconContainer, 'text-input__icon');\n this.renderer.appendChild(this.iconContainer, iconElement);\n this.renderer.appendChild(this.wrapper, this.iconContainer);\n }\n\n private createClearButton(): void {\n if (!this.wrapper) return;\n\n const controlsDiv = this.renderer.createElement('div');\n this.renderer.addClass(controlsDiv, 'controls-options');\n\n this.clearButton = this.renderer.createElement('button');\n this.renderer.setAttribute(this.clearButton, 'type', 'button');\n this.renderer.addClass(this.clearButton, 'controls-options__button');\n this.renderer.listen(this.clearButton, 'click', () => this.clearValue());\n\n this.iconComponentRef = createComponent(CrossCircleFilled24, {\n environmentInjector: this.environmentInjector,\n });\n\n // Attacher la vue à ApplicationRef pour activer la détection de changements\n this.applicationRef.attachView(this.iconComponentRef.hostView);\n\n const iconElement = this.iconComponentRef.location.nativeElement;\n this.renderer.addClass(iconElement, 'controls-options__icon');\n this.renderer.setAttribute(iconElement, 'aria-hidden', 'true');\n\n const label = this.renderer.createElement('span');\n this.renderer.addClass(label, 'controls-options__label');\n this.renderer.setProperty(label, 'textContent', this.clearLabel());\n\n this.renderer.appendChild(this.clearButton, iconElement);\n this.renderer.appendChild(this.clearButton, label);\n this.renderer.appendChild(controlsDiv, this.clearButton);\n this.renderer.appendChild(this.wrapper, controlsDiv);\n\n this.updateClearButtonVisibility();\n }\n\n private updateClearButtonVisibility(): void {\n if (!this.clearButton || !this.clearable()) return;\n\n const parent = this.clearButton.parentElement;\n if (parent) {\n if (this.isClearable()) {\n this.renderer.setStyle(parent, 'display', 'flex');\n } else {\n this.renderer.setStyle(parent, 'display', 'none');\n }\n }\n }\n\n clearValue(): void {\n this._value.set('');\n const input = this.elementRef.nativeElement;\n this.renderer.setProperty(input, 'value', '');\n this.onChange('');\n this.onTouched();\n const event = new Event('input', { bubbles: true });\n input.dispatchEvent(event);\n }\n\n onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this._value.set(value);\n this.onChange(value);\n }\n\n onChange: (value: string | number) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: string | number): void {\n const normalizedValue = value == null ? '' : String(value);\n this._value.set(normalizedValue);\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', normalizedValue);\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._isDisabled.set(isDisabled);\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MozToggleSize } from './model/toggle.model';\n\n@Component({\n selector: 'moz-toggle',\n imports: [FormsModule, ReactiveFormsModule],\n templateUrl: './toggle.html',\n styleUrls: ['./toggle.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozToggleComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozToggleComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly name = input<string | undefined>();\n readonly size = input<MozToggleSize>('s');\n readonly disabled = input<boolean>(false);\n readonly classes = computed(() => {\n return {\n 'toggle': true,\n [`toggle--${this.size()}`]: this.size(),\n };\n });\n\n _value = signal(false);\n\n onChange: (_: boolean) => void = () => void 0;\n onTouched: () => void = () => void 0;\n\n writeValue(value: boolean): void {\n this._value.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onInputChange(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n this._value.set(checked);\n this.onChange(checked);\n this.onTouched();\n }\n}\n","<div [class]=\"classes()\">\n <label class=\"toggle__container\">\n <input\n [id]=\"id()\"\n type=\"checkbox\"\n class=\"toggle__input\"\n [name]=\"name()\"\n [checked]=\"_value()\"\n [disabled]=\"disabled()\"\n (change)=\"onInputChange($event)\"\n [attr.aria-labelledby]=\"id() + '-label'\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-checked]=\"_value()\"\n />\n <span class=\"toggle__label\" [id]=\"id() + '-label'\" [attr.for]=\"id()\">\n <ng-content></ng-content>\n </span>\n </label>\n</div>\n","import { Component, input, ChangeDetectionStrategy, computed } from '@angular/core';\nimport { MozFlagType } from './model/flag.model';\n\n@Component({\n selector: 'moz-flag',\n templateUrl: './flag.html',\n styleUrls: ['./flag.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozFlagComponent {\n readonly type = input<MozFlagType>('default');\n\n readonly classes = computed(() => {\n const baseClass = 'flag';\n switch (this.type()) {\n case 'accent':\n return `${baseClass} flag--accent`;\n case 'danger':\n return `${baseClass} flag--danger`;\n case 'inverse':\n return `${baseClass} flag--inverse`;\n default:\n return baseClass;\n }\n });\n}\n","<div [class]=\"classes()\">\n <span class=\"flag__label\">\n <ng-content />\n </span>\n</div>\n","import {\n Component,\n input,\n signal,\n ChangeDetectionStrategy,\n forwardRef,\n computed,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CrossCircle24 } from '@mozaic-ds/icons-angular';\nimport { MozDatepickerSize } from './model/datepicker.model';\n\n@Component({\n selector: 'moz-datepicker',\n templateUrl: './datepicker.html',\n styleUrls: ['./datepicker.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozDatepickerComponent),\n multi: true,\n },\n ],\n imports: [CrossCircle24],\n})\nexport class MozDatepickerComponent implements ControlValueAccessor {\n readonly id = input.required<string>();\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly error = input<string | undefined>(undefined);\n readonly clearable = input<boolean>(false);\n readonly size = input<MozDatepickerSize>('default');\n readonly label = input<string>('Date');\n\n readonly _value = signal<string | null>(null);\n\n readonly classes = computed(() => ({\n 'mc-datepicker': true,\n 'mc-text-input': true,\n 'is-invalid': this.invalid(),\n 'mc-datepicker--s': this.size() === 's',\n 'mc-text-input--s': this.size() === 's',\n }));\n\n private onChange: (value: string | null) => void = () => void 0;\n private onTouched: () => void = () => void 0;\n\n writeValue(val: string | null): void {\n this._value.set(val);\n }\n\n registerOnChange(fn: (val: string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n onInput(event: Event) {\n const input = event.target as HTMLInputElement;\n const newVal = input.value || null;\n this._value.set(newVal);\n this.onChange(newVal);\n }\n\n onClear() {\n this._value.set(null);\n this.onChange(null);\n }\n\n onBlur() {\n this.onTouched();\n }\n}\n","<div class=\"mc-field\">\n <label class=\"mc-field__label\" [attr.for]=\"id()\"> {{ label() }} </label>\n\n <div class=\"mc-field__content\">\n <div [class]=\"classes()\">\n <input\n type=\"date\"\n [id]=\"id()\"\n class=\"mc-datepicker__control mc-text-input__control\"\n [value]=\"_value() ?? ''\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [attr.aria-invalid]=\"invalid()\"\n />\n\n @if (clearable() && !disabled() && !readonly() && _value()) {\n <div class=\"mc-controls-options mc-datepicker__controls-options\">\n <button\n type=\"button\"\n class=\"mc-controls-options__button\"\n (click)=\"onClear()\"\n aria-label=\"Clear\"\n tabindex=\"-1\"\n >\n <CrossCircle24 class=\"mc-controls-options__icon\" />\n <span class=\"mc-controls-options__label\">Clear content</span>\n </button>\n </div>\n }\n </div>\n </div>\n\n @if (invalid() && error()) {\n <span class=\"mc-field__validation-message is-invalid\"> {{ error() }} </span>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { MozTooltipPosition } from './model/tooltip.model';\n\n@Component({\n selector: 'moz-tooltip',\n templateUrl: './tooltip.html',\n styleUrls: ['./tooltip.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozTooltipComponent {\n readonly id = input.required<string>();\n readonly position = input<MozTooltipPosition>('top');\n readonly noPointer = input<boolean>(false);\n readonly standalone = input<boolean>(false);\n content = '';\n\n readonly classes = computed(() => ({\n 'tooltip': true,\n [`tooltip--${this.position()}`]: !!this.position(),\n 'tooltip--no-pointer': this.noPointer(),\n 'tooltip--standalone': this.standalone(),\n }));\n}\n","<div [class]=\"classes()\">\n @if (!standalone()) {\n <div>\n <ng-content select=\"[trigger]\"></ng-content>\n </div>\n }\n\n <span [id]=\"id()\" class=\"tooltip__content\" role=\"tooltip\">\n <span class=\"tooltip__text\">\n @if (content) {\n {{ content }}\n } @else {\n <ng-content select=\"[content]\"></ng-content>\n }\n </span>\n </span>\n</div>\n","import { Directive, ElementRef, HostListener, OnDestroy, inject, Input } from '@angular/core';\nimport {\n Overlay,\n OverlayRef,\n OverlayPositionBuilder,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { MozTooltipComponent } from './tooltip';\nimport { MozTooltipPosition } from './model/tooltip.model';\n\n@Directive({\n selector: '[mozTooltip]',\n})\nexport class MozTooltipDirective implements OnDestroy {\n @Input('mozTooltip') content = '';\n @Input() tooltipPosition: MozTooltipPosition = 'top';\n @Input() tooltipNoPointer = false;\n\n private overlayRef: OverlayRef | null = null;\n private overlay = inject(Overlay);\n private overlayPositionBuilder = inject(OverlayPositionBuilder);\n private elementRef = inject(ElementRef);\n\n @HostListener('mouseenter')\n show(): void {\n if (this.overlayRef?.hasAttached()) {\n return;\n }\n\n const offset = 20;\n const positionStrategy = this.overlayPositionBuilder\n .flexibleConnectedTo(this.elementRef)\n .withPositions(this.getPositions());\n\n if (this.tooltipPosition === 'top') {\n positionStrategy.withDefaultOffsetY(-offset);\n } else if (this.tooltipPosition === 'bottom') {\n positionStrategy.withDefaultOffsetY(offset);\n } else if (this.tooltipPosition === 'left') {\n positionStrategy.withDefaultOffsetX(-offset);\n } else if (this.tooltipPosition === 'right') {\n positionStrategy.withDefaultOffsetX(offset);\n }\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n const tooltipPortal = new ComponentPortal(MozTooltipComponent);\n const tooltipRef = this.overlayRef.attach(tooltipPortal);\n\n tooltipRef.setInput('id', `tooltip-${Math.random().toString(36).substr(2, 9)}`);\n tooltipRef.setInput('position', this.tooltipPosition);\n tooltipRef.setInput('noPointer', this.tooltipNoPointer);\n tooltipRef.setInput('standalone', true);\n tooltipRef.instance.content = this.content;\n }\n\n @HostListener('mouseleave')\n hide(): void {\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n }\n\n ngOnDestroy(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n }\n\n private getPositions(): ConnectedPosition[] {\n const positions: Record<MozTooltipPosition, ConnectedPosition> = {\n top: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n bottom: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n left: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n },\n right: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n },\n };\n\n return [positions[this.tooltipPosition]];\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozCircularProgessBarSize } from './model/circular-progress-bar.model';\n\n@Component({\n selector: 'moz-circular-progress-bar',\n templateUrl: './ciruclar-progress-bar.html',\n styleUrls: ['./circular-progress-bar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozCircularProgressBarComponent {\n readonly valuePercent = input<number>(0);\n readonly size = input<MozCircularProgessBarSize>('l');\n readonly ariaLabel = input<string>('Progress bar');\n readonly numberLabel = input<string | null>(null);\n readonly textLabel = input<string | null>(null);\n readonly showPercentage = input<boolean>(false);\n\n readonly classes = computed(() => {\n const classes = ['mc-circular-progressbar'];\n if (this.size() === 's') classes.push('mc-circular-progressbar--s');\n if (this.size() === 'm') classes.push('mc-circular-progressbar--m');\n return classes.join(' ');\n });\n\n readonly hasNumberOrText = computed(() => !!(this.numberLabel() || this.textLabel()));\n}\n","<div\n [class]=\"classes()\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabel()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"valuePercent()\"\n [style.--progress-value]=\"valuePercent()\"\n>\n <svg\n class=\"mc-circular-progressbar__line\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n viewBox=\"0 0 100 100\"\n >\n <circle class=\"mc-circular-progressbar__track\" cx=\"50\" cy=\"50\" r=\"46\"></circle>\n <circle class=\"mc-circular-progressbar__indicator\" cx=\"50\" cy=\"50\" r=\"46\"></circle>\n </svg>\n\n @if (showPercentage()) {\n <div class=\"mc-circular-progressbar__percentage\">\n <p class=\"mc-circular-progressbar__value\">{{ valuePercent() }}</p>\n <p class=\"mc-circular-progressbar__unit\">%</p>\n </div>\n } @else if (hasNumberOrText()) {\n <div class=\"mc-circular-progressbar__content\">\n @if (numberLabel()) {\n <p class=\"mc-circular-progressbar__number\">{{ numberLabel() }}</p>\n } @if (textLabel()) {\n <p class=\"mc-circular-progressbar__text\">{{ textLabel() }}</p>\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'moz-linear-progress-bar-percentage',\n templateUrl: './linear-progress-bar-percentage.html',\n styleUrls: ['./linear-progress-bar-percentage.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozLinearProgressBarPercentageComponent {\n readonly valuePercent = input<number>(0);\n readonly ariaLabel = input<string>('Progress bar');\n readonly showLabel = input<boolean>(false);\n}\n","<div class=\"mc-linear-progressbar-percentage\">\n <div\n class=\"mc-linear-progressbar-percentage__indicator\"\n role=\"progressbar\"\n [style.--progress-value]=\"valuePercent()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-valuenow]=\"valuePercent()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n @if (showLabel()) {\n <div class=\"mc-linear-progressbar-percentage__label\">\n <p class=\"mc-linear-progressbar-percentage__value\">\n {{ valuePercent() }}<span\n class=\"mc-linear-progressbar-percentage__unit\"\n >%</span\n >\n </p>\n </div>\n }\n </div>\n</div>\n","import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { ImageAlt32 } from '@mozaic-ds/icons-angular';\nimport { MozCalloutVariant } from './model/callout.model';\n\n@Component({\n selector: 'moz-callout',\n imports: [NgComponentOutlet, NgTemplateOutlet],\n templateUrl: './callout.html',\n styleUrls: ['./callout.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozCalloutComponent {\n readonly title = input<string | null>(null);\n readonly message = input<string | null>(null);\n readonly role = input<string>('status');\n readonly variant = input<MozCalloutVariant>('default');\n readonly icon = input<Type<unknown>>(ImageAlt32);\n readonly footerTpl = contentChild<TemplateRef<void>>('footer', { descendants: false });\n\n readonly classes = computed(() => {\n const classes = ['mc-callout'];\n if (this.variant() === 'default') classes.push('mc-callout--default');\n if (this.variant() === 'inverse') classes.push('mc-callout--inverse');\n if (this.variant() === 'tips') classes.push('mc-callout--tips');\n if (this.variant() === 'accent') classes.push('mc-callout--accent');\n return classes.join(' ');\n });\n}\n","<section [attr.role]=\"role()\" [class]=\"classes()\">\n <span class=\"mc-callout__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"icon()\" />\n </span>\n <div class=\"mc-callout__content\">\n @if (title()) {\n <h2 class=\"mc-callout__title\">{{ title() }}</h2>\n }\n @if (message()) {\n <p class=\"mc-callout__message\">{{ message() }}</p>\n }\n @if (footerTpl()) {\n <div class=\"mc-callout__footer\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MozAvatarSize } from './model/avatar.model';\n\n@Component({\n selector: 'moz-avatar',\n templateUrl: './avatar.html',\n styleUrls: ['./avatar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozAvatarComponent {\n readonly size = input<MozAvatarSize>('s');\n\n readonly classes = computed(() => {\n const size = this.size();\n return ['mc-avatar', size === 'm' ? 'mc-avatar--m' : '', size === 'l' ? 'mc-avatar--l' : '']\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"classes()\">\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n computed,\n booleanAttribute,\n signal,\n effect,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { ChevronDown24 } from '@mozaic-ds/icons-angular';\nimport parsePhoneNumberFromString, {\n isValidPhoneNumber,\n getCountries,\n getCountryCallingCode,\n getExampleNumber,\n type CountryCode,\n type Examples,\n} from 'libphonenumber-js';\nimport examples from 'libphonenumber-js/mobile/examples';\nimport {\n MozPhoneNumberCountry,\n MozPhoneNumberValue,\n MozPhoneNumberSize,\n} from './model/phone-number-input.model';\n\nlet UID = 0;\n\n@Component({\n selector: 'moz-phone-number',\n imports: [FormsModule, ReactiveFormsModule, ChevronDown24],\n templateUrl: './phone-number-input.html',\n styleUrls: ['./phone-number-input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozPhoneNumberComponent),\n multi: true,\n },\n ],\n})\nexport class MozPhoneNumberComponent implements ControlValueAccessor {\n readonly label = input<string>('Phone number');\n readonly requirementText = input<string | null>('(required / optional)');\n readonly showRequirement = input<boolean, unknown>(true, {\n transform: booleanAttribute,\n });\n readonly helpText = input<string | null>('Help text');\n readonly size = input<MozPhoneNumberSize>('m');\n readonly placeholder = input<string | null>(null);\n readonly defaultCountry = input<string>('fr');\n readonly locale = input<string>('en');\n\n readonly countryCodes = input<string[] | null>(null);\n\n readonly countries = input<MozPhoneNumberCountry[]>([\n {\n code: 'br',\n name: 'Brazil',\n dialCode: '+55',\n },\n {\n code: 'fr',\n name: 'France',\n dialCode: '+33',\n },\n {\n code: 'gr',\n name: 'Greece',\n dialCode: '+30',\n },\n {\n code: 'it',\n name: 'Italy',\n dialCode: '+39',\n },\n {\n code: 'pl',\n name: 'Poland',\n dialCode: '+48',\n },\n {\n code: 'pt',\n name: 'Portugal',\n dialCode: '+351',\n },\n {\n code: 'ro',\n name: 'Romania',\n dialCode: '+40',\n },\n {\n code: 'za',\n name: 'South Africa',\n dialCode: '+27',\n },\n {\n code: 'es',\n name: 'Spain',\n dialCode: '+34',\n },\n {\n code: 'ua',\n name: 'Ukraine',\n dialCode: '+380',\n },\n ]);\n\n readonly showCountrySelect = input<boolean, unknown>(true, {\n transform: booleanAttribute,\n });\n readonly showCountryCode = input<boolean, unknown>(true, {\n transform: booleanAttribute,\n });\n\n readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly readonly = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n readonly invalid = input<boolean | null>(null);\n readonly errorMessage = input<string | null>(null);\n\n readonly selectName = input<string>('selectComponentName');\n readonly inputName = input<string>('example-small');\n\n private readonly _country = signal<string>('fr');\n private readonly _number = signal<string>('');\n\n private readonly uid = ++UID;\n readonly selectId = `phone_select_${this.uid}`;\n readonly flagImgId = `phone_flag_${this.uid}`;\n readonly inputId = `phone_input_${this.uid}`;\n readonly helpId = `help_${this.uid}`;\n readonly errorId = `err_${this.uid}`;\n readonly ccId = `countryCode_${this.uid}`;\n\n readonly selectedCountryCode = computed(() => this._country());\n readonly availableCountries = computed(() => {\n const explicitCodes = this.countryCodes();\n if (explicitCodes && explicitCodes.length) {\n return explicitCodes.map((c) => c.toLowerCase());\n }\n\n const legacyCountries = this.countries();\n if (legacyCountries && legacyCountries.length) {\n return legacyCountries.map((c) => c.code.toLowerCase());\n }\n\n return getCountries().map((c) => c.toLowerCase());\n });\n\n readonly selectedCountryName = computed(() => this.getCountryName(this._country()));\n readonly selectedDialCode = computed(() => {\n const dialCode = this.getCountryCallingCodeFor(this._country());\n return dialCode ? `+${dialCode}` : '';\n });\n readonly selectedFlagUrl = computed(() => `https://flagcdn.com/${this._country()}.svg`);\n\n readonly number = computed(() => this._number());\n\n readonly dynamicPlaceholder = computed(() => {\n const manual = this.placeholder();\n if (manual && manual.length > 0) {\n return manual;\n }\n\n const country = this.selectedLibCountryCode();\n if (!country) {\n return '';\n }\n\n try {\n const example = getExampleNumber(country, examples as Examples);\n return example?.formatNational() ?? '';\n } catch {\n return '';\n }\n });\n\n private selectedLibCountryCode = computed<CountryCode | undefined>(() => {\n const code = this._country();\n if (!code) {\n return undefined;\n }\n return code.toUpperCase() as CountryCode;\n });\n\n private parsedNumber = computed(() => {\n const number = this._number().trim();\n const country = this.selectedLibCountryCode();\n if (!number || !country) {\n return null;\n }\n\n try {\n return parsePhoneNumberFromString(number, country);\n } catch {\n return null;\n }\n });\n\n private phoneIsValid = computed(() => {\n const number = this._number().trim();\n const country = this.selectedLibCountryCode();\n if (!number || !country) {\n return false;\n }\n\n try {\n return isValidPhoneNumber(number, country);\n } catch {\n return false;\n }\n });\n\n getCountryName(countryCode: string): string {\n const upper = countryCode.toUpperCase();\n\n try {\n const regionNames = new Intl.DisplayNames([this.locale()], {\n type: 'region',\n });\n return regionNames.of(upper) ?? upper;\n } catch {\n return upper;\n }\n }\n\n getCountryCallingCodeFor(countryCode: string): string {\n const upper = countryCode.toUpperCase() as CountryCode;\n\n try {\n return getCountryCallingCode(upper);\n } catch {\n return '';\n }\n }\n\n // aria-describedby\n describedBy = computed(() => {\n const ids: string[] = [];\n if (this.helpText()) ids.push(this.helpId);\n if (this.isInvalid() && this.errorToShow()) ids.push(this.errorId);\n return ids.length ? ids.join(' ') : null;\n });\n\n // invalid combiné (input override > form state)\n private formInvalid = signal<boolean>(false);\n private formErrorMsg = signal<string | null>(null);\n\n isInvalid = computed(() => {\n const explicit = this.invalid();\n if (explicit !== null) {\n return !!explicit;\n }\n\n if (this.formInvalid()) {\n return true;\n }\n\n const value = this._number().trim();\n if (!value) {\n return false;\n }\n\n return !this.phoneIsValid();\n });\n\n errorToShow = computed(() => this.errorMessage() ?? this.formErrorMsg());\n\n // ----- CVA\n private onChange?: (value: MozPhoneNumberValue) => void;\n onTouched?: () => void;\n\n writeValue(value: MozPhoneNumberValue | null): void {\n if (!value) {\n this._number.set('');\n return;\n }\n\n if (value.country) {\n this._country.set(value.country.toLowerCase());\n }\n\n const incoming = value.number ?? '';\n if (!incoming) {\n this._number.set('');\n return;\n }\n\n const current = this._number();\n if (incoming === current) {\n return;\n }\n\n if (incoming.startsWith('+')) {\n try {\n const parsed = parsePhoneNumberFromString(incoming);\n if (parsed) {\n if (parsed.country) {\n this._country.set(parsed.country.toLowerCase());\n }\n this._number.set(parsed.formatNational());\n return;\n }\n } catch {\n // ignore and fallback to raw value\n }\n }\n\n this._number.set(incoming);\n }\n\n registerOnChange(fn: (value: MozPhoneNumberValue) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Appels depuis le template\n onCountryChange(code: string) {\n this._country.set(code.toLowerCase());\n\n const parsed = this.parsedNumber();\n if (parsed && this.phoneIsValid()) {\n const formatted = parsed.formatNational();\n if (formatted !== this._number()) {\n this._number.set(formatted);\n }\n }\n\n this.emitChange();\n }\n onNumberChange(val: string) {\n const sanitized = this.sanitize(val);\n this._number.set(sanitized);\n\n const parsed = this.parsedNumber();\n if (parsed && this.phoneIsValid()) {\n const formatted = parsed.formatNational();\n if (formatted !== sanitized) {\n this._number.set(formatted);\n }\n }\n\n this.emitChange();\n }\n\n private emitChange() {\n if (!this.onChange) {\n return;\n }\n\n const parsed = this.parsedNumber();\n const fullNumber = parsed?.number ?? this._number();\n\n this.onChange({\n country: this._country(),\n number: fullNumber,\n });\n }\n\n private sanitize(value: string): string {\n return value.replace(/[^0-9+\\s()-]/g, '');\n }\n\n // ---- Sync validation depuis le parent (optionnel)\n // Tu peux appeler ces helpers depuis un directive/validator externe si besoin.\n setFormInvalidState(invalid: boolean, message?: string | null) {\n this.formInvalid.set(invalid);\n this.formErrorMsg.set(message ?? null);\n }\n\n constructor() {\n // fallback si la country par défaut n'est pas dans la liste\n effect(() => {\n const codes = this.availableCountries();\n if (!codes.length) {\n return;\n }\n\n const preferred = this.defaultCountry()?.toLowerCase();\n const target = preferred && codes.includes(preferred) ? preferred : codes[0];\n\n if (!this._country() || !codes.includes(this._country())) {\n this._country.set(target);\n }\n });\n }\n}\n","<div\n class=\"field\"\n [class.is-disabled]=\"disabled()\"\n [class.is-readonly]=\"readonly()\"\n>\n <legend class=\"field__legend\">\n {{ label() }} @if (showRequirement() && requirementText()) {\n <span class=\"field__requirement\">{{ requirementText() }}</span>\n }\n </legend>\n\n @if (helpText()) {\n <span [id]=\"helpId\" class=\"field__help\">{{ helpText() }}</span>\n }\n\n <div class=\"field__content\">\n <div id=\"mc-phone-number-input\" class=\"phone-number-input\">\n <!-- Select pays + flag -->\n <div\n class=\"phone-number-input__select-wrapper\"\n [class.phone-number-input__select-wrapper--hidden]=\"\n !showCountrySelect()\n \"\n >\n <select\n [id]=\"selectId\"\n [name]=\"selectName()\"\n class=\"select phone-number-input__select\"\n [class.select--s]=\"size() === 's'\"\n [disabled]=\"disabled() || readonly()\"\n [ngModel]=\"selectedCountryCode()\"\n (ngModelChange)=\"onCountryChange($event)\"\n aria-label=\"Country\"\n >\n <option value=\"\" selected hidden></option>\n @for (code of availableCountries(); track code) {\n <option\n [attr.data-flag]=\"code\"\n [value]=\"code\"\n [selected]=\"code === selectedCountryCode()\"\n >\n {{ getCountryName(code) }} (+{{ getCountryCallingCodeFor(code) }})\n </option>\n }\n </select>\n\n @if (showCountrySelect()) {\n <div class=\"phone-number-input__select-display\">\n <div class=\"phone-number-input__flag\">\n <img\n class=\"phone-number-input__flag-image\"\n [id]=\"flagImgId\"\n [src]=\"selectedFlagUrl()\"\n [alt]=\"selectedCountryName()\"\n width=\"20\"\n />\n </div>\n <ChevronDown24 class=\"phone-number-input__chevron\" />\n </div>\n }\n </div>\n\n <!-- Input numéro -->\n <div\n class=\"text-input phone-number-input__input\"\n [class.text-input--s]=\"size() === 's'\"\n [class.is-invalid]=\"isInvalid()\"\n >\n @if (showCountryCode()) {\n <span [id]=\"ccId\" class=\"phone-number-input__country-code\"\n >{{ selectedDialCode() }}</span\n >\n }\n\n <input\n type=\"tel\"\n [id]=\"inputId\"\n class=\"phone-number-input__control text-input__control\"\n [placeholder]=\"dynamicPlaceholder()\"\n [name]=\"inputName()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n [ngModel]=\"number()\"\n (ngModelChange)=\"onNumberChange($event)\"\n (blur)=\"onTouched?.()\"\n />\n </div>\n </div>\n </div>\n\n <!-- Message d'erreur -->\n @if (isInvalid() && errorToShow()) {\n <span [id]=\"errorId\" class=\"field__validation-message is-invalid\">\n {{ errorToShow() }}\n </span>\n }\n</div>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n input,\n output,\n signal,\n booleanAttribute,\n contentChild,\n} from '@angular/core';\nimport { MozLinearProgressBarBufferComponent } from '../linear-progress-bar-buffer/linear-progress-bar-buffer';\nimport {\n CheckCircleFilled32,\n WarningCircleFilled32,\n CrossCircleFilled32,\n InfoCircleFilled32,\n Cross20,\n} from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { MozToasterPosition, MozToasterStatus, MozToasterRole } from './model/toaster.model';\n\n@Component({\n selector: 'moz-toaster',\n imports: [\n MozLinearProgressBarBufferComponent,\n CheckCircleFilled32,\n WarningCircleFilled32,\n CrossCircleFilled32,\n InfoCircleFilled32,\n Cross20,\n MozIconButtonComponent,\n ],\n templateUrl: './toaster.html',\n styleUrls: ['./toaster.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozToasterComponent implements AfterContentInit {\n readonly open = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly position = input<MozToasterPosition>('top');\n readonly description = input<string>('');\n readonly status = input<MozToasterStatus>('info');\n readonly closable = input<boolean, unknown>(true, { transform: booleanAttribute });\n readonly progress = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly timeout = input<number | null>(null);\n readonly role = input<MozToasterRole>('status');\n readonly closeAriaLabel = input<string>('Close');\n\n readonly openChange = output<boolean>();\n readonly closed = output<void>();\n\n readonly actionSlot = contentChild<ElementRef<HTMLElement>>('[action]', { descendants: false });\n readonly hasAction = signal(false);\n\n ngAfterContentInit() {\n this.hasAction.set(!!this.actionSlot());\n }\n\n classes = computed(() => {\n const classes = [];\n if (this.open()) {\n classes.push('is-open');\n }\n const s = this.status();\n const p = this.position();\n if (s && s !== 'info') {\n classes.push(`mc-toaster--${s}`);\n }\n if (p && p !== 'top') {\n classes.push(`mc-toaster--${p}`);\n }\n return classes.join(' ');\n });\n\n private _progressValue = signal(0); // 0 → 100\n progressValue = () => this._progressValue();\n\n private intervalId: number | null = null;\n private timeoutId: number | null = null;\n private startAt = 0;\n\n constructor() {\n effect(() => {\n const isOpen = this.open();\n const ms = this.timeout();\n const showProgress = this.progress();\n\n this.clearTimers();\n this._progressValue.set(0);\n\n if (!isOpen || !ms || ms <= 0) {\n return;\n }\n\n if (showProgress) {\n this.startAt = Date.now();\n const step = 100;\n this.intervalId = setInterval(() => {\n const elapsed = Date.now() - this.startAt;\n const pct = Math.min(100, (elapsed / ms) * 100);\n this._progressValue.set(pct);\n if (pct >= 100) {\n this.onCloseClick();\n }\n }, step) as unknown as number;\n } else {\n this.timeoutId = setTimeout(() => this.onCloseClick(), ms) as unknown as number;\n }\n });\n }\n\n onCloseClick() {\n if (!this.open()) {\n return;\n }\n this.clearTimers();\n this._progressValue.set(100);\n this.openChange.emit(false);\n this.closed.emit();\n }\n\n private clearTimers() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n","<section class=\"mc-toaster\" [class]=\"classes()\" [attr.role]=\"role()\">\n <div class=\"mc-toaster__icon\">\n @switch (status()) { @case ('success') {\n <CheckCircleFilled32 />\n } @case ('warning') {\n <WarningCircleFilled32 />\n } @case ('error') {\n <CrossCircleFilled32 />\n } @case ('info') {\n <InfoCircleFilled32 />\n } }\n </div>\n\n <div class=\"mc-toaster__content\">\n <p class=\"mc-toaster__message\">{{ description() }}</p>\n\n @if (hasAction()) {\n <div class=\"mc-toaster__action\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n }\n </div>\n\n @if (closable()) {\n <moz-icon-button\n type=\"button\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (activated)=\"onCloseClick()\"\n [appearance]=\"'inverse'\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n [id]=\"'toaster-close-button'\"\n >\n <Cross20 icon />\n </moz-icon-button>\n } @if (progress() && timeout() && timeout()! > 0) {\n <moz-linear-progress-bar-buffer\n class=\"mc-toaster__indicator\"\n [valuePercent]=\"progressValue()\"\n size=\"m\"\n >\n </moz-linear-progress-bar-buffer>\n }\n</section>\n","import { InjectionToken } from '@angular/core';\nimport { MozToasterPosition, MozToasterRole, MozToasterStatus } from '../model/toaster.model';\n\nexport interface MozToasterConfig {\n open?: boolean;\n position?: MozToasterPosition;\n description: string;\n status?: MozToasterStatus;\n closable?: boolean;\n progress?: boolean;\n timeout?: number | null;\n role?: MozToasterRole;\n closeAriaLabel?: string;\n}\n\nexport const TOASTER_CONFIG = new InjectionToken<MozToasterConfig>('TOASTER_CONFIG');\n\nexport const DEFAULT_TOASTER_CONFIG: Partial<MozToasterConfig> = {\n open: false,\n position: 'top',\n description: '',\n status: 'info',\n closable: true,\n progress: false,\n timeout: null,\n role: 'status',\n closeAriaLabel: 'Close',\n};\n","import { Subject, Observable } from 'rxjs';\nimport { signal } from '@angular/core';\nimport { MozToasterPosition, MozToasterStatus } from '../model/toaster.model';\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport class MozToasterRef {\n private readonly afterClosed$ = new Subject<undefined>();\n private readonly afterOpened$ = new Subject<void>();\n\n readonly isOpen = signal<boolean>(false);\n readonly description = signal<string>('');\n readonly status = signal<MozToasterStatus>('info');\n readonly closable = signal<boolean>(true);\n readonly timeout = signal<number | null>(null);\n readonly progress = signal<boolean>(false);\n readonly position = signal<MozToasterPosition>('top');\n\n private animationDuration = 300;\n\n constructor(private readonly overlayRef: OverlayRef) {}\n\n open(): void {\n requestAnimationFrame(() => {\n this.isOpen.set(true);\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n }\n\n close(): void {\n this.isOpen.set(false);\n\n setTimeout(() => {\n this.overlayRef.dispose();\n this.afterClosed$.next(undefined);\n this.afterClosed$.complete();\n }, this.animationDuration);\n }\n\n afterClosed(): Observable<undefined> {\n return this.afterClosed$.asObservable();\n }\n\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport {\n CheckCircleFilled32,\n Cross20,\n CrossCircleFilled32,\n InfoCircleFilled32,\n WarningCircleFilled32,\n} from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { MozLinearProgressBarBufferComponent } from '../../linear-progress-bar-buffer';\nimport { MozToasterConfig, TOASTER_CONFIG } from '../config/toaster.config';\nimport { MozToasterRef } from '../ref/toaster-ref';\n\n@Component({\n selector: 'moz-toaster-container',\n imports: [\n MozLinearProgressBarBufferComponent,\n CheckCircleFilled32,\n WarningCircleFilled32,\n CrossCircleFilled32,\n InfoCircleFilled32,\n Cross20,\n MozIconButtonComponent,\n ],\n templateUrl: './toaster-container.html',\n styleUrls: ['../toaster.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToasterContainerComponent {\n readonly toasterRef = inject(MozToasterRef);\n readonly config = inject<MozToasterConfig>(TOASTER_CONFIG);\n\n classes = computed(() => {\n const classes = [];\n if (this.toasterRef.isOpen()) {\n classes.push('is-open');\n }\n const s = this.toasterRef.status();\n const p = this.toasterRef.position();\n if (s && s !== 'info') {\n classes.push(`mc-toaster--${s}`);\n }\n if (p && p !== 'top') {\n classes.push(`mc-toaster--${p}`);\n }\n return classes.join(' ');\n });\n\n private _progressValue = signal(0); // 0 → 100\n progressValue = () => this._progressValue();\n\n private intervalId: number | null = null;\n private timeoutId: number | null = null;\n private startAt = 0;\n\n constructor() {\n effect(() => {\n const isOpen = this.toasterRef.isOpen();\n const ms = this.toasterRef.timeout();\n const showProgress = this.toasterRef.progress();\n\n this.clearTimers();\n this._progressValue.set(0);\n\n if (!isOpen || !ms || ms <= 0) {\n return;\n }\n\n if (showProgress) {\n this.startAt = Date.now();\n const step = 100;\n this.intervalId = setInterval(() => {\n const elapsed = Date.now() - this.startAt;\n const pct = Math.min(100, (elapsed / ms) * 100);\n this._progressValue.set(pct);\n if (pct >= 100) {\n this.toasterRef.close();\n }\n }, step) as unknown as number;\n } else {\n this.timeoutId = setTimeout(() => this.toasterRef.close(), ms) as unknown as number;\n }\n });\n }\n\n private clearTimers() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n","<section class=\"mc-toaster\" [class]=\"classes()\">\n <div class=\"mc-toaster__icon\">\n @switch (toasterRef.status()) {\n @case ('success') {\n <CheckCircleFilled32 />\n }\n @case ('warning') {\n <WarningCircleFilled32 />\n }\n @case ('error') {\n <CrossCircleFilled32 />\n }\n @case ('info') {\n <InfoCircleFilled32 />\n }\n }\n </div>\n\n <div class=\"mc-toaster__content\">\n <p class=\"mc-toaster__message\">{{ toasterRef.description() }}</p>\n </div>\n\n @if (toasterRef.closable()) {\n <moz-icon-button\n type=\"button\"\n (activated)=\"toasterRef.close()\"\n [appearance]=\"'inverse'\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n [id]=\"'toaster-close-button'\"\n >\n <Cross20 icon />\n </moz-icon-button>\n }\n @if (toasterRef.progress() && toasterRef.timeout() && toasterRef.timeout()! > 0) {\n <moz-linear-progress-bar-buffer\n class=\"mc-toaster__indicator\"\n [valuePercent]=\"progressValue()\"\n size=\"m\"\n >\n </moz-linear-progress-bar-buffer>\n }\n</section>\n","// service/toaster.service.ts\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { DEFAULT_TOASTER_CONFIG, MozToasterConfig, TOASTER_CONFIG } from '../config/toaster.config';\nimport { ToasterContainerComponent } from '../container/toaster-container';\nimport { MozToasterRef } from '../ref/toaster-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class MozToasterService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n open(config: MozToasterConfig): MozToasterRef {\n const mergedConfig: MozToasterConfig = {\n ...DEFAULT_TOASTER_CONFIG,\n ...config,\n } as MozToasterConfig;\n\n const overlayRef = this.createOverlay();\n const toasterRef = new MozToasterRef(overlayRef);\n\n toasterRef.description.set(mergedConfig.description);\n toasterRef.status.set(mergedConfig.status ?? 'info');\n toasterRef.closable.set(mergedConfig.closable ?? true);\n toasterRef.timeout.set(mergedConfig.timeout ?? null);\n toasterRef.progress.set(mergedConfig.progress ?? false);\n toasterRef.position.set(mergedConfig.position ?? 'top');\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: MozToasterRef, useValue: toasterRef },\n { provide: TOASTER_CONFIG, useValue: mergedConfig },\n ],\n });\n\n const containerPortal = new ComponentPortal(ToasterContainerComponent, null, injector);\n overlayRef.attach(containerPortal);\n\n toasterRef.open();\n\n return toasterRef;\n }\n\n private createOverlay(): OverlayRef {\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n });\n\n return this.overlay.create(config);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n booleanAttribute,\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ChevronDown20, SidebarExpand24 } from '@mozaic-ds/icons-angular';\nimport { MozSidebarItem } from './model/sidebar.model';\n\n@Component({\n selector: 'moz-sidebar',\n imports: [NgComponentOutlet, SidebarExpand24, ChevronDown20],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './sidebar.html',\n styleUrls: ['./sidebar.scss'],\n})\nexport class MozSidebarComponent {\n readonly expanded = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly items = input<MozSidebarItem[]>([]);\n readonly title = input<string>('ADEO Design System');\n readonly logoSrc = input<string | null>('/images/logo.svg');\n readonly logoAlt = input<string>('logo');\n\n readonly showFooter = input<boolean, unknown>(true, { transform: booleanAttribute });\n readonly showProfile = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n readonly profileName = input<string | null>('Dieter Rams');\n readonly profileTitle = input<string | null>('Industrial designer');\n readonly profileAvatarSrc = input<string | null>('/images/Avatar.png');\n\n readonly expandedChange = output<boolean>();\n readonly itemClick = output<{ itemId: string; subItemId: string | null }>();\n\n readonly hostClasses = computed(() =>\n ['sidebar', this.expanded() ? '' : 'sidebar--collapsed'].filter(Boolean).join(' ')\n );\n\n readonly expandButtonAriaLabel = computed(() => (this.expanded() ? 'Collapse' : 'Expand'));\n\n shouldOpen = (i: MozSidebarItem) => !!i.open || !!i.children?.some((c) => c.selected);\n\n toggleExpanded() {\n this.expandedChange.emit(!this.expanded());\n }\n\n onItemClick(itemId: string, subItemId: string | null, ev: Event) {\n this.itemClick.emit({ itemId, subItemId });\n if ((ev.currentTarget as HTMLAnchorElement)?.getAttribute('href') === '#') ev.preventDefault();\n }\n\n toggleOpen(item: MozSidebarItem) {\n item.open = !item.open;\n }\n}\n","<aside [class]=\"hostClasses()\">\n <header class=\"sidebar__header\">\n @if (logoSrc()) {\n <img class=\"sidebar__header-logo\" [src]=\"logoSrc()!\" [alt]=\"logoAlt()\" />\n } @if (title()) {\n <p class=\"sidebar__header-title\">{{ title() }}</p>\n }\n </header>\n\n <section class=\"sidebar__container\">\n <nav class=\"sidebar__menu\" role=\"navigation\">\n <ul class=\"sidebar__list\">\n @for (item of items(); track item.id) {\n <li class=\"sidebar__item\">\n @if (expanded() && !!item.children?.length) {\n <details\n class=\"sidebar__link-expand\"\n (click)=\"toggleOpen(item)\"\n [attr.open]=\"item.open || null\"\n >\n <summary class=\"sidebar__link\" (click)=\"$event.preventDefault()\">\n @if (item.icon) {\n <span class=\"sidebar__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n <span class=\"sidebar__text\">{{ item.label }}</span>\n <span aria-hidden=\"true\" class=\"sidebar__sub\">\n <ChevronDown20 />\n </span>\n </summary>\n\n <ul class=\"sidebar__sublist\">\n @for (sub of item.children!; track sub.id) {\n <li class=\"sidebar__item\">\n <a\n class=\"sidebar__sublink\"\n [class.sidebar__sublink--selected]=\"!!sub.selected\"\n [attr.href]=\"sub.href || '#'\"\n (click)=\"onItemClick(item.id, sub.id, $event)\"\n >\n <span class=\"sidebar__text\">{{ sub.label }}</span>\n </a>\n </li>\n }\n </ul>\n </details>\n } @else {\n <a\n class=\"sidebar__link\"\n [class.sidebar__link--selected]=\"!!item.selected\"\n [attr.title]=\"item.label\"\n [attr.href]=\"item.href || '#'\"\n (click)=\"onItemClick(item.id, null, $event)\"\n >\n @if (item.icon) {\n <span class=\"sidebar__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n <span class=\"sidebar__text\">{{ item.label }}</span>\n </a>\n }\n </li>\n }\n </ul>\n </nav>\n </section>\n\n @if (showFooter()) {\n <footer class=\"sidebar__footer\">\n <div class=\"divider-horizontal\"></div>\n <div class=\"sidebar__footer-container\">\n @if (showProfile() && (profileName() || profileTitle() || profileAvatarSrc())) {\n <a href=\"#\" class=\"sidebar__footer-profile\" (click)=\"$event.preventDefault()\">\n @if (profileAvatarSrc()) {\n <img\n class=\"sidebar__footer-avatar\"\n [src]=\"profileAvatarSrc()!\"\n [alt]=\"profileName() || 'User'\"\n loading=\"lazy\"\n />\n }\n <div class=\"sidebar__footer-content\">\n @if (profileName()) {\n <p class=\"sidebar__footer-identity\">\n {{ profileName() }}\n </p>\n } @if (profileTitle()) {\n <p class=\"sidebar__footer-title\">{{ profileTitle() }}</p>\n }\n </div>\n </a>\n }\n <button\n class=\"sidebar__footer-expand button button--ghost\"\n type=\"button\"\n [attr.aria-label]=\"expandButtonAriaLabel()\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggleExpanded()\"\n >\n <SidebarExpand24 class=\"button__icon\" />\n </button>\n </div>\n </footer>\n }\n</aside>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n model,\n computed,\n booleanAttribute,\n viewChildren,\n} from '@angular/core';\nimport { MozSegmentedItem, MozSegmentedControlSize } from './model/segmented-control.model';\n\n@Component({\n selector: 'moz-segmented-control',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './segmented-control.html',\n styleUrls: ['./segmented-control.scss'],\n})\nexport class MozSegmentedControlComponent {\n readonly items = input<MozSegmentedItem[]>([]);\n\n readonly size = input<MozSegmentedControlSize>('s');\n readonly full = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('Segmented control');\n\n readonly selectedIndex = model<number>(0);\n readonly change = output<{ index: number; value: string | number }>();\n\n readonly classes = computed(() => ({\n 'segmented-control': true,\n 'segmented-control--disabled': this.disabled(),\n 'segmented-control--m': this.size() === 'm',\n 'segmented-control--full': this.full(),\n }));\n\n readonly segmentClasses = (index: number) =>\n computed(() => ({\n 'segmented-control__segment--disabled': this.disabled() || !!this.items()[index]?.disabled,\n 'segmented-control__segment': true,\n 'segmented-control__segment--selected': index === this.selectedIndex(),\n }));\n\n private readonly buttons = viewChildren<ElementRef<HTMLButtonElement>>('segBtn');\n\n onSelect(index: number) {\n if (this.disabled() || this.items()[index]?.disabled) {\n return;\n }\n\n const item = this.items()[index];\n this.selectedIndex.set(index);\n this.change.emit({ index, value: item.value });\n queueMicrotask(() => this.focusIndex(index));\n }\n\n private focusIndex(index: number) {\n const btns = this.buttons();\n const btn = btns[index]?.nativeElement;\n btn?.focus();\n }\n}\n","<div [class]=\"classes()\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of items(); track item.value; let i = $index) {\n <button\n #segBtn\n type=\"button\"\n [class]=\"segmentClasses(i)()\"\n role=\"tab\"\n [attr.aria-selected]=\"i === selectedIndex()\"\n [attr.aria-disabled]=\"disabled() || !!item.disabled\"\n [attr.tabindex]=\"i === selectedIndex() ? 0 : -1\"\n [disabled]=\"disabled() || !!item.disabled\"\n (click)=\"onSelect(i)\"\n >\n {{ item.label }}\n </button>\n }\n</div>\n","import { Component, viewChild, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'moz-accordion-header',\n templateUrl: './accordion-header.html',\n styleUrls: ['./accordion-header.scss'],\n})\nexport class MozAccordionHeaderComponent {\n readonly tpl = viewChild('tpl', { read: TemplateRef });\n}\n","<ng-template #tpl>\n <div class=\"accordion__title-wrapper\">\n <span class=\"accordion__title-text\" #titleWrapper>\n <ng-content select=\"[title]\"></ng-content>\n </span>\n <span class=\"accordion__subtitle\" #subtitleWrapper>\n <ng-content select=\"[subtitle]\"></ng-content>\n </span>\n </div>\n</ng-template>\n","import { Component, TemplateRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'moz-accordion-content',\n templateUrl: './accordion-content.html',\n})\nexport class MozAccordionContentComponent {\n readonly tpl = viewChild('tpl', { read: TemplateRef });\n}\n","<ng-template #tpl><ng-content></ng-content></ng-template>\n","import { Component, Type, contentChild, linkedSignal } from '@angular/core';\nimport { input } from '@angular/core';\nimport { MozAccordionHeaderComponent } from '../header/accordion-header';\nimport { MozAccordionContentComponent } from '../content/accordion-content';\n\n@Component({\n selector: 'moz-accordion-panel',\n template: ``,\n})\nexport class MozAccordionPanelComponent {\n readonly icon = input<Type<unknown> | null>(null);\n readonly open = input(false);\n readonly state = linkedSignal(() => this.open());\n\n readonly header = contentChild(MozAccordionHeaderComponent);\n readonly content = contentChild(MozAccordionContentComponent);\n}\n","import { Component, ChangeDetectionStrategy, contentChildren, computed } from '@angular/core';\nimport { input } from '@angular/core';\nimport { NgTemplateOutlet, NgComponentOutlet } from '@angular/common';\nimport { MozAccordionPanelComponent } from './components/panel/accordion-panel';\n\n/**\n * Accordion component for organizing content in collapsible sections.\n *\n * @description\n * The accordion component allows users to show and hide sections of content.\n * Each section consists of a header and content area that can be expanded or collapsed.\n * Supports both custom and native HTML implementation.\n *\n * @example\n * ```html\n * <moz-accordion [ghost]=\"false\" [native]=\"false\">\n * <moz-accordion-panel [icon]=\"HomeIcon\" [open]=\"true\">\n * <moz-accordion-header>\n * <span title=\"\">Panel Title</span>\n * <span subtitle=\"\">Panel Subtitle</span>\n * </moz-accordion-header>\n * <moz-accordion-content>\n * <p>Panel content goes here</p>\n * </moz-accordion-content>\n * </moz-accordion-panel>\n * </moz-accordion>\n * ```\n */\n@Component({\n selector: 'moz-accordion',\n imports: [NgTemplateOutlet, NgComponentOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './accordion.html',\n styleUrls: ['./accordion.scss'],\n})\nexport class MozAccordionComponent {\n /**\n * Applies ghost styling to the accordion for a lighter visual appearance.\n * Useful for nested or secondary accordions.\n *\n * @default false\n */\n readonly ghost = input(false);\n\n /**\n * Uses native HTML `<details>` and `<summary>` elements instead of custom implementation.\n * Provides better accessibility and performance with browser-native behavior.\n *\n * @default false\n */\n readonly native = input(false);\n\n /**\n * Computed CSS classes based on component inputs.\n * Automatically updates when ghost input changes.\n *\n * @internal\n */\n readonly cssClasses = computed(() => ({\n 'accordion': true,\n 'accordion--ghost': this.ghost(),\n }));\n\n /**\n * Signal containing all accordion panels projected into this component.\n * Automatically synchronized with content children.\n *\n * @internal\n */\n readonly panels = contentChildren(MozAccordionPanelComponent);\n\n /**\n * Toggles the open/closed state of an accordion panel.\n *\n * @param p - The accordion panel to toggle\n */\n toggle(p: MozAccordionPanelComponent) {\n p.state.update((v: boolean) => !v);\n }\n\n /**\n * Handles the native toggle event for accordion panels using HTML details/summary.\n * Synchronizes the panel state with the native element's open state.\n *\n * @param ev - The native toggle event\n * @param p - The accordion panel being toggled\n */\n onNativeToggle(ev: Event, p: MozAccordionPanelComponent) {\n p.state.set((ev.currentTarget as HTMLDetailsElement).open);\n }\n}\n","<div [class]=\"cssClasses()\">\n @for (panel of panels(); track panel; let i = $index) { @if (!native()) {\n <div class=\"accordion__item\">\n <div class=\"accordion__header\">\n <h2 class=\"accordion__title\">\n <button\n class=\"accordion__trigger\"\n type=\"button\"\n [attr.id]=\"'accordion-' + (i + 1)\"\n data-mc-component=\"accordion\"\n [attr.aria-controls]=\"'content-' + (i + 1)\"\n [attr.aria-expanded]=\"panel.state()\"\n (click)=\"toggle(panel)\"\n >\n @if (panel.icon()) {\n <span class=\"accordion__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"panel.icon()\"></ng-container>\n </span>\n } @if (panel.header()) {\n <ng-container [ngTemplateOutlet]=\"panel.header()?.tpl()\"></ng-container>\n }\n </button>\n </h2>\n </div>\n\n <div\n class=\"accordion__content\"\n [class.accordion__content--open]=\"panel.state()\"\n [attr.id]=\"'content-' + (i + 1)\"\n [attr.aria-labelledby]=\"'accordion-' + (i + 1)\"\n [attr.aria-hidden]=\"!panel.state()\"\n >\n @if (panel.content()) {\n <ng-container [ngTemplateOutlet]=\"panel.content()?.tpl()\"></ng-container>\n }\n </div>\n </div>\n } @else {\n <details\n class=\"accordion__item\"\n [attr.open]=\"panel.state() ? '' : null\"\n (toggle)=\"onNativeToggle($event, panel)\"\n >\n <summary class=\"accordion__header\">\n <span class=\"accordion__title\">\n <span class=\"accordion__trigger\">\n @if (panel.icon()) {\n <span class=\"accordion__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"panel.icon()\"></ng-container>\n </span>\n } @if (panel.header()) {\n <ng-container [ngTemplateOutlet]=\"panel.header()?.tpl()\"></ng-container>\n }\n </span>\n </span>\n </summary>\n <div class=\"accordion__content\" [class.accordion__content--open]=\"panel.state()\" [attr.aria-hidden]=\"!panel.state()\">\n @if (panel.content()) {\n <ng-container [ngTemplateOutlet]=\"panel.content()?.tpl()\"></ng-container>\n }\n </div>\n </details>\n } }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MozDividerComponent } from '../divider';\n\n@Component({\n selector: 'moz-action-bottom-bar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './action-bottom-bar.html',\n styleUrls: ['./action-bottom-bar.scss'],\n imports: [MozDividerComponent],\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozActionBottomBarComponent {\n readonly boxShadow = input<boolean>(false);\n\n readonly classes = computed(() => ({\n 'mc-action-bottom-bar': true,\n 'mc-action-bottom-bar--shadow': this.boxShadow(),\n }));\n}\n","<div [class]=\"classes()\">\n <moz-divider\n class=\"mc-action-bottom-bar__divider\"\n orientation=\"horizontal\"\n size=\"s\"\n ></moz-divider>\n <div class=\"mc-action-bottom-bar__left\">\n <ng-content select=\"[left]\"></ng-content>\n </div>\n\n <div class=\"mc-action-bottom-bar__right\">\n <ng-content select=\"[right]\"></ng-content>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, computed, output } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { Cross24 } from '@mozaic-ds/icons-angular';\nimport { MozActionListItem } from './model/action-listbox.model';\n\n/**\n * An action list is a contextual menu that presents a list of available actions related to a specific element or interface area.\n * It allows users to quickly access functions such as editing, sharing, deleting, or navigating to sub-actions.\n * Action Lists are commonly triggered by buttons, icons (e.g., three-dot menus), or right-click interactions, ensuring a clean and efficient UI.\n */\n@Component({\n selector: 'moz-action-listbox',\n templateUrl: './action-listbox.html',\n styleUrls: ['./action-listbox.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgComponentOutlet, Cross24],\n})\nexport class MozActionListboxComponent {\n /**\n * Title displayed in mobile version.\n */\n readonly title = input<string>();\n\n /**\n * An array of objects that allows you to provide all the data needed to generate the content for each item.\n */\n readonly items = input.required<MozActionListItem[]>();\n\n /**\n * Emitted when an item is clicked.\n */\n readonly itemClick = output<MozActionListItem>();\n\n /**\n * Computed signal that maps items to their CSS classes.\n */\n readonly itemsWithClasses = computed(() =>\n this.items().map((item) => ({\n item,\n classes: {\n 'action-list__element': true,\n 'action-list__element--danger': item.appearance === 'danger',\n 'action-list__element--disabled': item.disabled === true,\n },\n }))\n );\n}\n","<div class=\"listbox\">\n <div class=\"listbox__content\">\n <div class=\"listbox__header\">\n @if (title()) {\n <h3 class=\"listbox__title\">{{ title() }}</h3>\n }\n <button\n class=\"listbox__close button button--icon-button button--ghost\"\n type=\"button\"\n aria-label=\"Close\"\n >\n <Cross24 icon />\n </button>\n </div>\n <div class=\"listbox__body\">\n <ul class=\"action-list\" role=\"menu\">\n @for (itemWithClasses of itemsWithClasses(); track $index) { @if\n (itemWithClasses.item.divider) {\n <li class=\"divider-horizontal action-list__divider\"></li>\n }\n <li [class]=\"itemWithClasses.classes\" role=\"menuitem\" [attr.id]=\"itemWithClasses.item.id\">\n <button\n type=\"button\"\n class=\"action-list__button\"\n [disabled]=\"itemWithClasses.item.disabled\"\n (click)=\"!itemWithClasses.item.disabled && itemClick.emit(itemWithClasses.item)\"\n >\n @if (itemWithClasses.item.icon) {\n <div class=\"action-list__icon\">\n <ng-container [ngComponentOutlet]=\"itemWithClasses.item.icon\"> </ng-container>\n </div>\n }\n <p class=\"action-list__text\">\n {{ itemWithClasses.item.label }}\n </p>\n </button>\n </li>\n }\n </ul>\n </div>\n </div>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject, Observable } from 'rxjs';\nimport { MozActionListItem } from '../model/action-listbox.model';\n\nexport class ActionListboxRef {\n private readonly afterClosed$ = new Subject<void>();\n private readonly itemClicked$ = new Subject<MozActionListItem>();\n\n constructor(private readonly overlayRef: OverlayRef) {\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this.overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n this.close();\n }\n });\n\n // Fermeture par scrollStrategy ou autre détachement externe\n this.overlayRef.detachments().subscribe(() => {\n this.afterClosed$.next();\n this.afterClosed$.complete();\n });\n }\n\n close(): void {\n this.overlayRef.dispose();\n this.afterClosed$.next();\n this.afterClosed$.complete();\n }\n\n selectItem(item: MozActionListItem): void {\n this.itemClicked$.next(item);\n this.close();\n }\n\n afterClosed(): Observable<void> {\n return this.afterClosed$.asObservable();\n }\n\n onItemClick(): Observable<MozActionListItem> {\n return this.itemClicked$.asObservable();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { MozActionListItem } from '../model/action-listbox.model';\n\nexport type ActionListboxPosition = 'below' | 'above' | 'before' | 'after';\n\nexport interface ActionListboxConfig {\n items: MozActionListItem[];\n title?: string;\n position?: ActionListboxPosition;\n hasBackdrop?: boolean;\n}\n\nexport const ACTION_LISTBOX_CONFIG = new InjectionToken<ActionListboxConfig>(\n 'ACTION_LISTBOX_CONFIG'\n);\n\nexport const DEFAULT_ACTION_LISTBOX_CONFIG: Omit<Partial<ActionListboxConfig>, 'items'> = {\n position: 'below',\n hasBackdrop: true,\n};\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MozActionListboxComponent } from '../action-listbox';\nimport { ActionListboxRef } from '../ref/action-listbox-ref';\nimport { ActionListboxConfig, ACTION_LISTBOX_CONFIG } from '../config/action-listbox.config';\nimport { MozActionListItem } from '../model/action-listbox.model';\n\n@Component({\n selector: 'moz-action-listbox-container',\n imports: [MozActionListboxComponent],\n templateUrl: './action-listbox-container.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActionListboxContainerComponent {\n readonly config = inject<ActionListboxConfig>(ACTION_LISTBOX_CONFIG);\n private readonly listboxRef = inject(ActionListboxRef);\n\n onItemClick(item: MozActionListItem): void {\n this.listboxRef.selectItem(item);\n }\n}\n","<moz-action-listbox\n [items]=\"config.items\"\n [title]=\"config.title\"\n (itemClick)=\"onItemClick($event)\"\n/>\n","import {\n Directive,\n ElementRef,\n Injector,\n inject,\n input,\n output,\n OnDestroy,\n HostListener,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { MozActionListItem } from '../model/action-listbox.model';\nimport { ActionListboxRef } from '../ref/action-listbox-ref';\nimport {\n ActionListboxConfig,\n ActionListboxPosition,\n ACTION_LISTBOX_CONFIG,\n DEFAULT_ACTION_LISTBOX_CONFIG,\n} from '../config/action-listbox.config';\nimport { ActionListboxContainerComponent } from '../container/action-listbox-container';\n\n@Directive({\n selector: '[mozActionListboxTrigger]',\n standalone: true,\n exportAs: 'mozActionListboxTrigger',\n})\nexport class MozActionListboxTriggerDirective implements OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly elementRef = inject(ElementRef);\n private readonly injector = inject(Injector);\n\n /** The list of items to display */\n readonly mozActionListboxTrigger = input.required<MozActionListItem[]>();\n\n /** Optional title for the listbox */\n readonly actionListboxTitle = input<string>();\n\n /** Position relative to the trigger element */\n readonly actionListboxPosition = input<ActionListboxPosition>('below');\n\n /** Emits the clicked item */\n readonly itemClick = output<MozActionListItem>();\n\n private listboxRef: ActionListboxRef | null = null;\n\n @HostListener('click')\n toggle(): void {\n if (this.listboxRef) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.listboxRef) {\n return;\n }\n\n const config: ActionListboxConfig = {\n ...DEFAULT_ACTION_LISTBOX_CONFIG,\n items: this.mozActionListboxTrigger(),\n title: this.actionListboxTitle(),\n position: this.actionListboxPosition(),\n };\n\n const overlayRef = this.createOverlay(config.position ?? 'below');\n const listboxRef = new ActionListboxRef(overlayRef);\n this.listboxRef = listboxRef;\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: ActionListboxRef, useValue: listboxRef },\n { provide: ACTION_LISTBOX_CONFIG, useValue: config },\n ],\n });\n\n const portal = new ComponentPortal(ActionListboxContainerComponent, null, injector);\n\n overlayRef.attach(portal);\n\n listboxRef.onItemClick().subscribe((item) => {\n this.itemClick.emit(item);\n });\n\n listboxRef.afterClosed().subscribe(() => {\n this.listboxRef = null;\n });\n }\n\n close(): void {\n this.listboxRef?.close();\n this.listboxRef = null;\n }\n\n ngOnDestroy(): void {\n this.close();\n }\n\n private createOverlay(position: ActionListboxPosition): OverlayRef {\n const positions = this.getPositions(position);\n\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(positions)\n .withPush(true)\n .withViewportMargin(8),\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n return this.overlay.create(config);\n }\n\n private getPositions(position: ActionListboxPosition): ConnectedPosition[] {\n const positionMap: Record<ActionListboxPosition, ConnectedPosition[]> = {\n below: [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\n ],\n above: [\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n ],\n before: [\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -4 },\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: 4 },\n ],\n after: [\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: 4 },\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -4 },\n ],\n };\n\n return positionMap[position];\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n computed,\n input,\n model,\n signal,\n viewChild,\n afterNextRender,\n} from '@angular/core';\nimport { ChevronLeft20, ChevronRight20 } from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\n\n@Component({\n selector: 'moz-carousel',\n imports: [ChevronLeft20, ChevronRight20, MozIconButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './carousel.html',\n styleUrls: ['./carousel.scss'],\n})\nexport class MozCarouselComponent implements OnDestroy {\n readonly ariaLabelledby = input<string | null>(null);\n readonly previousButtonAriaLabel = input('previous');\n readonly nextButtonAriaLabel = input('next');\n readonly index = model(0);\n\n private readonly contentEl = viewChild<ElementRef<HTMLElement>>('content');\n\n private metrics = signal({ left: 0, cw: 0, sw: 0 });\n private raf = 0;\n private cleanup: Array<() => void> = [];\n\n private eps = 1;\n\n readonly canPrev = computed(() => this.metrics().left > this.eps);\n readonly canNext = computed(() => {\n const { left, cw, sw } = this.metrics();\n return left + cw < sw - this.eps;\n });\n\n private updateLogicalIndexFromScroll() {\n const root = this.contentEl()?.nativeElement;\n if (!root) return;\n const children = Array.from(root.children) as HTMLElement[];\n if (!children.length) return;\n\n const center = this.metrics().left + this.metrics().cw / 2;\n let best = 0;\n let bestDist = Number.POSITIVE_INFINITY;\n children.forEach((el, i) => {\n const mid = el.offsetLeft + el.offsetWidth / 2;\n const d = Math.abs(mid - center);\n if (d < bestDist) {\n bestDist = d;\n best = i;\n }\n });\n if (best !== this.index()) this.index.set(best);\n }\n\n constructor() {\n afterNextRender(() => {\n const root = this.contentEl()?.nativeElement;\n if (!root) return;\n\n const update = () => {\n this.metrics.set({\n left: root.scrollLeft,\n cw: root.clientWidth,\n sw: root.scrollWidth,\n });\n this.updateLogicalIndexFromScroll();\n };\n\n update();\n\n const onScroll = () => {\n cancelAnimationFrame(this.raf);\n this.raf = requestAnimationFrame(update);\n };\n root.addEventListener('scroll', onScroll, { passive: true });\n\n const onResize = () => update();\n window.addEventListener('resize', onResize, { passive: true });\n\n this.cleanup.push(\n () => root.removeEventListener('scroll', onScroll),\n () => window.removeEventListener('resize', onResize),\n () => cancelAnimationFrame(this.raf)\n );\n });\n }\n\n ngOnDestroy(): void {\n this.cleanup.forEach((fn) => fn());\n }\n\n goPrevious(): void {\n const root = this.contentEl()?.nativeElement;\n if (!root) return;\n root.scrollBy({ left: -root.clientWidth, behavior: 'smooth' });\n }\n\n goNext(): void {\n const root = this.contentEl()?.nativeElement;\n if (!root) return;\n root.scrollBy({ left: root.clientWidth, behavior: 'smooth' });\n }\n}\n","<div\n class=\"mc-carousel\"\n role=\"group\"\n aria-roledescription=\"carousel\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n>\n <div class=\"mc-carousel__header\">\n <div class=\"mc-carousel__headings\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div class=\"mc-carousel__controls\">\n <moz-icon-button\n (activated)=\"goPrevious()\"\n [disabled]=\"!canPrev()\"\n [ariaLabel]=\"previousButtonAriaLabel()\"\n [size]=\"'s'\"\n [outlined]=\"true\"\n [id]=\"'carousel-previous-button'\"\n >\n <ChevronLeft20 icon aria-hidden=\"true\" />\n </moz-icon-button>\n\n <moz-icon-button\n (activated)=\"goNext()\"\n [disabled]=\"!canNext()\"\n [ariaLabel]=\"nextButtonAriaLabel()\"\n [size]=\"'s'\"\n [outlined]=\"true\"\n [id]=\"'carousel-next-button'\"\n >\n <ChevronRight20 icon aria-hidden=\"true\" />\n </moz-icon-button>\n </div>\n </div>\n\n <div class=\"mc-carousel__content\" #content>\n <ng-content></ng-content>\n </div>\n</div>\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, Signal, Type } from '@angular/core';\nimport {\n CheckCircleFilled24,\n ErrorFilled24,\n InfoCircleFilled24,\n WarningTriangleFilled24,\n} from '@mozaic-ds/icons-angular';\nimport { MozLoaderComponent } from '../loader/loader';\nimport { MozStatusMessageStatus } from './model/status-message.model';\n\n@Component({\n selector: 'moz-status-message',\n imports: [NgComponentOutlet, MozLoaderComponent],\n templateUrl: './status-message.html',\n styleUrls: ['./status-message.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozStatusMessageComponent {\n readonly status = input<MozStatusMessageStatus>('info');\n readonly description = input<string | null>(null);\n readonly id = input<string>('status-message');\n\n readonly classes = computed(() => ({\n 'mc-status-message': true,\n [`mc-status-message--${this.status()}`]: this.status(),\n }));\n\n readonly iconComponent: Signal<Type<unknown>> = computed(() => {\n switch (this.status()) {\n case 'success':\n return CheckCircleFilled24;\n case 'warning':\n return WarningTriangleFilled24;\n case 'error':\n return ErrorFilled24;\n case 'neutral':\n case 'inprogress':\n default:\n return InfoCircleFilled24;\n }\n });\n}\n","<div [class]=\"classes()\" [id]=\"id()\">\n @if (status() === 'inprogress') {\n <moz-loader size=\"s\"></moz-loader>\n } @else {\n <div class=\"mc-status-message__icon\">\n <ng-container [ngComponentOutlet]=\"iconComponent()\"></ng-container>\n </div>\n }\n\n <p class=\"mc-status-message__description\">\n @if (description()) {\n {{ description() }}\n }\n </p>\n</div>\n","import { ChangeDetectionStrategy, Component, Type, computed, input } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ArrowBottomRight24, ArrowTopRight24, Less24 } from '@mozaic-ds/icons-angular';\nimport { MozKpiTrend, MozKpiStatus, MozKpiSize } from './model/kpi.model';\n\n@Component({\n selector: 'moz-kpi',\n imports: [NgComponentOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './kpi.html',\n styleUrls: ['./kpi.scss'],\n})\nexport class MozKpiComponent {\n /** The current value of the KPI item. */\n readonly value = input.required<string>();\n\n /** Defines the evolution of the KPI. */\n readonly trend = input<MozKpiTrend | null>(null);\n\n /** Label of the KPI item. */\n readonly label = input<string | null>(null);\n\n /** Allows to define the KPI item status. */\n readonly status = input<MozKpiStatus>('info');\n\n /** The evolution information defining the KPI. */\n readonly information = input<string | null>(null);\n\n /** Allows to define the KPI item size. */\n readonly size = input<MozKpiSize>('s');\n\n readonly isMedium = computed(() => this.size() === 'm');\n readonly isLarge = computed(() => this.size() === 'l');\n\n readonly rootClasses = computed(() => ({\n 'kpi': true,\n 'kpi--s': this.size() === 's',\n 'kpi--m': this.size() === 'm',\n 'kpi--l': this.size() === 'l',\n 'kpi--info': this.status() === 'info',\n 'kpi--warning': this.status() === 'warning',\n 'kpi--error': this.status() === 'error',\n 'kpi--success': this.status() === 'success',\n 'kpi--neutral': this.status() === 'neutral',\n }));\n\n private readonly iconMap: Record<MozKpiTrend, Type<unknown>> = {\n increasing: ArrowTopRight24,\n decreasing: ArrowBottomRight24,\n stable: Less24,\n };\n\n readonly IconComponent = computed<Type<unknown> | null>(() => {\n const t = this.trend();\n return t ? this.iconMap[t] : null;\n });\n}\n","<div [class]=\"rootClasses()\">\n @if (isMedium() && label()) {\n <span class=\"kpi__label\">\n {{ label() }}\n </span>\n }\n\n <div class=\"kpi__content\">\n <div class=\"kpi__main\">\n @if (isLarge() && label()) {\n <span class=\"kpi__label\">\n {{ label() }}\n </span>\n }\n\n <span class=\"kpi__value\">\n {{ value() }}\n </span>\n </div>\n\n @if (trend() || information()) {\n <div class=\"kpi__aside\">\n @if (isLarge() && information()) {\n <span class=\"kpi__detail\">\n {{ information() }}\n </span>\n } @if (IconComponent()) {\n <div class=\"button__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"IconComponent()\"></ng-container>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'moz-stepper-compact',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './stepper-compact.html',\n styleUrls: ['./stepper-compact.scss'],\n})\nexport class MozStepperCompactComponent {\n value = input.required<number>();\n maxSteps = input<number>(4);\n label = input<string>('');\n description = input<string>('');\n\n readonly hasLabel = computed(() => !!this.label() && this.label().trim().length > 0);\n\n readonly safeMaxSteps = computed(() => {\n const max = this.maxSteps();\n return max && max > 0 ? max : 4;\n });\n\n readonly progressPercentage = computed(() => {\n const max = this.safeMaxSteps();\n const current = this.value();\n const clamped = Math.max(0, Math.min(current, max));\n return (clamped / max) * 100;\n });\n}\n","<div class=\"mc-stepper-compact\">\n <div\n class=\"mc-circular-progressbar mc-stepper-compact__progress\"\n role=\"progressbar\"\n aria-label=\"Progress bar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"safeMaxSteps()\"\n [attr.aria-valuenow]=\"value()\"\n [style.--progress-value]=\"progressPercentage()\"\n >\n <svg\n class=\"mc-circular-progressbar__line\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n viewBox=\"0 0 100 100\"\n >\n <circle class=\"mc-circular-progressbar__track\" cx=\"50\" cy=\"50\" r=\"46\"></circle>\n <circle\n class=\"mc-circular-progressbar__indicator mc-stepper-compact__indicator\"\n cx=\"50\"\n cy=\"50\"\n r=\"46\"\n ></circle>\n </svg>\n <div class=\"mc-circular-progressbar__content\">\n <p class=\"mc-circular-progressbar__number mc-stepper-compact__number\">\n {{ value() }} / {{ safeMaxSteps() }}\n </p>\n </div>\n </div>\n\n @if (hasLabel()) {\n <div class=\"mc-stepper-compact__label-container\">\n <p class=\"mc-stepper-compact__label\">\n {{ label() }}\n </p>\n\n @if (description().trim().length) {\n <p class=\"mc-stepper-compact__description\">\n {{ description() }}\n </p>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Type,\n computed,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport {\n Star20,\n Star24,\n Star32,\n StarFilled20,\n StarFilled24,\n StarFilled32,\n StarHalf20,\n StarHalf24,\n StarHalf32,\n} from '@mozaic-ds/icons-angular';\nimport { MozStarRatingSize, MozStarRatingAppearance } from './model/star-rating.model';\n\n@Component({\n selector: 'moz-star-rating',\n imports: [NgComponentOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './star-rating.html',\n styleUrls: ['./star-rating.scss'],\n})\nexport class MozStarRatingComponent {\n /**\n * The current rating value of the component.\n * Used with two-way binding [(value)].\n * When the rating changes (via click or keyboard), the model is automatically updated.\n */\n readonly value = model<number>(0);\n\n /**\n * Determines whether the rating is interactive or read-only.\n * When true, all user interactions (click, hover, keyboard) are disabled.\n * Automatically set to true when `compact`, `href`, or `text` are provided.\n */\n readonly readonly = input<boolean>(true);\n\n /**\n * Enables a compact display mode that shows only one star instead of five.\n * Typically used for summaries or quick visual cues.\n * When enabled, the component automatically becomes read-only.\n */\n readonly compact = input<boolean>(false);\n\n /**\n * Defines the visual size of the star icons and the accompanying text.\n */\n readonly size = input<MozStarRatingSize>('s');\n\n /**\n * Specifies the color scheme of the stars.\n */\n readonly appearance = input<MozStarRatingAppearance>('accent');\n\n /**\n * Optional text displayed next to the star rating.\n * If provided, the component automatically becomes read-only.\n */\n readonly text = input<string | null>(null);\n\n /**\n * URL for the link (for external links).\n */\n readonly href = input<string | null>(null);\n\n /**\n * Where to open the link.\n */\n readonly target = input<string | null>(null);\n\n // -------- logique dérivée --------\n\n readonly maxValue = computed(() => (this.compact() ? 1 : 5));\n\n readonly isReadonly = computed(\n () =>\n this.readonly() ||\n this.compact() ||\n !!this.href() ||\n !!(this.text() && this.text()!.trim().length)\n );\n\n readonly hasInfoText = computed(() => !!(this.text() || this.href()));\n\n readonly ariaLabel = computed(() => `Note ${this.displayValue()} sur ${this.maxValue()}`);\n\n readonly stars = computed(() => Array.from({ length: this.maxValue() }, (_, i) => i));\n\n readonly classes = computed(() => ({\n 'star-rating': true,\n 'star-rating--link': !!this.href(),\n 'star-rating--slider': !this.isReadonly(),\n 'star-rating--s': this.size() === 's',\n 'star-rating--m': this.size() === 'm',\n 'star-rating--l': this.size() === 'l',\n 'star-rating--standard': this.appearance() === 'standard',\n 'star-rating--accent': this.appearance() === 'accent',\n }));\n\n // Icon maps for each size\n private readonly iconMaps = {\n s: {\n star: Star20,\n 'star-filled': StarFilled20,\n 'star-half': StarHalf20,\n },\n m: {\n star: Star24,\n 'star-filled': StarFilled24,\n 'star-half': StarHalf24,\n },\n l: {\n star: Star32,\n 'star-filled': StarFilled32,\n 'star-half': StarHalf32,\n },\n };\n\n // -------- gestion preview / hover & clavier --------\n\n private hoverValue = signal<number | null>(null);\n\n /**\n * valeur réellement utilisée pour afficher les étoiles :\n * - en readonly : toujours value()\n * - en interactif : hoverValue si non nul, sinon value()\n */\n readonly displayValue = computed(() => {\n if (this.isReadonly()) return this.value();\n return this.hoverValue() ?? this.value();\n });\n\n private clampValue(newValue: number): number {\n const max = this.maxValue();\n // dans le JS ils ne descendent jamais sous 1 via clavier\n return Math.min(max, Math.max(1, Math.floor(newValue)));\n }\n\n /** JS: onClick(index) -> setValue(index+1) + updateStarIcons */\n onStarClick(index: number): void {\n if (this.isReadonly()) return;\n const newValue = this.clampValue(index + 1);\n this.hoverValue.set(null);\n this.value.set(newValue);\n }\n\n /** JS: onHover(index) -> hoverValue=index+1 + updateStarIcons(hoverValue) */\n onStarMouseMove(index: number): void {\n if (this.isReadonly()) return;\n this.hoverValue.set(this.clampValue(index + 1));\n }\n\n /** JS: resetHoverValue() -> hoverValue=null + updateStarIcons(value) */\n clearHover(): void {\n if (this.isReadonly()) return;\n this.hoverValue.set(null);\n }\n\n /** JS: onKeydown (ArrowRight / ArrowLeft) */\n onWrapperKeydown(event: KeyboardEvent): void {\n if (this.isReadonly()) return;\n\n const key = event.key;\n const max = this.maxValue();\n let current = Math.floor(this.value() || 0);\n\n if (key === 'ArrowRight') {\n current = Math.min(max, current + 1);\n } else if (key === 'ArrowLeft') {\n current = Math.max(1, current - 1);\n } else {\n return;\n }\n\n this.hoverValue.set(null);\n this.value.set(current);\n event.preventDefault();\n }\n\n // -------- calcul du composant d'étoile (JS: getStarComponent) --------\n\n getStarComponent(index: number): Type<unknown> {\n const compact = this.compact();\n const isReadonly = this.isReadonly();\n const baseValue = this.displayValue();\n const size = this.size();\n const iconMap = this.iconMaps[size];\n\n if (compact || baseValue >= index + 1) {\n return iconMap['star-filled'];\n } else if (isReadonly && baseValue >= index + 0.5) {\n // half star uniquement en readonly comme en JS\n return iconMap['star-half'];\n } else {\n return iconMap['star'];\n }\n }\n}\n","@if (href()) {\n<a [class]=\"classes()\" [href]=\"href()!\" [attr.target]=\"target()\">\n <div\n class=\"star-rating__wrapper\"\n [attr.tabindex]=\"isReadonly() ? -1 : 0\"\n [attr.role]=\"isReadonly() ? 'img' : 'slider'\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-readonly]=\"isReadonly() ? true : null\"\n [attr.aria-valuemin]=\"!isReadonly() ? 0 : null\"\n [attr.aria-valuemax]=\"!isReadonly() ? maxValue() : null\"\n [attr.aria-valuenow]=\"!isReadonly() ? value() : null\"\n (keydown)=\"isReadonly() ? null : onWrapperKeydown($event)\"\n (mouseleave)=\"isReadonly() ? null : clearHover()\"\n (blur)=\"isReadonly() ? null : clearHover()\"\n >\n @for (index of stars(); track index) {\n <span\n class=\"star-rating__icon\"\n (click)=\"isReadonly() ? null : onStarClick(index)\"\n (mousemove)=\"isReadonly() ? null : onStarMouseMove(index)\"\n >\n <ng-container [ngComponentOutlet]=\"getStarComponent(index)\"></ng-container>\n </span>\n }\n </div>\n\n @if (hasInfoText()) {\n <span class=\"star-rating__info\">\n {{ text() || href() }}\n </span>\n }\n</a>\n} @else {\n<div [class]=\"classes()\">\n <div\n class=\"star-rating__wrapper\"\n [attr.tabindex]=\"isReadonly() ? -1 : 0\"\n [attr.role]=\"isReadonly() ? 'img' : 'slider'\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-readonly]=\"isReadonly() ? true : null\"\n [attr.aria-valuemin]=\"!isReadonly() ? 0 : null\"\n [attr.aria-valuemax]=\"!isReadonly() ? maxValue() : null\"\n [attr.aria-valuenow]=\"!isReadonly() ? value() : null\"\n (keydown)=\"isReadonly() ? null : onWrapperKeydown($event)\"\n (mouseleave)=\"isReadonly() ? null : clearHover()\"\n (blur)=\"isReadonly() ? null : clearHover()\"\n >\n @for (index of stars(); track index) {\n <span\n class=\"star-rating__icon\"\n (click)=\"isReadonly() ? null : onStarClick(index)\"\n (mousemove)=\"isReadonly() ? null : onStarMouseMove(index)\"\n >\n <ng-container [ngComponentOutlet]=\"getStarComponent(index)\"></ng-container>\n </span>\n }\n </div>\n\n @if (hasInfoText()) {\n <span class=\"star-rating__info\">\n {{ text() || href() }}\n </span>\n }\n</div>\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ChevronRight20 } from '@mozaic-ds/icons-angular';\nimport { MozBuiltInMenuItem } from './model/built-in-menu.model';\n\n/**\n * A built-in menu is a structured list of navigational or interactive options,\n * typically displayed as a vertical stack.\n */\n@Component({\n selector: 'moz-built-in-menu',\n templateUrl: './built-in-menu.html',\n styleUrls: ['./built-in-menu.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgComponentOutlet, ChevronRight20, RouterLink],\n})\nexport class BuiltInMenuComponent {\n /**\n * Items displayed in the menu.\n */\n readonly items = input.required<MozBuiltInMenuItem[]>();\n\n /**\n * Index of the currently selected menu item.\n * Used with two-way binding: [(selectedIndex)].\n */\n readonly selectedIndex = model<number | null>(null);\n\n /**\n * When enabled, adds a visible border around the wrapper.\n */\n readonly outlined = input(false);\n\n /**\n * Accessible label for the navigation.\n */\n readonly ariaLabel = input<string>('menu');\n\n readonly hostClasses = computed(() =>\n ['mc-built-in-menu', this.outlined() ? 'mc-built-in-menu--outlined' : '']\n .filter(Boolean)\n .join(' ')\n );\n\n isSelected(index: number): boolean {\n return this.selectedIndex() === index;\n }\n\n onItemClick(index: number, event: Event): void {\n if (this.selectedIndex() !== index) {\n this.selectedIndex.set(index);\n }\n\n const target = event.currentTarget as HTMLAnchorElement | HTMLButtonElement | null;\n if (target && target instanceof HTMLAnchorElement && target.getAttribute('href') === '#') {\n event.preventDefault();\n }\n }\n}\n","<nav [class]=\"hostClasses()\" role=\"navigation\" [attr.aria-label]=\"ariaLabel()\">\n <ul class=\"mc-built-in-menu__list\">\n @for (item of items(); let index = $index; track index) {\n <li\n class=\"mc-built-in-menu__item\"\n [class.mc-built-in-menu__item--selected]=\"isSelected(index)\"\n [attr.aria-current]=\"isSelected(index) ? 'true' : null\"\n >\n @if (item.href) {\n <a\n class=\"mc-built-in-menu__link\"\n [attr.href]=\"item.href\"\n [attr.target]=\"item.target || '_self'\"\n (click)=\"onItemClick(index, $event)\"\n >\n @if (item.icon) {\n <span class=\"mc-built-in-menu__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n\n <span class=\"mc-built-in-menu__label\">{{ item.label }}</span>\n\n <ChevronRight20 class=\"mc-built-in-menu__icon\" />\n </a>\n } @else if (item.routerLink) {\n <a\n class=\"mc-built-in-menu__link\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target || '_self'\"\n (click)=\"onItemClick(index, $event)\"\n >\n @if (item.icon) {\n <span class=\"mc-built-in-menu__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n\n <span class=\"mc-built-in-menu__label\">{{ item.label }}</span>\n\n <ChevronRight20 class=\"mc-built-in-menu__icon\" />\n </a>\n } @else {\n <button type=\"button\" class=\"mc-built-in-menu__button\" (click)=\"onItemClick(index, $event)\">\n @if (item.icon) {\n <span class=\"mc-built-in-menu__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n\n <span class=\"mc-built-in-menu__label\">{{ item.label }}</span>\n\n <ChevronRight20 class=\"mc-built-in-menu__icon\" />\n </button>\n }\n </li>\n }\n </ul>\n</nav>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { BuiltInMenuComponent } from '../built-in-menu/built-in-menu';\nimport { CheckCircleFilled24 } from '@mozaic-ds/icons-angular';\nimport { MozBuiltInMenuItem } from '../built-in-menu/model/built-in-menu.model';\nimport { MozCheckListMenuItem } from './model/check-list-menu.model';\n\n@Component({\n selector: 'moz-check-list-menu',\n templateUrl: './check-list-menu.html',\n styleUrls: ['./check-list-menu.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [BuiltInMenuComponent],\n})\nexport class MozCheckListMenuComponent {\n /**\n * Defines the menu items, each of which sets a checked state and can act as a button or link.\n */\n readonly items = input<MozCheckListMenuItem[]>([]);\n\n /**\n * When enabled, adds a visible border around the wrapper.\n */\n readonly outlined = input(false);\n\n /**\n * Currently selected item index (two-way bindable with [(selectedIndex)]).\n */\n readonly selectedIndex = model<number | null>(null);\n\n /**\n * Internal mapping to BuiltInMenuItem with an icon for checked items.\n */\n readonly menuItems = computed<MozBuiltInMenuItem[]>(() =>\n this.items().map((item) => ({\n ...item,\n icon: item.checked ? CheckCircleFilled24 : undefined,\n }))\n );\n}\n","<moz-built-in-menu\n [items]=\"menuItems()\"\n [outlined]=\"outlined()\"\n [selectedIndex]=\"selectedIndex()\"\n (selectedIndexChange)=\"selectedIndex.set($event)\"\n></moz-built-in-menu>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Check20, ChevronRight20 } from '@mozaic-ds/icons-angular';\nimport { MozStepperInlineStep } from './model/stepper-inline.model';\n\n@Component({\n selector: 'moz-stepper-inline',\n templateUrl: './stepper-inline.html',\n styleUrls: ['./stepper-inline.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Check20, ChevronRight20],\n})\nexport class MozStepperInlineComponent {\n /**\n * Current step of the stepper inline (1-based index).\n */\n readonly currentStep = input<number>(1);\n\n /**\n * Steps of the stepper inline.\n */\n readonly steps = input<MozStepperInlineStep[]>([]);\n\n /**\n * Clamped current step between 1 and steps.length.\n */\n readonly safeStep = computed(() => {\n const steps = this.steps();\n const max = steps.length || 1;\n const raw = this.currentStep();\n return Math.min(Math.max(raw, 1), max);\n });\n\n /**\n * Derived state for each step: completed / current.\n */\n readonly stepStates = computed(() =>\n this.steps().map((_, i) => ({\n completed: i + 1 < this.safeStep(),\n current: i + 1 === this.safeStep(),\n }))\n );\n}\n","<nav class=\"mc-stepper-inline\" aria-label=\"Stepper\">\n <ol class=\"mc-stepper-inline__container\">\n @for (step of steps(); let i = $index; track i) {\n <li\n class=\"mc-stepper-inline__item\"\n [class.is-completed]=\"stepStates()[i].completed\"\n [attr.tabindex]=\"stepStates()[i].completed ? 0 : null\"\n >\n @if (stepStates()[i].completed) {\n <Check20 class=\"mc-stepper-inline__icon mc-stepper-inline__icon--check\" aria-hidden=\"true\" />\n } @else {\n <span class=\"mc-stepper-inline__circle\" [class.is-current]=\"stepStates()[i].current\">\n {{ i + 1 }}\n </span>\n }\n\n <div class=\"mc-stepper-inline__content\">\n <span class=\"mc-stepper-inline__label\" [class.is-current]=\"stepStates()[i].current\">\n {{ step.label }}\n </span>\n @if (step.additionalInfo) {\n <span class=\"mc-stepper-inline__additional\">\n {{ step.additionalInfo }}\n </span>\n }\n </div>\n\n @if (i < steps().length - 1) {\n <ChevronRight20 class=\"mc-stepper-inline__icon mc-stepper-inline__icon--chevron\" />\n }\n </li>\n }\n </ol>\n</nav>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Check24 } from '@mozaic-ds/icons-angular';\nimport { MozStepperStackedStep } from './model/stepper-stacked.model';\n\nlet _nextId = 0;\n\n@Component({\n selector: 'moz-stepper-stacked',\n templateUrl: './stepper-stacked.html',\n styleUrls: ['./stepper-stacked.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Check24],\n})\nexport class MozStepperStackedComponent {\n /**\n * Optional prefix used to build auto-generated step IDs when a step\n * doesn't provide its own `id`. Defaults to a unique `moz-stepper-N`.\n * Override this when multiple steppers share the same page so their\n * auto-generated IDs don't collide.\n */\n readonly componentId = input<string>(`moz-stepper-${++_nextId}`);\n\n /**\n * Current step of the stepper stacked (1-based index).\n */\n readonly currentStep = input<number>(1);\n\n /**\n * Steps of the stepper stacked.\n */\n readonly steps = input<MozStepperStackedStep[]>([]);\n\n /**\n * Clamped current step between 1 and steps.length.\n */\n readonly safeStep = computed(() => {\n const steps = this.steps();\n const max = steps.length || 1;\n const raw = this.currentStep();\n return Math.min(Math.max(raw, 1), max);\n });\n\n /**\n * Whether all steps are completed (currentStep exceeds the number of steps).\n */\n readonly allCompleted = computed(() => this.currentStep() > this.steps().length);\n\n /**\n * Derived state for each step: completed / current.\n */\n readonly stepStates = computed(() =>\n this.steps().map((_, i) => ({\n completed: i + 1 < this.safeStep() || this.allCompleted(),\n current: i + 1 === this.safeStep() && !this.allCompleted(),\n }))\n );\n\n /**\n * Returns the resolved ID for the step at index `i`: the explicit\n * `step.id` if provided, otherwise an auto-generated stable value.\n */\n stepId(step: MozStepperStackedStep, i: number): string {\n return step.id ?? `${this.componentId()}-step-${i}`;\n }\n}\n","<nav [id]=\"componentId()\" class=\"mc-stepper-stacked\" aria-label=\"Stepper\">\n <ol [id]=\"componentId() + '-list'\" class=\"mc-stepper-stacked__container\">\n @for (step of steps(); let i = $index; track i) {\n <li\n class=\"mc-stepper-stacked__item\"\n [id]=\"stepId(step, i)\"\n [class.is-current]=\"stepStates()[i].current\"\n [class.has-additional]=\"!!step.additionalInfo\"\n >\n <div [id]=\"componentId() + '-step-' + i + '-indicator'\" class=\"mc-stepper-stacked__indicator\">\n @if (stepStates()[i].completed) {\n <Check24\n class=\"mc-stepper-stacked__icon mc-stepper-stacked__icon--check\"\n aria-hidden=\"true\"\n />\n } @else {\n <span\n [id]=\"componentId() + '-step-' + i + '-circle'\"\n class=\"mc-stepper-stacked__circle\"\n [class.is-current]=\"stepStates()[i].current\"\n >\n {{ i + 1 }}\n </span>\n }\n </div>\n <div [id]=\"componentId() + '-step-' + i + '-content'\" class=\"mc-stepper-stacked__content\">\n <span\n [id]=\"componentId() + '-step-' + i + '-label'\"\n class=\"mc-stepper-stacked__label\"\n [class.is-current]=\"stepStates()[i].current\"\n >\n {{ step.label }}\n </span>\n @if (step.additionalInfo) {\n <span\n [id]=\"componentId() + '-step-' + i + '-additional'\"\n class=\"mc-stepper-stacked__additional\"\n >\n {{ step.additionalInfo }}\n </span>\n }\n </div>\n </li>\n }\n </ol>\n</nav>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { ArrowBack24, ArrowNext24 } from '@mozaic-ds/icons-angular';\n\n/**\n * Step position in the stepper workflow.\n */\nexport type MozStepperBottomBarStep = 'start' | 'middle' | 'end';\n\n/**\n * Stepper Bottom Bar component for navigation in multi-step processes.\n *\n * @description\n * The stepper bottom bar provides navigation controls for multi-step workflows,\n * with cancel, previous, next, and validate buttons that adapt based on the current step.\n */\n@Component({\n selector: 'moz-stepper-bottom-bar',\n templateUrl: './stepper-bottom-bar.html',\n styleUrls: ['./stepper-bottom-bar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ArrowBack24, ArrowNext24],\n})\nexport class MozStepperBottomBarComponent {\n /**\n * Base ID for the stepper component.\n */\n id = input<string>('stepper-bottom-bar');\n\n /**\n * Step of the process.\n */\n step = input<MozStepperBottomBarStep>('start');\n\n /**\n * If `true`, display the cancel button.\n */\n hasCancel = input<boolean>(true);\n\n /**\n * Text for the cancel button.\n */\n cancelText = input<string>('Cancel');\n\n /**\n * Text for the previous button.\n */\n previousText = input<string>('Previous');\n\n /**\n * Text for the next button.\n */\n nextText = input<string>('Next');\n\n /**\n * Text for the validate button.\n */\n validateText = input<string>('Validate');\n\n /**\n * If `true`, disable the next button.\n */\n disabledNext = input<boolean>(false);\n\n /**\n * Event emitted when cancel button is clicked.\n */\n cancel = output<void>();\n\n /**\n * Event emitted when previous button is clicked.\n */\n previous = output<void>();\n\n /**\n * Event emitted when next button is clicked.\n */\n next = output<void>();\n\n /**\n * Event emitted when validate button is clicked.\n */\n validate = output<void>();\n\n handleCancel() {\n this.cancel.emit();\n }\n\n handlePrevious() {\n this.previous.emit();\n }\n\n handleNext() {\n this.next.emit();\n }\n\n handleValidate() {\n this.validate.emit();\n }\n\n /**\n * Computed IDs for buttons\n */\n cancelButtonId = computed(() => `${this.id()}-cancel`);\n cancelButtonIconId = computed(() => `${this.id()}-cancel-icon`);\n previousButtonId = computed(() => `${this.id()}-previous`);\n previousButtonIconId = computed(() => `${this.id()}-previous-icon`);\n nextButtonId = computed(() => `${this.id()}-next`);\n nextButtonIconId = computed(() => `${this.id()}-next-icon`);\n validateButtonId = computed(() => `${this.id()}-validate`);\n validateButtonIconId = computed(() => `${this.id()}-validate-icon`);\n}\n","<div class=\"stepper-bottom-bar\">\n <div class=\"divider-horizontal stepper-bottom-bar__divider\"></div>\n <div class=\"stepper-bottom-bar__left\">\n @if (hasCancel()) {\n <button\n type=\"button\"\n class=\"button button--ghost button--s stepper-bottom-bar__button--text\"\n [id]=\"cancelButtonId()\"\n (click)=\"handleCancel()\"\n >\n {{ cancelText() }}\n </button>\n\n <button\n type=\"button\"\n class=\"button button--ghost button--icon stepper-bottom-bar__button--icon\"\n [id]=\"cancelButtonIconId()\"\n [attr.aria-label]=\"cancelText()\"\n (click)=\"handleCancel()\"\n >\n {{ cancelText() }}\n </button>\n }\n <ng-content [select]=\"'custom-content-left'\"></ng-content>\n </div>\n\n <div class=\"stepper-bottom-bar__right\">\n <ng-content [select]=\"'custom-content-right'\"></ng-content>\n @if (step() !== 'start') {\n <button\n type=\"button\"\n class=\"button button--outlined button--s stepper-bottom-bar__button--text\"\n [id]=\"previousButtonId()\"\n (click)=\"handlePrevious()\"\n >\n {{ previousText() }}\n </button>\n\n <button\n type=\"button\"\n class=\"button button--outlined button--icon stepper-bottom-bar__button--icon\"\n [id]=\"previousButtonIconId()\"\n [attr.aria-label]=\"previousText()\"\n (click)=\"handlePrevious()\"\n >\n <ArrowBack24 class=\"stepper-bottom-bar__icon\" />\n </button>\n } @if (step() !== 'end') {\n <button\n type=\"button\"\n class=\"button button--accent button--s stepper-bottom-bar__button--text\"\n [id]=\"nextButtonId()\"\n [disabled]=\"disabledNext()\"\n (click)=\"handleNext()\"\n >\n {{ nextText() }}\n </button>\n <button\n type=\"button\"\n class=\"button button--accent button--icon stepper-bottom-bar__button--icon\"\n [id]=\"nextButtonIconId()\"\n [attr.aria-label]=\"nextText()\"\n [disabled]=\"disabledNext()\"\n (click)=\"handleNext()\"\n >\n <ArrowNext24 class=\"stepper-bottom-bar__icon\" />\n </button>\n } @if (step() === 'end') {\n <button\n type=\"button\"\n class=\"button button--accent button--s stepper-bottom-bar__button--text\"\n [id]=\"validateButtonId()\"\n (click)=\"handleValidate()\"\n [disabled]=\"disabledNext()\"\n >\n {{ validateText() }}\n </button>\n <button\n type=\"button\"\n class=\"button button--accent button--icon stepper-bottom-bar__button--icon\"\n [id]=\"validateButtonIconId()\"\n [attr.aria-label]=\"validateText()\"\n [disabled]=\"disabledNext()\"\n (click)=\"handleValidate()\"\n >\n {{ validateText() }}\n </button>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport {\n ArrowBack24,\n HelpCircle20,\n Menu24,\n Notification20,\n Search20,\n} from '@mozaic-ds/icons-angular';\nimport { MozSelectComponent } from '../select/select';\nimport { MozStatusBadgeComponent } from '../status-badge/status-badge';\nimport { MozTagComponent } from '../tag/tag';\nimport { MozTabsComponent } from '../tabs/tabs';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { MozPageHeaderScope } from './model/page-header.model';\nimport { MozStatusBadgeStatus } from '../status-badge';\nimport { MozTabItem } from '../tabs';\n\n@Component({\n selector: 'moz-page-header',\n templateUrl: './page-header.html',\n styleUrls: ['./page-header.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MozIconButtonComponent,\n MozTagComponent,\n MozSelectComponent,\n MozStatusBadgeComponent,\n MozTabsComponent,\n ArrowBack24,\n HelpCircle20,\n Menu24,\n Notification20,\n Search20,\n MozIconButtonComponent,\n MozTagComponent,\n ReactiveFormsModule,\n MozSelectComponent,\n FormsModule,\n MozTabsComponent,\n ],\n})\nexport class MozPageHeaderComponent {\n readonly title = input.required<string>();\n readonly shadow = input<boolean>(false);\n readonly backButton = input<boolean>(false);\n readonly searchButton = input<boolean>(false);\n readonly helpButton = input<boolean>(false);\n readonly notificationButton = input<boolean>(false);\n readonly status = input<MozStatusBadgeStatus>();\n readonly statusLabel = input<string>();\n readonly extraInfo = input<string>();\n readonly scope = input<string | MozPageHeaderScope[]>();\n readonly scopeValue = input<string | number | boolean>();\n readonly scopePlaceholder = input<string>();\n readonly tabs = input<MozTabItem[]>();\n readonly activeTab = model<number>(0);\n\n readonly back = output<void>();\n readonly search = output<void>();\n readonly help = output<void>();\n readonly notification = output<void>();\n readonly toggleMenu = output<void>();\n readonly toggleScope = output<boolean | undefined>();\n readonly scopeValueChange = output<string | number | boolean>();\n\n readonly classes = computed(() => ({\n 'mc-page-header': true,\n 'mc-page-header--with-shadow': this.shadow(),\n }));\n\n readonly isScopeString = computed(() => typeof this.scope() === 'string');\n readonly isScopeArray = computed(() => Array.isArray(this.scope()));\n readonly isScopeValueBoolean = computed(() => typeof this.scopeValue() === 'boolean');\n readonly isScopeValueNotBoolean = computed(() => typeof this.scopeValue() !== 'boolean');\n\n readonly hasStatusOrExtraInfo = computed(() => this.status() || this.extraInfo());\n readonly hasStatusBadge = computed(() => this.statusLabel() && this.status());\n readonly hasIconButtons = computed(\n () => this.searchButton() || this.helpButton() || this.notificationButton()\n );\n\n readonly scopeAsArray = computed(() => {\n const scope = this.scope();\n return Array.isArray(scope) ? scope : [];\n });\n\n readonly mobileTagLabel = computed(() => {\n const scope = this.scope();\n if (!Array.isArray(scope)) return '';\n const scopeValue = this.scopeValue();\n if (!scopeValue) {\n return this.scopePlaceholder() ?? '';\n }\n const found = scope.find((opt) => opt.value === scopeValue);\n return found?.text ?? this.scopePlaceholder() ?? '';\n });\n\n onBack(): void {\n this.back.emit();\n }\n\n onSearch(): void {\n this.search.emit();\n }\n\n onHelp(): void {\n this.help.emit();\n }\n\n onNotification(): void {\n this.notification.emit();\n }\n\n onToggleMenu(): void {\n this.toggleMenu.emit();\n }\n\n onToggleScope(): void {\n this.toggleScope.emit(true);\n }\n\n onScopeTagClick(): void {\n const currentValue = this.scopeValue() as boolean;\n this.scopeValueChange.emit(!currentValue);\n }\n\n onScopeSelectChange(value: string | number): void {\n this.scopeValueChange.emit(value);\n }\n}\n","<div [class]=\"classes()\">\n <div class=\"mc-page-header__top-wrapper\">\n <div class=\"mc-page-header__top-content\">\n <div class=\"mc-page-header__content-wrapper\">\n <div class=\"mc-page-header__title-wrapper\">\n @if (backButton()) {\n <moz-icon-button\n [ghost]=\"true\"\n [id]=\"'page-header-back-button'\"\n ariaLabel=\"Back button\"\n (activated)=\"onBack()\"\n >\n <ArrowBack24 icon />\n </moz-icon-button>\n }\n\n <span class=\"mc-page-header__title\">\n {{ title() }}\n </span>\n </div>\n\n @if (hasStatusOrExtraInfo()) {\n <div class=\"mc-page-header__info-wrapper\">\n @if (hasStatusBadge()) {\n <moz-status-badge [label]=\"statusLabel()!\" [status]=\"status()!\" />\n } @if (extraInfo()) {\n <span class=\"mc-page-header__extra-info\">\n {{ extraInfo() }}\n </span>\n }\n </div>\n }\n\n <ng-content select=\"[content]\" />\n </div>\n </div>\n\n <div class=\"mc-page-header__actions-wrapper\">\n <moz-icon-button\n class=\"mc-page-header__burger-menu\"\n [ghost]=\"true\"\n [id]=\"'page-header-burger-menu'\"\n ariaLabel=\"Burger menu\"\n (activated)=\"onToggleMenu()\"\n >\n <Menu24 icon />\n </moz-icon-button>\n\n <ng-content select=\"[actions]\">\n <div class=\"mc-page-header__actions-content\">\n @if (hasIconButtons()) {\n <div class=\"mc-page-header__features-wrapper\">\n @if (searchButton()) {\n <button\n type=\"button\"\n class=\"mc-page-header__feature-item\"\n id=\"page-header-search-button\"\n aria-label=\"Search button\"\n (click)=\"onSearch()\"\n >\n <Search20 hostClass=\"mc-page-header__feature-item-icon\" />\n <span>Search</span>\n </button>\n } @if (helpButton()) {\n <button\n type=\"button\"\n class=\"mc-page-header__feature-item\"\n id=\"page-header-help-button\"\n aria-label=\"Help button\"\n (click)=\"onHelp()\"\n >\n <HelpCircle20 hostClass=\"mc-page-header__feature-item-icon\" />\n <span>Help</span>\n </button>\n } @if (notificationButton()) {\n <button\n type=\"button\"\n class=\"mc-page-header__feature-item\"\n id=\"page-header-notification-button\"\n aria-label=\"Notification button\"\n (click)=\"onNotification()\"\n >\n <Notification20 hostClass=\"mc-page-header__feature-item-icon\" />\n <span>Notifications</span>\n </button>\n }\n </div>\n } @if (isScopeString() && isScopeValueBoolean()) {\n <moz-tag type=\"interactive\" [id]=\"'scope-tag'\" (click)=\"onScopeTagClick()\">{{\n $any(scope())\n }}</moz-tag>\n } @if (isScopeArray() && isScopeValueNotBoolean()) {\n <div class=\"mc-page-header__scope--select\">\n <moz-select\n [name]=\"'scope-select'\"\n id=\"scope-select\"\n size=\"s\"\n [options]=\"scopeAsArray()\"\n [placeholder]=\"scopePlaceholder()\"\n [ngModel]=\"scopeValue()\"\n (ngModelChange)=\"onScopeSelectChange($event)\"\n />\n </div>\n\n <div class=\"mc-page-header__scope--tag\">\n <moz-tag type=\"interactive\" [id]=\"'mobile-scope-tag'\" (click)=\"onToggleScope()\">{{\n mobileTagLabel()\n }}</moz-tag>\n </div>\n }\n </div>\n </ng-content>\n </div>\n </div>\n\n @if (tabs() && tabs()!.length > 0) {\n <div class=\"mc-page-header__tabs\">\n <moz-tabs [tabs]=\"tabs()!\" [(selectedIndex)]=\"activeTab\" />\n </div>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { MozTileAppearance } from './model/tile.model';\n\n@Component({\n selector: 'moz-tile',\n imports: [NgTemplateOutlet],\n templateUrl: './tile.html',\n styleUrls: ['./tile.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozTileComponent {\n readonly appearance = input<MozTileAppearance>('primary');\n readonly isBordered = input(false);\n readonly extraAction = input(false);\n\n readonly classes = computed(() => ({\n 'mc-tile': true,\n [`mc-tile--${this.appearance()}`]: this.appearance() !== 'primary',\n 'mc-tile--bordered': this.isBordered(),\n }));\n}\n","<div [class]=\"classes()\">\n <div class=\"mc-tile__header\">\n @if (extraAction()) {\n <div class=\"mc-tile__body\">\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\"></ng-container>\n </div>\n <div class=\"mc-tile__action\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n } @else {\n <div class=\"mc-tile__body\">\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\"></ng-container>\n </div>\n }\n </div>\n <div class=\"mc-tile__content\">\n <ng-content select=\"[segmented]\"></ng-content>\n </div>\n\n <ng-template #bodyTemplate>\n <ng-content select=\"[body]\"></ng-content>\n </ng-template>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n forwardRef,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n MozTileSelectableAppearance,\n MozTileInputVerticalPosition,\n MozTileInputPosition,\n MozTileSelectableType,\n} from './model/selectable-tile.model';\n\n@Component({\n selector: 'moz-tile-selectable',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './selectable-tile.html',\n styleUrls: ['./selectable-tile.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozTileSelectableComponent),\n multi: true,\n },\n ],\n})\nexport class MozTileSelectableComponent implements ControlValueAccessor {\n readonly appearance = input<MozTileSelectableAppearance>('primary');\n readonly bordered = input(false);\n readonly name = input<string>('tile-select-group');\n readonly value = input<string>('');\n readonly checked = input(false);\n readonly disabled = input(false);\n readonly inputVerticalPosition = input<MozTileInputVerticalPosition>('top');\n readonly inputPosition = input<MozTileInputPosition>('right');\n readonly inputType = input<MozTileSelectableType>('checkbox');\n\n private readonly innerValue = signal<boolean | string>('');\n private readonly isControlledByForm = signal(false);\n private onTouchedCallback: () => void = () => {};\n private onChangeCallback: (value: boolean | string) => void = () => {};\n\n constructor() {\n // Synchronise l'input checked avec innerValue\n // sauf si le composant est piloté par un formulaire réactif (writeValue)\n effect(() => {\n const checkedValue = this.checked();\n if (!this.isControlledByForm()) {\n if (this.isCheckbox()) {\n this.innerValue.set(checkedValue);\n } else if (checkedValue) {\n this.innerValue.set(this.value());\n }\n }\n });\n }\n\n protected readonly isCheckbox = computed(() => this.inputType() === 'checkbox');\n protected readonly isRadio = computed(() => this.inputType() === 'radio');\n\n protected readonly isChecked = computed(() => {\n if (this.isCheckbox()) {\n return this.innerValue() === true;\n }\n return this.innerValue() === this.value();\n });\n\n protected readonly classes = computed(() => {\n const cls = ['mc-tile', 'mc-tile--selectable'];\n\n if (this.appearance() !== 'primary') cls.push(`mc-tile--${this.appearance()}`);\n if (this.bordered()) cls.push('mc-tile--bordered');\n if (this.disabled()) cls.push('mc-tile--disabled');\n if (this.isChecked()) cls.push('mc-tile--selected');\n\n cls.push(`mc-tile--input-${this.inputVerticalPosition()}`);\n cls.push(`mc-tile--input-${this.inputPosition()}`);\n\n return cls.join(' ');\n });\n\n // ControlValueAccessor methods\n writeValue(value: boolean | string): void {\n this.isControlledByForm.set(true);\n this.innerValue.set(value);\n }\n\n registerOnChange(fn: (value: boolean | string) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n onTileChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n if (this.isCheckbox()) {\n this.innerValue.set(target.checked);\n this.onChangeCallback(target.checked);\n } else {\n this.innerValue.set(target.value);\n this.onChangeCallback(target.value);\n }\n\n this.onTouchedCallback();\n }\n}\n","<label [class]=\"classes()\" [class.mc-tile--disabled]=\"disabled()\">\n <div class=\"mc-tile__header\">\n <div class=\"mc-tile__body\">\n <ng-content select=\"[body]\"></ng-content>\n </div>\n <div class=\"mc-tile__action\">\n @if (isCheckbox()) {\n <input\n type=\"checkbox\"\n class=\"mc-checkbox__input\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n (change)=\"onTileChange($event)\"\n />\n } @else if (isRadio()) {\n <input\n type=\"radio\"\n class=\"mc-radio__input\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n (change)=\"onTileChange($event)\"\n />\n }\n </div>\n </div>\n <div class=\"mc-tile__content\">\n <ng-content select=\"[segmented]\"></ng-content>\n </div>\n</label>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { MozButtonComponent } from '../../button/button';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { ChevronDown24 } from '@mozaic-ds/icons-angular';\nimport { MozTileExpandableTrigger } from './model/expandable-tile.model';\n\n@Component({\n selector: 'moz-tile-expandable',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './expandable-tile.html',\n styleUrls: ['./expandable-tile.scss'],\n imports: [NgTemplateOutlet, MozButtonComponent, MozIconButtonComponent, ChevronDown24],\n})\nexport class MozTileExpandableComponent {\n readonly triggerMode = input<MozTileExpandableTrigger>('container');\n readonly id = input<number>(0);\n readonly expanded = signal(false);\n readonly contentId = `tile-content-${this.id()}`;\n\n readonly isContainerTrigger = computed(() => this.triggerMode() === 'container');\n readonly isIconTrigger = computed(() => this.triggerMode() === 'icon');\n readonly isButtonTrigger = computed(() => this.triggerMode() === 'button');\n\n readonly toggle = () => {\n this.expanded.update((v) => !v);\n };\n\n readonly hostClass = computed(() => {\n const cls = ['mc-tile', 'mc-tile--expandable'];\n\n if (!this.isContainerTrigger()) {\n cls.push(`mc-tile--trigger-${this.triggerMode()}`);\n }\n\n return cls.join(' ');\n });\n}\n","<div [class]=\"hostClass()\">\n @if (isContainerTrigger()) {\n <button\n class=\"mc-tile__header\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n (click)=\"toggle()\"\n >\n <div class=\"mc-tile__body\">\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\"></ng-container>\n </div>\n <div class=\"mc-tile__action\"></div>\n </button>\n } @else {\n <div class=\"mc-tile__header\">\n <div class=\"mc-tile__body\">\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\"></ng-container>\n </div>\n <div class=\"mc-tile__action\">\n @if (isButtonTrigger()) {\n <button\n moz-button\n class=\"mc-tile__action-button\"\n [ghost]=\"true\"\n [iconPosition]=\"'right'\"\n (click)=\"toggle(); $event.stopPropagation()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n >\n <span class=\"mc-tile__action-label\">See more</span>\n <ChevronDown24 icon />\n </button>\n } @else if (isIconTrigger()) {\n <moz-icon-button\n class=\"mc-tile__action-button\"\n [ghost]=\"true\"\n [ariaLabel]=\"'Toggle content'\"\n (activated)=\"toggle(); $event.stopPropagation()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n [id]=\"'expandable-tile-toggle-button'\"\n >\n <ChevronDown24 icon />\n </moz-icon-button>\n }\n </div>\n </div>\n }\n\n <div class=\"mc-tile__content\" [id]=\"contentId\" [attr.aria-hidden]=\"!expanded()\">\n <ng-content select=\"[segmented]\" />\n </div>\n\n <ng-template #bodyTemplate>\n <ng-content select=\"[body]\" />\n </ng-template>\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { MozDrawerPosition } from '../model/drawer.model';\n\nexport interface MozDrawerConfig<D = unknown> {\n title: string;\n contentTitle?: string;\n position?: MozDrawerPosition;\n extended?: boolean;\n back?: boolean;\n panelClass?: string;\n data?: D;\n}\n\nexport const DRAWER_CONFIG = new InjectionToken<MozDrawerConfig>('DRAWER_CONFIG');\nexport const DRAWER_DATA = new InjectionToken<unknown>('DRAWER_DATA');\n\nexport const DEFAULT_DRAWER_CONFIG: Partial<MozDrawerConfig> = {\n position: 'right',\n extended: false,\n back: false,\n};\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject, Observable } from 'rxjs';\nimport { signal } from '@angular/core';\nimport { MozDrawerPosition } from '../model/drawer.model';\n\nexport class MozDrawerRef<R = unknown> {\n private readonly afterClosed$ = new Subject<R | undefined>();\n private readonly afterOpened$ = new Subject<void>();\n private readonly backClicked$ = new Subject<void>();\n\n readonly isOpen = signal(false);\n readonly title = signal('');\n readonly contentTitle = signal('');\n readonly position = signal<MozDrawerPosition>('right');\n readonly extended = signal(false);\n readonly back = signal(false);\n readonly panelClass = signal<string | undefined>(undefined);\n\n private animationDuration = 300;\n\n constructor(private readonly overlayRef: OverlayRef) {}\n\n open(): void {\n requestAnimationFrame(() => {\n this.isOpen.set(true);\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n }\n\n close(result?: R): void {\n this.isOpen.set(false);\n\n setTimeout(() => {\n this.overlayRef.dispose();\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n }, this.animationDuration);\n }\n\n backClick(): void {\n this.backClicked$.next();\n }\n\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n\n onBackClick(): Observable<void> {\n return this.backClicked$.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n HostListener,\n TemplateRef,\n computed,\n inject,\n viewChild,\n Type,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { ArrowBack24, Cross24 } from '@mozaic-ds/icons-angular';\nimport { MozIconButtonComponent } from '../../icon-button/icon-button';\nimport { MozDrawerConfig, DRAWER_CONFIG } from '../config/drawer.config';\nimport { MozDrawerRef } from '../ref/drawer-ref';\n\n@Component({\n selector: 'moz-drawer-container',\n imports: [MozIconButtonComponent, ArrowBack24, Cross24, NgTemplateOutlet, CdkPortalOutlet],\n templateUrl: './drawer-container.html',\n styleUrls: ['../drawer.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DrawerContainerComponent {\n readonly drawerRef = inject(MozDrawerRef);\n readonly config = inject<MozDrawerConfig>(DRAWER_CONFIG);\n\n readonly portalOutlet = viewChild(CdkPortalOutlet);\n\n footerTpl: TemplateRef<void> | null = null;\n\n private componentRef: ComponentRef<unknown> | null = null;\n\n readonly ariaModal = computed(() => (this.drawerRef.isOpen() ? 'true' : 'false'));\n\n attachComponent<C>(component: Type<C>): ComponentRef<C> {\n const portal = new ComponentPortal(component);\n const outlet = this.portalOutlet();\n\n if (!outlet) {\n throw new Error('Portal outlet is not available');\n }\n\n this.componentRef = outlet.attachComponentPortal(portal);\n return this.componentRef as ComponentRef<C>;\n }\n\n registerFooter(tpl: TemplateRef<void>): void {\n this.footerTpl = tpl;\n }\n\n noop(): void {}\n\n onBackClick(): void {\n this.drawerRef.backClick();\n }\n\n onBackdropClick(event: MouseEvent): void {\n event.stopPropagation();\n this.drawerRef.close();\n }\n\n @HostListener('keydown.escape')\n onEscape(): void {\n if (this.drawerRef.isOpen()) {\n this.drawerRef.close();\n }\n }\n}\n","<section\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"noop()\"\n class=\"mc-drawer\"\n [class.is-open]=\"drawerRef.isOpen()\"\n [class.mc-drawer--extend]=\"drawerRef.extended()\"\n [class.mc-drawer--left]=\"drawerRef.position() === 'left'\"\n role=\"dialog\"\n aria-labelledby=\"drawerTitle\"\n [attr.aria-modal]=\"ariaModal()\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"!drawerRef.isOpen()\"\n>\n <div class=\"mc-drawer__dialog\" [class]=\"drawerRef.panelClass()\" role=\"document\">\n <div class=\"mc-drawer__header\">\n @if (drawerRef.back()) {\n <moz-icon-button\n class=\"mc-drawer__back\"\n aria-label=\"Back\"\n [ghost]=\"true\"\n (activated)=\"onBackClick()\"\n [id]=\"'drawer-back-button'\"\n >\n <ArrowBack24 icon />\n </moz-icon-button>\n }\n\n <h2 class=\"mc-drawer__title\" id=\"drawerTitle\">{{ drawerRef.title() }}</h2>\n\n <moz-icon-button\n class=\"mc-drawer__close\"\n aria-label=\"Close\"\n [ghost]=\"true\"\n (activated)=\"drawerRef.close()\"\n [id]=\"'drawer-close-button'\"\n >\n <Cross24 icon />\n </moz-icon-button>\n </div>\n\n <div class=\"mc-drawer__body\">\n <div class=\"mc-drawer__content\" tabindex=\"0\">\n @if (drawerRef.contentTitle()) {\n <h2 class=\"mc-drawer__content__title\">\n {{ drawerRef.contentTitle() }}\n </h2>\n }\n\n <ng-template cdkPortalOutlet />\n </div>\n </div>\n\n @if (footerTpl) {\n <div class=\"mc-drawer__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl\" />\n </div>\n }\n </div>\n\n @if (drawerRef.isOpen()) {\n <div class=\"mc-overlay is-visible\" tabindex=\"-1\" (click)=\"onBackdropClick($event)\"></div>\n }\n</section>\n","import { Injectable, Injector, Type, inject } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n MozDrawerConfig,\n DEFAULT_DRAWER_CONFIG,\n DRAWER_CONFIG,\n DRAWER_DATA,\n} from '../config/drawer.config';\nimport { MozDrawerRef } from '../ref/drawer-ref';\nimport { DrawerContainerComponent } from '../container/drawer-container';\n\n@Injectable({ providedIn: 'root' })\nexport class MozDrawerService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n open<C, D = unknown, R = unknown>(\n component: Type<C>,\n config: MozDrawerConfig<D>\n ): MozDrawerRef<R> {\n const mergedConfig = {\n ...DEFAULT_DRAWER_CONFIG,\n ...config,\n } as MozDrawerConfig<D>;\n\n const overlayRef = this.createOverlay();\n const drawerRef = new MozDrawerRef<R>(overlayRef);\n\n drawerRef.title.set(mergedConfig.title);\n drawerRef.contentTitle.set(mergedConfig.contentTitle ?? '');\n drawerRef.position.set(mergedConfig.position ?? 'right');\n drawerRef.extended.set(mergedConfig.extended ?? false);\n drawerRef.back.set(mergedConfig.back ?? false);\n drawerRef.panelClass.set(mergedConfig.panelClass);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: MozDrawerRef, useValue: drawerRef },\n { provide: DRAWER_CONFIG, useValue: mergedConfig },\n { provide: DRAWER_DATA, useValue: mergedConfig.data ?? null },\n ],\n });\n\n const containerPortal = new ComponentPortal(DrawerContainerComponent, null, injector);\n\n const containerRef = overlayRef.attach(containerPortal);\n const containerInstance = containerRef.instance;\n\n // Render the closed state synchronously so the CSS slide-in transition has a\n // committed starting point (`transform: translate3d(100%, 0, 0)`).\n containerRef.changeDetectorRef.detectChanges();\n\n const host = containerRef.location.nativeElement as HTMLElement;\n const dialog = host.querySelector('.mc-drawer__dialog');\n\n // CDK inserts the container's DOM *before* Angular applies its class bindings\n // (`is-open`, `mc-drawer--left`, `panelClass`, ...) and forces a style/layout\n // read while attaching (scroll-block strategy). The browser therefore sees a\n // real style change on an already-styled element and starts a spurious\n // transition (e.g. `transform: none` -> `translate3d(100%, 0, 0)`), which is\n // still in flight when `.is-open` lands two frames later. The open animation\n // then only interpolates the few pixels left, so the drawer \"pops\" in.\n // Cancelling these entry transitions snaps the dialog to its real closed\n // state before the open animation is triggered.\n dialog?.getAnimations().forEach((animation) => animation.cancel());\n\n // Force a reflow so the closed state is committed before `.is-open` is added.\n void host.offsetWidth;\n\n // Wait for view init, then attach the user component inside the container\n requestAnimationFrame(() => {\n // Override the portal outlet's injector so the child component\n // can inject DrawerRef, DRAWER_DATA, and DrawerContainerComponent\n const childInjector = Injector.create({\n parent: injector,\n providers: [{ provide: DrawerContainerComponent, useValue: containerInstance }],\n });\n\n const portal = new ComponentPortal(component, null, childInjector);\n containerInstance.portalOutlet()?.attach(portal);\n\n drawerRef.open();\n });\n\n return drawerRef;\n }\n\n private createOverlay(): OverlayRef {\n const config = new OverlayConfig({\n hasBackdrop: false, // We handle backdrop ourselves\n panelClass: 'moz-drawer-overlay-pane',\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n return this.overlay.create(config);\n }\n}\n","import { Directive, TemplateRef, inject, afterNextRender } from '@angular/core';\nimport { DrawerContainerComponent } from '../container/drawer-container';\n\n@Directive({\n selector: '[mozDrawerFooter]',\n standalone: true,\n})\nexport class MozDrawerFooterDirective {\n private readonly tpl = inject(TemplateRef<void>);\n private readonly container = inject(DrawerContainerComponent);\n\n constructor() {\n afterNextRender(() => {\n this.container.registerFooter(this.tpl);\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n contentChild,\n input,\n output,\n signal,\n effect,\n computed,\n HostListener,\n} from '@angular/core';\nimport { ArrowBack24, Cross24 } from '@mozaic-ds/icons-angular';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MozIconButtonComponent } from '../icon-button/icon-button';\nimport { MozDrawerPosition } from './model/drawer.model';\n\n@Component({\n selector: 'moz-drawer',\n imports: [MozIconButtonComponent, ArrowBack24, Cross24, NgTemplateOutlet],\n templateUrl: './drawer.html',\n styleUrls: ['./drawer.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozDrawerComponent {\n readonly open = input<boolean>(false);\n readonly position = input<MozDrawerPosition>('right');\n readonly extended = input<boolean>(false);\n readonly back = input<boolean>(false);\n readonly title = input.required<string>();\n readonly contentTitle = input<string | undefined>();\n readonly panelClass = input<string>();\n\n readonly updateOpen = output<boolean>();\n readonly backEvent = output<void>();\n\n readonly footerTpl = contentChild<TemplateRef<void>>('footer', { descendants: false });\n\n readonly isOpen = signal(this.open());\n\n readonly classes = computed(() => ({\n 'mc-drawer': true,\n 'is-open': this.isOpen(),\n 'mc-drawer--extend': this.extended(),\n [`mc-drawer--${this.position()}`]: this.position() !== 'right',\n }));\n\n readonly dialogClasses = computed(() => {\n const extra = this.panelClass();\n return extra ? `mc-drawer__dialog ${extra}` : 'mc-drawer__dialog';\n });\n\n readonly ariaModal = computed(() => (this.isOpen() ? 'true' : 'false'));\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.open());\n });\n }\n\n close(): void {\n this.updateOpen.emit(false);\n }\n\n backClick(): void {\n this.backEvent.emit();\n }\n\n noop() {}\n\n @HostListener('keydown.escape')\n onEscape(): void {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n onBackdropClick(event: MouseEvent): void {\n event.stopPropagation();\n this.close();\n }\n}\n","<section\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"noop()\"\n [class]=\"classes()\"\n role=\"dialog\"\n aria-labelledby=\"drawerTitle\"\n [attr.aria-modal]=\"ariaModal()\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"!isOpen()\"\n>\n <div [class]=\"dialogClasses()\" role=\"document\">\n <div class=\"mc-drawer__header\">\n @if (back()) {\n <moz-icon-button\n class=\"mc-drawer__back\"\n aria-label=\"Back\"\n [ghost]=\"true\"\n (activated)=\"backClick()\"\n [id]=\"'drawer-back-button'\"\n >\n <ArrowBack24 icon />\n </moz-icon-button>\n }\n\n <h2 class=\"mc-drawer__title\" id=\"drawerTitle\">{{ title() }}</h2>\n\n <moz-icon-button\n class=\"mc-drawer__close\"\n aria-label=\"Close\"\n [ghost]=\"true\"\n (activated)=\"close()\"\n [id]=\"'drawer-close-button'\"\n >\n <Cross24 icon />\n </moz-icon-button>\n </div>\n\n <div class=\"mc-drawer__body\">\n <div class=\"mc-drawer__content\" tabindex=\"0\">\n @if (contentTitle()) {\n <h2 class=\"mc-drawer__content__title\">\n {{ contentTitle() }}\n </h2>\n }\n\n <ng-content />\n </div>\n </div>\n\n @if (footerTpl()) {\n <div class=\"mc-drawer__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl()\" />\n </div>\n }\n </div>\n @if(isOpen()){\n <div\n class=\"mc-overlay is-visible\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"modalTitle\"\n (click)=\"onBackdropClick($event)\"\n ></div>\n }\n</section>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n TemplateRef,\n contentChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Cross20 } from '@mozaic-ds/icons-angular';\nimport { MozPopoverAppearance, MozPopoverPosition, MozPopoverSize } from './config/popover.config';\nimport { MozIconButtonComponent } from '../icon-button';\n\n@Component({\n selector: 'moz-popover',\n imports: [NgTemplateOutlet, Cross20, MozIconButtonComponent],\n templateUrl: './popover.html',\n styleUrls: ['./popover.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'mozPopover',\n})\nexport class MozPopoverComponent {\n readonly appearance = input<MozPopoverAppearance>('default');\n readonly position = input<MozPopoverPosition>('bottom');\n readonly size = input<MozPopoverSize>('s');\n readonly pointer = input<boolean>(true);\n readonly closable = input<boolean>(false);\n readonly title = input<string>();\n readonly description = input<string>();\n readonly buttonLabel = input<string>();\n readonly open = input<boolean>(false);\n\n readonly closeClick = output<void>();\n\n footerTpl = contentChild<TemplateRef<void>>('footer', { descendants: false });\n\n readonly classMap = computed(() => {\n const appearance = this.appearance();\n const position = this.position();\n const size = this.size();\n const pointer = this.pointer();\n\n return {\n 'mc-popover': true,\n 'mc-popover--inverse': appearance === 'inverse',\n [`mc-popover--${position}`]: true,\n [`mc-popover--${size}`]: true,\n 'mc-popover--no-pointer': !pointer,\n };\n });\n\n onClose(): void {\n this.closeClick.emit();\n }\n}\n","<div [class]=\"classMap()\">\n <div class=\"mc-popover__wrapper\">\n <div class=\"mc-popover__content\">\n @if (title() || description()) {\n <div class=\"mc-popover__headings\">\n @if (title()) {\n <p class=\"mc-popover__title\">{{ title() }}</p>\n } @if (description()) {\n <p class=\"mc-popover__description\">{{ description() }}</p>\n }\n </div>\n } @if (closable()) {\n <moz-icon-button\n id=\"popover-close\"\n class=\"mc-popover__close\"\n aria-label=\"Close\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n (activated)=\"onClose()\"\n >\n <Cross20 icon />\n </moz-icon-button>\n }\n\n <ng-content />\n\n @if (footerTpl()) {\n <div class=\"mc-popover__footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl()\" />\n </div>\n }\n </div>\n </div>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport type MozPopoverAppearance = 'default' | 'inverse';\nexport type MozPopoverPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type MozPopoverSize = 's' | 'm';\n\nexport interface PopoverConfig<D = unknown> {\n title?: string;\n description?: string;\n appearance?: MozPopoverAppearance;\n position?: MozPopoverPosition;\n size?: MozPopoverSize;\n pointer?: boolean;\n closable?: boolean;\n buttonLabel?: string;\n data?: D;\n}\n\nexport const POPOVER_CONFIG = new InjectionToken<PopoverConfig>('POPOVER_CONFIG');\nexport const POPOVER_DATA = new InjectionToken<unknown>('POPOVER_DATA');\n\nexport const DEFAULT_POPOVER_CONFIG: Omit<Partial<PopoverConfig>, 'data'> = {\n appearance: 'default',\n position: 'bottom',\n size: 's',\n pointer: true,\n closable: false,\n};\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject, Observable } from 'rxjs';\n\nexport class PopoverRef<R = unknown> {\n private readonly afterClosed$ = new Subject<R | undefined>();\n private _closed = false;\n\n constructor(private readonly overlayRef: OverlayRef) {\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this.overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n this.close();\n }\n });\n\n // Fermeture par scrollStrategy ou autre détachement externe\n this.overlayRef.detachments().subscribe(() => {\n if (!this._closed) {\n this._closed = true;\n this.afterClosed$.next(undefined);\n this.afterClosed$.complete();\n }\n });\n }\n\n close(result?: R): void {\n if (this._closed) return;\n this._closed = true;\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n this.overlayRef.dispose();\n }\n\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n TemplateRef,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { PopoverRef } from '../ref/popover-ref';\nimport { PopoverConfig, POPOVER_CONFIG } from '../config/popover.config';\nimport { MozPopoverComponent } from '../popover';\n\n@Component({\n selector: 'moz-popover-container',\n imports: [MozPopoverComponent, CdkPortalOutlet, NgTemplateOutlet],\n template: `\n <moz-popover\n [appearance]=\"config.appearance ?? 'default'\"\n [position]=\"config.position ?? 'bottom'\"\n [size]=\"config.size ?? 's'\"\n [pointer]=\"config.pointer ?? true\"\n [closable]=\"config.closable ?? false\"\n [title]=\"config.title\"\n [description]=\"config.description\"\n [buttonLabel]=\"config.buttonLabel\"\n [open]=\"true\"\n (closeClick)=\"popoverRef.close()\"\n >\n <ng-template cdkPortalOutlet />\n\n @if (footerTpl()) {\n <ng-template #footer>\n <ng-container *ngTemplateOutlet=\"footerTpl()\" />\n </ng-template>\n }\n </moz-popover>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopoverContainerComponent {\n readonly popoverRef = inject(PopoverRef);\n readonly config = inject<PopoverConfig>(POPOVER_CONFIG);\n private readonly cdr = inject(ChangeDetectorRef);\n\n readonly portalOutlet = viewChild(CdkPortalOutlet);\n\n readonly footerTpl = signal<TemplateRef<void> | null>(null);\n\n registerFooter(tpl: TemplateRef<void>): void {\n this.footerTpl.set(tpl);\n this.cdr.detectChanges();\n }\n}\n","import {\n Directive,\n ElementRef,\n Injector,\n NgZone,\n inject,\n input,\n output,\n OnInit,\n OnDestroy,\n Type,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { PopoverRef } from '../ref/popover-ref';\nimport {\n PopoverConfig,\n MozPopoverPosition,\n POPOVER_CONFIG,\n POPOVER_DATA,\n DEFAULT_POPOVER_CONFIG,\n} from '../config/popover.config';\nimport { PopoverContainerComponent } from '../container/popover-container';\n\nexport type PopoverTriggerMode = 'click' | 'hover';\n\n@Directive({\n selector: '[mozPopoverTrigger]',\n exportAs: 'mozPopoverTrigger',\n host: {\n '(click)': 'onHostClick()',\n '(mouseenter)': 'onHostMouseEnter()',\n '(mouseleave)': 'onHostMouseLeave()',\n },\n})\nexport class MozPopoverTriggerDirective implements OnInit, OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly elementRef = inject(ElementRef);\n private readonly injector = inject(Injector);\n private readonly ngZone = inject(NgZone);\n\n /** The component to inject inside the popover, or null for config-only popover */\n readonly mozPopoverTrigger = input<Type<unknown> | null>(null);\n\n /** Trigger mode: 'click' (default) or 'hover' */\n readonly popoverTriggerMode = input<PopoverTriggerMode>('click');\n\n /** Popover config */\n readonly popoverTitle = input<string>();\n readonly popoverDescription = input<string>();\n readonly popoverAppearance = input<PopoverConfig['appearance']>('default');\n readonly popoverPosition = input<MozPopoverPosition>('bottom');\n readonly popoverSize = input<PopoverConfig['size']>('s');\n readonly popoverPointer = input<boolean>(true);\n readonly popoverClosable = input<boolean>(false);\n readonly popoverButtonLabel = input<string>();\n readonly popoverData = input<unknown>();\n\n /** Delay in ms before opening/closing on hover (prevents flicker) */\n readonly popoverHoverDelay = input<number>(100);\n\n /** Emits when popover closes */\n readonly popoverClosed = output<unknown>();\n\n private popoverRef: PopoverRef | null = null;\n private overlayRef: OverlayRef | null = null;\n\n // Hover-mode timers & listeners\n private hoverOpenTimer: ReturnType<typeof setTimeout> | null = null;\n private hoverCloseTimer: ReturnType<typeof setTimeout> | null = null;\n private overlayMouseEnterHandler: (() => void) | null = null;\n private overlayMouseLeaveHandler: (() => void) | null = null;\n\n ngOnInit(): void {\n // Nothing special — listeners are host-bound\n }\n\n // -----------------------------------------------------------------------\n // Host event handlers\n // -----------------------------------------------------------------------\n\n onHostClick(): void {\n if (this.popoverTriggerMode() !== 'click') return;\n if (this.popoverRef) {\n this.close();\n } else {\n this.open();\n }\n }\n\n onHostMouseEnter(): void {\n if (this.popoverTriggerMode() !== 'hover') return;\n this.cancelHoverClose();\n if (this.popoverRef) return;\n this.hoverOpenTimer = setTimeout(() => {\n this.hoverOpenTimer = null;\n this.open();\n }, this.popoverHoverDelay());\n }\n\n onHostMouseLeave(): void {\n if (this.popoverTriggerMode() !== 'hover') return;\n this.cancelHoverOpen();\n this.scheduleHoverClose();\n }\n\n // -----------------------------------------------------------------------\n // Public API\n // -----------------------------------------------------------------------\n\n toggle(): void {\n if (this.popoverRef) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.popoverRef) {\n return;\n }\n\n // Nothing to render (no injected component and no textual content) — don't\n // open an empty popover (e.g. a hover trigger on a non-overflowing cell).\n if (\n !this.mozPopoverTrigger() &&\n !this.popoverTitle() &&\n !this.popoverDescription() &&\n !this.popoverButtonLabel()\n ) {\n return;\n }\n\n const isHover = this.popoverTriggerMode() === 'hover';\n\n const config: PopoverConfig = {\n ...DEFAULT_POPOVER_CONFIG,\n title: this.popoverTitle(),\n description: this.popoverDescription(),\n appearance: this.popoverAppearance(),\n position: this.popoverPosition(),\n size: this.popoverSize(),\n pointer: this.popoverPointer(),\n closable: this.popoverClosable(),\n buttonLabel: this.popoverButtonLabel(),\n data: this.popoverData(),\n };\n\n const overlayRef = this.createOverlay(config.position ?? 'bottom', isHover);\n this.overlayRef = overlayRef;\n const popoverRef = new PopoverRef(overlayRef);\n this.popoverRef = popoverRef;\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: PopoverRef, useValue: popoverRef },\n { provide: POPOVER_CONFIG, useValue: config },\n { provide: POPOVER_DATA, useValue: config.data ?? null },\n ],\n });\n\n const containerPortal = new ComponentPortal(PopoverContainerComponent, null, injector);\n\n const containerRef = overlayRef.attach(containerPortal);\n const containerInstance = containerRef.instance;\n\n // If a component is provided, inject it inside the container\n const component = this.mozPopoverTrigger();\n if (component) {\n requestAnimationFrame(() => {\n const childInjector = Injector.create({\n parent: injector,\n providers: [{ provide: PopoverContainerComponent, useValue: containerInstance }],\n });\n\n const portal = new ComponentPortal(component, null, childInjector);\n containerInstance.portalOutlet()?.attach(portal);\n });\n }\n\n // Attach hover listeners on the overlay pane itself\n if (isHover) {\n this.attachOverlayHoverListeners(overlayRef);\n }\n\n popoverRef.afterClosed().subscribe((result) => {\n this.popoverClosed.emit(result);\n this.detachOverlayHoverListeners();\n this.popoverRef = null;\n this.overlayRef = null;\n });\n }\n\n close(): void {\n this.cancelHoverOpen();\n this.cancelHoverClose();\n this.popoverRef?.close();\n this.popoverRef = null;\n this.overlayRef = null;\n }\n\n ngOnDestroy(): void {\n this.cancelHoverOpen();\n this.cancelHoverClose();\n this.detachOverlayHoverListeners();\n this.close();\n }\n\n // -----------------------------------------------------------------------\n // Hover helpers\n // -----------------------------------------------------------------------\n\n private scheduleHoverClose(): void {\n this.cancelHoverClose();\n this.hoverCloseTimer = setTimeout(() => {\n this.hoverCloseTimer = null;\n this.close();\n }, this.popoverHoverDelay());\n }\n\n private cancelHoverClose(): void {\n if (this.hoverCloseTimer !== null) {\n clearTimeout(this.hoverCloseTimer);\n this.hoverCloseTimer = null;\n }\n }\n\n private cancelHoverOpen(): void {\n if (this.hoverOpenTimer !== null) {\n clearTimeout(this.hoverOpenTimer);\n this.hoverOpenTimer = null;\n }\n }\n\n private attachOverlayHoverListeners(overlayRef: OverlayRef): void {\n const pane = overlayRef.overlayElement;\n this.ngZone.runOutsideAngular(() => {\n this.overlayMouseEnterHandler = () => {\n this.cancelHoverClose();\n };\n this.overlayMouseLeaveHandler = () => {\n this.ngZone.run(() => this.scheduleHoverClose());\n };\n pane.addEventListener('mouseenter', this.overlayMouseEnterHandler);\n pane.addEventListener('mouseleave', this.overlayMouseLeaveHandler);\n });\n }\n\n private detachOverlayHoverListeners(): void {\n if (this.overlayRef && this.overlayRef.overlayElement) {\n const pane = this.overlayRef.overlayElement;\n if (this.overlayMouseEnterHandler) {\n pane.removeEventListener('mouseenter', this.overlayMouseEnterHandler);\n }\n if (this.overlayMouseLeaveHandler) {\n pane.removeEventListener('mouseleave', this.overlayMouseLeaveHandler);\n }\n }\n this.overlayMouseEnterHandler = null;\n this.overlayMouseLeaveHandler = null;\n }\n\n // -----------------------------------------------------------------------\n // Overlay creation\n // -----------------------------------------------------------------------\n\n private createOverlay(position: MozPopoverPosition, hoverMode: boolean): OverlayRef {\n const positions = this.getPositions(position);\n\n const config = new OverlayConfig({\n hasBackdrop: !hoverMode,\n backdropClass: hoverMode ? '' : 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(positions)\n .withPush(true)\n .withViewportMargin(8),\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n return this.overlay.create(config);\n }\n\n private getPositions(position: MozPopoverPosition): ConnectedPosition[] {\n const positionMap: Record<MozPopoverPosition, ConnectedPosition[]> = {\n bottom: [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n ],\n top: [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n ],\n left: [\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n ],\n right: [\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n ],\n };\n\n return positionMap[position];\n }\n}\n","import { Injectable, Injector, ElementRef, Type, inject } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { PopoverRef } from '../ref/popover-ref';\nimport {\n PopoverConfig,\n MozPopoverPosition,\n POPOVER_CONFIG,\n POPOVER_DATA,\n DEFAULT_POPOVER_CONFIG,\n} from '../config/popover.config';\nimport { PopoverContainerComponent } from '../container/popover-container';\n\n@Injectable({ providedIn: 'root' })\nexport class PopoverService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n /**\n * Open a popover attached to an element.\n */\n open<C, D = unknown, R = unknown>(\n component: Type<C>,\n origin: ElementRef | HTMLElement,\n config: PopoverConfig<D>\n ): PopoverRef<R> {\n const mergedConfig = {\n ...DEFAULT_POPOVER_CONFIG,\n ...config,\n } as PopoverConfig<D>;\n\n const overlayRef = this.createOverlay(origin, mergedConfig.position ?? 'bottom');\n const popoverRef = new PopoverRef<R>(overlayRef);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: PopoverRef, useValue: popoverRef },\n { provide: POPOVER_CONFIG, useValue: mergedConfig },\n { provide: POPOVER_DATA, useValue: mergedConfig.data ?? null },\n ],\n });\n\n const containerPortal = new ComponentPortal(PopoverContainerComponent, null, injector);\n\n const containerRef = overlayRef.attach(containerPortal);\n const containerInstance = containerRef.instance;\n\n requestAnimationFrame(() => {\n const childInjector = Injector.create({\n parent: injector,\n providers: [{ provide: PopoverContainerComponent, useValue: containerInstance }],\n });\n\n const portal = new ComponentPortal(component, null, childInjector);\n containerInstance.portalOutlet()?.attach(portal);\n });\n\n return popoverRef;\n }\n\n private createOverlay(\n origin: ElementRef | HTMLElement,\n position: MozPopoverPosition\n ): OverlayRef {\n const positions = this.getPositions(position);\n\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions(positions)\n .withPush(true)\n .withViewportMargin(8),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n return this.overlay.create(config);\n }\n\n private getPositions(position: MozPopoverPosition): ConnectedPosition[] {\n const positionMap: Record<MozPopoverPosition, ConnectedPosition[]> = {\n bottom: [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n ],\n top: [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 },\n ],\n left: [\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n ],\n right: [\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 },\n ],\n };\n\n return positionMap[position];\n }\n}\n","import { Directive, TemplateRef, inject, afterNextRender } from '@angular/core';\nimport { PopoverContainerComponent } from '../container/popover-container';\n\n@Directive({\n selector: '[mozPopoverFooter]',\n standalone: true,\n})\nexport class MozPopoverFooterDirective {\n private readonly tpl = inject(TemplateRef<void>);\n private readonly container = inject(PopoverContainerComponent);\n\n constructor() {\n afterNextRender(() => {\n this.container.registerFooter(this.tpl);\n });\n }\n}\n","// Component (standalone static usage)\nexport { MozPopoverComponent } from './popover';\n\n// Config & tokens\nexport type {\n PopoverConfig,\n MozPopoverAppearance,\n MozPopoverPosition,\n MozPopoverSize,\n} from './config/popover.config';\nexport { POPOVER_CONFIG, POPOVER_DATA } from './config/popover.config';\n\n// Ref\nexport { PopoverRef } from './ref/popover-ref';\n\n// Directive trigger\nexport { MozPopoverTriggerDirective } from './directives/popover-trigger.directive';\nexport type { PopoverTriggerMode } from './directives/popover-trigger.directive';\n\n// Dynamic\nexport { PopoverService } from './service/popover.service';\nexport { PopoverContainerComponent } from './container/popover-container';\nexport { MozPopoverFooterDirective } from './directives/popover-footer.directive';\n","import { ChangeDetectionStrategy, Component, input, output, computed, model } from '@angular/core';\nimport { MozButtonComponent } from '../button/button';\nimport { PauseCircle24, PlayCircle24 } from '@mozaic-ds/icons-angular';\nimport { MozNavigationIndicatorAction } from './model/navigation-indicator.model';\n\n@Component({\n selector: 'moz-navigation-indicator',\n templateUrl: './navigation-indicator.html',\n styleUrls: ['./navigation-indicator.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MozButtonComponent, PauseCircle24, PlayCircle24],\n})\nexport class MozNavigationIndicatorComponent {\n /** Total number of steps */\n readonly steps = input.required<number>();\n\n /** Currently active step index (0-based) */\n readonly active = model<number>(0);\n\n /** Action button type: 'pause' or 'resume' */\n readonly action = input<MozNavigationIndicatorAction>('pause');\n\n /** Use light (icon-only) variant for the action button */\n readonly light = input<boolean>(false);\n\n /** Hide the action button entirely */\n readonly hideAction = input<boolean>(false);\n\n /** Label for the pause button */\n readonly pauseLabel = input<string>('Pause');\n\n /** Label for the resume button */\n readonly resumeLabel = input<string>('Resume');\n\n /** Emits when a step indicator is clicked */\n readonly stepClick = output<number>();\n\n /** Emits when the action button (pause/resume) is clicked */\n readonly actionClick = output<MozNavigationIndicatorAction>();\n\n /** Array of step indices for iteration */\n readonly stepsArray = computed(() => Array.from({ length: this.steps() }, (_, i) => i));\n\n /** Current action label */\n readonly actionLabel = computed(() =>\n this.action() === 'pause' ? this.pauseLabel() : this.resumeLabel()\n );\n\n onStepClick(index: number): void {\n this.active.set(index);\n this.stepClick.emit(index);\n }\n\n onActionClick(): void {\n this.actionClick.emit(this.action());\n }\n}\n","<div class=\"mc-navigation-indicator\" role=\"navigation\" aria-label=\"Progress steps\">\n <ul class=\"mc-navigation-indicator__list\">\n @for (step of stepsArray(); track step) {\n <li class=\"mc-navigation-indicator__item\">\n <button\n class=\"mc-navigation-indicator__button\"\n [class.mc-navigation-indicator__button--active]=\"step === active()\"\n [attr.aria-current]=\"step === active() ? 'step' : null\"\n (click)=\"onStepClick(step)\"\n ></button>\n </li>\n }\n </ul>\n\n @if (!hideAction()) { @if (light()) {\n <button\n moz-button\n appearance=\"standard\"\n size=\"s\"\n [ariaLabel]=\"actionLabel()\"\n (click)=\"onActionClick()\"\n [iconPosition]=\"'only'\"\n >\n @if(this.action() === 'pause'){\n <PauseCircle24 icon></PauseCircle24>\n }@else {\n <PlayCircle24 icon></PlayCircle24>\n }\n </button>\n } @else {\n <button\n moz-button\n appearance=\"standard\"\n size=\"s\"\n [ghost]=\"true\"\n [ariaLabel]=\"actionLabel()\"\n [iconPosition]=\"'left'\"\n (click)=\"onActionClick()\"\n >\n @if(this.action() === 'pause'){\n <PauseCircle24 icon></PauseCircle24>\n }@else {\n <PlayCircle24 icon></PlayCircle24>\n }\n <span>{{ actionLabel() }}</span>\n </button>\n } }\n</div>\n","export function generateRandomIntMinMax(min: number, max: number): number {\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n const n = (array[0] % (max - min + 1)) + min;\n return n;\n}\n\nexport function generateRandomInt(numberOfDigits: number): number {\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n const n = array[0] % Math.pow(10, numberOfDigits);\n return n;\n}\n","/**\n * McCombobox — Data models & type guards\n *\n * @packageDocumentation\n */\n\n// ---------------------------------------------------------------------------\n// Option\n// ---------------------------------------------------------------------------\n\nexport interface MozComboboxOption<T = unknown> {\n /** Unique value used for selection comparison */\n value: T;\n /** Display label */\n label: string;\n /** Optional secondary text rendered below the label */\n content?: string;\n /** Whether the option is individually disabled */\n disabled?: boolean;\n /** Optional icon identifier (rendered in the prepend slot) */\n icon?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Section (group header + children)\n// ---------------------------------------------------------------------------\n\nexport interface MozComboboxSection<T = unknown> {\n /** Section heading text */\n title: string;\n /** Options belonging to this section */\n options: MozComboboxOption<T>[];\n /** When `true` in `multiple` mode, clicking the header toggles all children */\n checkable?: boolean;\n /**\n * When `true`, the section header's \"toggle all\" action is disabled, but\n * children remain individually interactable. The header checkbox still\n * reflects the selection state (checked / indeterminate) of its children.\n */\n disabled?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Union & helpers\n// ---------------------------------------------------------------------------\n\nexport type MozComboboxItem<T = unknown> = MozComboboxOption<T> | MozComboboxSection<T>;\n\nexport type MozComboboxSize = 's' | 'm';\n\n/** Type-guard: returns `true` when the item is a section header */\nexport function isSection<T>(item: MozComboboxItem<T>): item is MozComboboxSection<T> {\n return 'options' in item;\n}\n\n// ---------------------------------------------------------------------------\n// Internal flat representation (used for rendering)\n// ---------------------------------------------------------------------------\n\nexport interface FlatOption<T = unknown> {\n type: 'option';\n value: T;\n label: string;\n content?: string;\n disabled?: boolean;\n icon?: string;\n /** Parent section title (if any) */\n sectionTitle?: string;\n}\n\nexport interface FlatSection {\n type: 'section';\n title: string;\n checkable?: boolean;\n disabled?: boolean;\n}\n\nexport type FlatItem<T = unknown> = FlatOption<T> | FlatSection;\n\nexport function isFlatSection<T>(item: FlatItem<T>): item is FlatSection {\n return item.type === 'section';\n}\n\nexport function isFlatOption<T>(item: FlatItem<T>): item is FlatOption<T> {\n return item.type === 'option';\n}\n","import {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n Overlay,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n CheckCircle24,\n ChevronDown24,\n CrossCircleFilled24,\n Search24,\n} from '@mozaic-ds/icons-angular';\nimport { MozButtonComponent } from '../button';\nimport { MozCheckboxComponent } from '../checkbox/checkbox';\nimport { MozLoaderComponent } from '../loader/loader';\nimport { MozTextInput } from '../text-input/text-input.directive';\nimport { generateRandomInt } from '../utils/generate-random-int';\nimport {\n FlatItem,\n FlatOption,\n FlatSection,\n isFlatOption,\n isFlatSection,\n isSection,\n MozComboboxItem,\n MozComboboxOption,\n MozComboboxSize,\n} from './combobox.model';\n\n/** Height of a single option row in px (matches design system 3rem @ 16px base) */\nexport const ITEM_SIZE_PX = 48;\n\n/** Visible viewport height in px (matches design system max-height of 18.75rem) */\nconst VIEWPORT_HEIGHT_PX = 300;\n\n/**\n * CDK virtual-scroll buffers (px). Sized so lists up to ~110-120 items render\n * fully — no virtualization — which keeps every option in the DOM and sidesteps\n * the CDK 22 zoneless scroll-freeze for all realistic list sizes. Larger lists\n * fall back to true virtual scrolling, where onViewportScroll() keeps the\n * rendered window in sync. (100 / 120 rows × ITEM_SIZE_PX.)\n */\nconst MIN_BUFFER_PX = 100 * ITEM_SIZE_PX;\nconst MAX_BUFFER_PX = 120 * ITEM_SIZE_PX;\n\n@Component({\n selector: 'moz-combobox',\n imports: [\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ScrollingModule,\n MozLoaderComponent,\n MozButtonComponent,\n CrossCircleFilled24,\n ChevronDown24,\n Search24,\n MozTextInput,\n MozCheckboxComponent,\n FormsModule,\n CheckCircle24,\n ],\n templateUrl: './combobox.component.html',\n styleUrl: './combobox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MozComboboxComponent),\n multi: true,\n },\n ],\n})\nexport class MozComboboxComponent<T = string> implements ControlValueAccessor {\n private readonly _doc = inject(DOCUMENT);\n private readonly _overlay = inject(Overlay);\n\n /** Timestamp of the last viewport re-measure, to throttle onViewportScroll(). */\n private _lastViewportSync = 0;\n\n /**\n * No-op scroll strategy: the dropdown embeds a CDK virtual-scroll viewport,\n * which is a global `CdkScrollable`. With the default `reposition` strategy,\n * every internal scroll event repositions the overlay, making the panel\n * \"bounce\" and preventing the user from reaching the bottom of long lists.\n */\n readonly scrollStrategy: ScrollStrategy = this._overlay.scrollStrategies.noop();\n\n // -----------------------------------------------------------------------\n // Public inputs\n // -----------------------------------------------------------------------\n\n /** Items to display (flat options or sections) */\n readonly items = input<MozComboboxItem<T>[]>([]);\n\n /** Currently selected value(s) — two-way binding with model() */\n readonly value = model<T | T[] | null>(null);\n\n /** Placeholder text shown when nothing is selected */\n readonly placeholder = input<string>('Select an option');\n\n /** Enable multi-selection */\n readonly multiple = input<boolean>(false);\n\n /** Show counter instead of tags in multi mode */\n readonly compact = input<boolean>(false);\n\n /** Component size variant */\n readonly size = input<MozComboboxSize>('m');\n\n /** Disable the entire component */\n readonly disabled = input<boolean>(false);\n\n /** Readonly mode — no interaction allowed */\n readonly readonly = input<boolean>(false);\n\n /** Show invalid/error styling */\n readonly invalid = input<boolean>(false);\n\n /** Show a clear button when a value is selected */\n readonly clearable = input<boolean>(false);\n\n /** Show a search/filter input inside the dropdown */\n readonly searchable = input<boolean>(false);\n\n /**\n * When true, the search query is split on spaces/commas and each term is\n * matched independently (e.g. \"red shoe\" matches labels containing either\n * \"red\" or \"shoe\"). When false, the query is matched as a single substring\n * so users can search for multi-word labels like \"Item 1\".\n */\n readonly multiSearch = input<boolean>(false);\n\n /**\n * Server-side search mode. When `true`, the dropdown no longer filters\n * `items` locally on the label — it renders exactly what the parent provides.\n * Use it for async autocomplete: subscribe to `(searched)`, fetch matching\n * items from the backend and feed them back through `items`. This lets the\n * search match fields that are not part of the visible label (e.g. an id\n * shown only as secondary `content`). Has no effect when `searchable` is\n * `false`.\n */\n readonly serverSide = input<boolean>(false);\n\n /** Show \"Select all / Clear\" action buttons (multiple only) */\n readonly showActions = input<boolean>(false);\n\n /** Whether the component is in a loading state (e.g. async data) */\n readonly loading = input<boolean>(false);\n\n /** Custom comparator for option values */\n readonly compareWith = input<(a: T, b: T) => boolean>((a, b) => a === b);\n\n /**\n * Predicate used by `selectAll()` to decide whether a non-disabled option\n * should be included. Receives each candidate option and must return `true`\n * to keep it. Defaults to including every selectable option. Use this to\n * apply custom business rules (quotas, role-based filtering, etc.) when the\n * user triggers the \"Select all\" action.\n */\n readonly canSelectAll = input<(option: MozComboboxOption<T>) => boolean>(() => true);\n\n /** Accessible label */\n readonly ariaLabel = input<string | undefined>(undefined);\n\n /** Reference to an external label element */\n readonly ariaLabelledBy = input<string | undefined>(undefined);\n\n // -----------------------------------------------------------------------\n // Customizable text labels (i18n)\n // -----------------------------------------------------------------------\n\n /** Placeholder shown inside the search input */\n readonly searchPlaceholder = input<string>('Find an option...');\n\n /** Text shown when no items match the search query */\n readonly noResultsText = input<string>('No results found');\n\n /** Label for the \"Select all\" action button */\n readonly selectAllText = input<string>('Select all');\n\n /** Label for the \"Clear\" action button */\n readonly clearText = input<string>('Clear');\n\n /** Suffix for the compact counter (e.g. \"3 selected\") */\n readonly selectedSuffix = input<string>('selected');\n\n /** Accessible label for the clear button */\n readonly clearAriaLabel = input<string>('Clear selection');\n\n /** Text shown inside the dropdown while loading */\n readonly loadingText = input<string>('Loading...');\n\n /** Whether to show the \"No results found\" message when no items match */\n readonly showNoResultText = input<boolean>(true);\n\n // -----------------------------------------------------------------------\n // Outputs\n // -----------------------------------------------------------------------\n\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly searched = output<string>();\n\n // -----------------------------------------------------------------------\n // View queries\n // -----------------------------------------------------------------------\n\n private readonly triggerEl = viewChild<ElementRef<HTMLButtonElement>>('triggerBtn');\n private readonly viewportEl = viewChild<CdkVirtualScrollViewport>('viewport');\n\n // -----------------------------------------------------------------------\n // Internal state\n // -----------------------------------------------------------------------\n\n /** Unique instance id */\n readonly uniqId = generateRandomInt(5); // random 5 digits number to avoid ID collisions when multiple comboboxes are present\n readonly comboboxId = `mc-combobox-${this.uniqId}`;\n readonly listboxId = `${this.comboboxId}-listbox`;\n\n /** Whether the dropdown panel is open */\n readonly isOpen = signal(false);\n\n /** Keyboard-focused item index within filteredItems() */\n readonly focusedIndex = signal(-1);\n\n /** Current search/filter query */\n readonly searchQuery = signal('');\n\n /** Disabled state from ControlValueAccessor */\n private readonly _disabledFromForm = signal(false);\n\n /** Cache of value → label for all options ever seen (survives items changes) */\n private readonly _labelCache = new Map<T, string>();\n\n /** CVA callbacks */\n private _onChange: (val: T | T[] | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n // -----------------------------------------------------------------------\n // Computed signals\n // -----------------------------------------------------------------------\n\n /** Effective disabled state (input OR form-driven) */\n readonly isEffectivelyDisabled = computed(() => this.disabled() || this._disabledFromForm());\n\n /** CSS classes for the wrapper element */\n readonly wrapperClasses = computed(() => {\n const classes = ['mc-combobox'];\n if (this.isOpen()) classes.push('mc-combobox--open');\n if (this.multiple()) classes.push('mc-combobox--multiple');\n if (this.invalid()) classes.push('mc-combobox--invalid');\n if (this.isEffectivelyDisabled()) classes.push('mc-combobox--disabled');\n if (this.readonly()) classes.push('mc-combobox--readonly');\n if (this.size() === 's') classes.push('mc-combobox--s');\n return classes.join(' ');\n });\n\n /** Flatten items into a renderable list */\n readonly flatItems = computed<FlatItem<T>[]>(() => {\n const result: FlatItem<T>[] = [];\n for (const item of this.items()) {\n if (isSection(item)) {\n result.push({\n type: 'section',\n title: item.title,\n checkable: item.checkable,\n disabled: item.disabled,\n });\n for (const opt of item.options) {\n result.push({ type: 'option', ...opt, sectionTitle: item.title });\n }\n } else {\n result.push({ type: 'option', ...item });\n }\n }\n return result;\n });\n\n /** Filtered items based on search query */\n readonly filteredItems = computed<FlatItem<T>[]>(() => {\n // Server-side mode: the parent already returns the matching items, render\n // them as-is (no local label filtering).\n if (this.serverSide()) return this.flatItems();\n\n const query = this.searchQuery().trim();\n if (!query) return this.flatItems();\n\n const flat = this.flatItems();\n const parts = this.multiSearch()\n ? query\n .split(/[,\\s]+/)\n .map((s) => s.toLowerCase().trim())\n .filter(Boolean)\n : [query.toLowerCase()];\n\n // Find which section titles have matching children\n const matchingSections = new Set<string>();\n for (const item of flat) {\n if (isFlatOption(item)) {\n const label = item.label.toLowerCase();\n const match = parts.some((p) => label.includes(p));\n if (match && item.sectionTitle) matchingSections.add(item.sectionTitle);\n }\n }\n\n return flat.filter((item) => {\n if (isFlatSection(item)) {\n return matchingSections.has(item.title);\n }\n const label = item.label.toLowerCase();\n return parts.some((p) => label.includes(p));\n });\n });\n\n /** All selectable (non-disabled) option values */\n readonly allSelectableValues = computed<T[]>(() =>\n this.filteredItems()\n .filter((i): i is FlatOption<T> => isFlatOption(i) && !i.disabled)\n .map((i) => i.value)\n );\n\n /** The display string shown on the trigger button */\n readonly displayValue = computed<string>(() => {\n const val = this.value();\n if (val == null) return '';\n const flat = this.flatItems();\n const options = flat.filter(isFlatOption) as FlatOption<T>[];\n const cmp = this.compareWith();\n const cache = this._labelCache;\n\n const findLabel = (v: T): string =>\n options.find((o) => cmp(o.value, v))?.label ?? cache.get(v) ?? '';\n\n if (Array.isArray(val)) {\n return val.map(findLabel).filter(Boolean).join(', ');\n }\n return findLabel(val);\n });\n\n /** Number of selected items (for compact counter) */\n readonly selectedCount = computed<number>(() => {\n const val = this.value();\n if (val == null) return 0;\n if (Array.isArray(val)) return val.length;\n if (this.multiple()) return 0;\n return 1;\n });\n\n /** Whether the clear button should be visible */\n readonly showClear = computed(\n () =>\n this.clearable() &&\n this.selectedCount() > 0 &&\n !this.isEffectivelyDisabled() &&\n !this.readonly()\n );\n\n /** Viewport height: capped to VIEWPORT_HEIGHT_PX, shrinks for small lists */\n readonly viewportHeight = computed(() => {\n const count = this.filteredItems().length;\n return Math.min(count * ITEM_SIZE_PX, VIEWPORT_HEIGHT_PX);\n });\n\n /**\n * Whether all non-disabled children of a section are selected. Disabled\n * children are ignored so the header state stays aligned with what a click\n * on the section checkbox will actually toggle.\n */\n readonly isSectionFullySelected = (sectionTitle: string): boolean => {\n const val = this._currentValueAsArray();\n if (val.length === 0) return false;\n const cmp = this.compareWith();\n const children = this.flatItems()\n .filter(\n (i): i is FlatOption<T> => isFlatOption(i) && i.sectionTitle === sectionTitle && !i.disabled\n )\n .map((i) => i.value);\n return children.length > 0 && children.every((cv) => val.some((sv) => cmp(sv, cv)));\n };\n\n /** Whether a section's non-disabled children are partially selected. */\n readonly isSectionPartiallySelected = (sectionTitle: string): boolean => {\n const val = this._currentValueAsArray();\n if (val.length === 0) return false;\n const cmp = this.compareWith();\n const children = this.flatItems()\n .filter(\n (i): i is FlatOption<T> => isFlatOption(i) && i.sectionTitle === sectionTitle && !i.disabled\n )\n .map((i) => i.value);\n const selectedCount = children.filter((cv) => val.some((sv) => cmp(sv, cv))).length;\n return selectedCount > 0 && selectedCount < children.length;\n };\n\n // -----------------------------------------------------------------------\n // Overlay positions\n // -----------------------------------------------------------------------\n\n readonly overlayPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ];\n\n /** Width of the trigger (to match overlay width) */\n readonly triggerWidth = signal<number>(0);\n\n // -----------------------------------------------------------------------\n // Constructor effects\n // -----------------------------------------------------------------------\n\n constructor() {\n // Propagate value changes to CVA\n effect(() => {\n const val = this.value();\n this._onChange(val);\n });\n\n // Keep the label cache up to date whenever items change\n effect(() => {\n const flat = this.flatItems();\n for (const item of flat) {\n if (isFlatOption(item)) {\n this._labelCache.set(item.value, item.label);\n }\n }\n });\n\n // Inject global overlay styles — CDK teleports content outside the\n // component host so scoped CSS never reaches .cdk-overlay-pane.\n // Check DOM each render — Storybook may remove the tag on navigation.\n afterNextRender(() => {\n if (!this._doc.head.querySelector('style[data-moz-combobox-overlay]')) {\n const style = this._doc.createElement('style');\n style.setAttribute('data-moz-combobox-overlay', '');\n style.textContent = `\n .cdk-overlay-pane .mc-combobox__listbox.mc-combobox__listbox {\n position: static;\n visibility: visible;\n opacity: 1;\n width: 100%;\n }\n /* A bare <input> keeps an intrinsic, size-attribute-based\n min-width, so on a narrow panel the search field refuses to\n shrink and its placeholder overflows the dropdown. Allow it\n to shrink to the available width. */\n .cdk-overlay-pane .mc-combobox__listbox .mc-option-listbox__search .text-input__control {\n min-width: 0;\n }\n .mc-combobox-backdrop {\n background: transparent;\n }\n `;\n this._doc.head.appendChild(style);\n }\n });\n }\n\n // -----------------------------------------------------------------------\n // Open / Close\n // -----------------------------------------------------------------------\n\n open(): void {\n if (this.isOpen() || this.isEffectivelyDisabled() || this.readonly()) {\n return;\n }\n this._updateTriggerWidth();\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n close(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.focusedIndex.set(-1);\n this.closed.emit();\n this._onTouched();\n }\n\n /** Fully reset the combobox: clear value, search query, and close the panel. */\n reset(): void {\n this.value.set(null);\n this.searchQuery.set('');\n this.searched.emit('');\n this.close();\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n // -----------------------------------------------------------------------\n // Trigger keyboard handler (manual ARIA combobox)\n // -----------------------------------------------------------------------\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isEffectivelyDisabled() || this.readonly()) return;\n\n // When the panel is already open, delegate navigation keys to the panel handler\n if (this.isOpen()) {\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Home':\n case 'End':\n case 'Enter':\n this.onPanelKeydown(event);\n return;\n case ' ':\n this.onPanelKeydown(event);\n return;\n case 'Escape':\n event.preventDefault();\n this.close();\n return;\n case 'Tab':\n this.close();\n return;\n }\n }\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.open();\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n event.preventDefault();\n this.open();\n break;\n case 'Escape':\n break;\n case 'Tab':\n break;\n case 'Home':\n case 'End':\n event.preventDefault();\n this.open();\n break;\n }\n }\n\n // -----------------------------------------------------------------------\n // Panel keyboard handler\n // -----------------------------------------------------------------------\n\n onPanelKeydown(event: KeyboardEvent): void {\n const items = this.filteredItems();\n const navigableIndices = items\n .map((item, i) => ({ item, i }))\n .filter(({ item }) => isFlatOption(item) && !(item as FlatOption<T>).disabled)\n .map(({ i }) => i);\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n const cur = this.focusedIndex();\n const next = navigableIndices.find((i) => i > cur) ?? navigableIndices[0];\n if (next !== undefined) {\n this.focusedIndex.set(next);\n this.viewportEl()?.scrollToIndex(next);\n }\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n const cur = this.focusedIndex();\n const prev =\n [...navigableIndices].reverse().find((i) => i < cur) ??\n navigableIndices[navigableIndices.length - 1];\n if (prev !== undefined) {\n this.focusedIndex.set(prev);\n this.viewportEl()?.scrollToIndex(prev);\n }\n break;\n }\n case 'Enter':\n case ' ': {\n // Allow space to type in the search input\n if (event.key === ' ' && (event.target as HTMLElement).tagName === 'INPUT') {\n break;\n }\n const fi = this.focusedIndex();\n if (fi >= 0) {\n const item = items[fi];\n if (isFlatOption(item) && !item.disabled) {\n event.preventDefault();\n this.selectOption(item.value as T);\n }\n }\n break;\n }\n case 'Home': {\n event.preventDefault();\n if (navigableIndices.length) {\n this.focusedIndex.set(navigableIndices[0]);\n this.viewportEl()?.scrollToIndex(navigableIndices[0]);\n }\n break;\n }\n case 'End': {\n event.preventDefault();\n if (navigableIndices.length) {\n const last = navigableIndices[navigableIndices.length - 1];\n this.focusedIndex.set(last);\n this.viewportEl()?.scrollToIndex(last);\n }\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.close();\n this.triggerEl()?.nativeElement.focus();\n break;\n case 'Tab':\n this.close();\n break;\n }\n }\n\n // -----------------------------------------------------------------------\n // Selection handling\n // -----------------------------------------------------------------------\n\n selectOption(optionValue: T): void {\n if (this.multiple()) {\n const cmp = this.compareWith();\n const current = this._currentValueAsArray();\n const idx = current.findIndex((v) => cmp(v, optionValue));\n const next = idx >= 0 ? current.filter((_, i) => i !== idx) : [...current, optionValue];\n this.value.set(next as T & T[]);\n } else {\n this.value.set(optionValue);\n this.close();\n this.triggerEl()?.nativeElement.focus();\n }\n }\n\n // -----------------------------------------------------------------------\n // Actions\n // -----------------------------------------------------------------------\n\n selectAll(): void {\n if (!this.multiple()) return;\n const cmp = this.compareWith();\n const predicate = this.canSelectAll();\n const disabledValues = this.flatItems()\n .filter((i): i is FlatOption<T> => isFlatOption(i) && !!i.disabled)\n .map((i) => i.value);\n const current = this._currentValueAsArray();\n const keptDisabled = current.filter((sv) => disabledValues.some((dv) => cmp(sv, dv)));\n const next = this.filteredItems()\n .filter((i): i is FlatOption<T> => isFlatOption(i) && !i.disabled && predicate(i))\n .map((i) => i.value);\n for (const dv of keptDisabled) {\n if (!next.some((sv) => cmp(sv, dv))) next.push(dv);\n }\n this.value.set(next as T & T[]);\n }\n\n clearSelection(): void {\n const cmp = this.compareWith();\n const disabledValues = this.flatItems()\n .filter((i): i is FlatOption<T> => isFlatOption(i) && !!i.disabled)\n .map((i) => i.value);\n\n if (this.multiple()) {\n const current = this._currentValueAsArray();\n const kept = current.filter((sv) => disabledValues.some((dv) => cmp(sv, dv)));\n this.value.set(kept as T & T[]);\n } else {\n const raw = this.value();\n if (raw != null && !Array.isArray(raw) && disabledValues.some((dv) => cmp(raw, dv))) {\n return;\n }\n this.value.set(null);\n }\n }\n\n onClear(event: MouseEvent): void {\n event.stopPropagation();\n this.clearSelection();\n this.triggerEl()?.nativeElement.focus();\n }\n\n // -----------------------------------------------------------------------\n // Section toggle\n // -----------------------------------------------------------------------\n\n toggleSection(sectionTitle: string): void {\n if (!this.multiple()) return;\n const section = this.flatItems().find(\n (i): i is FlatSection => isFlatSection(i) && i.title === sectionTitle\n );\n if (section?.disabled) return;\n const cmp = this.compareWith();\n const childValues = this.flatItems()\n .filter(\n (i): i is FlatOption<T> => isFlatOption(i) && i.sectionTitle === sectionTitle && !i.disabled\n )\n .map((i) => i.value);\n\n const current = this._currentValueAsArray();\n let next: T[];\n if (this.isSectionFullySelected(sectionTitle)) {\n next = current.filter((sv) => !childValues.some((cv) => cmp(sv, cv)));\n } else {\n const toAdd = childValues.filter((cv) => !current.some((sv) => cmp(sv, cv)));\n next = [...current, ...toAdd];\n }\n this.value.set(next as T & T[]);\n }\n\n // -----------------------------------------------------------------------\n // Search\n // -----------------------------------------------------------------------\n\n onSearchInput(event: Event): void {\n const query = (event.target as HTMLInputElement).value;\n this.searchQuery.set(query);\n this.searched.emit(query);\n }\n\n onSearchKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.stopPropagation();\n this.onPanelKeydown(event);\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n this.triggerEl()?.nativeElement.focus();\n }\n }\n\n // -----------------------------------------------------------------------\n // Overlay events\n // -----------------------------------------------------------------------\n\n onOverlayOutsideClick(): void {\n this.close();\n }\n\n onOverlayAttached(): void {\n this._updateTriggerWidth();\n if (this.searchable()) {\n // viewChild can't resolve elements inside CDK overlay ng-template\n // (they live in a separate view container). Query the DOM directly.\n setTimeout(() => {\n const input = this._doc.querySelector<HTMLInputElement>(\n '.mc-combobox__listbox .mc-option-listbox__search input'\n );\n input?.focus();\n });\n }\n }\n\n /**\n * Zoneless fix for the virtual-scroll viewport.\n *\n * On Angular/CDK 22 in zoneless mode the viewport never recomputes its\n * rendered range while the user scrolls: `onContentScrolled` doesn't refresh\n * the window and the content transform stays frozen, so the panel \"bounces\"\n * and never reaches the bottom of the list. (CDK 21 used a different path and\n * was unaffected — hence Storybook on 21 looked fine while the 22 consumer\n * bounced.) Calling the viewport's public `checkViewportSize()` re-measures\n * and re-renders the correct window; it is idempotent at a valid scroll\n * position (verified — repeated calls don't move the scroll), so there is no\n * feedback loop. The handler receives the viewport through the `#viewport`\n * template reference, which resolves correctly even though the viewport lives\n * in the overlay portal (unlike `viewChild`).\n *\n * Throttled to ~one re-measure per frame (16 ms). Browsers already coalesce\n * scroll events to roughly one per animation frame — even for a high-frequency\n * trackpad / momentum scroll — but the throttle is a defensive cap so this\n * synchronous reflow can never be called in a tight burst. `checkViewportSize()`\n * is idempotent at a valid scroll offset (verified on the real CDK 22 zoneless\n * runtime — repeated calls don't move the scroll), so it never fights the\n * scroll position and there is no feedback loop.\n */\n onViewportScroll(viewport: CdkVirtualScrollViewport): void {\n const now = performance.now();\n if (now - this._lastViewportSync < 16) {\n return;\n }\n this._lastViewportSync = now;\n viewport.checkViewportSize();\n }\n\n /** Coerce the current value into an array (safe for .some/.filter/.every). */\n private _currentValueAsArray(): T[] {\n const raw = this.value();\n if (Array.isArray(raw)) return raw;\n if (raw != null && raw !== '') return [raw];\n return [];\n }\n\n // -----------------------------------------------------------------------\n // ControlValueAccessor\n // -----------------------------------------------------------------------\n\n writeValue(val: T | T[] | null): void {\n this.value.set(val);\n }\n\n registerOnChange(fn: (val: T | T[] | null) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabledFromForm.set(isDisabled);\n }\n\n // -----------------------------------------------------------------------\n // Template helpers\n // -----------------------------------------------------------------------\n\n readonly isFlatSection = isFlatSection;\n readonly isFlatOption = isFlatOption;\n readonly itemSizePx = ITEM_SIZE_PX;\n readonly minBufferPx = MIN_BUFFER_PX;\n readonly maxBufferPx = MAX_BUFFER_PX;\n\n trackByFlatItem(_index: number, item: FlatItem<T>): string {\n if (isFlatSection(item)) return `section-${item.title}`;\n return `option-${item.label}`;\n }\n\n /** Set of currently selected values, recomputed reactively for OnPush */\n readonly selectedValues = computed<T[]>(() => {\n const val = this.value();\n if (val == null) return [];\n if (Array.isArray(val)) return val;\n return [val];\n });\n\n /** Whether a given option value is currently selected */\n isOptionSelected(optionValue: T): boolean {\n const cmp = this.compareWith();\n return this.selectedValues().some((v) => cmp(v, optionValue));\n }\n\n // -----------------------------------------------------------------------\n // Private helpers\n // -----------------------------------------------------------------------\n\n private _updateTriggerWidth(): void {\n const el = this.triggerEl()?.nativeElement;\n if (el) {\n this.triggerWidth.set(el.closest('.mc-combobox__input')?.clientWidth ?? el.clientWidth);\n }\n }\n}\n","<!-- ====================================================================== -->\n<!-- TRIGGER -->\n<!-- ====================================================================== -->\n<div [class]=\"wrapperClasses()\">\n <div class=\"mc-combobox__input\">\n <button\n #triggerBtn\n [id]=\"comboboxId + '-trigger'\"\n type=\"button\"\n class=\"mc-combobox__control\"\n role=\"combobox\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n [disabled]=\"isEffectivelyDisabled()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"\n focusedIndex() >= 0 ? comboboxId + '-opt-' + focusedIndex() : null\n \"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-invalid]=\"invalid() || null\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (displayValue()) {\n <span class=\"mc-combobox__value\">{{ displayValue() }}</span>\n } @else {\n <span class=\"mc-combobox__placeholder\">{{ placeholder() }}</span>\n }\n </button>\n\n <!-- Counter (compact + multiple) -->\n @if (multiple() && compact() && selectedCount() > 0) {\n <span [id]=\"comboboxId + '-counter'\" class=\"mc-combobox__counter\" aria-live=\"polite\">\n {{ selectedCount() }} {{ selectedSuffix() }}\n </span>\n }\n\n <!-- Clear button -->\n @if (showClear()) {\n <button\n [id]=\"comboboxId + '-clear'\"\n type=\"button\"\n class=\"mc-combobox__clear\"\n [attr.aria-label]=\"clearAriaLabel()\"\n (click)=\"onClear($event)\"\n >\n <CrossCircleFilled24 />\n </button>\n }\n\n <!-- Trigger loader -->\n @if (loading()) {\n <moz-loader\n [id]=\"comboboxId + '-trigger-loader'\"\n size=\"s\"\n [appearance]=\"'accent'\"\n class=\"mc-combobox__loader\"\n />\n }\n\n <!-- Chevron -->\n <button\n [id]=\"comboboxId + '-chevron'\"\n type=\"button\"\n class=\"mc-combobox__icon\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n (click)=\"toggle()\"\n >\n <ChevronDown24 />\n </button>\n </div>\n</div>\n\n<!-- ====================================================================== -->\n<!-- OVERLAY / DROPDOWN -->\n<!-- ====================================================================== -->\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayWidth]=\"triggerWidth()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"mc-combobox-backdrop\"\n (backdropClick)=\"onOverlayOutsideClick()\"\n (attach)=\"onOverlayAttached()\"\n>\n <div\n [id]=\"comboboxId + '-panel'\"\n class=\"mc-option-listbox mc-listbox__content mc-combobox__listbox\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n <!-- Search -->\n @if (searchable()) {\n <div [id]=\"comboboxId + '-search'\" class=\"mc-option-listbox__search\">\n <Search24 icon />\n <input\n #searchInput\n [id]=\"comboboxId + '-search-input'\"\n moz-text-input\n type=\"text\"\n [placeholder]=\"searchPlaceholder()\"\n autocomplete=\"off\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"listboxId\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n [size]=\"'s'\"\n />\n </div>\n <hr class=\"mc-option-listbox__separator\" />\n }\n\n <!-- Actions (multiple only) -->\n @if (showActions() && multiple()) {\n <div [id]=\"comboboxId + '-actions'\" class=\"mc-option-listbox__actions\">\n <button\n [id]=\"comboboxId + '-select-all'\"\n moz-button\n type=\"button\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n [appearance]=\"'accent'\"\n (click)=\"selectAll()\"\n >\n {{ selectAllText() }}\n </button>\n <button\n [id]=\"comboboxId + '-clear-selection'\"\n moz-button\n type=\"button\"\n [size]=\"'s'\"\n [ghost]=\"true\"\n (click)=\"clearSelection()\"\n >\n {{ clearText() }}\n </button>\n </div>\n <hr class=\"mc-option-listbox__separator\" />\n }\n\n <!-- Listbox with virtual scroll -->\n <div\n #listbox\n role=\"listbox\"\n [id]=\"listboxId\"\n class=\"mc-option-listbox__list mc-combobox__virtual-host\"\n [attr.aria-multiselectable]=\"multiple() || null\"\n [attr.aria-label]=\"ariaLabel() ?? 'Options'\"\n [attr.aria-busy]=\"loading() || null\"\n [attr.aria-activedescendant]=\"\n focusedIndex() >= 0 ? comboboxId + '-opt-' + focusedIndex() : null\n \"\n tabindex=\"-1\"\n >\n @if (loading()) {\n <div [id]=\"comboboxId + '-loading'\" class=\"mc-combobox__loading\" role=\"status\">\n <moz-loader size=\"s\" [appearance]=\"'accent'\" [text]=\"loadingText()\" />\n </div>\n } @else if (filteredItems().length === 0 && showNoResultText() && searchQuery().length > 0) {\n <div\n [id]=\"comboboxId + '-empty'\"\n class=\"mc-option-listbox__empty\"\n role=\"presentation\"\n aria-live=\"polite\"\n >\n {{ noResultsText() }}\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n #viewport\n [id]=\"comboboxId + '-viewport'\"\n [itemSize]=\"itemSizePx\"\n [minBufferPx]=\"minBufferPx\"\n [maxBufferPx]=\"maxBufferPx\"\n [style.height.px]=\"viewportHeight()\"\n class=\"mc-combobox__viewport\"\n (scroll)=\"onViewportScroll(viewport)\"\n >\n <ng-container\n *cdkVirtualFor=\"let item of filteredItems(); let i = index; trackBy: trackByFlatItem\"\n >\n <!-- Section header -->\n @if (isFlatSection(item)) {\n <div\n [id]=\"comboboxId + '-section-' + i\"\n class=\"mc-option-listbox__item mc-option-listbox__item--section\"\n [class.mc-option-listbox__item--selectable]=\"\n item.checkable && multiple() && !item.disabled\n \"\n [class.mc-option-listbox__item--disabled]=\"item.disabled\"\n [class.mc-option-listbox__item--selected]=\"\n item.checkable &&\n multiple() &&\n (isSectionFullySelected(item.title) || isSectionPartiallySelected(item.title))\n \"\n role=\"presentation\"\n (click)=\"\n item.checkable && multiple() && !item.disabled ? toggleSection(item.title) : null\n \"\n >\n <div class=\"mc-option-listbox__label\">\n <div class=\"mc-option-listbox__content\">\n <span class=\"mc-option-listbox__section-title\">{{ item.title }}</span>\n </div>\n <div class=\"mc-option-listbox__spacer\"></div>\n @if (item.checkable && multiple()) {\n <moz-checkbox\n class=\"mc-option-listbox__checkbox\"\n [id]=\"comboboxId + '-section-cb-' + i\"\n [ngModel]=\"isSectionFullySelected(item.title)\"\n [indeterminate]=\"isSectionPartiallySelected(item.title)\"\n [disabled]=\"!!item.disabled\"\n />\n }\n </div>\n </div>\n }\n\n <!-- Option -->\n @if (isFlatOption(item)) {\n <div\n role=\"option\"\n [id]=\"comboboxId + '-opt-' + i\"\n [attr.aria-selected]=\"isOptionSelected($any(item.value))\"\n [attr.aria-disabled]=\"item.disabled || null\"\n class=\"mc-option-listbox__item\"\n [class.mc-option-listbox__item--selectable]=\"!item.disabled\"\n [class.mc-option-listbox__item--disabled]=\"item.disabled\"\n [class.mc-option-listbox__item--selected]=\"isOptionSelected($any(item.value))\"\n [class.mc-option-listbox__item--active]=\"focusedIndex() === i\"\n (click)=\"!item.disabled && selectOption($any(item.value))\"\n (mouseenter)=\"focusedIndex.set(i)\"\n >\n <div class=\"mc-option-listbox__label\">\n @if (item.icon) {\n <div class=\"mc-option-listbox__prepend\">\n <span class=\"mc-option-listbox__icon\">{{ item.icon }}</span>\n </div>\n }\n <div class=\"mc-option-listbox__content\">\n <span class=\"mc-option-listbox__text\">{{ item.label }}</span>\n @if (item.content) {\n <span class=\"mc-option-listbox__additional\">{{ item.content }}</span>\n }\n </div>\n <div class=\"mc-option-listbox__spacer\"></div>\n\n <!-- Selection indicator -->\n @if (multiple()) {\n <moz-checkbox\n class=\"mc-option-listbox__checkbox\"\n [id]=\"comboboxId + '-cb-' + i\"\n [ngModel]=\"isOptionSelected($any(item.value))\"\n [disabled]=\"!!item.disabled\"\n />\n } @else {\n <CheckCircle24 class=\"mc-option-listbox__selection-icon\" />\n }\n </div>\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n </div>\n</ng-template>\n","import { ComponentHarness, TestKey } from '@angular/cdk/testing';\n\n/**\n * Harness for a single option inside the combobox dropdown.\n */\nexport class MozComboboxOptionHarness extends ComponentHarness {\n static hostSelector = '.mc-option-listbox__item:not(.mc-option-listbox__item--section)';\n\n async getLabel(): Promise<string> {\n const text = await this.locatorForOptional('.mc-option-listbox__text')();\n return text ? text.text() : '';\n }\n\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-selected')) === 'true';\n }\n\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n async select(): Promise<void> {\n const host = await this.host();\n await host.click();\n }\n}\n\n/**\n * Harness for the McCombobox component.\n *\n * Usage:\n * ```ts\n * const harness = await loader.getHarness(McComboboxHarness);\n * await harness.open();\n * await harness.selectOption({ label: 'Option 1' });\n * expect(await harness.getDisplayValue()).toBe('Option 1');\n * ```\n */\nexport class MozComboboxHarness extends ComponentHarness {\n static hostSelector = '.mc-combobox';\n\n // -- Locators ---------------------------------------------------------------\n\n private _getTrigger = this.locatorFor('[role=\"combobox\"]');\n private _getClearButton = this.locatorForOptional('.mc-combobox__clear');\n private _getSearchInput = this.documentRootLocatorFactory().locatorForOptional(\n '.mc-option-listbox__search input[moz-text-input]',\n );\n\n // -- Open / Close -----------------------------------------------------------\n\n async open(): Promise<void> {\n if (await this.isOpen()) return;\n const trigger = await this._getTrigger();\n await trigger.click();\n }\n\n async close(): Promise<void> {\n if (!(await this.isOpen())) return;\n const trigger = await this._getTrigger();\n await trigger.sendKeys(TestKey.ESCAPE);\n }\n\n async isOpen(): Promise<boolean> {\n const trigger = await this._getTrigger();\n return (await trigger.getAttribute('aria-expanded')) === 'true';\n }\n\n // -- Value ------------------------------------------------------------------\n\n async getDisplayValue(): Promise<string> {\n const trigger = await this._getTrigger();\n return trigger.text();\n }\n\n async getPlaceholder(): Promise<string> {\n const placeholder = await this.locatorForOptional('.mc-combobox__placeholder')();\n return placeholder ? placeholder.text() : '';\n }\n\n // -- Options ----------------------------------------------------------------\n\n async getOptions(): Promise<MozComboboxOptionHarness[]> {\n await this.open();\n return this.documentRootLocatorFactory().locatorForAll(MozComboboxOptionHarness)();\n }\n\n async selectOption(filter: { label: string }): Promise<void> {\n await this.open();\n const options = await this.getOptions();\n for (const opt of options) {\n if ((await opt.getLabel()) === filter.label) {\n await opt.select();\n return;\n }\n }\n throw new Error(`Option with label \"${filter.label}\" not found`);\n }\n\n // -- Actions ----------------------------------------------------------------\n\n async clear(): Promise<void> {\n const clearBtn = await this._getClearButton();\n if (!clearBtn) throw new Error('Clear button not found. Is clearable enabled?');\n await clearBtn.click();\n }\n\n async search(query: string): Promise<void> {\n await this.open();\n const input = await this._getSearchInput();\n if (!input) throw new Error('Search input not found. Is searchable enabled?');\n await input.clear();\n await input.sendKeys(query);\n }\n\n // -- State checks -----------------------------------------------------------\n\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mc-combobox--disabled');\n }\n\n async isInvalid(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mc-combobox--invalid');\n }\n\n async isReadonly(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mc-combobox--readonly');\n }\n\n async getSelectedCount(): Promise<number> {\n const counter = await this.locatorForOptional('.mc-combobox__counter')();\n if (!counter) return 0;\n const text = await counter.text();\n const match = text.match(/(\\d+)/);\n return match ? parseInt(match[1], 10) : 0;\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { map, Observable, of, take, tap } from 'rxjs';\nimport { FlatNode, LoadChildrenFn, TreeNode } from '../models/tree.model';\n\n@Injectable()\nexport class TreeStateService<T = unknown> {\n readonly expandedIds = signal<Set<string | number>>(new Set());\n readonly loadingIds = signal<Set<string | number>>(new Set());\n readonly internalNodes = signal<TreeNode<T>[]>([]);\n readonly loadChildrenFn = signal<LoadChildrenFn<T> | null>(null);\n\n /**\n * Parent IDs for which children have been patched in (via lazy-load).\n * Grows monotonically — consumers diff against their own \"processed\" set.\n * Not emitted for statically-populated children present at init.\n */\n readonly loadedParentIds = signal<ReadonlySet<string | number>>(new Set());\n\n readonly flatVisibleNodes = computed<FlatNode<T>[]>(() => {\n const result: FlatNode<T>[] = [];\n this._flatten(this.internalNodes(), result, 0, null);\n return result;\n });\n\n private _flatten(\n nodes: TreeNode<T>[],\n result: FlatNode<T>[],\n depth: number,\n parentId: string | number | null\n ): void {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n result.push({\n node,\n depth,\n parentId,\n siblingCount: nodes.length,\n posInSet: i + 1,\n });\n if (this.expandedIds().has(node.id) && node.children && node.children.length > 0) {\n this._flatten(node.children, result, depth + 1, node.id);\n }\n }\n }\n\n setExpanded(ids: Set<string | number>): void {\n this.expandedIds.set(new Set(ids));\n }\n\n toggleExpanded(id: string | number): void {\n this.expandedIds.update((current) => {\n const next = new Set(current);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n }\n\n expandAndLoad(node: TreeNode<T>): Observable<void> {\n const wasExpanded = this.expandedIds().has(node.id);\n this.toggleExpanded(node.id);\n if (!wasExpanded) {\n return this.loadChildrenFor(node).pipe(map(() => undefined));\n }\n return of(undefined);\n }\n\n /**\n * Loads a node's children on demand when they haven't been loaded yet.\n * Idempotent: a no-op (emits `[]`) when there is no `loadChildrenFn`, the\n * node is already loading, or its children are already present. This is the\n * single load primitive shared by the click-driven `expandAndLoad` and the\n * declarative auto-load effect in `MozTreeComponent` — so expanding a node\n * by clicking it and by writing to `expandedIds` go through the same path.\n */\n loadChildrenFor(node: TreeNode<T>): Observable<TreeNode<T>[]> {\n const loadFn = this.loadChildrenFn();\n const resolved = this.findNode(node.id) ?? node;\n if (!loadFn || this.loadingIds().has(node.id) || resolved.children !== undefined) {\n return of([]);\n }\n this.addLoading(node.id);\n return (loadFn as LoadChildrenFn)(node as TreeNode).pipe(\n take(1),\n tap((children) => {\n this.patchChildren(node.id, children as TreeNode<T>[]);\n this.removeLoading(node.id);\n })\n ) as unknown as Observable<TreeNode<T>[]>;\n }\n\n addLoading(id: string | number): void {\n this.loadingIds.update((s) => new Set([...s, id]));\n }\n\n removeLoading(id: string | number): void {\n this.loadingIds.update((s) => {\n const next = new Set(s);\n next.delete(id);\n return next;\n });\n }\n\n patchChildren(nodeId: string | number, children: TreeNode<T>[]): void {\n this.internalNodes.update((nodes) => this._patchNode(nodes, nodeId, children));\n this.loadedParentIds.update((set) => {\n const next = new Set(set);\n next.add(nodeId);\n return next;\n });\n }\n\n private _patchNode(\n nodes: TreeNode<T>[],\n targetId: string | number,\n children: TreeNode<T>[]\n ): TreeNode<T>[] {\n return nodes.map((n) => {\n if (n.id === targetId) {\n return { ...n, children };\n }\n if (n.children) {\n return { ...n, children: this._patchNode(n.children, targetId, children) };\n }\n return n;\n });\n }\n\n findNode(nodeId: string | number): TreeNode<T> | null {\n return this._findNodeRecursive(this.internalNodes(), nodeId);\n }\n\n private _findNodeRecursive(nodes: TreeNode<T>[], id: string | number): TreeNode<T> | null {\n for (const node of nodes) {\n if (node.id === id) return node;\n if (node.children) {\n const found = this._findNodeRecursive(node.children as TreeNode<T>[], id);\n if (found) return found;\n }\n }\n return null;\n }\n\n findParentId(nodeId: string | number): string | number | null {\n const flat = this.flatVisibleNodes();\n const entry = flat.find((f) => f.node.id === nodeId);\n return entry?.parentId ?? null;\n }\n}\n","import { computed, inject, Injectable, signal } from '@angular/core';\nimport { TreeNode, TreeSelectionMode } from '../models/tree.model';\nimport { TreeStateService } from './tree-state';\n\n@Injectable()\nexport class TreeSelectionService<T = unknown> {\n private readonly stateService = inject(TreeStateService);\n readonly selectedIds = signal<Set<string | number>>(new Set());\n readonly selectionMode = signal<TreeSelectionMode>('none');\n readonly rootNodes = signal<TreeNode<T>[]>([]);\n readonly canSelectFn = signal<((node: TreeNode<T>) => boolean) | null>(null);\n\n setSelectedIds(ids: Set<string | number>): void {\n const pred = this.canSelectFn();\n if (!pred) {\n this.selectedIds.set(new Set(ids));\n return;\n }\n const next = new Set<string | number>();\n for (const id of ids) {\n const node = this._resolveNode({ id } as TreeNode<T>);\n if (pred(node)) next.add(id);\n }\n this.selectedIds.set(next);\n }\n\n setMode(mode: TreeSelectionMode): void {\n this.selectionMode.set(mode);\n }\n\n setRootNodes(nodes: TreeNode<T>[]): void {\n this.rootNodes.set(nodes);\n }\n\n setCanSelect(fn: ((node: TreeNode<T>) => boolean) | null): void {\n this.canSelectFn.set(fn);\n }\n\n canSelect(node: TreeNode<T>): boolean {\n const pred = this.canSelectFn();\n return pred ? pred(node) : true;\n }\n\n isSelected(id: string | number): boolean {\n return this.selectedIds().has(id);\n }\n\n /**\n * A node is considered disabled only by its own `disabled` flag — a disabled\n * parent does not propagate the state to its descendants. Children of a\n * disabled parent remain individually interactable; the parent itself just\n * has its bulk \"toggle all\" action locked. This mirrors the combobox's\n * disabled-section semantics.\n */\n isDisabled(node: TreeNode<T>): boolean {\n return !!node.disabled;\n }\n\n /**\n * A node is indeterminate when it has loaded children AND at least one\n * descendant is selected without the node being fully checked. Disabled\n * descendants count so a pre-selected disabled leaf still surfaces on the\n * parent (useful when the parent itself is also disabled).\n */\n isIndeterminate(node: TreeNode<T>): boolean {\n if (this.isCheckedComputed(node)) return false;\n const resolved = this._resolveNode(node);\n const allLeaves = this._collectLeafIds(resolved, { includeDisabled: true });\n if (allLeaves.length === 0) return false;\n return allLeaves.some((id) => this.selectedIds().has(id));\n }\n\n /**\n * A node is checked when:\n * - Leaf node (no children or children not loaded): its ID is in selectedIds\n * - Parent with loaded children: ALL leaf descendants are selected\n */\n isCheckedComputed(node: TreeNode<T>): boolean {\n if (this.selectionMode() === 'radio') {\n return this.selectedIds().has(node.id);\n }\n const resolved = this._resolveNode(node);\n const leaves = this._collectLeafIds(resolved);\n // Node is a leaf or has no loaded children\n if (leaves.length === 0) {\n return this.selectedIds().has(node.id);\n }\n return leaves.every((id) => this.selectedIds().has(id));\n }\n\n /**\n * Select a node: add all leaf descendant IDs (or the node's own ID if leaf).\n */\n selectNode(node: TreeNode<T>): void {\n if (!this.canSelect(node)) return;\n if (this.selectionMode() === 'radio') {\n this.selectedIds.set(new Set([node.id]));\n return;\n }\n const resolved = this._resolveNode(node);\n this.selectedIds.update((current) => {\n const next = new Set(current);\n const leaves = this._collectLeafIds(resolved);\n if (leaves.length === 0) {\n // Node is a leaf\n if (!node.disabled) next.add(node.id);\n } else {\n leaves.forEach((id) => next.add(id));\n }\n return next;\n });\n }\n\n /**\n * Deselect a node: remove all leaf descendant IDs (or the node's own ID if leaf).\n * Also remove the node's own ID in case it's in the set from external sources.\n */\n deselectNode(node: TreeNode<T>): void {\n if (this.selectionMode() === 'radio') {\n this.selectedIds.update((current) => {\n const next = new Set(current);\n next.delete(node.id);\n return next;\n });\n return;\n }\n const resolved = this._resolveNode(node);\n this.selectedIds.update((current) => {\n const next = new Set(current);\n // Always remove the node itself\n next.delete(node.id);\n // Remove all known descendants (leaf + parents)\n this._collectAllDescendantIds(resolved).forEach((id) => next.delete(id));\n return next;\n });\n }\n\n toggleNode(node: TreeNode<T>): void {\n if (this.isCheckedComputed(node)) {\n this.deselectNode(node);\n } else {\n this.selectNode(node);\n }\n }\n\n /**\n * Called when children are loaded for a node.\n * - If parent ID was in selectedIds: replace it with children's leaf IDs (propagate down).\n * - If parent ID was NOT in selectedIds: remove any orphan children IDs that\n * may have been left from a prior bulk operation (e.g. Select All → deselect parent).\n */\n propagateOnChildrenLoaded(parentId: string | number): void {\n const parent = this._resolveNode({ id: parentId } as TreeNode<T>);\n if (!parent || !parent.children || parent.children.length === 0) return;\n\n const selected = this.selectedIds();\n const next = new Set(selected);\n\n if (selected.has(parentId)) {\n // Parent was selected → replace with leaf children\n next.delete(parentId);\n for (const child of parent.children) {\n if (!(child as TreeNode<T>).disabled) {\n const childLeaves = this._collectLeafIds(this._resolveNode(child as TreeNode<T>));\n if (childLeaves.length === 0) {\n next.add(child.id);\n } else {\n childLeaves.forEach((id) => next.add(id));\n }\n }\n }\n } else {\n // Parent was NOT selected → clean up any orphan descendant IDs\n this._collectAllDescendantIds(parent).forEach((id) => next.delete(id));\n }\n\n this.selectedIds.set(next);\n }\n\n /**\n * Collect leaf-level IDs (terminal nodes that have no loaded children).\n * Returns empty array if the node itself is a leaf.\n * When `includeDisabled` is true, disabled descendants are also collected —\n * used by the indeterminate computation so pre-selected disabled leaves\n * count toward a parent's state.\n */\n private _collectLeafIds(\n node: TreeNode<T>,\n opts: { includeDisabled?: boolean } = {}\n ): Array<string | number> {\n const resolved = this._resolveNode(node);\n if (!resolved.children || resolved.children.length === 0) {\n return [];\n }\n const ids: Array<string | number> = [];\n for (const child of resolved.children) {\n if (!opts.includeDisabled && (child as TreeNode<T>).disabled) continue;\n const resolvedChild = this._resolveNode(child as TreeNode<T>);\n const childLeaves = this._collectLeafIds(resolvedChild, opts);\n if (childLeaves.length === 0) {\n // This child is a leaf\n ids.push(resolvedChild.id);\n } else {\n ids.push(...childLeaves);\n }\n }\n return ids;\n }\n\n /**\n * Collect ALL descendant IDs (both parents and leaves) for thorough cleanup on deselect.\n */\n private _collectAllDescendantIds(node: TreeNode<T>): Array<string | number> {\n const resolved = this._resolveNode(node);\n const ids: Array<string | number> = [];\n if (!resolved.children) return ids;\n for (const child of resolved.children) {\n const resolvedChild = this._resolveNode(child as TreeNode<T>);\n ids.push(resolvedChild.id);\n ids.push(...this._collectAllDescendantIds(resolvedChild));\n }\n return ids;\n }\n\n readonly allSelectedIds = computed(() => new Set(this.selectedIds()));\n\n private _resolveNode(node: TreeNode<T>): TreeNode<T> {\n return (this.stateService.findNode(node.id) as TreeNode<T>) ?? node;\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { TreeStateService } from './tree-state';\nimport { TreeSelectionService } from './tree-selection';\nimport { FlatNode, TreeNode } from '../models/tree.model';\n\n@Injectable()\nexport class TreeKeyboardService<T = unknown> {\n private readonly state = inject<TreeStateService<T>>(TreeStateService);\n private readonly selection = inject<TreeSelectionService<T>>(TreeSelectionService);\n\n readonly focusedNodeId = signal<string | number | null>(null);\n\n initFocus(): void {\n if (this.focusedNodeId() !== null) return;\n const flat = this.state.flatVisibleNodes();\n if (flat.length > 0) {\n this.focusedNodeId.set(flat[0].node.id);\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const flat = this.state.flatVisibleNodes();\n if (flat.length === 0) return;\n\n const focusedId = this.focusedNodeId();\n const currentIndex = focusedId !== null ? flat.findIndex((f) => f.node.id === focusedId) : -1;\n\n if (currentIndex === -1 && !['Home', 'End'].includes(event.key)) return;\n\n const current: FlatNode<T> | undefined = flat[currentIndex];\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n const next = flat[currentIndex + 1];\n if (next) this._setFocusAndScroll(next.node.id);\n break;\n }\n\n case 'ArrowUp': {\n event.preventDefault();\n const prev = flat[currentIndex - 1];\n if (prev) this._setFocusAndScroll(prev.node.id);\n break;\n }\n\n case 'ArrowRight': {\n event.preventDefault();\n if (!current) break;\n const isExpanded = this.state.expandedIds().has(current.node.id);\n\n if (this._hasChildren(current.node) && !isExpanded) {\n this.state.expandAndLoad(current.node as TreeNode<T>).subscribe();\n } else if (isExpanded) {\n const firstChild = flat[currentIndex + 1];\n if (firstChild && firstChild.depth > current.depth) {\n this._setFocusAndScroll(firstChild.node.id);\n }\n }\n break;\n }\n\n case 'ArrowLeft': {\n event.preventDefault();\n if (!current) break;\n const isExpanded = this.state.expandedIds().has(current.node.id);\n\n if (isExpanded) {\n this.state.toggleExpanded(current.node.id);\n } else if (current.parentId !== null) {\n this._setFocusAndScroll(current.parentId);\n }\n break;\n }\n\n case 'Enter': {\n event.preventDefault();\n if (!current) break;\n if (this._hasChildren(current.node)) {\n this.state.expandAndLoad(current.node as TreeNode<T>).subscribe();\n }\n break;\n }\n\n case ' ': {\n event.preventDefault();\n if (!current) break;\n if (this.selection.selectionMode() !== 'none') {\n this.selection.toggleNode(current.node as unknown as TreeNode<T>);\n }\n break;\n }\n\n case '*': {\n event.preventDefault();\n if (!current) break;\n this._expandSiblings(flat, current);\n break;\n }\n\n case 'Home': {\n event.preventDefault();\n this._setFocusAndScroll(flat[0].node.id);\n break;\n }\n\n case 'End': {\n event.preventDefault();\n this._setFocusAndScroll(flat[flat.length - 1].node.id);\n break;\n }\n }\n }\n\n private _setFocusAndScroll(id: string | number): void {\n this.focusedNodeId.set(id);\n requestAnimationFrame(() => {\n const el = document.querySelector<HTMLElement>(`[data-tree-node-id=\"${id}\"]`);\n el?.focus({ preventScroll: false });\n el?.scrollIntoView({ block: 'nearest' });\n });\n }\n\n private _hasChildren(node: FlatNode<T>['node']): boolean {\n return (\n node.hasChildren !== false &&\n (node.children === undefined || node.children.length > 0 || node.hasChildren === true)\n );\n }\n\n private _expandSiblings(flat: readonly FlatNode<T>[], current: FlatNode<T>): void {\n const siblings = flat.filter(\n (f) => f.depth === current.depth && f.parentId === current.parentId\n );\n for (const sibling of siblings) {\n if (this._hasChildren(sibling.node) && !this.state.expandedIds().has(sibling.node.id)) {\n this.state.expandAndLoad(sibling.node as TreeNode<T>).subscribe();\n }\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MozCheckboxComponent } from '../../../checkbox/checkbox';\nimport { MozRadioComponent } from '../../../radio/radio';\nimport { MozLoaderComponent } from '../../../loader/loader';\nimport { ChevronDown20, ChevronRight20 } from '@mozaic-ds/icons-angular';\nimport {\n LoadChildrenFn,\n TreeNode,\n TreeNodeContext,\n TreeSelectionMode,\n} from '../../models/tree.model';\nimport { TreeStateService } from '../../services/tree-state';\nimport { TreeSelectionService } from '../../services/tree-selection';\nimport { TreeKeyboardService } from '../../services/tree-keyboard';\n\n@Component({\n selector: 'moz-tree-node',\n templateUrl: './tree-node.html',\n styleUrls: ['./tree-node.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: block' },\n imports: [\n FormsModule,\n NgTemplateOutlet,\n MozCheckboxComponent,\n MozRadioComponent,\n MozLoaderComponent,\n ChevronDown20,\n ChevronRight20,\n ],\n})\nexport class MozTreeNodeComponent<T = unknown> {\n protected readonly stateService = inject(TreeStateService);\n protected readonly selectionService = inject(TreeSelectionService);\n protected readonly keyboardService = inject(TreeKeyboardService);\n\n readonly node = input.required<TreeNode<T>>();\n readonly depth = input<number>(0);\n readonly selectionMode = input<TreeSelectionMode>('none');\n readonly indentSize = input<number>(24);\n readonly nodeTemplate = input<TemplateRef<TreeNodeContext<T>> | null>(null);\n readonly nodeTemplates = input<Record<string, TemplateRef<TreeNodeContext<T>>> | null>(null);\n readonly loadChildren = input<LoadChildrenFn<T> | null>(null);\n readonly ancestors = input<TreeNode<T>[]>([]);\n readonly flat = input<boolean>(false);\n readonly noResultText = input<string>('No result found');\n readonly expandChange = output<string | number>();\n readonly selectionChange = output<Set<string | number>>();\n\n readonly isExpanded = computed(() => this.stateService.expandedIds().has(this.node().id));\n readonly isLoading = computed(() => this.stateService.loadingIds().has(this.node().id));\n readonly isDisabled = computed(() => this.selectionService.isDisabled(this.node()));\n readonly isSelected = computed(() => this.selectionService.isCheckedComputed(this.node()));\n readonly isIndeterminate = computed(() => this.selectionService.isIndeterminate(this.node()));\n readonly isFocused = computed(() => this.keyboardService.focusedNodeId() === this.node().id);\n readonly isSelectable = computed(() => {\n if (this.selectionMode() === 'none') return false;\n return this.selectionService.canSelect(this.node());\n });\n\n readonly hasChildren = computed(() => {\n const node = this.node();\n return (\n node.hasChildren !== false &&\n (node.children === undefined || node.children.length > 0 || node.hasChildren === true)\n );\n });\n\n readonly resolvedTemplate = computed<TemplateRef<TreeNodeContext<T>> | null>(() => {\n const type = this.node().type;\n if (type) {\n const templates = this.nodeTemplates();\n if (templates?.[type]) return templates[type];\n }\n return this.nodeTemplate();\n });\n\n readonly templateContext = computed<TreeNodeContext<T>>(() => ({\n $implicit: this.node(),\n depth: this.depth(),\n isExpanded: this.isExpanded(),\n isSelected: this.isSelected(),\n isIndeterminate: this.isIndeterminate(),\n isLoading: this.isLoading(),\n isDisabled: this.isDisabled(),\n }));\n\n readonly indentPx = computed(() => this.depth() * this.indentSize());\n\n readonly ancestorsWithSelf = computed<TreeNode<T>[]>(() => [...this.ancestors(), this.node()]);\n\n readonly radioName = 'moz-tree-radio-group';\n\n readonly resolvedChildren = computed<TreeNode<T>[]>(() => {\n const internalNode = this._findNode(\n this.stateService.internalNodes() as TreeNode<T>[],\n this.node().id\n );\n return (internalNode?.children ?? this.node().children ?? []) as TreeNode<T>[];\n });\n\n onHeaderClick(): void {\n this.keyboardService.focusedNodeId.set(this.node().id);\n if (this.hasChildren()) {\n this.onToggleExpand();\n }\n }\n\n onToggleExpand(): void {\n this.stateService.expandAndLoad(this.node() as TreeNode).subscribe();\n this.expandChange.emit(this.node().id);\n }\n\n onCheckboxChange(event: Event): void {\n if (this.isDisabled()) return;\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this.selectionService.selectNode(this.node());\n } else {\n this.selectionService.deselectNode(this.node());\n }\n this.selectionChange.emit(this.selectionService.allSelectedIds());\n }\n\n onRadioChange(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n if (!checked || this.isDisabled()) return;\n this.selectionService.selectNode(this.node());\n this.selectionChange.emit(this.selectionService.allSelectedIds());\n }\n\n private _findNode(nodes: TreeNode<T>[], id: string | number): TreeNode<T> | null {\n for (const node of nodes) {\n if (node.id === id) return node;\n if (node.children) {\n const found = this._findNode(node.children as TreeNode<T>[], id);\n if (found) return found;\n }\n }\n return null;\n }\n}\n","<li\n class=\"tree-node\"\n [class.tree-node--selected]=\"isSelected()\"\n [class.tree-node--disabled]=\"isDisabled()\"\n [class.tree-node--focused]=\"isFocused()\"\n role=\"treeitem\"\n [id]=\"'tree-node-' + node().id\"\n [attr.aria-level]=\"depth() + 1\"\n [attr.aria-expanded]=\"hasChildren() ? isExpanded() : null\"\n [attr.aria-selected]=\"isSelectable() ? isSelected() : null\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [attr.data-tree-node-id]=\"node().id\"\n [tabindex]=\"isFocused() ? 0 : -1\"\n>\n <div\n class=\"tree-node__header\"\n [class.tree-node__header--expandable]=\"hasChildren()\"\n (click)=\"onHeaderClick()\"\n >\n <div class=\"tree-node__indent\" [style.width.px]=\"indentPx()\"></div>\n\n <div class=\"tree-node__row\">\n <span class=\"tree-node__chevron\" [class.tree-node__chevron--leaf]=\"!hasChildren()\">\n @if (hasChildren()) { @if (isExpanded()) {\n <ChevronDown20 />\n } @else {\n <ChevronRight20 />\n } }\n </span>\n\n <div class=\"tree-node__content\">\n @if (resolvedTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"resolvedTemplate()!\"\n [ngTemplateOutletContext]=\"templateContext()\"\n />\n } @else {\n <span class=\"tree-node__label\">{{ node().id }}</span>\n }\n </div>\n\n @if (isSelectable()) { @if (selectionMode() === 'checkbox') {\n <moz-checkbox\n class=\"tree-node__selection\"\n [id]=\"'tree-checkbox-' + node().id\"\n [indeterminate]=\"isIndeterminate()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"isSelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onCheckboxChange($event)\"\n />\n } @else if (selectionMode() === 'radio') {\n <moz-radio\n class=\"tree-node__selection\"\n [id]=\"'tree-radio-' + node().id\"\n [name]=\"radioName\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"isSelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onRadioChange($event)\"\n />\n } }\n </div>\n </div>\n\n @if (isExpanded() && !flat()) {\n <ul class=\"tree-node__children\" role=\"group\">\n @if (isLoading()) {\n <li class=\"tree-node__loading\" role=\"presentation\">\n <moz-loader size=\"s\" [appearance]=\"'accent'\" />\n </li>\n } @else { @if (resolvedChildren().length === 0) {\n <li class=\"tree-node__empty\" role=\"presentation\">\n <span>{{ noResultText() }}</span>\n </li>\n } @for (child of resolvedChildren(); track child.id) {\n <moz-tree-node\n [node]=\"child\"\n [depth]=\"depth() + 1\"\n [selectionMode]=\"selectionMode()\"\n [indentSize]=\"indentSize()\"\n [nodeTemplate]=\"nodeTemplate()\"\n [nodeTemplates]=\"nodeTemplates()\"\n [loadChildren]=\"loadChildren()\"\n [ancestors]=\"ancestorsWithSelf()\"\n (expandChange)=\"expandChange.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n />\n } }\n </ul>\n }\n</li>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n inject,\n input,\n model,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { MozTreeNodeComponent } from './components/tree-node/tree-node';\nimport { TreeNode, TreeNodeContext, TreeSelectionMode, LoadChildrenFn } from './models/tree.model';\nimport { TreeStateService } from './services/tree-state';\nimport { TreeSelectionService } from './services/tree-selection';\nimport { TreeKeyboardService } from './services/tree-keyboard';\n\n@Directive({ selector: 'ng-template[mozTreeNode]' })\nexport class MozTreeNodeTemplateDirective {\n readonly type = input<string>();\n constructor(public readonly templateRef: TemplateRef<TreeNodeContext>) {}\n}\n\n@Component({\n selector: 'moz-tree',\n templateUrl: './tree.html',\n styleUrls: ['./tree.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MozTreeNodeComponent, ScrollingModule],\n providers: [TreeStateService, TreeSelectionService, TreeKeyboardService],\n})\nexport class MozTreeComponent<T = unknown> {\n protected readonly stateService = inject(TreeStateService);\n protected readonly selectionService = inject(TreeSelectionService);\n protected readonly keyboardService = inject(TreeKeyboardService);\n\n // Inputs\n readonly nodes = input<TreeNode<T>[]>([]);\n readonly selectionMode = input<TreeSelectionMode>('none');\n readonly expandedIds = model<Set<string | number>>(new Set());\n readonly selectedIds = input<Set<string | number>>(new Set());\n readonly loadChildren = input<LoadChildrenFn<T> | null>(null);\n readonly canSelect = input<((node: TreeNode<T>) => boolean) | null>(null);\n readonly indentSize = input<number>(24);\n readonly virtualScroll = input<boolean | 'auto'>('auto');\n readonly virtualScrollThreshold = input<number>(100);\n readonly rowHeight = input<number>(57);\n readonly viewportHeight = input<string>('400px');\n\n // Content-projected templates\n readonly _defaultTemplate = contentChild(MozTreeNodeTemplateDirective);\n readonly _typedTemplates = contentChildren(MozTreeNodeTemplateDirective);\n\n readonly nodeTemplate = computed<TemplateRef<TreeNodeContext<T>> | null>(() => {\n const dirs = this._typedTemplates();\n const defaultDir = dirs.find((d) => !d.type());\n return (defaultDir?.templateRef ?? null) as TemplateRef<TreeNodeContext<T>> | null;\n });\n\n readonly nodeTemplates = computed<Record<string, TemplateRef<TreeNodeContext<T>>> | null>(() => {\n const dirs = this._typedTemplates();\n const typed = dirs.filter((d) => !!d.type());\n if (typed.length === 0) return null;\n return Object.fromEntries(\n typed.map((d) => [d.type()!, d.templateRef as TemplateRef<TreeNodeContext<T>>])\n );\n });\n\n // Outputs\n // `expandedIdsChange` is generated automatically by the `expandedIds` model().\n readonly selectionChange = output<Set<string | number>>();\n\n readonly useVirtualScroll = computed(() => {\n const mode = this.virtualScroll();\n if (mode === true) return true;\n if (mode === false) return false;\n return this.stateService.flatVisibleNodes().length > this.virtualScrollThreshold();\n });\n\n readonly itemSize = computed(() => this.rowHeight());\n\n constructor() {\n // Sync inputs → services\n effect(() => {\n this.stateService.internalNodes.set(this.nodes() as TreeNode[]);\n });\n\n effect(() => {\n this.stateService.setExpanded(this.expandedIds());\n });\n\n // Declarative lazy-load: whenever `expandedIds` contains a node whose\n // children aren't loaded yet, fetch them automatically. Reading\n // `internalNodes`/`loadingIds` makes this effect re-run after each\n // `patchChildren`, so a deep pre-expanded path cascades one level at a\n // time (load root → its children appear → load the next expanded level …)\n // without any imperative `expandPath` call. `loadChildrenFor` is\n // idempotent, so re-runs and click-driven expands never double-fetch.\n effect(() => {\n const expanded = this.expandedIds();\n if (!this.stateService.loadChildrenFn()) return;\n this.stateService.internalNodes();\n this.stateService.loadingIds();\n for (const id of expanded) {\n const node = this.stateService.findNode(id);\n if (node && node.children === undefined) {\n this.stateService.loadChildrenFor(node as TreeNode).subscribe();\n }\n }\n });\n\n effect(() => {\n this.selectionService.setSelectedIds(this.selectedIds());\n });\n\n effect(() => {\n this.selectionService.setMode(this.selectionMode());\n });\n\n effect(() => {\n this.selectionService.setRootNodes(this.nodes() as TreeNode[]);\n });\n\n effect(() => {\n this.selectionService.setCanSelect(\n this.canSelect() as ((node: TreeNode) => boolean) | null\n );\n });\n\n effect(() => {\n this.stateService.loadChildrenFn.set(this.loadChildren() as LoadChildrenFn | null);\n });\n\n // React to genuine lazy-load events emitted by patchChildren. Static\n // initial children never go through patchChildren, so pre-selected\n // descendants of statically-populated parents are left untouched.\n const processed = new Set<string | number>();\n effect(() => {\n const loaded = this.stateService.loadedParentIds();\n if (this.selectionService.selectionMode() !== 'checkbox') return;\n for (const parentId of loaded) {\n if (processed.has(parentId)) continue;\n processed.add(parentId);\n this.selectionService.propagateOnChildrenLoaded(parentId);\n }\n });\n }\n\n onTreeKeydown(event: KeyboardEvent): void {\n const prevSelection = this.selectionService.allSelectedIds();\n this.keyboardService.handleKeydown(event);\n const newSelection = this.selectionService.allSelectedIds();\n if (prevSelection !== newSelection) {\n this.selectionChange.emit(newSelection);\n }\n }\n\n onTreeFocus(): void {\n this.keyboardService.initFocus();\n }\n\n onExpandChange(): void {\n this.expandedIds.set(new Set(this.stateService.expandedIds()));\n }\n\n onSelectionChange(ids: Set<string | number>): void {\n this.selectionChange.emit(ids);\n }\n\n /**\n * Convenience helper for the \"expand a deep path, then scroll to it\" pattern.\n * Adds every ancestor in `path` (all ids except the last) to `expandedIds`,\n * which lets the declarative auto-load effect fetch each lazy level, then\n * resolves once those levels have finished loading — so callers can safely\n * `scrollToNode(path.at(-1))` afterwards.\n *\n * Plain declarative usage — binding `[(expandedIds)]` and writing to it — does\n * not need this method; the tree loads expanded lazy nodes on its own. It\n * exists only to give an awaitable signal that the deep node is now visible.\n */\n async expandPath(path: Array<string | number>): Promise<void> {\n if (path.length === 0) return;\n const ancestors = path.slice(0, -1);\n this.expandedIds.update((current) => {\n const next = new Set(current);\n for (const id of ancestors) next.add(id);\n return next;\n });\n for (const id of ancestors) {\n await this._waitForChildren(id);\n }\n }\n\n private _waitForChildren(id: string | number): Promise<void> {\n return new Promise((resolve) => {\n let attempts = 0;\n const check = (): void => {\n const node = this.stateService.findNode(id);\n // Resolve once the node's children are present (loaded or static), the\n // node no longer exists, or we hit the safety cap (~5s at 16ms steps).\n if (!node || node.children !== undefined || attempts++ > 300) {\n resolve();\n return;\n }\n setTimeout(check, 16);\n };\n check();\n });\n }\n\n scrollToNode(nodeId: string | number): void {\n setTimeout(() => {\n const el = document.querySelector<HTMLElement>(`[data-tree-node-id=\"${nodeId}\"]`);\n el?.scrollIntoView({ block: 'center', behavior: 'smooth' });\n });\n }\n\n expandAll(): void {\n const flat = this.stateService.flatVisibleNodes();\n const allIds = new Set(flat.map((f) => f.node.id));\n this.stateService.setExpanded(allIds);\n this.expandedIds.set(new Set(allIds));\n }\n\n collapseAll(): void {\n this.stateService.setExpanded(new Set());\n this.expandedIds.set(new Set());\n }\n\n trackNode(_index: number, node: TreeNode<T>): string | number {\n return node.id;\n }\n\n trackFlatNode(_index: number, flat: import('./models/tree.model').FlatNode<T>): string | number {\n return flat.node.id;\n }\n}\n","<ul\n class=\"tree\"\n role=\"tree\"\n tabindex=\"0\"\n [attr.aria-multiselectable]=\"selectionMode() === 'checkbox' ? 'true' : null\"\n [attr.aria-activedescendant]=\"keyboardService.focusedNodeId() ? 'tree-node-' + keyboardService.focusedNodeId() : null\"\n (keydown)=\"onTreeKeydown($event)\"\n (focus)=\"onTreeFocus()\"\n>\n @if (!useVirtualScroll()) { @for (node of nodes(); track trackNode($index, node)) {\n <moz-tree-node\n [node]=\"node\"\n [depth]=\"0\"\n [selectionMode]=\"selectionMode()\"\n [indentSize]=\"indentSize()\"\n [nodeTemplate]=\"nodeTemplate()\"\n [nodeTemplates]=\"nodeTemplates()\"\n [loadChildren]=\"loadChildren()\"\n [ancestors]=\"[]\"\n (expandChange)=\"onExpandChange()\"\n (selectionChange)=\"onSelectionChange($event)\"\n />\n } } @else {\n <cdk-virtual-scroll-viewport\n class=\"tree__viewport\"\n [itemSize]=\"itemSize()\"\n [style.height]=\"viewportHeight()\"\n >\n <moz-tree-node\n *cdkVirtualFor=\"let flatNode of stateService.flatVisibleNodes(); trackBy: trackFlatNode\"\n [node]=\"flatNode.node\"\n [depth]=\"flatNode.depth\"\n [flat]=\"true\"\n [selectionMode]=\"selectionMode()\"\n [indentSize]=\"indentSize()\"\n [nodeTemplate]=\"nodeTemplate()\"\n [nodeTemplates]=\"nodeTemplates()\"\n [loadChildren]=\"loadChildren()\"\n [ancestors]=\"[]\"\n (expandChange)=\"onExpandChange()\"\n (selectionChange)=\"onSelectionChange($event)\"\n />\n </cdk-virtual-scroll-viewport>\n }\n</ul>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MozDataTableCellType, MozDataTableSortDirection } from '../model/datatable.model';\n\n/**\n * Declarative column configuration of the DataTable.\n * This component renders nothing by itself: it is read by `moz-datatable`\n * to build its headers configuration.\n *\n * Equivalent of the `MDataTableColumn` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-column',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MozDataTableColumnComponent {\n /** Header cell label */\n readonly label = input<string>('');\n\n /** Refers to a key, present in the items object, whose content will be displayed in the cells of the column */\n readonly value = input<string>('');\n\n /** Allows you to define the type of content that will be inserted in the cell */\n readonly type = input<MozDataTableCellType | undefined>(undefined);\n\n /** Visually defines the column as sortable by displaying the sort button */\n readonly sortable = input(false, { transform: booleanAttribute });\n\n /** Visually defines the default state of the sort button */\n readonly sortDirectionDefault = input<MozDataTableSortDirection>(null);\n\n /** Adds an identical CSS class to all the cells in the column */\n readonly cellClass = input<string>('');\n\n /** Additional data merged into the payload emitted when sorting this column */\n readonly additionalProps = input<Record<string, unknown> | undefined>(undefined);\n\n /** Misc */\n readonly e2eSelector = input<string>('');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewEncapsulation,\n computed,\n input,\n output,\n booleanAttribute,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { SortDown20, SortTop20, SortTopDown20 } from '@mozaic-ds/icons-angular';\nimport {\n MozDataTableHeader,\n MozDataTableHeaderContext,\n MozDataTableSort,\n MozDataTableSortDirection,\n} from '../model/datatable.model';\n\n/**\n * Header cell (`<th>`) of the DataTable.\n * Displays the sort button when the column is `sortable`.\n *\n * Equivalent of the `MDataTableHeader` component of the Vue implementation.\n */\n@Component({\n selector: 'th[moz-datatable-header]',\n imports: [NgTemplateOutlet, SortDown20, SortTop20, SortTopDown20],\n template: `\n @if (sortable()) {\n <button\n type=\"button\"\n class=\"mc-datatable__sort mc-datatable__btn\"\n [class.asc]=\"sortDirection() === 'ASC'\"\n [class.desc]=\"sortDirection() === 'DESC'\"\n (click)=\"toggleSort()\"\n >\n <span class=\"mc-datatable__sort-label\">\n <span class=\"visually-hidden\">sort by</span>\n <ng-container [ngTemplateOutlet]=\"content\" />\n </span>\n\n @switch (sortDirection()) {\n @case ('ASC') {\n <SortTop20 class=\"mc-datatable__sort-arrow\" />\n }\n @case ('DESC') {\n <SortDown20 class=\"mc-datatable__sort-arrow\" />\n }\n @default {\n <SortTopDown20 class=\"mc-datatable__sort-arrow\" />\n }\n }\n </button>\n } @else {\n <ng-container [ngTemplateOutlet]=\"content\" />\n }\n\n <ng-template #content>\n @if (labelTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"templateContext()\" />\n } @else {\n <ng-content>{{ label() }}</ng-content>\n }\n </ng-template>\n `,\n host: {\n scope: 'col',\n '[class]': 'classes()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableHeaderComponent {\n /** Header cell label */\n readonly label = input<string>('');\n\n /** Refers to a key, present in the items object, whose content will be displayed in the cells of the column */\n readonly value = input<string>('');\n\n /** Defines whether the column is sortable or not */\n readonly sortable = input(false, { transform: booleanAttribute });\n\n /** Defines sort order (Ascending or Descending) */\n readonly sortDirection = input<MozDataTableSortDirection>(null);\n\n /** Defines sort order on component loading */\n readonly sortDirectionDefault = input<MozDataTableSortDirection>(null);\n\n /** Additional data merged into the payload emitted when sorting this column */\n readonly additionalProps = input<Record<string, unknown> | undefined>(undefined);\n\n /** Defines header cell as associated with `selectable` cells */\n readonly selectable = input(false, { transform: booleanAttribute });\n\n /** Defines header cell as associated with `expandable` cells */\n readonly expandable = input(false, { transform: booleanAttribute });\n\n /** Misc */\n readonly e2eSelector = input<string>('');\n\n /** Template used to replace/format the content of the header cell (`mozDataTableHeader` template) */\n readonly labelTemplate = input<TemplateRef<MozDataTableHeaderContext> | null>(null);\n\n /** The header configuration passed as context to `labelTemplate` */\n readonly headerConfig = input<MozDataTableHeader | undefined>(undefined);\n\n /** Emits each time a click on the sort button is made */\n readonly updateSortDirection = output<MozDataTableSort>();\n\n readonly classes = computed(() => ({\n 'mc-datatable__head': true,\n 'mc-datatable__cell-button': this.expandable(),\n 'mc-datatable__cell-checkbox': this.selectable(),\n }));\n\n readonly templateContext = computed<MozDataTableHeaderContext>(() => {\n const header: MozDataTableHeader = this.headerConfig() ?? {\n label: this.label(),\n value: this.value(),\n sortable: this.sortable(),\n };\n return { $implicit: header, header };\n });\n\n toggleSort(): void {\n let direction: MozDataTableSortDirection;\n switch (this.sortDirection()) {\n case 'ASC':\n direction = 'DESC';\n break;\n case 'DESC':\n direction = null;\n break;\n default:\n direction = 'ASC';\n }\n this.updateSortDirection.emit({\n column: this.value(),\n direction,\n ...(this.additionalProps() ?? {}),\n });\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Row (`<tr>`) of the DataTable body.\n *\n * Equivalent of the `MDataTableRow` component of the Vue implementation.\n */\n@Component({\n selector: 'tr[moz-datatable-row]',\n template: '<ng-content />',\n host: {\n '[class]': 'classes()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableRowComponent {\n /** Defines whether the row is clickable or not */\n readonly clickable = input(false, { transform: booleanAttribute });\n\n /** Defines whether this is an \"expandable\" row */\n readonly expandable = input(false, { transform: booleanAttribute });\n\n /** Defines the \"expanded\" state of the row */\n readonly expanded = input(false, { transform: booleanAttribute });\n\n /** Defines the \"selected\" state of the row */\n readonly selected = input(false, { transform: booleanAttribute });\n\n readonly classes = computed(() => ({\n 'mc-datatable__row': true,\n 'mc-datatable__row--clickable': this.clickable(),\n 'mc-datatable__row-parent': this.expandable(),\n 'mc-datatable__row-parent--expanded': this.expanded(),\n 'selected': this.selected(),\n }));\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\n/**\n * Expandable row displayed below a parent row of the DataTable.\n *\n * Equivalent of the `MDataTableRowExpand` component of the Vue implementation.\n */\n@Component({\n selector: 'tr[moz-datatable-row-expand]',\n template: `\n <td [attr.colspan]=\"colspan()\">\n <div class=\"mc-datatable__row-inner\">\n <ng-content />\n </div>\n </td>\n `,\n host: {\n class: 'mc-datatable__row-expandable',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableRowExpandComponent {\n /** Defines the number of DataTable headers */\n readonly headers = input.required<number>();\n\n /** Defines whether this is a table with an \"expandable\" column */\n readonly expandable = input(false, { transform: booleanAttribute });\n\n /** Defines whether this is a table with a \"selectable\" column */\n readonly selectable = input(false, { transform: booleanAttribute });\n\n readonly colspan = computed(\n () => this.headers() + Number(this.selectable()) + Number(this.expandable()),\n );\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n} from '@angular/core';\nimport { ChevronDown20, ChevronUp20 } from '@mozaic-ds/icons-angular';\n\n/**\n * \"Fold/unfold\" button of the expandable rows.\n *\n * Equivalent of the `MDataTableExpandButton` component of the Vue implementation.\n */\n@Component({\n selector: 'button[moz-datatable-expand-button]',\n imports: [ChevronDown20, ChevronUp20],\n template: `\n @if (!expanded()) {\n <ChevronDown20 class=\"mc-datatable__btn-icon\" />\n } @else {\n <ChevronUp20 class=\"mc-datatable__btn-icon\" />\n }\n\n @if (label()) {\n <span class=\"mc-datatable__btn-label\">{{ label() }}</span>\n }\n `,\n host: {\n class: 'mc-datatable__btn',\n type: 'button',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableExpandButtonComponent {\n /** The button label. Useful for enhancing accessibility */\n readonly label = input<string | undefined>(undefined);\n\n /** Determines whether the button is expanded or not */\n readonly expanded = input(false, { transform: booleanAttribute });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\nimport { MozDataTableCellType } from '../model/datatable.model';\n\n/**\n * Cell (`<td>` or `<th>`) of the DataTable body.\n *\n * Equivalent of the `MDataTableCell` component of the Vue implementation.\n */\n@Component({\n selector: 'td[moz-datatable-cell], th[moz-datatable-cell]',\n template: '<ng-content />',\n host: {\n '[class]': 'classes()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableCellComponent {\n /** Allows you to define the type of content that will be inserted in the cell */\n readonly type = input<MozDataTableCellType | undefined>(undefined);\n\n /** Refers to a key, present in the items object, whose content is displayed in the cell */\n readonly value = input<string>('');\n\n readonly classes = computed(() => {\n const type = this.type();\n const value = this.value();\n return {\n 'mc-datatable__cell': true,\n 'mc-datatable__cell-button':\n type === 'button' || type === 'expand' || type === 'icon' || type === 'options',\n 'mc-datatable__cell-checkbox': type === 'checkbox',\n 'mc-datatable__cell-field': type === 'input',\n 'mc-datatable__cell-number': type === 'number',\n [`mc-datatable__cell--${value}`]: !!value,\n };\n });\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Empty state of the DataTable, displayed when there is no data/results.\n *\n * Equivalent of the `MDataTableEmpty` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-empty',\n template: '<ng-content />',\n host: {\n class: 'mc-datatable__empty',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableEmptyComponent {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\n\n/**\n * Page count information displayed in the footer of a pageable DataTable\n * (e.g. \"15 - 21 of 50 items\").\n *\n * Equivalent of the `MDataTableInfo` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-info',\n template: `\n <ng-content>\n <strong>{{ start() }} - {{ end() }}</strong> {{ label() }}\n <strong>{{ total() }} {{ labelItems() }}</strong>\n </ng-content>\n `,\n host: {\n class: 'mc-datatable__count mc-datatable__info',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableInfoComponent {\n /** Replaces the preposition \"of\" in the footer sentence */\n readonly label = input<string>('of');\n\n /** Replaces the text \"items\" in the footer sentence */\n readonly labelItems = input<string>('items');\n\n readonly start = input<number | undefined>(undefined);\n readonly end = input<number | undefined>(undefined);\n readonly total = input<number | undefined>(undefined);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n booleanAttribute,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MozSelectComponent } from '../../select/select';\nimport { MozDataTablePageSizeOption } from '../model/datatable.model';\n\n/**\n * \"Rows per page\" selector displayed in the footer of a pageable DataTable.\n *\n * Equivalent of the `MDataTableRowsPerPage` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-rows-per-page',\n imports: [FormsModule, MozSelectComponent],\n template: `\n <label for=\"itemPerPage\" class=\"mc-datatable__select-label mc-datatable__rowsperpage-label\">\n {{ label() }}\n </label>\n <moz-select\n id=\"itemPerPage\"\n name=\"itemPerPage\"\n size=\"s\"\n [options]=\"options()\"\n [disabled]=\"loading()\"\n [ngModel]=\"selectValue()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n `,\n host: {\n class: 'mc-datatable__select mc-datatable__rowsperpage',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableRowsPerPageComponent {\n /** The label associated with the select */\n readonly label = input<string>('');\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n readonly options = input.required<MozDataTablePageSizeOption[]>();\n\n readonly value = input<number | undefined>(undefined);\n\n readonly updateValue = output<number>();\n\n readonly selectValue = computed(() => String(this.value() ?? ''));\n\n onValueChange(value: string | number): void {\n this.updateValue.emit(Number(value));\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n output,\n} from '@angular/core';\n\n/**\n * Selection bar of a selectable DataTable, displayed when all the rows\n * of the current page are selected.\n *\n * Equivalent of the `MDataTableSelectionBar` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-selection-bar',\n template: `\n {{ !selectAll() ? labelPageSelected() : labelAllItemsSelected() }}\n\n @if (!selectAll()) {\n <button type=\"button\" class=\"mc-datatable__selection-btn\" (click)=\"selectAllRows.emit()\">\n {{ labelButtonSelectAll() }}\n </button>\n } @else {\n <button type=\"button\" class=\"mc-datatable__selection-btn\" (click)=\"clearAllRows.emit()\">\n {{ labelButtonClearSelection() }}\n </button>\n }\n `,\n host: {\n class: 'mc-datatable__selection',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableSelectionBarComponent {\n readonly selectAll = input(false, { transform: booleanAttribute });\n readonly labelPageSelected = input<string | undefined>(undefined);\n readonly labelAllItemsSelected = input<string | undefined>(undefined);\n readonly labelButtonSelectAll = input<string | undefined>(undefined);\n readonly labelButtonClearSelection = input<string>('Clear selection');\n\n readonly selectAllRows = output<void>();\n readonly clearAllRows = output<void>();\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\nimport { MozDataTableCellContext, MozDataTableHeaderContext } from '../model/datatable.model';\n\n/**\n * Template used to replace/format the content of the cells of a column.\n * Equivalent of the `cell.<column>` slot of the Vue implementation.\n *\n * ```html\n * <ng-template mozDataTableCell=\"startDate\" let-item>\n * {{ item.startDate | date }}\n * </ng-template>\n * ```\n */\n@Directive({ selector: 'ng-template[mozDataTableCell]' })\nexport class MozDataTableCellTemplateDirective<T = Record<string, unknown>> {\n readonly template = inject<TemplateRef<MozDataTableCellContext<T>>>(TemplateRef);\n\n /** The `value` of the column whose cells the template applies to */\n readonly mozDataTableCell = input.required<string>();\n\n static ngTemplateContextGuard<T>(\n _dir: MozDataTableCellTemplateDirective<T>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in the type predicate\n _ctx: unknown,\n ): _ctx is MozDataTableCellContext<T> {\n return true;\n }\n}\n\n/**\n * Template used to replace/format the content of a header cell.\n * Equivalent of the `header.<column>` slot of the Vue implementation.\n *\n * ```html\n * <ng-template mozDataTableHeader=\"name\" let-header>\n * {{ header.label }} <small>subtitle</small>\n * </ng-template>\n * ```\n */\n@Directive({ selector: 'ng-template[mozDataTableHeader]' })\nexport class MozDataTableHeaderTemplateDirective {\n readonly template = inject<TemplateRef<MozDataTableHeaderContext>>(TemplateRef);\n\n /** The `value` of the column whose header the template applies to */\n readonly mozDataTableHeader = input.required<string>();\n\n static ngTemplateContextGuard(\n _dir: MozDataTableHeaderTemplateDirective,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in the type predicate\n _ctx: unknown,\n ): _ctx is MozDataTableHeaderContext {\n return true;\n }\n}\n\n/**\n * Template inserted inside the expand row of an expandable DataTable.\n * Equivalent of the `expandContent` slot of the Vue implementation.\n */\n@Directive({ selector: 'ng-template[mozDataTableExpand]' })\nexport class MozDataTableExpandTemplateDirective<T = Record<string, unknown>> {\n readonly template = inject<TemplateRef<MozDataTableCellContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n _dir: MozDataTableExpandTemplateDirective<T>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in the type predicate\n _ctx: unknown,\n ): _ctx is MozDataTableCellContext<T> {\n return true;\n }\n}\n\n/**\n * Template displayed when the DataTable is empty (no data/results).\n * Equivalent of the `no-data` slot of the Vue implementation.\n */\n@Directive({ selector: 'ng-template[mozDataTableNoData]' })\nexport class MozDataTableNoDataTemplateDirective {\n readonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n/**\n * Template replacing the whole content of the header row (`<tr>` of the `<thead>`).\n * We recommend using `th[moz-datatable-header]` cells inside this template.\n * Equivalent of the `headers` slot of the Vue implementation.\n */\n@Directive({ selector: 'ng-template[mozDataTableHeaders]' })\nexport class MozDataTableHeadersTemplateDirective {\n readonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n/**\n * Template replacing the entire content of the `<tbody>` tag.\n * We recommend using `tr[moz-datatable-row]` / `td[moz-datatable-cell]` inside this template.\n * Equivalent of the `body` slot of the Vue implementation.\n */\n@Directive({ selector: 'ng-template[mozDataTableBody]' })\nexport class MozDataTableBodyTemplateDirective {\n readonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n/**\n * Marks projected content replacing the built-in selection bar.\n * Equivalent of the `selectionbar` slot of the Vue implementation.\n */\n@Directive({ selector: '[mozDataTableSelectionbar]' })\nexport class MozDataTableSelectionbarDirective {}\n\n/** Marks the \"edition\" zone of the `moz-datatable-top` component */\n@Directive({ selector: '[mozDataTableTopEdition]' })\nexport class MozDataTableTopEditionDirective {}\n\n/** Marks the \"actions\" zone of the `moz-datatable-top` component */\n@Directive({ selector: '[mozDataTableTopActions]' })\nexport class MozDataTableTopActionsDirective {}\n\n/** Marks the \"filters\" zone of the `moz-datatable-top` component */\n@Directive({ selector: '[mozDataTableTopFilters]' })\nexport class MozDataTableTopFiltersDirective {}\n","/**\n * Models for the Mozaic DataTable component.\n * Angular port of `@mozaic-ds/datatable-vue`.\n */\n\nexport type MozDataTableSortDirection = 'ASC' | 'DESC' | null;\n\nexport type MozDataTableSortMode = 'single' | 'multiple';\n\nexport type MozDataTableSize = 's' | 'm' | 'l';\n\nexport type MozDataTableCellType =\n | 'button'\n | 'checkbox'\n | 'expand'\n | 'icon'\n | 'input'\n | 'number'\n | 'multiline'\n | 'options'\n | 'picture';\n\nexport interface MozDataTableSort {\n /** The `value` of the sorted column */\n column: string;\n direction?: MozDataTableSortDirection;\n /** Additional data merged into the sort payload (see `additionalProps` on columns) */\n [key: string]: unknown;\n}\n\nexport interface MozDataTableHeader {\n /** Header cell label */\n label: string;\n /** The key of the item whose content will be displayed in the cells of the column */\n value: string;\n /** Visually defines the column as sortable by displaying the sort button */\n sortable?: boolean;\n /** Defines sort order on component loading */\n sortDirectionDefault?: MozDataTableSortDirection;\n /** Adds an identical CSS class to all the cells of the column */\n class?: string;\n /** Allows you to define the type of content that will be inserted in the cells */\n type?: MozDataTableCellType;\n /** Additional data merged into the payload emitted when sorting this column */\n additionalProps?: Record<string, unknown>;\n /** Misc */\n e2eSelector?: string;\n}\n\nexport type MozDataTablePageSizeOption = { text: string; value: string };\n\nexport interface MozDataTableUpdatePayload {\n sort?: MozDataTableSort | null;\n sortMultiple?: MozDataTableSort[];\n size: number;\n page: number;\n}\n\nexport interface MozDataTableRowEvent<T = Record<string, unknown>> {\n data: T;\n index: number;\n}\n\nexport interface MozDataTableRowsEvent<T = Record<string, unknown>> {\n data: T[];\n}\n\nexport interface MozDataTableAccessibilityLabels {\n paginationAriaLabel?: string;\n checkboxAriaLabel?: string;\n expandButtonLabel?: string;\n}\n\n/** Context of the templates provided through `mozDataTableCell` and `mozDataTableExpand` */\nexport interface MozDataTableCellContext<T = Record<string, unknown>> {\n $implicit: T;\n item: T;\n index: number;\n rowIndex: number;\n}\n\n/** Context of the templates provided through `mozDataTableHeader` */\nexport interface MozDataTableHeaderContext {\n $implicit: MozDataTableHeader;\n header: MozDataTableHeader;\n}\n\nexport const MOZ_DATATABLE_DEFAULT_PAGE_SIZES: number[] = [7, 10, 25, 50, 100];\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n OnInit,\n ViewEncapsulation,\n computed,\n contentChild,\n contentChildren,\n effect,\n input,\n linkedSignal,\n output,\n signal,\n untracked,\n booleanAttribute,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MozPaginationComponent } from '../pagination/pagination';\nimport { MozDataTableColumnComponent } from './components/datatable-column';\nimport { MozDataTableHeaderComponent } from './components/datatable-header';\nimport { MozDataTableRowComponent } from './components/datatable-row';\nimport { MozDataTableRowExpandComponent } from './components/datatable-row-expand';\nimport { MozDataTableExpandButtonComponent } from './components/datatable-expand-button';\nimport { MozDataTableCellComponent } from './components/datatable-cell';\nimport { MozDataTableEmptyComponent } from './components/datatable-empty';\nimport { MozDataTableInfoComponent } from './components/datatable-info';\nimport { MozDataTableRowsPerPageComponent } from './components/datatable-rows-per-page';\nimport { MozDataTableSelectionBarComponent } from './components/datatable-selection-bar';\nimport {\n MozDataTableBodyTemplateDirective,\n MozDataTableCellTemplateDirective,\n MozDataTableExpandTemplateDirective,\n MozDataTableHeadersTemplateDirective,\n MozDataTableHeaderTemplateDirective,\n MozDataTableNoDataTemplateDirective,\n MozDataTableSelectionbarDirective,\n} from './directives/datatable-templates';\nimport {\n MOZ_DATATABLE_DEFAULT_PAGE_SIZES,\n MozDataTableAccessibilityLabels,\n MozDataTableHeader,\n MozDataTablePageSizeOption,\n MozDataTableRowEvent,\n MozDataTableRowsEvent,\n MozDataTableSize,\n MozDataTableSort,\n MozDataTableSortDirection,\n MozDataTableSortMode,\n MozDataTableUpdatePayload,\n} from './model/datatable.model';\n\n/**\n * DataTable component of the ADEO Design System.\n * Angular port of `@mozaic-ds/datatable-vue` (`MDataTable`).\n *\n * Columns are declared either with `moz-datatable-column` elements or through\n * the `headers` input. Cell/header content can be customized with the\n * `mozDataTableCell` / `mozDataTableHeader` templates.\n *\n * ```html\n * <moz-datatable [items]=\"items\">\n * <moz-datatable-column label=\"Name\" value=\"name\" sortable />\n * <moz-datatable-column label=\"Status\" value=\"status\" />\n * <ng-template mozDataTableCell=\"status\" let-item>{{ item.status.code }}</ng-template>\n * </moz-datatable>\n * ```\n */\n@Component({\n selector: 'moz-datatable',\n imports: [\n NgTemplateOutlet,\n MozPaginationComponent,\n MozDataTableHeaderComponent,\n MozDataTableRowComponent,\n MozDataTableRowExpandComponent,\n MozDataTableExpandButtonComponent,\n MozDataTableCellComponent,\n MozDataTableEmptyComponent,\n MozDataTableInfoComponent,\n MozDataTableRowsPerPageComponent,\n MozDataTableSelectionBarComponent,\n ],\n templateUrl: './datatable.html',\n styleUrls: ['./datatable.scss'],\n host: {\n '[class]': 'hostClasses()',\n '[style.--datatable-head-z-index]': 'zIndex()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableComponent<T extends Record<string, unknown> = Record<string, unknown>>\n implements OnInit, AfterContentInit\n{\n // --------------------------------------------------------------------------\n // Inputs — Functional\n // --------------------------------------------------------------------------\n\n /** An array of objects representing the data to be displayed */\n readonly items = input.required<T[]>();\n\n /**\n * An array of objects used to define the DataTable headers.\n * This property is mandatory if you are not using `moz-datatable-column`\n * elements to define your columns.\n */\n readonly headers = input<MozDataTableHeader[] | undefined>(undefined);\n\n /** Displays the loading state to indicate data load is in progress */\n readonly loading = input<boolean | undefined>(undefined);\n\n /** The key used to identify each item (used for selection and row tracking) */\n readonly indexKey = input<string>('id');\n\n // --------------------------------------------------------------------------\n // Inputs — Pagination\n // --------------------------------------------------------------------------\n\n /**\n * Displays the pagination of the DataTable (and the component footer as a whole).\n * This prop must be defined with the `totalItems` prop.\n */\n readonly pageable = input(false, { transform: booleanAttribute });\n\n /**\n * Used to define the value of the Select \"Rows per page\" when the DataTable is\n * initialised. This value must be one of the values of `itemsPerPageOptions`.\n */\n readonly itemsPerPage = input<number | undefined>(undefined);\n\n /** Used to set the desired values for the Select \"Rows per page\" */\n readonly itemsPerPageOptions = input<MozDataTablePageSizeOption[] | number[]>(\n MOZ_DATATABLE_DEFAULT_PAGE_SIZES,\n );\n\n /** Sets the default value for the Select \"Pagination\" */\n readonly currentPage = input<number | undefined>(undefined);\n\n /**\n * Used to indicate the total number of data items.\n * This property must be defined as soon as the `pageable` property is defined.\n */\n readonly totalItems = input<number | undefined>(undefined);\n\n /** Used to define the value of the label associated with the Select \"Rows per page\" */\n readonly itemsPerPageLabel = input<string>('Rows per page');\n\n /** Replaces the preposition \"of\" in the footer sentence, e.g. \"15-21 of 50 items\" */\n readonly countLabel = input<string>('of');\n\n /** Replaces the text \"items\" in the footer sentence, e.g. \"15-21 of 50 items\" */\n readonly infoLabelItems = input<string>('items');\n\n // --------------------------------------------------------------------------\n // Inputs — Sort\n // --------------------------------------------------------------------------\n\n /**\n * Allows to visually define the default state of a sorted column.\n * Works in conjunction with the `sortChange` output (`[(sort)]` two-way binding).\n */\n readonly sort = input<MozDataTableSort | null | undefined>(undefined);\n\n /**\n * Allows to visually define the default state of one or several sorted columns.\n * Works in conjunction with the `sortMultipleChange` output\n * (`[(sortMultiple)]` two-way binding).\n */\n readonly sortMultiple = input<MozDataTableSort[] | undefined>(undefined);\n\n /** Defines whether sorting is done on a single column or on multiple columns */\n readonly sortMode = input<MozDataTableSortMode>('single');\n\n // --------------------------------------------------------------------------\n // Inputs — Display options\n // --------------------------------------------------------------------------\n\n /** Allows you to change the line size */\n readonly size = input<MozDataTableSize>('m');\n\n /** Hides the \"XX - YY of ZZ items\" indication in the footer */\n readonly hidePageCount = input(false, { transform: booleanAttribute });\n\n /** Used to define a maximum height for the DataTable */\n readonly maxHeight = input<string | undefined>(undefined);\n\n /** Allows you to make the header fixed. Works in conjunction with `maxHeight` */\n readonly fixedHeader = input(false, { transform: booleanAttribute });\n\n /** Allows you to pass the z-index for the static header */\n readonly zIndex = input<number | undefined>(undefined);\n\n // --------------------------------------------------------------------------\n // Inputs — Selection\n // --------------------------------------------------------------------------\n\n /** Displays a column of checkboxes allowing rows to be selected */\n readonly selectable = input(false, { transform: booleanAttribute });\n\n /** Displays or hides the selection bar */\n readonly selectionbar = input(false, { transform: booleanAttribute });\n\n /** The selected items (`[(selection)]` two-way binding) */\n readonly selection = input<T[]>([]);\n\n readonly labelButtonClearSelection = input<string>('Clear selection');\n\n readonly selectPage = input(false, { transform: booleanAttribute });\n\n readonly labelPageSelected = input<string | undefined>(undefined);\n\n readonly labelAllItemsSelected = input<string | undefined>(undefined);\n\n /** Defines the \"all items selected\" state (`[(selectAll)]` two-way binding) */\n readonly selectAll = input<boolean | undefined>(undefined);\n\n readonly labelButtonSelectAll = input<string | undefined>(undefined);\n\n /**\n * Makes rows clickable. **Caution! This prop is deprecated and will be removed soon!**\n * Use the `clickable` prop instead.\n * @deprecated\n */\n readonly clickableRows = input(false, { transform: booleanAttribute });\n\n /** Makes rows clickable */\n readonly clickable = input(false, { transform: booleanAttribute });\n\n // --------------------------------------------------------------------------\n // Inputs — Expansion\n // --------------------------------------------------------------------------\n\n /** Allows all the rows in the DataTable to be expandable */\n readonly expandable = input(false, { transform: booleanAttribute });\n\n /** Sets the default text for the \"fold/unfold\" buttons. Useful for enhancing accessibility */\n readonly expanderAccessibleLabel = input<string | undefined>(undefined);\n\n /** Allows to choose the rows (indexes) on which to insert \"expandable\" content */\n readonly expandableList = input<(number | string)[]>([]);\n\n /** The key of the item used to identify expanded rows (defaults to the row index) */\n readonly dataKeyExpand = input<string | undefined>(undefined);\n\n /** Open expandable content by default */\n readonly showExpandableContent = input(false, { transform: booleanAttribute });\n\n /** Allows to pass identical custom CSS classes to all the rows in the table */\n readonly rowClass = input<string | string[] | Record<string, boolean> | undefined>(undefined);\n\n /** An object for passing labels to make component elements more accessible */\n readonly accessibilityLabels = input<MozDataTableAccessibilityLabels | undefined>(undefined);\n\n // --------------------------------------------------------------------------\n // Inputs — Misc\n // --------------------------------------------------------------------------\n\n readonly e2eSelector = input<string>('');\n\n /** Defines whether this is a DataTable nested within another DataTable */\n readonly nested = input(false, { transform: booleanAttribute });\n\n // --------------------------------------------------------------------------\n // Outputs\n // --------------------------------------------------------------------------\n\n /** Emits on \"Single Sort\" mode, each time a click on the sort button of a column is made */\n readonly sortChange = output<MozDataTableSort>();\n\n /** Emits on \"Multiple Sort\" mode, each time a click on the sort button of a column is made */\n readonly sortMultipleChange = output<MozDataTableSort[]>();\n\n readonly currentPageChange = output<number>();\n\n readonly itemsPerPageChange = output<number>();\n\n /** Emits each time the sort, the page size or the current page changes */\n readonly changed = output<MozDataTableUpdatePayload>();\n\n readonly clickRow = output<MozDataTableRowEvent<T>>();\n readonly selectRow = output<MozDataTableRowEvent<T>>();\n readonly unselectRow = output<MozDataTableRowEvent<T>>();\n readonly selectAllRows = output<MozDataTableRowsEvent<T>>();\n readonly unselectAllRows = output<void>();\n readonly selectMultipleRows = output<MozDataTableRowsEvent<T>>();\n readonly unselectMultipleRows = output<MozDataTableRowsEvent<T>>();\n readonly selectPageChange = output<boolean>();\n readonly selectAllChange = output<boolean>();\n readonly selectionChange = output<T[]>();\n readonly expandRow = output<MozDataTableRowEvent<T>>();\n readonly retractRow = output<MozDataTableRowEvent<T>>();\n\n // --------------------------------------------------------------------------\n // Content queries\n // --------------------------------------------------------------------------\n\n protected readonly columns = contentChildren(MozDataTableColumnComponent, {\n descendants: true,\n });\n protected readonly cellTemplates = contentChildren(MozDataTableCellTemplateDirective, {\n descendants: true,\n });\n protected readonly headerTemplates = contentChildren(MozDataTableHeaderTemplateDirective, {\n descendants: true,\n });\n protected readonly expandTemplate = contentChild(MozDataTableExpandTemplateDirective);\n protected readonly noDataTemplate = contentChild(MozDataTableNoDataTemplateDirective);\n protected readonly headersTemplate = contentChild(MozDataTableHeadersTemplateDirective);\n protected readonly bodyTemplate = contentChild(MozDataTableBodyTemplateDirective);\n protected readonly customSelectionbar = contentChild(MozDataTableSelectionbarDirective);\n\n // --------------------------------------------------------------------------\n // Internal state\n // --------------------------------------------------------------------------\n\n private readonly _sortState = signal<MozDataTableSort | undefined>(undefined);\n private readonly _sortMultipleState = signal<MozDataTableSort[]>([]);\n private readonly _itemsPerPageState = signal<number>(7);\n private readonly _currentPageState = signal<number>(1);\n private readonly _selectAllState = signal<boolean>(false);\n protected readonly pageState = signal<boolean>(false);\n private readonly _selectedItems = linkedSignal<T[]>(() => this.selection() ?? []);\n private readonly _lastSelectedItem = signal<T | undefined>(undefined);\n private readonly _expandedRows = signal<(number | string)[]>([]);\n\n constructor() {\n // Sync the internal \"select all\" state from the input (Vue: watch(props.selectAll))\n effect(() => {\n const value = this.selectAll();\n if (value !== undefined) {\n untracked(() => this._selectAllState.set(value));\n }\n });\n\n // Reset the \"select all\" state when items change (Vue: watch(props.items))\n let firstItemsRun = true;\n effect(() => {\n this.items();\n if (firstItemsRun) {\n firstItemsRun = false;\n return;\n }\n untracked(() => this._selectAllState.set(false));\n });\n\n // Emit selectAllChange when the internal state changes (Vue: watch(state.selectAll))\n let firstSelectAllRun = true;\n effect(() => {\n const value = this._selectAllState();\n if (firstSelectAllRun) {\n firstSelectAllRun = false;\n return;\n }\n untracked(() => this.selectAllChange.emit(value));\n });\n\n // Sync the master checkbox state with the page selection\n // (Vue: onMounted + watch(isPageSelected))\n let firstPageSelectedRun = true;\n effect(() => {\n const selected = this.isPageSelected();\n untracked(() => {\n if (this.pageState() !== selected) {\n this.pageState.set(selected);\n if (!firstPageSelectedRun) {\n this.selectPageChange.emit(selected);\n }\n }\n firstPageSelectedRun = false;\n });\n });\n }\n\n // --------------------------------------------------------------------------\n // Lifecycle\n // --------------------------------------------------------------------------\n\n ngOnInit(): void {\n if (this.pageable() && isNaN(Number(this.totalItems()))) {\n throw new Error('MozDataTable: totalItems is required when pageable is true');\n }\n\n if (this.showExpandableContent()) {\n const expandedRows =\n this.expandableList().length > 0\n ? [...this.expandableList()]\n : Array.from({ length: this.items().length }, (_, i) => i);\n this._expandedRows.set(expandedRows);\n }\n }\n\n ngAfterContentInit(): void {\n // Apply the default sort direction of the columns (Vue: onMounted)\n this.getHeaders().forEach((header) => {\n if (header.sortDirectionDefault) {\n if (this.getSort()) {\n throw new Error('MozDataTable: sortDirectionDefault can be set only once per header');\n }\n\n this.updateSort(\n {\n column: header.value,\n direction: header.sortDirectionDefault,\n ...(header.additionalProps ?? {}),\n },\n true,\n );\n }\n });\n }\n\n // --------------------------------------------------------------------------\n // Computed state\n // --------------------------------------------------------------------------\n\n protected readonly getHeaders = computed<MozDataTableHeader[]>(() => {\n const columns = this.columns();\n if (columns.length > 0) {\n return columns.map((column) => ({\n label: column.label(),\n value: column.value(),\n type: column.type(),\n sortable: column.sortable(),\n sortDirectionDefault: column.sortDirectionDefault(),\n class: column.cellClass(),\n additionalProps: column.additionalProps(),\n e2eSelector: column.e2eSelector(),\n }));\n }\n return this.headers() ?? [];\n });\n\n protected readonly getSort = computed<MozDataTableSort | null | undefined>(\n () => this.sort() || this._sortState(),\n );\n\n protected readonly getSortMultiple = computed<MozDataTableSort[]>(\n () => this.sortMultiple() || this._sortMultipleState(),\n );\n\n protected readonly getItemsPerPage = computed<number>(\n () => this.itemsPerPage() || this._itemsPerPageState(),\n );\n\n protected readonly getCurrentPage = computed<number>(\n () => this.currentPage() || this._currentPageState(),\n );\n\n protected readonly getSelectedItems = computed<T[]>(() => this._selectedItems());\n\n protected readonly getSelectAll = computed<boolean>(\n () => this.selectAll() || this._selectAllState(),\n );\n\n protected readonly getClickable = computed<boolean>(\n () => this.clickable() || this.clickableRows(),\n );\n\n protected readonly getPaginationLength = computed<number>(\n () => Math.ceil(Number(this.totalItems()) / this.getItemsPerPage()) || 1,\n );\n\n protected readonly getPageCountInfos = computed(() => {\n const itemsPerPage = this.getItemsPerPage();\n const currentPage = this.getCurrentPage();\n const totalItems = this.totalItems() ?? 0;\n\n const itemsOnCurrentPage = currentPage * itemsPerPage;\n\n return {\n start: itemsOnCurrentPage - itemsPerPage + 1,\n end: Math.min(itemsOnCurrentPage, totalItems),\n total: totalItems,\n };\n });\n\n protected readonly getOptions = computed(() => {\n const totalPages = this.getPaginationLength();\n return Array.from({ length: totalPages }, (_, index) => ({\n text: `${index + 1} of ${totalPages}`,\n value: index + 1,\n }));\n });\n\n protected readonly getItemsPerPageOptions = computed<MozDataTablePageSizeOption[]>(() => {\n const options = this.itemsPerPageOptions();\n if (options.length > 0 && typeof options[0] === 'number') {\n return (options as number[]).map((option) => {\n const value = option.toString();\n return { text: value, value };\n });\n }\n return options as MozDataTablePageSizeOption[];\n });\n\n protected readonly isPageSelected = computed<boolean>(() => {\n const items = this.items();\n const selected = this._selectedItems();\n const indexKey = this.indexKey();\n return (\n items.length > 0 &&\n items.every((item) => selected.some((s) => s[indexKey] === item[indexKey]))\n );\n });\n\n protected readonly isPageIndeterminate = computed<boolean>(() => {\n const indexKey = this.indexKey();\n const itemsState = this._selectedItems().some((item) =>\n this.items().some((p) => p[indexKey] === item[indexKey]),\n );\n\n return itemsState && !this.isPageSelected();\n });\n\n protected readonly multiSelectionPage = computed<boolean>(\n () => this.getSelectedItems().length >= this.items().length,\n );\n\n protected readonly getLabelButtonSelectAll = computed<string>(\n () => this.labelButtonSelectAll() ?? `Select all ${this.totalItems()} rows of this table`,\n );\n\n protected readonly getLabelSelectedPage = computed<string>(\n () =>\n this.labelPageSelected() ??\n `${this.getSelectedItems().length} rows on this table are selected`,\n );\n\n protected readonly getLabelAllItemsSelected = computed<string>(\n () => this.labelAllItemsSelected() ?? `All ${this.totalItems()} rows in the table are selected`,\n );\n\n protected readonly hostClasses = computed(() => ({\n 'mc-datatable': true,\n 'mc-datatable--sticky-header': this.fixedHeader(),\n [`mc-datatable--${this.size()}`]: !!this.size(),\n }));\n\n protected readonly skeletonRows = computed<number[]>(() =>\n Array.from({ length: this.getItemsPerPage() }, (_, i) => i),\n );\n\n // --------------------------------------------------------------------------\n // Templates lookup\n // --------------------------------------------------------------------------\n\n protected cellTemplateFor(column: string): MozDataTableCellTemplateDirective | undefined {\n return this.cellTemplates().find((template) => template.mozDataTableCell() === column);\n }\n\n protected headerTemplateFor(column: string): MozDataTableHeaderTemplateDirective | undefined {\n return this.headerTemplates().find((template) => template.mozDataTableHeader() === column);\n }\n\n // --------------------------------------------------------------------------\n // Sort\n // --------------------------------------------------------------------------\n\n protected getSortDirection(headerKey: string): MozDataTableSortDirection {\n // Multiple Sorting\n if (this.sortMode() === 'multiple') {\n const currentSortColumn = this.getSortMultiple().find((sort) => sort.column === headerKey);\n return currentSortColumn?.direction ?? null;\n }\n\n // Single Sorting\n const sort = this.getSort();\n if (!sort || headerKey !== sort.column) {\n return null;\n }\n\n return sort.direction ?? null;\n }\n\n updateSort(sort: MozDataTableSort, noChange = false): void {\n if (this.sortMode() !== 'multiple') {\n // Single Sorting\n this._sortState.set(sort);\n this.sortChange.emit(sort);\n } else {\n // Multiple Sorting\n const sorts = [...this.getSortMultiple()];\n const index = sorts.findIndex((s) => s.column === sort.column);\n\n if (sort.direction == null) {\n if (index >= 0) {\n sorts.splice(index, 1);\n }\n } else if (index >= 0) {\n sorts[index] = sort;\n } else {\n sorts.push(sort);\n }\n\n const ordered = this.sortByHeaderOrder(sorts);\n this._sortMultipleState.set(ordered);\n this.sortMultipleChange.emit(ordered);\n }\n\n if (!noChange) {\n this.emitChange({ sort });\n }\n }\n\n private sortByHeaderOrder(sorts: MozDataTableSort[]): MozDataTableSort[] {\n const order = this.getHeaders().map((header) => header.value);\n return [...sorts].sort((a, b) => order.indexOf(a.column) - order.indexOf(b.column));\n }\n\n // --------------------------------------------------------------------------\n // Pagination\n // --------------------------------------------------------------------------\n\n protected updatePageSize(size: number): void {\n this._itemsPerPageState.set(size);\n this.itemsPerPageChange.emit(size);\n this.emitChange({ size });\n }\n\n protected updateCurrentPage(page: number): void {\n this._currentPageState.set(page);\n this.currentPageChange.emit(page);\n this.emitChange({ page });\n }\n\n private emitChange(\n partial: { size?: number; sort?: MozDataTableSort | null; page?: number } = {},\n ): void {\n const payload: MozDataTableUpdatePayload = {\n sort: partial.sort || this.getSort(),\n size: partial.size || this.getItemsPerPage(),\n page: partial.page || this.getCurrentPage(),\n sortMultiple: this.getSortMultiple(),\n };\n\n if (this.getPaginationLength() < this._currentPageState()) {\n this._currentPageState.set(this.getPaginationLength());\n payload.page = this._currentPageState();\n }\n\n this.changed.emit(payload);\n }\n\n // --------------------------------------------------------------------------\n // Rows\n // --------------------------------------------------------------------------\n\n protected trackRow(index: number, item: T): unknown {\n const key = item[this.indexKey()];\n return key === undefined ? index : key;\n }\n\n protected displayValue(item: T, key: string): string {\n const value = item[key];\n return value == null ? '' : String(value);\n }\n\n protected onClickRow(rowData: T, rowIndex: number): void {\n this.clickRow.emit({ data: rowData, index: rowIndex });\n }\n\n // --------------------------------------------------------------------------\n // Selection\n // --------------------------------------------------------------------------\n\n protected isSelected(item: T): boolean {\n const indexKey = this.indexKey();\n return this._selectedItems().some((selected) => selected[indexKey] === item[indexKey]);\n }\n\n private onSelectRow(event: Event, rowData: T, rowIndex: number): void {\n const checked = (event.target as HTMLInputElement).checked;\n const eventArg: MozDataTableRowEvent<T> = { data: rowData, index: rowIndex };\n const indexKey = this.indexKey();\n\n if (checked) {\n this.setSelectedItems([...this._selectedItems(), rowData]);\n this.selectRow.emit(eventArg);\n } else {\n this.setSelectedItems(\n this._selectedItems().filter((selected) => selected[indexKey] !== rowData[indexKey]),\n );\n this.unselectRow.emit(eventArg);\n }\n this._lastSelectedItem.set(rowData);\n }\n\n protected onSelectRowWithShift(event: MouseEvent, rowData: T, rowIndex: number): void {\n if (!event.shiftKey) {\n this.onSelectRow(event, rowData, rowIndex);\n return;\n }\n\n const lastSelectedItem = this._lastSelectedItem();\n if (lastSelectedItem !== undefined && lastSelectedItem !== rowData) {\n let inBetween = false;\n const itemsInBetween: T[] = [];\n this.items().forEach((item) => {\n if (item === lastSelectedItem || item === rowData) {\n inBetween = !inBetween;\n }\n if (inBetween) {\n itemsInBetween.push(item);\n }\n });\n itemsInBetween.push(rowData);\n itemsInBetween.push(lastSelectedItem);\n\n if ((event.target as HTMLInputElement).checked) {\n // Remove duplicates by converting to a Set and back to an array\n this.setSelectedItems([...new Set([...this._selectedItems(), ...itemsInBetween])]);\n this.selectMultipleRows.emit({ data: itemsInBetween });\n } else {\n this.setSelectedItems(\n this._selectedItems().filter((selected) => !itemsInBetween.includes(selected)),\n );\n this.unselectMultipleRows.emit({ data: itemsInBetween });\n }\n }\n this._lastSelectedItem.set(rowData);\n }\n\n protected onClickMasterCheckbox(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n\n this.pageState.set(checked);\n this.onPageSelected(checked);\n\n if (!checked) {\n this.clearSelection();\n }\n }\n\n private onPageSelected(checked: boolean): void {\n const indexKey = this.indexKey();\n\n if (checked) {\n const currentPageIds = new Set(this.items().map((item) => item[indexKey]));\n this.setSelectedItems([\n ...this._selectedItems().filter((s) => !currentPageIds.has(s[indexKey])),\n ...this.items(),\n ]);\n\n this.selectAllRows.emit({ data: this._selectedItems() });\n } else if (!checked && !this.isPageIndeterminate()) {\n this.unselectAllRows.emit();\n }\n }\n\n private clearSelection(): void {\n const indexKey = this.indexKey();\n const pageKeys = new Set(this.items().map((item) => item[indexKey]));\n this.setSelectedItems(\n this._selectedItems().filter((selected) => !pageKeys.has(selected[indexKey])),\n );\n }\n\n protected clearAll(): void {\n this.setSelectedItems([]);\n this._selectAllState.set(false);\n }\n\n protected onSelectAllFromBar(): void {\n this._selectAllState.set(true);\n }\n\n private setSelectedItems(items: T[]): void {\n this._selectedItems.set(items);\n this.selectionChange.emit(items);\n }\n\n // --------------------------------------------------------------------------\n // Expansion\n // --------------------------------------------------------------------------\n\n protected displayExpandButton(rowIndex: number): boolean {\n return this.expandableList().includes(rowIndex) || !this.expandableList().length;\n }\n\n protected onClickExpandButton(rowData: T, rowIndex: number): void {\n const rowKey = this.expandRowKey(rowData, rowIndex);\n const expanded = this._expandedRows().includes(rowKey);\n const eventArg: MozDataTableRowEvent<T> = { data: rowData, index: rowIndex };\n\n if (expanded) {\n this._expandedRows.set(this._expandedRows().filter((row) => String(row) !== String(rowKey)));\n this.retractRow.emit(eventArg);\n } else {\n this._expandedRows.set([...this._expandedRows(), rowKey]);\n this.expandRow.emit(eventArg);\n }\n }\n\n protected isRowExpanded(rowData: T, rowIndex: number): boolean {\n return this._expandedRows().includes(this.expandRowKey(rowData, rowIndex));\n }\n\n private expandRowKey(rowData: T, rowIndex: number): number | string {\n const dataKeyExpand = this.dataKeyExpand();\n return dataKeyExpand ? ((rowData[dataKeyExpand] as number | string) ?? rowIndex) : rowIndex;\n }\n}\n","<!-- Topbar -->\n<ng-content select=\"moz-datatable-top, [mozDataTableTopbar]\" />\n\n<!-- Selection bar -->\n<ng-content select=\"[mozDataTableSelectionbar]\" />\n@if (!customSelectionbar() && selectionbar() && multiSelectionPage()) {\n <moz-datatable-selection-bar\n [selectAll]=\"getSelectAll()\"\n [labelPageSelected]=\"getLabelSelectedPage()\"\n [labelAllItemsSelected]=\"getLabelAllItemsSelected()\"\n [labelButtonSelectAll]=\"getLabelButtonSelectAll()\"\n [labelButtonClearSelection]=\"labelButtonClearSelection()\"\n (selectAllRows)=\"onSelectAllFromBar()\"\n (clearAllRows)=\"clearAll()\"\n />\n}\n\n<div class=\"mc-datatable__container\">\n <!-- MAIN -->\n <div class=\"mc-datatable__main\" [style.max-height]=\"maxHeight()\">\n @if (items().length === 0 && !loading()) {\n <moz-datatable-empty>\n @if (noDataTemplate(); as noData) {\n <ng-container [ngTemplateOutlet]=\"noData.template\" />\n }\n </moz-datatable-empty>\n } @else {\n <table [class]=\"!nested() ? 'mc-datatable__table' : 'mc-datatable__subtable'\">\n <thead>\n <tr>\n @if (headersTemplate(); as customHeaders) {\n <ng-container [ngTemplateOutlet]=\"customHeaders.template\" />\n } @else {\n <!-- Selectable -->\n @if (selectable()) {\n <th moz-datatable-header [selectable]=\"true\">\n <div class=\"checkbox\">\n <input\n id=\"masterCheckbox\"\n type=\"checkbox\"\n class=\"checkbox__input\"\n aria-label=\"Select all rows\"\n [checked]=\"pageState()\"\n [indeterminate]=\"isPageIndeterminate()\"\n [disabled]=\"!items().length || (loading() ?? false)\"\n (change)=\"onClickMasterCheckbox($event)\"\n />\n </div>\n </th>\n }\n\n <!-- Expandable -->\n @if (expandable()) {\n <th moz-datatable-header [expandable]=\"true\"></th>\n }\n\n <!-- Headers from configuration -->\n @for (header of getHeaders(); track $index) {\n <th\n moz-datatable-header\n [label]=\"header.label\"\n [value]=\"header.value\"\n [sortable]=\"header.sortable ?? false\"\n [sortDirection]=\"getSortDirection(header.value)\"\n [additionalProps]=\"header.additionalProps\"\n [labelTemplate]=\"headerTemplateFor(header.value)?.template ?? null\"\n [headerConfig]=\"header\"\n (updateSortDirection)=\"updateSort($event)\"\n ></th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @if (bodyTemplate(); as customBody) {\n <ng-container [ngTemplateOutlet]=\"customBody.template\" />\n } @else {\n @if (!items().length && loading()) {\n <!-- Loading skeleton -->\n @for (n of skeletonRows(); track n) {\n <tr moz-datatable-row>\n @if (selectable()) {\n <td moz-datatable-cell type=\"checkbox\">\n <span class=\"skeleton-cell\">&nbsp;</span>\n </td>\n }\n @if (expandable()) {\n <td moz-datatable-cell type=\"expand\">\n <span class=\"skeleton-cell\">&nbsp;</span>\n </td>\n }\n @for (header of getHeaders(); track $index) {\n <td><span class=\"skeleton-cell\">&nbsp;</span></td>\n }\n </tr>\n }\n } @else {\n @for (item of items(); track trackRow($index, item); let rowIndex = $index) {\n <tr\n moz-datatable-row\n [selected]=\"isSelected(item)\"\n [class]=\"rowClass()\"\n [clickable]=\"getClickable()\"\n [expandable]=\"expandable()\"\n [expanded]=\"isRowExpanded(item, rowIndex)\"\n [attr.tabindex]=\"getClickable() ? 0 : null\"\n (keyup.enter)=\"getClickable() && onClickRow(item, rowIndex)\"\n >\n <!-- Cell (Selectable) -->\n @if (selectable()) {\n <td moz-datatable-cell type=\"checkbox\">\n <div class=\"checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox__input\"\n [attr.aria-label]=\"'Select rows n°' + rowIndex\"\n [checked]=\"isSelected(item)\"\n [disabled]=\"loading() ?? false\"\n (click)=\"onSelectRowWithShift($event, item, rowIndex)\"\n />\n </div>\n </td>\n }\n\n <!-- Cell (Expandable) -->\n @if (expandable()) {\n <td moz-datatable-cell type=\"expand\">\n @if (displayExpandButton(rowIndex)) {\n <button\n moz-datatable-expand-button\n [label]=\"accessibilityLabels()?.expandButtonLabel\"\n [expanded]=\"isRowExpanded(item, rowIndex)\"\n [disabled]=\"loading() ?? false\"\n (click)=\"onClickExpandButton(item, rowIndex)\"\n ></button>\n }\n </td>\n }\n\n <!-- Cells from data -->\n @for (header of getHeaders(); track $index) {\n <td\n moz-datatable-cell\n [class]=\"header.class\"\n [value]=\"header.value\"\n [type]=\"header.type\"\n (click)=\"getClickable() && onClickRow(item, rowIndex)\"\n >\n @if (loading()) {\n <span class=\"skeleton-cell\">&nbsp;</span>\n } @else if (cellTemplateFor(header.value); as cellTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"cellTemplate.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n item: item,\n index: rowIndex,\n rowIndex: rowIndex,\n }\"\n />\n } @else {\n {{ displayValue(item, header.value) }}\n }\n </td>\n }\n </tr>\n\n <!-- Expand row -->\n @if (isRowExpanded(item, rowIndex)) {\n <tr\n moz-datatable-row-expand\n [headers]=\"getHeaders().length\"\n [expandable]=\"expandable()\"\n [selectable]=\"selectable()\"\n >\n @if (expandTemplate(); as expand) {\n <ng-container\n [ngTemplateOutlet]=\"expand.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n item: item,\n index: rowIndex,\n rowIndex: rowIndex,\n }\"\n />\n }\n </tr>\n }\n }\n }\n }\n </tbody>\n </table>\n }\n </div>\n\n <!-- FOOTER -->\n @if (pageable()) {\n <div class=\"mc-datatable__footer\">\n <!-- DataTable Rows Per Page Selector -->\n <moz-datatable-rows-per-page\n [label]=\"itemsPerPageLabel()\"\n [value]=\"getItemsPerPage()\"\n [loading]=\"loading() ?? false\"\n [options]=\"getItemsPerPageOptions()\"\n (updateValue)=\"updatePageSize($event)\"\n />\n\n <!-- DataTable Info (count) -->\n @if (!hidePageCount()) {\n <moz-datatable-info\n [label]=\"countLabel()\"\n [labelItems]=\"infoLabelItems()\"\n [start]=\"getPageCountInfos().start\"\n [end]=\"getPageCountInfos().end\"\n [total]=\"getPageCountInfos().total\"\n />\n }\n\n <!-- DataTable Pagination -->\n <div class=\"mc-datatable__pagination\">\n <moz-pagination\n [id]=\"accessibilityLabels()?.paginationAriaLabel ?? 'datatable-pagination'\"\n [selectLabel]=\"accessibilityLabels()?.paginationAriaLabel ?? 'Select page'\"\n [options]=\"getOptions()\"\n [value]=\"getCurrentPage()\"\n buttonSize=\"s\"\n (updateValue)=\"updateCurrentPage($event)\"\n />\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n contentChild,\n} from '@angular/core';\nimport {\n MozDataTableTopActionsDirective,\n MozDataTableTopEditionDirective,\n MozDataTableTopFiltersDirective,\n} from '../directives/datatable-templates';\n\n/**\n * Topbar of the DataTable. Use the `mozDataTableTopEdition`,\n * `mozDataTableTopActions` and `mozDataTableTopFilters` attributes to mark\n * the content of each zone:\n *\n * ```html\n * <moz-datatable [items]=\"items\">\n * <moz-datatable-top>\n * <div mozDataTableTopActions>\n * <button moz-button size=\"s\">Primary action</button>\n * </div>\n * </moz-datatable-top>\n * </moz-datatable>\n * ```\n *\n * Equivalent of the `MDataTableTop` component of the Vue implementation.\n */\n@Component({\n selector: 'moz-datatable-top',\n template: `\n @if (edition() || actions()) {\n <div class=\"mc-datatable__topbar\">\n @if (edition()) {\n <div class=\"mc-datatable__topbar-edition\">\n <ng-content select=\"[mozDataTableTopEdition]\" />\n </div>\n }\n @if (actions()) {\n <div class=\"mc-datatable__topbar-actions\">\n <ng-content select=\"[mozDataTableTopActions]\" />\n </div>\n }\n </div>\n }\n @if (filters()) {\n <div class=\"mc-datatable__filters\">\n <ng-content select=\"[mozDataTableTopFilters]\" />\n </div>\n }\n `,\n host: {\n '[class.mc-datatable__header]': 'hasContent()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MozDataTableTopComponent {\n readonly edition = contentChild(MozDataTableTopEditionDirective);\n readonly actions = contentChild(MozDataTableTopActionsDirective);\n readonly filters = contentChild(MozDataTableTopFiltersDirective);\n\n readonly hasContent = computed(() => !!(this.edition() || this.actions() || this.filters()));\n}\n","import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { MozDividerComponent } from '../divider/divider';\nimport { MozBottomBarItem } from './model/bottom-bar.model';\n\n/**\n * The bottom bar is the primary navigation of a mobile interface. It is pinned to the bottom\n * of the viewport and exposes a short list of destinations, each one made of an icon and a\n * label. Only one destination can be selected at a time.\n */\n@Component({\n selector: 'moz-bottom-bar',\n imports: [NgComponentOutlet, NgTemplateOutlet, RouterLink, MozDividerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './bottom-bar.html',\n styleUrls: ['./bottom-bar.scss'],\n})\nexport class MozBottomBarComponent {\n /** Navigation entries displayed by the bottom bar. */\n readonly items = input<MozBottomBarItem[]>([]);\n\n /** Accessible name of the navigation landmark. */\n readonly ariaLabel = input<string>('Bottom navigation');\n\n /** Displays a divider above the list of triggers. */\n readonly divider = input(false);\n\n /** Identifier of the currently selected item. Two-way bindable. */\n readonly selectedId = model<string | null>(null);\n\n /** Emitted whenever an enabled item is activated. */\n readonly itemSelected = output<MozBottomBarItem>();\n\n isSelected(item: MozBottomBarItem): boolean {\n return this.selectedId() === item.id;\n }\n\n triggerClasses(item: MozBottomBarItem): Record<string, boolean> {\n return {\n 'bottom-bar__trigger': true,\n 'bottom-bar__trigger--selected': this.isSelected(item),\n };\n }\n\n onSelect(item: MozBottomBarItem, event: Event): void {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n\n if (!this.isSelected(item)) {\n this.selectedId.set(item.id);\n }\n\n this.itemSelected.emit(item);\n }\n}\n","<ng-template #triggerContent let-item>\n @if (item.icon) {\n <span class=\"bottom-bar__icon\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"item.icon\"></ng-container>\n </span>\n }\n <span class=\"bottom-bar__label\">{{ item.label }}</span>\n</ng-template>\n\n<nav class=\"bottom-bar\" [attr.aria-label]=\"ariaLabel()\">\n @if (divider()) {\n <moz-divider></moz-divider>\n }\n\n <ul class=\"bottom-bar__list\">\n @for (item of items(); track item.id) {\n <li class=\"bottom-bar__item\">\n @if (item.routerLink) {\n <a\n [class]=\"triggerClasses(item)\"\n [routerLink]=\"item.routerLink\"\n [attr.aria-current]=\"isSelected(item) ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n (click)=\"onSelect(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerContent\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </a>\n } @else if (item.href) {\n <a\n [class]=\"triggerClasses(item)\"\n [attr.href]=\"item.href\"\n [attr.target]=\"item.target ?? null\"\n [attr.rel]=\"item.target === '_blank' ? 'noopener noreferrer' : null\"\n [attr.aria-current]=\"isSelected(item) ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n (click)=\"onSelect(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerContent\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"triggerClasses(item)\"\n [disabled]=\"!!item.disabled\"\n [attr.aria-current]=\"isSelected(item) ? 'page' : null\"\n (click)=\"onSelect(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerContent\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </button>\n }\n </li>\n }\n </ul>\n</nav>\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Type, computed, input } from '@angular/core';\nimport {\n MozEmptyStateAppearance,\n MozEmptyStateHeadingLevel,\n} from './model/empty-state.model';\n\n/**\n * An empty state explains why a zone of the interface holds no content yet — a search\n * without result, a list not fed, a feature not set up — and points the user to the next\n * step. It is made of an illustrative icon, a title, a description and optional actions\n * projected through the `actions` slot.\n */\n@Component({\n selector: 'moz-empty-state',\n imports: [NgComponentOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './empty-state.html',\n styleUrls: ['./empty-state.scss'],\n})\nexport class MozEmptyStateComponent {\n /** Icon component illustrating the empty state. */\n readonly icon = input<Type<unknown> | null>(null);\n\n /** Background of the icon container. */\n readonly appearance = input<MozEmptyStateAppearance>('primary');\n\n /** Short sentence naming what is missing. */\n readonly title = input.required<string>();\n\n /** Complementary text explaining how to fill the void. */\n readonly description = input<string | null>(null);\n\n /** Heading level reported to assistive technologies for the title. */\n readonly headingLevel = input<MozEmptyStateHeadingLevel>(2);\n\n readonly iconClasses = computed(() => ({\n 'empty-state__icon': true,\n 'empty-state__icon--secondary': this.appearance() === 'secondary',\n }));\n}\n","<div class=\"empty-state\">\n @if (icon()) {\n <div [class]=\"iconClasses()\" aria-hidden=\"true\">\n <ng-container [ngComponentOutlet]=\"icon()\"></ng-container>\n </div>\n }\n\n <p class=\"empty-state__title\" role=\"heading\" [attr.aria-level]=\"headingLevel()\">\n {{ title() }}\n </p>\n\n @if (description()) {\n <p class=\"empty-state__description\">{{ description() }}</p>\n }\n\n <div class=\"empty-state__actions\">\n <ng-content select=\"[actions]\" />\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}