@mozaic-ds/angular 2.1.7 → 2.1.8

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/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 input,\n OnInit,\n signal,\n output,\n viewChild,\n ElementRef,\n} from '@angular/core';\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})\nexport class MozFileUploaderComponent implements OnInit {\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 // Internal state\n readonly files = signal<File[]>([]);\n readonly isDragged = 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 readonly inputClasses = computed(() => ({\n 'file-uploader__input--disabled': this.disabled(),\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.files.set(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.files.set(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.files.set([...currentFiles, ...newFiles]);\n } else {\n // Mode simple : remplace tous les fichiers\n this.files.set(newFiles);\n }\n }\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.isDragged.set(false);\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.files.set([...currentFiles, ...newFiles]);\n } else {\n // Mode simple : remplace tous les fichiers\n this.files.set(newFiles);\n }\n }\n }\n\n openFileDialog(): void {\n if (this.disabled()) 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","<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]=\"disabled()\"\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 EventEmitter,\n Output,\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 @Output() selectedIndexChange = new EventEmitter<number>();\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.selectedIndexChange.emit(index);\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.selectedIndexChange.emit(index);\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 readonly activeTabChange = output<number>();\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 onActiveTabChange(index: number): void {\n this.activeTabChange.emit(index);\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\n [tabs]=\"tabs()!\"\n [(selectedIndex)]=\"activeTab\"\n (selectedIndexChange)=\"onActiveTabChange($event)\"\n />\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 classes = computed(() => ({\n 'mc-drawer': true,\n 'is-open': this.drawerRef.isOpen(),\n 'mc-drawer--extend': this.drawerRef.extended(),\n [`mc-drawer--${this.drawerRef.position()}`]: this.drawerRef.position() !== 'right',\n }));\n\n readonly dialogClasses = computed(() => {\n const extra = this.drawerRef.panelClass();\n return extra ? `mc-drawer__dialog ${extra}` : 'mc-drawer__dialog';\n });\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]=\"classes()\"\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]=\"dialogClasses()\" 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, then force a reflow so the browser\n // commits the dialog's initial `transform: translateX(100%)`. This gives the\n // CSS slide-in transition a painted starting point.\n //\n // Required under zoneless change detection (`provideZonelessChangeDetection`):\n // without it, the container's first change-detection pass can be flushed in\n // the same frame as `isOpen` flipping to `true`, so the dialog is painted\n // already-open and the `.is-open` transition never runs (the drawer \"pops\"\n // in instantly). Under zone.js this is just a harmless extra CD.\n containerRef.changeDetectorRef.detectChanges();\n void containerRef.location.nativeElement.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","/**\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/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 input,\n OnInit,\n signal,\n output,\n viewChild,\n ElementRef,\n} from '@angular/core';\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})\nexport class MozFileUploaderComponent implements OnInit {\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 // Internal state\n readonly files = signal<File[]>([]);\n readonly isDragged = 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 readonly inputClasses = computed(() => ({\n 'file-uploader__input--disabled': this.disabled(),\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.files.set(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.files.set(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.files.set([...currentFiles, ...newFiles]);\n } else {\n // Mode simple : remplace tous les fichiers\n this.files.set(newFiles);\n }\n }\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.isDragged.set(false);\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.files.set([...currentFiles, ...newFiles]);\n } else {\n // Mode simple : remplace tous les fichiers\n this.files.set(newFiles);\n }\n }\n }\n\n openFileDialog(): void {\n if (this.disabled()) 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","<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]=\"disabled()\"\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 classes = computed(() => ({\n 'mc-drawer': true,\n 'is-open': this.drawerRef.isOpen(),\n 'mc-drawer--extend': this.drawerRef.extended(),\n [`mc-drawer--${this.drawerRef.position()}`]: this.drawerRef.position() !== 'right',\n }));\n\n readonly dialogClasses = computed(() => {\n const extra = this.drawerRef.panelClass();\n return extra ? `mc-drawer__dialog ${extra}` : 'mc-drawer__dialog';\n });\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]=\"classes()\"\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]=\"dialogClasses()\" 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, then force a reflow so the browser\n // commits the dialog's initial `transform: translateX(100%)`. This gives the\n // CSS slide-in transition a painted starting point.\n //\n // Required under zoneless change detection (`provideZonelessChangeDetection`):\n // without it, the container's first change-detection pass can be flushed in\n // the same frame as `isOpen` flipping to `true`, so the dialog is painted\n // already-open and the `.is-open` transition never runs (the drawer \"pops\"\n // in instantly). Under zone.js this is just a harmless extra CD.\n containerRef.changeDetectorRef.detectChanges();\n void containerRef.location.nativeElement.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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}