@eui/eds 22.0.0-alpha.51 → 22.0.0-alpha.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/changelog.html +29 -0
- package/docs/components/EdsCheckbox.html +2 -2
- package/docs/components/EdsRadio.html +15 -2
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/documentation.json +139 -98
- package/docs/llms.txt +3 -3
- package/docs/properties.html +1 -1
- package/fesm2022/eui-eds-eds-button.mjs +2 -2
- package/fesm2022/eui-eds-eds-button.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-checkbox.mjs +21 -7
- package/fesm2022/eui-eds-eds-checkbox.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-datepicker.mjs +2 -2
- package/fesm2022/eui-eds-eds-datepicker.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-feedback-message.mjs +2 -2
- package/fesm2022/eui-eds-eds-feedback-message.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-input-button.mjs +2 -2
- package/fesm2022/eui-eds-eds-input-button.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-input-number.mjs +2 -2
- package/fesm2022/eui-eds-eds-input-number.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-input-text.mjs +2 -2
- package/fesm2022/eui-eds-eds-input-text.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-radio.mjs +27 -9
- package/fesm2022/eui-eds-eds-radio.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-select.mjs +2 -2
- package/fesm2022/eui-eds-eds-select.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-textarea.mjs +2 -2
- package/fesm2022/eui-eds-eds-textarea.mjs.map +1 -1
- package/package.json +3 -3
- package/types/eui-eds-eds-checkbox.d.ts +7 -1
- package/types/eui-eds-eds-checkbox.d.ts.map +1 -1
- package/types/eui-eds-eds-radio.d.ts +8 -1
- package/types/eui-eds-eds-radio.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-input-number.mjs","sources":["../../eds-input-number/eds-input-number.ts","../../eds-input-number/index.ts","../../eds-input-number/eui-eds-eds-input-number.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n inject,\n input,\n signal,\n effect,\n booleanAttribute,\n numberAttribute,\n DoCheck,\n OnInit,\n LOCALE_ID,\n PLATFORM_ID,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { EdsClearableDirective, EdsLoadingDirective } from '@eui/eds/shared';\n\n/** Size variants supported by the EDS number input. */\nexport type EdsInputNumberSize = 's' | 'm' | 'l';\n\n/**\n * Returns the decimal and group separators for a given locale.\n */\nfunction getLocaleConfig(locale: string): { group: string; decimal: string } {\n const parts = new Intl.NumberFormat(locale, { useGrouping: true }).formatToParts(10000.1);\n return {\n group: parts.find(p => p.type === 'group')?.value || '',\n decimal: parts.find(p => p.type === 'decimal')?.value || '.',\n };\n}\n\n/**\n * EdsInputNumber is a directive-based component that applies number input behavior\n * to a native `<input>` element. It provides locale-aware number formatting with\n * thousand grouping, decimal precision, min/max enforcement, and reactive forms integration.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[edsInputNumber]',\n template: '',\n styleUrl: './eds-input-number.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EdsClearableDirective,\n inputs: ['edsClearable', 'readonly', 'disabled'],\n },\n {\n directive: EdsLoadingDirective,\n inputs: ['edsLoading', 'readonly'],\n },\n ],\n host: {\n class: 'eds-input-number',\n '[attr.invalid]': '_isInvalid() || null',\n '[attr.input-size]': 'size()',\n '[attr.rounded]': 'isRounded() || null',\n '[attr.leading-zero]': 'hasLeadingZero() || null',\n '[attr.data-e2e]': 'e2eAttr()',\n '[attr.inputmode]': '\"decimal\"',\n '[disabled]': '_disabled()',\n '[attr.readonly]': 'readonly() || null',\n '(input)': 'onHostInput($event)',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeyDown($event)',\n '(paste)': 'onPaste($event)',\n },\n})\nexport class EdsInputNumber implements ControlValueAccessor, DoCheck, OnInit {\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-input-number'\n */\n e2eAttr = input('eds-input-number');\n\n /**\n * Controls whether the input is disabled.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the input is readonly.\n * @default false\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the input shows an invalid/error state.\n * @default false\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Size variant of the input. Reflected as the `input-size` host attribute.\n * @default 'm'\n */\n size = input<EdsInputNumberSize>('m');\n\n /**\n * Minimum allowed value. Enforced on blur.\n */\n min = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * Maximum allowed value. Enforced on blur.\n */\n max = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * Number of digits allowed after the decimal point.\n * @default 0\n */\n fractionDigits = input<number, unknown>(0, { transform: (v: unknown) => numberAttribute(v, 0) });\n\n /**\n * Whether to fill the decimal part with trailing zeros.\n * @default false\n */\n fillFraction = input(false, { transform: booleanAttribute });\n\n /**\n * Disables thousand grouping. Number is displayed plain.\n * @default false\n */\n noFormat = input(false, { transform: booleanAttribute });\n\n /**\n * When true, values that exceed `fractionDigits` are mathematically rounded\n * to that number of decimal places (e.g. `99.932` with `fractionDigits=2`\n * becomes `99.93`, with `fractionDigits=1` becomes `99.9`). When false\n * (default) the extra digits are simply truncated.\n *\n * Only meaningful when `fractionDigits` > 0 — with the default `fractionDigits`\n * of 0 there are no decimals to round, so this option has no effect.\n * @default false\n */\n isRounded = input(false, { transform: booleanAttribute });\n\n /**\n * When true, the integer part is left-padded with leading zeros until it\n * reaches `minIntegerDigits` (e.g. `9` becomes `009` with `minIntegerDigits=3`).\n * @default false\n */\n hasLeadingZero = input(false, { transform: booleanAttribute });\n\n /**\n * Minimum number of integer digits to display when `hasLeadingZero` is enabled.\n * @default 3\n */\n minIntegerDigits = input<number, unknown>(3, { transform: (v: unknown) => numberAttribute(v, 3) });\n\n private _elementRef: ElementRef<HTMLInputElement> = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n private _localeId = inject(LOCALE_ID);\n private _document = inject<Document>(DOCUMENT);\n private _platformId = inject(PLATFORM_ID);\n protected _isInvalid = signal(false);\n /**\n * Internal disabled state. Written by both the `disabled` input (via effect)\n * and the reactive-forms `setDisabledState` callback, and drives the host\n * `[disabled]` binding — so `formControl.disable()` works without binding\n * `[disabled]` in the template.\n */\n protected _disabled = signal(false);\n private _localeConfig: { group: string; decimal: string };\n private _rawValue = '';\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n this._localeConfig = getLocaleConfig(this._localeId || 'en');\n\n // Sync the `disabled` input into the internal signal.\n effect(() => {\n this._disabled.set(this.disabled());\n });\n }\n\n ngOnInit(): void {\n // Apply initial formatting if element has a value attribute\n const initialValue = this._elementRef.nativeElement.value;\n if (initialValue) {\n this._rawValue = initialValue;\n this._elementRef.nativeElement.value = this.formatNumber(initialValue);\n }\n }\n\n ngDoCheck(): void {\n if (this._ngControl) {\n this._isInvalid.set(this._ngControl.invalid && this._ngControl.touched);\n } else {\n this._isInvalid.set(this.isInvalid());\n }\n }\n\n // --- ControlValueAccessor ---\n\n writeValue(value: number | string | null): void {\n if (value === null || value === undefined || value === '') {\n this._rawValue = '';\n this._elementRef.nativeElement.value = '';\n return;\n }\n this._rawValue = value.toString();\n this._elementRef.nativeElement.value = this.formatNumber(this._rawValue);\n }\n\n registerOnChange(fn: (value: number | string | 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._disabled.set(isDisabled);\n }\n\n // --- Event handlers ---\n\n protected onHostInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const cursorPos = target.selectionStart;\n\n // Extract raw numeric value from formatted input\n const rawValue = this.extractRawValue(target.value);\n this._rawValue = rawValue;\n\n // Re-format the display value\n const formatted = this.formatNumber(rawValue);\n const lengthDiff = formatted.length - target.value.length;\n target.value = formatted;\n\n // Restore cursor position accounting for added/removed formatting chars\n if (cursorPos !== null) {\n const newPos = Math.max(0, cursorPos + lengthDiff);\n target.setSelectionRange(newPos, newPos);\n }\n\n // Emit parsed numeric value\n this._onChange(this.parseToOutput(rawValue));\n }\n\n protected onBlur(): void {\n this._onTouched();\n\n if (this._rawValue === '') {\n return;\n }\n\n let numericValue = parseFloat(this._rawValue);\n\n // Enforce min/max on blur\n const minVal = this.min();\n const maxVal = this.max();\n if (minVal !== undefined && !isNaN(minVal) && numericValue < minVal) {\n numericValue = minVal;\n }\n if (maxVal !== undefined && !isNaN(maxVal) && numericValue > maxVal) {\n numericValue = maxVal;\n }\n\n this._rawValue = numericValue.toString();\n\n // When rounding is enabled, snap the stored/emitted raw value to the\n // configured decimal places so the committed value matches the display.\n if (this.isRounded()) {\n this._rawValue = this.roundToDecimals(this._rawValue, this.fractionDigits());\n }\n\n this._elementRef.nativeElement.value = this.formatNumber(this._rawValue);\n this._onChange(this.parseToOutput(this._rawValue));\n }\n\n protected onKeyDown(e: KeyboardEvent): void {\n // Allow control keys\n if (e.ctrlKey || e.altKey || e.metaKey || e.key.length > 1) {\n return;\n }\n\n const allowedChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n\n // Allow decimal separator if fractionDigits > 0\n if (this.fractionDigits() > 0) {\n allowedChars.push(this._localeConfig.decimal);\n allowedChars.push('.'); // Always allow dot as decimal input\n }\n\n // Allow minus sign if min is undefined or negative\n const minVal = this.min();\n if (minVal === undefined || isNaN(minVal) || minVal < 0) {\n allowedChars.push('-');\n }\n\n if (!allowedChars.includes(e.key)) {\n e.preventDefault();\n }\n }\n\n protected onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pastedText = event.clipboardData?.getData('text') || '';\n // Extract only numeric characters from pasted text\n const cleaned = this.extractRawValue(pastedText);\n if (cleaned) {\n this._rawValue = cleaned;\n this._elementRef.nativeElement.value = this.formatNumber(cleaned);\n this._onChange(this.parseToOutput(cleaned));\n }\n }\n\n // --- Private helpers ---\n\n private formatNumber(rawValue: string): string {\n if (!rawValue || !isPlatformBrowser(this._platformId)) {\n return rawValue || '';\n }\n\n const num = parseFloat(rawValue);\n if (isNaN(num) && rawValue !== '-' && rawValue !== '.') {\n return rawValue;\n }\n\n // Handle incomplete input (just minus or dot)\n if (rawValue === '-' || rawValue === '.') {\n return rawValue;\n }\n\n const maxDecimals = this.fractionDigits();\n let parts = rawValue.split('.');\n let integerPart = parts[0] || '0';\n let decimalPart = parts.length > 1 ? parts[1] : '';\n\n // Round to fractionDigits when requested — do it up front so rounding can\n // carry into the integer part (e.g. 99.95 → 100.0 at 1 fraction digit).\n if (this.isRounded() && decimalPart.length > maxDecimals) {\n const rounded = this.roundToDecimals(rawValue, maxDecimals);\n parts = rounded.split('.');\n integerPart = parts[0] || '0';\n decimalPart = parts.length > 1 ? parts[1] : '';\n }\n\n const isNegative = integerPart.startsWith('-');\n if (isNegative) {\n integerPart = integerPart.substring(1);\n }\n\n // Trim decimal to fractionDigits\n if (decimalPart.length > maxDecimals && maxDecimals > 0) {\n decimalPart = decimalPart.substring(0, maxDecimals);\n }\n\n // Fill fraction with trailing zeros if requested\n if (this.fillFraction() && maxDecimals > 0) {\n decimalPart = decimalPart.padEnd(maxDecimals, '0');\n }\n\n // Pad the integer part with leading zeros when requested\n if (this.hasLeadingZero()) {\n const minDigits = this.minIntegerDigits();\n if (minDigits > 0 && integerPart.length < minDigits) {\n integerPart = integerPart.padStart(minDigits, '0');\n }\n }\n\n // Apply thousand grouping\n if (!this.noFormat()) {\n integerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, this._localeConfig.group);\n }\n\n let result = isNegative ? '-' + integerPart : integerPart;\n if (decimalPart || (parts.length > 1 && maxDecimals > 0)) {\n result += this._localeConfig.decimal + decimalPart;\n }\n\n return result;\n }\n\n private extractRawValue(formattedValue: string): string {\n if (!formattedValue) {\n return '';\n }\n // Remove group separators, replace locale decimal with dot\n let raw = formattedValue;\n if (this._localeConfig.group) {\n raw = raw.split(this._localeConfig.group).join('');\n }\n raw = raw.split(this._localeConfig.decimal).join('.');\n\n // Keep only digits, dot, and minus\n raw = raw.replace(/[^\\d.-]/g, '');\n\n // Ensure only one minus at the start\n if (raw.indexOf('-') > 0) {\n raw = raw.replace(/-/g, '');\n }\n\n // Ensure only one dot\n const dotIndex = raw.indexOf('.');\n if (dotIndex !== -1) {\n raw = raw.substring(0, dotIndex + 1) + raw.substring(dotIndex + 1).replace(/\\./g, '');\n }\n\n return raw;\n }\n\n /**\n * Mathematically rounds a raw numeric string to `decimals` decimal places,\n * returning a plain (dot-separated) numeric string.\n */\n private roundToDecimals(rawValue: string, decimals: number): string {\n const num = parseFloat(rawValue);\n if (isNaN(num)) {\n return rawValue;\n }\n const factor = Math.pow(10, decimals);\n const rounded = Math.round(num * factor) / factor;\n return rounded.toFixed(decimals);\n }\n\n private parseToOutput(rawValue: string): number | null {\n if (!rawValue || rawValue === '-' || rawValue === '.') {\n return null;\n }\n const num = parseFloat(rawValue);\n return isNaN(num) ? null : num;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onChange: (value: number | string | null) => void = () => { /* noop */ };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onTouched: () => void = () => { /* noop */ };\n}\n","import { EdsInputNumber } from './eds-input-number';\n\nexport { EdsInputNumber };\n\n/** Convenience array for importing eds-input-number. */\nexport const EDS_INPUT_NUMBER = [\n EdsInputNumber,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-eds-eds-input-number.mjs","sources":["../../eds-input-number/eds-input-number.ts","../../eds-input-number/index.ts","../../eds-input-number/eui-eds-eds-input-number.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n inject,\n input,\n signal,\n effect,\n booleanAttribute,\n numberAttribute,\n DoCheck,\n OnInit,\n LOCALE_ID,\n PLATFORM_ID,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { EdsClearableDirective, EdsLoadingDirective } from '@eui/eds/shared';\n\n/** Size variants supported by the EDS number input. */\nexport type EdsInputNumberSize = 's' | 'm' | 'l';\n\n/**\n * Returns the decimal and group separators for a given locale.\n */\nfunction getLocaleConfig(locale: string): { group: string; decimal: string } {\n const parts = new Intl.NumberFormat(locale, { useGrouping: true }).formatToParts(10000.1);\n return {\n group: parts.find(p => p.type === 'group')?.value || '',\n decimal: parts.find(p => p.type === 'decimal')?.value || '.',\n };\n}\n\n/**\n * EdsInputNumber is a directive-based component that applies number input behavior\n * to a native `<input>` element. It provides locale-aware number formatting with\n * thousand grouping, decimal precision, min/max enforcement, and reactive forms integration.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[edsInputNumber]',\n template: '',\n styleUrl: './eds-input-number.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EdsClearableDirective,\n inputs: ['edsClearable', 'readonly', 'disabled'],\n },\n {\n directive: EdsLoadingDirective,\n inputs: ['edsLoading', 'readonly'],\n },\n ],\n host: {\n class: 'eds-input-number',\n '[attr.invalid]': '_isInvalid() || null',\n '[attr.input-size]': 'size()',\n '[attr.rounded]': 'isRounded() || null',\n '[attr.leading-zero]': 'hasLeadingZero() || null',\n '[attr.data-e2e]': 'e2eAttr()',\n '[attr.inputmode]': '\"decimal\"',\n '[disabled]': '_disabled()',\n '[attr.readonly]': 'readonly() || null',\n '(input)': 'onHostInput($event)',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeyDown($event)',\n '(paste)': 'onPaste($event)',\n },\n})\nexport class EdsInputNumber implements ControlValueAccessor, DoCheck, OnInit {\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-input-number'\n */\n e2eAttr = input('eds-input-number');\n\n /**\n * Controls whether the input is disabled.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the input is readonly.\n * @default false\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the input shows an invalid/error state.\n * @default false\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Size variant of the input. Reflected as the `input-size` host attribute.\n * @default 'm'\n */\n size = input<EdsInputNumberSize>('m');\n\n /**\n * Minimum allowed value. Enforced on blur.\n */\n min = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * Maximum allowed value. Enforced on blur.\n */\n max = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * Number of digits allowed after the decimal point.\n * @default 0\n */\n fractionDigits = input<number, unknown>(0, { transform: (v: unknown) => numberAttribute(v, 0) });\n\n /**\n * Whether to fill the decimal part with trailing zeros.\n * @default false\n */\n fillFraction = input(false, { transform: booleanAttribute });\n\n /**\n * Disables thousand grouping. Number is displayed plain.\n * @default false\n */\n noFormat = input(false, { transform: booleanAttribute });\n\n /**\n * When true, values that exceed `fractionDigits` are mathematically rounded\n * to that number of decimal places (e.g. `99.932` with `fractionDigits=2`\n * becomes `99.93`, with `fractionDigits=1` becomes `99.9`). When false\n * (default) the extra digits are simply truncated.\n *\n * Only meaningful when `fractionDigits` > 0 — with the default `fractionDigits`\n * of 0 there are no decimals to round, so this option has no effect.\n * @default false\n */\n isRounded = input(false, { transform: booleanAttribute });\n\n /**\n * When true, the integer part is left-padded with leading zeros until it\n * reaches `minIntegerDigits` (e.g. `9` becomes `009` with `minIntegerDigits=3`).\n * @default false\n */\n hasLeadingZero = input(false, { transform: booleanAttribute });\n\n /**\n * Minimum number of integer digits to display when `hasLeadingZero` is enabled.\n * @default 3\n */\n minIntegerDigits = input<number, unknown>(3, { transform: (v: unknown) => numberAttribute(v, 3) });\n\n private _elementRef: ElementRef<HTMLInputElement> = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n private _localeId = inject(LOCALE_ID);\n private _document = inject<Document>(DOCUMENT);\n private _platformId = inject(PLATFORM_ID);\n protected _isInvalid = signal(false);\n /**\n * Internal disabled state. Written by both the `disabled` input (via effect)\n * and the reactive-forms `setDisabledState` callback, and drives the host\n * `[disabled]` binding — so `formControl.disable()` works without binding\n * `[disabled]` in the template.\n */\n protected _disabled = signal(false);\n private _localeConfig: { group: string; decimal: string };\n private _rawValue = '';\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n this._localeConfig = getLocaleConfig(this._localeId || 'en');\n\n // Sync the `disabled` input into the internal signal.\n effect(() => {\n this._disabled.set(this.disabled());\n });\n }\n\n ngOnInit(): void {\n // Apply initial formatting if element has a value attribute\n const initialValue = this._elementRef.nativeElement.value;\n if (initialValue) {\n this._rawValue = initialValue;\n this._elementRef.nativeElement.value = this.formatNumber(initialValue);\n }\n }\n\n ngDoCheck(): void {\n if (this._ngControl) {\n this._isInvalid.set(this._ngControl.invalid && this._ngControl.touched);\n } else {\n this._isInvalid.set(this.isInvalid());\n }\n }\n\n // --- ControlValueAccessor ---\n\n writeValue(value: number | string | null): void {\n if (value === null || value === undefined || value === '') {\n this._rawValue = '';\n this._elementRef.nativeElement.value = '';\n return;\n }\n this._rawValue = value.toString();\n this._elementRef.nativeElement.value = this.formatNumber(this._rawValue);\n }\n\n registerOnChange(fn: (value: number | string | 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._disabled.set(isDisabled);\n }\n\n // --- Event handlers ---\n\n protected onHostInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const cursorPos = target.selectionStart;\n\n // Extract raw numeric value from formatted input\n const rawValue = this.extractRawValue(target.value);\n this._rawValue = rawValue;\n\n // Re-format the display value\n const formatted = this.formatNumber(rawValue);\n const lengthDiff = formatted.length - target.value.length;\n target.value = formatted;\n\n // Restore cursor position accounting for added/removed formatting chars\n if (cursorPos !== null) {\n const newPos = Math.max(0, cursorPos + lengthDiff);\n target.setSelectionRange(newPos, newPos);\n }\n\n // Emit parsed numeric value\n this._onChange(this.parseToOutput(rawValue));\n }\n\n protected onBlur(): void {\n this._onTouched();\n\n if (this._rawValue === '') {\n return;\n }\n\n let numericValue = parseFloat(this._rawValue);\n\n // Enforce min/max on blur\n const minVal = this.min();\n const maxVal = this.max();\n if (minVal !== undefined && !isNaN(minVal) && numericValue < minVal) {\n numericValue = minVal;\n }\n if (maxVal !== undefined && !isNaN(maxVal) && numericValue > maxVal) {\n numericValue = maxVal;\n }\n\n this._rawValue = numericValue.toString();\n\n // When rounding is enabled, snap the stored/emitted raw value to the\n // configured decimal places so the committed value matches the display.\n if (this.isRounded()) {\n this._rawValue = this.roundToDecimals(this._rawValue, this.fractionDigits());\n }\n\n this._elementRef.nativeElement.value = this.formatNumber(this._rawValue);\n this._onChange(this.parseToOutput(this._rawValue));\n }\n\n protected onKeyDown(e: KeyboardEvent): void {\n // Allow control keys\n if (e.ctrlKey || e.altKey || e.metaKey || e.key.length > 1) {\n return;\n }\n\n const allowedChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n\n // Allow decimal separator if fractionDigits > 0\n if (this.fractionDigits() > 0) {\n allowedChars.push(this._localeConfig.decimal);\n allowedChars.push('.'); // Always allow dot as decimal input\n }\n\n // Allow minus sign if min is undefined or negative\n const minVal = this.min();\n if (minVal === undefined || isNaN(minVal) || minVal < 0) {\n allowedChars.push('-');\n }\n\n if (!allowedChars.includes(e.key)) {\n e.preventDefault();\n }\n }\n\n protected onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pastedText = event.clipboardData?.getData('text') || '';\n // Extract only numeric characters from pasted text\n const cleaned = this.extractRawValue(pastedText);\n if (cleaned) {\n this._rawValue = cleaned;\n this._elementRef.nativeElement.value = this.formatNumber(cleaned);\n this._onChange(this.parseToOutput(cleaned));\n }\n }\n\n // --- Private helpers ---\n\n private formatNumber(rawValue: string): string {\n if (!rawValue || !isPlatformBrowser(this._platformId)) {\n return rawValue || '';\n }\n\n const num = parseFloat(rawValue);\n if (isNaN(num) && rawValue !== '-' && rawValue !== '.') {\n return rawValue;\n }\n\n // Handle incomplete input (just minus or dot)\n if (rawValue === '-' || rawValue === '.') {\n return rawValue;\n }\n\n const maxDecimals = this.fractionDigits();\n let parts = rawValue.split('.');\n let integerPart = parts[0] || '0';\n let decimalPart = parts.length > 1 ? parts[1] : '';\n\n // Round to fractionDigits when requested — do it up front so rounding can\n // carry into the integer part (e.g. 99.95 → 100.0 at 1 fraction digit).\n if (this.isRounded() && decimalPart.length > maxDecimals) {\n const rounded = this.roundToDecimals(rawValue, maxDecimals);\n parts = rounded.split('.');\n integerPart = parts[0] || '0';\n decimalPart = parts.length > 1 ? parts[1] : '';\n }\n\n const isNegative = integerPart.startsWith('-');\n if (isNegative) {\n integerPart = integerPart.substring(1);\n }\n\n // Trim decimal to fractionDigits\n if (decimalPart.length > maxDecimals && maxDecimals > 0) {\n decimalPart = decimalPart.substring(0, maxDecimals);\n }\n\n // Fill fraction with trailing zeros if requested\n if (this.fillFraction() && maxDecimals > 0) {\n decimalPart = decimalPart.padEnd(maxDecimals, '0');\n }\n\n // Pad the integer part with leading zeros when requested\n if (this.hasLeadingZero()) {\n const minDigits = this.minIntegerDigits();\n if (minDigits > 0 && integerPart.length < minDigits) {\n integerPart = integerPart.padStart(minDigits, '0');\n }\n }\n\n // Apply thousand grouping\n if (!this.noFormat()) {\n integerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, this._localeConfig.group);\n }\n\n let result = isNegative ? '-' + integerPart : integerPart;\n if (decimalPart || (parts.length > 1 && maxDecimals > 0)) {\n result += this._localeConfig.decimal + decimalPart;\n }\n\n return result;\n }\n\n private extractRawValue(formattedValue: string): string {\n if (!formattedValue) {\n return '';\n }\n // Remove group separators, replace locale decimal with dot\n let raw = formattedValue;\n if (this._localeConfig.group) {\n raw = raw.split(this._localeConfig.group).join('');\n }\n raw = raw.split(this._localeConfig.decimal).join('.');\n\n // Keep only digits, dot, and minus\n raw = raw.replace(/[^\\d.-]/g, '');\n\n // Ensure only one minus at the start\n if (raw.indexOf('-') > 0) {\n raw = raw.replace(/-/g, '');\n }\n\n // Ensure only one dot\n const dotIndex = raw.indexOf('.');\n if (dotIndex !== -1) {\n raw = raw.substring(0, dotIndex + 1) + raw.substring(dotIndex + 1).replace(/\\./g, '');\n }\n\n return raw;\n }\n\n /**\n * Mathematically rounds a raw numeric string to `decimals` decimal places,\n * returning a plain (dot-separated) numeric string.\n */\n private roundToDecimals(rawValue: string, decimals: number): string {\n const num = parseFloat(rawValue);\n if (isNaN(num)) {\n return rawValue;\n }\n const factor = Math.pow(10, decimals);\n const rounded = Math.round(num * factor) / factor;\n return rounded.toFixed(decimals);\n }\n\n private parseToOutput(rawValue: string): number | null {\n if (!rawValue || rawValue === '-' || rawValue === '.') {\n return null;\n }\n const num = parseFloat(rawValue);\n return isNaN(num) ? null : num;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onChange: (value: number | string | null) => void = () => { /* noop */ };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onTouched: () => void = () => { /* noop */ };\n}\n","import { EdsInputNumber } from './eds-input-number';\n\nexport { EdsInputNumber };\n\n/** Convenience array for importing eds-input-number. */\nexport const EDS_INPUT_NUMBER = [\n EdsInputNumber,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -84,7 +84,7 @@ class EdsInputText {
|
|
|
84
84
|
this._onChange(target.value);
|
|
85
85
|
}
|
|
86
86
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsInputText, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
87
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EdsInputText, isStandalone: true, selector: "input[edsInputText]", inputs: { e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isInvalid: { classPropertyName: "isInvalid", publicName: "isInvalid", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onHostInput($event)", "blur": "onTouched()" }, properties: { "attr.invalid": "_isInvalid() || null", "attr.aria-invalid": "_isInvalid() || null", "attr.input-size": "size()", "attr.data-e2e": "e2eAttr()", "disabled": "_disabled()", "attr.readonly": "readonly() || null" }, classAttribute: "eds-input-text" }, hostDirectives: [{ directive: i1.EdsClearableDirective, inputs: ["edsClearable", "edsClearable", "readonly", "readonly", "disabled", "disabled"] }, { directive: i1.EdsLoadingDirective, inputs: ["edsLoading", "edsLoading", "readonly", "readonly"] }], ngImport: i0, template: '', isInline: true, styles: [".eui-21 :host.eds-input-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;--_eds-input-height: var(--eds-si-4xl);--_eds-input-pad-v: var(--eds-sp-xs);--_eds-input-pad-h: var(--eds-sp-s);--_eds-input-font: var(--eds-f-paragraph-m);--_eds-input-font-weight: var(--eds-f-w-regular);--_eds-input-placeholder-font: var(--eds-f-placeholder-m);--_eds-input-placeholder-font-weight: var(--eds-f-w-light);font:var(--_eds-input-font);font-weight:var(--_eds-input-font-weight);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);height:var(--_eds-input-height);padding:var(--_eds-input-pad-v) var(--_eds-input-pad-h);width:100%}.eui-21 :host.eds-input-text:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-input-text:not([hidden]){display:block}.eui-21 :host.eds-input-text::placeholder{color:var(--eds-c-foreground-placeholder);font:var(--_eds-input-placeholder-font);font-weight:var(--_eds-input-placeholder-font-weight);opacity:1}.eui-21 :host.eds-input-text[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-input-text:disabled:not([readonly]),.eui-21 :host.eds-input-text--disabled:not([readonly]){background-color:var(--eds-c-surface-disabled-subtle);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-disabled);pointer-events:none}.eui-21 :host.eds-input-text[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-
|
|
87
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EdsInputText, isStandalone: true, selector: "input[edsInputText]", inputs: { e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isInvalid: { classPropertyName: "isInvalid", publicName: "isInvalid", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onHostInput($event)", "blur": "onTouched()" }, properties: { "attr.invalid": "_isInvalid() || null", "attr.aria-invalid": "_isInvalid() || null", "attr.input-size": "size()", "attr.data-e2e": "e2eAttr()", "disabled": "_disabled()", "attr.readonly": "readonly() || null" }, classAttribute: "eds-input-text" }, hostDirectives: [{ directive: i1.EdsClearableDirective, inputs: ["edsClearable", "edsClearable", "readonly", "readonly", "disabled", "disabled"] }, { directive: i1.EdsLoadingDirective, inputs: ["edsLoading", "edsLoading", "readonly", "readonly"] }], ngImport: i0, template: '', isInline: true, styles: [".eui-21 :host.eds-input-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;--_eds-input-height: var(--eds-si-4xl);--_eds-input-pad-v: var(--eds-sp-xs);--_eds-input-pad-h: var(--eds-sp-s);--_eds-input-font: var(--eds-f-paragraph-m);--_eds-input-font-weight: var(--eds-f-w-regular);--_eds-input-placeholder-font: var(--eds-f-placeholder-m);--_eds-input-placeholder-font-weight: var(--eds-f-w-light);font:var(--_eds-input-font);font-weight:var(--_eds-input-font-weight);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);height:var(--_eds-input-height);padding:var(--_eds-input-pad-v) var(--_eds-input-pad-h);width:100%}.eui-21 :host.eds-input-text:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-input-text:not([hidden]){display:block}.eui-21 :host.eds-input-text::placeholder{color:var(--eds-c-foreground-placeholder);font:var(--_eds-input-placeholder-font);font-weight:var(--_eds-input-placeholder-font-weight);opacity:1}.eui-21 :host.eds-input-text[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-input-text:disabled:not([readonly]),.eui-21 :host.eds-input-text--disabled:not([readonly]){background-color:var(--eds-c-surface-disabled-subtle);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-disabled);pointer-events:none}.eui-21 :host.eds-input-text[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-focus-critical)!important;outline-offset:2px!important}.eui-21 :host.eds-input-text--loading{padding-right:var(--eds-sp-7xl)}.eui-21 :host.eds-input-text--loading-icon{align-items:center;display:flex}.eui-21 :host.eds-input-text--loading-icon:after,.eui-21 :host.eds-input-text--loading-icon:before{content:\"\";height:var(--eds-sp-l);position:absolute;right:var(--eds-sp-s);width:var(--eds-sp-l)}.eui-21 :host.eds-input-text--loading-icon:before{border:var(--eds-sp-3xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-21 :host.eds-input-text--loading-icon:after{animation:loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-c-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eds-sp-3xs);box-shadow:0 0 0 1px transparent}.eui-21 :host.eds-input-text--loading-icon--sm:after,.eui-21 :host.eds-input-text--loading-icon--sm:before{height:var(--eds-sp-m);width:var(--eds-sp-m)}@keyframes loading{to{transform:rotate(360deg)}}.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled):not([aria-disabled=true]):not(:checked):not(:disabled):not([readonly]):not([indeterminate=true]):not([invalid=true]){border-color:var(--eds-c-border)}.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox:checked:not([readonly]):not([invalid=true]),.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[checked=true]:not([readonly]):not([invalid=true]),.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[indeterminate=true]:not([readonly]){background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]){background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-primary--hover)}.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]):before{background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-input-text[input-size=s]{--_eds-input-height: calc(var(--eds-si-3xl) + var(--eds-si-2xs));--_eds-input-pad-v: var(--eds-sp-2xs);--_eds-input-pad-h: var(--eds-sp-s)}.eui-21 :host.eds-input-text[input-size=l]{--_eds-input-height: var(--eds-si-6xl);--_eds-input-pad-v: var(--eds-sp-s);--_eds-input-pad-h: var(--eds-sp-m)}.eui-21 :host.eds-input-text[readonly]{pointer-events:auto}.eui-21 :host.eds-input-text[readonly]::placeholder{color:transparent}.eui-21 :host.eds-input-text.eds-input-text--loading[readonly]{background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);padding-left:var(--eds-sp-s)}.eui-21 :host.eds-input-text.eds-input-text--clearable{padding-right:calc(var(--eds-sp-s) + 24px)}.eui-21 :host.eds-input-text.eds-input-text--loading:not(.eds-input-text--clearable){padding-right:calc(var(--eds-sp-s) + 28px)}.eui-21 :host.eds-input-text.eds-input-text--loading.eds-input-text--clearable{padding-right:calc(var(--eds-sp-s) + 28px)}.eui-21 :host.eds-input-text[type=search]::-webkit-search-cancel-button{display:none}.eui-21 :host.eds-input-text[invalid]{border-color:var(--eds-c-border-critical)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
88
88
|
}
|
|
89
89
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsInputText, decorators: [{
|
|
90
90
|
type: Component,
|
|
@@ -107,7 +107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
|
|
|
107
107
|
'[attr.readonly]': 'readonly() || null',
|
|
108
108
|
'(input)': 'onHostInput($event)',
|
|
109
109
|
'(blur)': 'onTouched()',
|
|
110
|
-
}, styles: [".eui-21 :host.eds-input-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;--_eds-input-height: var(--eds-si-4xl);--_eds-input-pad-v: var(--eds-sp-xs);--_eds-input-pad-h: var(--eds-sp-s);--_eds-input-font: var(--eds-f-paragraph-m);--_eds-input-font-weight: var(--eds-f-w-regular);--_eds-input-placeholder-font: var(--eds-f-placeholder-m);--_eds-input-placeholder-font-weight: var(--eds-f-w-light);font:var(--_eds-input-font);font-weight:var(--_eds-input-font-weight);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);height:var(--_eds-input-height);padding:var(--_eds-input-pad-v) var(--_eds-input-pad-h);width:100%}.eui-21 :host.eds-input-text:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-input-text:not([hidden]){display:block}.eui-21 :host.eds-input-text::placeholder{color:var(--eds-c-foreground-placeholder);font:var(--_eds-input-placeholder-font);font-weight:var(--_eds-input-placeholder-font-weight);opacity:1}.eui-21 :host.eds-input-text[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-input-text:disabled:not([readonly]),.eui-21 :host.eds-input-text--disabled:not([readonly]){background-color:var(--eds-c-surface-disabled-subtle);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-disabled);pointer-events:none}.eui-21 :host.eds-input-text[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-
|
|
110
|
+
}, styles: [".eui-21 :host.eds-input-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;--_eds-input-height: var(--eds-si-4xl);--_eds-input-pad-v: var(--eds-sp-xs);--_eds-input-pad-h: var(--eds-sp-s);--_eds-input-font: var(--eds-f-paragraph-m);--_eds-input-font-weight: var(--eds-f-w-regular);--_eds-input-placeholder-font: var(--eds-f-placeholder-m);--_eds-input-placeholder-font-weight: var(--eds-f-w-light);font:var(--_eds-input-font);font-weight:var(--_eds-input-font-weight);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);height:var(--_eds-input-height);padding:var(--_eds-input-pad-v) var(--_eds-input-pad-h);width:100%}.eui-21 :host.eds-input-text:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-input-text:not([hidden]){display:block}.eui-21 :host.eds-input-text::placeholder{color:var(--eds-c-foreground-placeholder);font:var(--_eds-input-placeholder-font);font-weight:var(--_eds-input-placeholder-font-weight);opacity:1}.eui-21 :host.eds-input-text[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-input-text:disabled:not([readonly]),.eui-21 :host.eds-input-text--disabled:not([readonly]){background-color:var(--eds-c-surface-disabled-subtle);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-disabled);pointer-events:none}.eui-21 :host.eds-input-text[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-focus-critical)!important;outline-offset:2px!important}.eui-21 :host.eds-input-text--loading{padding-right:var(--eds-sp-7xl)}.eui-21 :host.eds-input-text--loading-icon{align-items:center;display:flex}.eui-21 :host.eds-input-text--loading-icon:after,.eui-21 :host.eds-input-text--loading-icon:before{content:\"\";height:var(--eds-sp-l);position:absolute;right:var(--eds-sp-s);width:var(--eds-sp-l)}.eui-21 :host.eds-input-text--loading-icon:before{border:var(--eds-sp-3xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-21 :host.eds-input-text--loading-icon:after{animation:loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-c-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eds-sp-3xs);box-shadow:0 0 0 1px transparent}.eui-21 :host.eds-input-text--loading-icon--sm:after,.eui-21 :host.eds-input-text--loading-icon--sm:before{height:var(--eds-sp-m);width:var(--eds-sp-m)}@keyframes loading{to{transform:rotate(360deg)}}.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled):not([aria-disabled=true]):not(:checked):not(:disabled):not([readonly]):not([indeterminate=true]):not([invalid=true]){border-color:var(--eds-c-border)}.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox:checked:not([readonly]):not([invalid=true]),.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[checked=true]:not([readonly]):not([invalid=true]),.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[indeterminate=true]:not([readonly]){background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]){background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-primary--hover)}.eui-21 :host.eds-input-text:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]):before{background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-input-text[input-size=s]{--_eds-input-height: calc(var(--eds-si-3xl) + var(--eds-si-2xs));--_eds-input-pad-v: var(--eds-sp-2xs);--_eds-input-pad-h: var(--eds-sp-s)}.eui-21 :host.eds-input-text[input-size=l]{--_eds-input-height: var(--eds-si-6xl);--_eds-input-pad-v: var(--eds-sp-s);--_eds-input-pad-h: var(--eds-sp-m)}.eui-21 :host.eds-input-text[readonly]{pointer-events:auto}.eui-21 :host.eds-input-text[readonly]::placeholder{color:transparent}.eui-21 :host.eds-input-text.eds-input-text--loading[readonly]{background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);padding-left:var(--eds-sp-s)}.eui-21 :host.eds-input-text.eds-input-text--clearable{padding-right:calc(var(--eds-sp-s) + 24px)}.eui-21 :host.eds-input-text.eds-input-text--loading:not(.eds-input-text--clearable){padding-right:calc(var(--eds-sp-s) + 28px)}.eui-21 :host.eds-input-text.eds-input-text--loading.eds-input-text--clearable{padding-right:calc(var(--eds-sp-s) + 28px)}.eui-21 :host.eds-input-text[type=search]::-webkit-search-cancel-button{display:none}.eui-21 :host.eds-input-text[invalid]{border-color:var(--eds-c-border-critical)}\n"] }]
|
|
111
111
|
}], ctorParameters: () => [], propDecorators: { e2eAttr: [{ type: i0.Input, args: [{ isSignal: true, alias: "e2eAttr", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], isInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isInvalid", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
112
112
|
|
|
113
113
|
/** Convenience array for importing eds-input-text. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-input-text.mjs","sources":["../../eds-input-text/eds-input-text.ts","../../eds-input-text/index.ts","../../eds-input-text/eui-eds-eds-input-text.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n inject,\n input,\n signal,\n effect,\n booleanAttribute,\n DoCheck,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { EdsClearableDirective } from '@eui/eds/shared';\nimport { EdsLoadingDirective } from '@eui/eds/shared';\n\n/** Size variants supported by the EDS text input. */\nexport type EdsInputTextSize = 's' | 'm' | 'l';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[edsInputText]',\n template: '',\n styleUrl: './eds-input-text.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EdsClearableDirective,\n inputs: ['edsClearable', 'readonly', 'disabled'],\n },\n {\n directive: EdsLoadingDirective,\n inputs: ['edsLoading', 'readonly'],\n },\n ],\n host: {\n class: 'eds-input-text',\n '[attr.invalid]': '_isInvalid() || null',\n '[attr.aria-invalid]': '_isInvalid() || null',\n '[attr.input-size]': 'size()',\n '[attr.data-e2e]': 'e2eAttr()',\n '[disabled]': '_disabled()',\n '[attr.readonly]': 'readonly() || null',\n '(input)': 'onHostInput($event)',\n '(blur)': 'onTouched()',\n },\n})\nexport class EdsInputText implements ControlValueAccessor, DoCheck {\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-input-text'\n */\n e2eAttr = input('eds-input-text');\n\n /**\n * Controls whether the input is disabled.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the input is readonly.\n * @default false\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the input shows an invalid/error state.\n * @default false\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Size variant of the input. Reflected as the `size` host attribute.\n * @default 'm'\n */\n size = input<EdsInputTextSize>('m');\n\n private _elementRef: ElementRef<HTMLInputElement> = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n protected _isInvalid = signal(false);\n /**\n * Internal disabled state. Written by both the `disabled` input (via effect)\n * and the reactive-forms `setDisabledState` callback, and drives the host\n * `[disabled]` binding — so `formControl.disable()` works without binding\n * `[disabled]` in the template.\n */\n protected _disabled = signal(false);\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n\n // Sync the `disabled` input into the internal signal.\n effect(() => {\n this._disabled.set(this.disabled());\n });\n }\n\n ngDoCheck(): void {\n if (this._ngControl) {\n this._isInvalid.set(this._ngControl.invalid && this._ngControl.touched);\n } else {\n this._isInvalid.set(this.isInvalid());\n }\n }\n\n // --- ControlValueAccessor ---\n\n writeValue(value: string): void {\n this._elementRef.nativeElement.value = 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 setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n // --- Event handlers ---\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onTouched: () => void = () => { /* noop */ };\n\n protected onHostInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this._onChange(target.value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onChange: (value: string) => void = () => { /* noop */ };\n}\n","import { EdsInputText } from './eds-input-text';\n\nexport { EdsInputText };\n\n/** Convenience array for importing eds-input-text. */\nexport const EDS_INPUT_TEXT = [\n EdsInputText,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MA8Ca,YAAY,CAAA;AA0CrB,IAAA,WAAA,GAAA;AAzCA;;;AAGG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,gBAAgB;oFAAC;AAEjC;;;AAGG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD;;;AAGG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEzD;;;AAGG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAAmB,GAAG;iFAAC;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAiC,MAAM,CAAC,UAAU,CAAC;AAC9D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK;uFAAC;AACpC;;;;;AAKG;QACO,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK;sFAAC;;;AA0CzB,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,EAAc,CAAC;;AAQ9C,QAAA,IAAA,CAAA,SAAS,GAA4B,MAAK,EAAc,CAAC;AA/C7D,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI;QACxC;;QAGA,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvC,QAAA,CAAC,CAAC;IACN;IAEA,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAC3E;aAAO;YACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC;IACJ;;AAIA,IAAA,UAAU,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;IACtD;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IAClC;AAOU,IAAA,WAAW,CAAC,KAAY,EAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC;8GAvFS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,kyCAzBX,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"eui-eds-eds-input-text.mjs","sources":["../../eds-input-text/eds-input-text.ts","../../eds-input-text/index.ts","../../eds-input-text/eui-eds-eds-input-text.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n inject,\n input,\n signal,\n effect,\n booleanAttribute,\n DoCheck,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { EdsClearableDirective } from '@eui/eds/shared';\nimport { EdsLoadingDirective } from '@eui/eds/shared';\n\n/** Size variants supported by the EDS text input. */\nexport type EdsInputTextSize = 's' | 'm' | 'l';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[edsInputText]',\n template: '',\n styleUrl: './eds-input-text.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EdsClearableDirective,\n inputs: ['edsClearable', 'readonly', 'disabled'],\n },\n {\n directive: EdsLoadingDirective,\n inputs: ['edsLoading', 'readonly'],\n },\n ],\n host: {\n class: 'eds-input-text',\n '[attr.invalid]': '_isInvalid() || null',\n '[attr.aria-invalid]': '_isInvalid() || null',\n '[attr.input-size]': 'size()',\n '[attr.data-e2e]': 'e2eAttr()',\n '[disabled]': '_disabled()',\n '[attr.readonly]': 'readonly() || null',\n '(input)': 'onHostInput($event)',\n '(blur)': 'onTouched()',\n },\n})\nexport class EdsInputText implements ControlValueAccessor, DoCheck {\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-input-text'\n */\n e2eAttr = input('eds-input-text');\n\n /**\n * Controls whether the input is disabled.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the input is readonly.\n * @default false\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the input shows an invalid/error state.\n * @default false\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Size variant of the input. Reflected as the `size` host attribute.\n * @default 'm'\n */\n size = input<EdsInputTextSize>('m');\n\n private _elementRef: ElementRef<HTMLInputElement> = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n protected _isInvalid = signal(false);\n /**\n * Internal disabled state. Written by both the `disabled` input (via effect)\n * and the reactive-forms `setDisabledState` callback, and drives the host\n * `[disabled]` binding — so `formControl.disable()` works without binding\n * `[disabled]` in the template.\n */\n protected _disabled = signal(false);\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n\n // Sync the `disabled` input into the internal signal.\n effect(() => {\n this._disabled.set(this.disabled());\n });\n }\n\n ngDoCheck(): void {\n if (this._ngControl) {\n this._isInvalid.set(this._ngControl.invalid && this._ngControl.touched);\n } else {\n this._isInvalid.set(this.isInvalid());\n }\n }\n\n // --- ControlValueAccessor ---\n\n writeValue(value: string): void {\n this._elementRef.nativeElement.value = 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 setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n // --- Event handlers ---\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onTouched: () => void = () => { /* noop */ };\n\n protected onHostInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this._onChange(target.value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onChange: (value: string) => void = () => { /* noop */ };\n}\n","import { EdsInputText } from './eds-input-text';\n\nexport { EdsInputText };\n\n/** Convenience array for importing eds-input-text. */\nexport const EDS_INPUT_TEXT = [\n EdsInputText,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, booleanAttribute, inject, ElementRef, forwardRef, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, inject, ElementRef, signal, effect, forwardRef, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
|
|
5
5
|
class EdsRadio {
|
|
@@ -32,12 +32,23 @@ class EdsRadio {
|
|
|
32
32
|
this.size = input('m', /* @ts-ignore */
|
|
33
33
|
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
34
34
|
this._elementRef = inject(ElementRef);
|
|
35
|
+
/**
|
|
36
|
+
* Internal disabled state, written by both the `disabled` input (via effect)
|
|
37
|
+
* and the reactive-forms `setDisabledState` callback. The host `[disabled]`
|
|
38
|
+
* binding reads this so `form.disable()` visually disables the radio.
|
|
39
|
+
*/
|
|
40
|
+
this.internalDisabled = signal(false, /* @ts-ignore */
|
|
41
|
+
...(ngDevMode ? [{ debugName: "internalDisabled" }] : /* istanbul ignore next */ []));
|
|
35
42
|
// --- Event handlers ---
|
|
36
43
|
// ControlValueAccessor callbacks
|
|
37
44
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
38
45
|
this.onTouched = () => { };
|
|
39
46
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
40
47
|
this._onChange = () => { };
|
|
48
|
+
// Sync the public `disabled` input → internal state.
|
|
49
|
+
effect(() => {
|
|
50
|
+
this.internalDisabled.set(this.disabled());
|
|
51
|
+
});
|
|
41
52
|
}
|
|
42
53
|
// --- ControlValueAccessor ---
|
|
43
54
|
writeValue(value) {
|
|
@@ -50,8 +61,9 @@ class EdsRadio {
|
|
|
50
61
|
registerOnTouched(fn) {
|
|
51
62
|
this.onTouched = fn;
|
|
52
63
|
}
|
|
53
|
-
setDisabledState(
|
|
54
|
-
//
|
|
64
|
+
setDisabledState(isDisabled) {
|
|
65
|
+
// Reactive forms (e.g. form.disable()) disable the control through here.
|
|
66
|
+
this.internalDisabled.set(isDisabled);
|
|
55
67
|
}
|
|
56
68
|
onHostClick(event) {
|
|
57
69
|
if (this.readonly()) {
|
|
@@ -70,13 +82,13 @@ class EdsRadio {
|
|
|
70
82
|
}
|
|
71
83
|
}
|
|
72
84
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsRadio, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EdsRadio, isStandalone: true, selector: "input[edsRadio]", inputs: { e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isInvalid: { classPropertyName: "isInvalid", publicName: "isInvalid", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "radio" }, listeners: { "click": "onHostClick($event)", "change": "onHostChange($event)", "blur": "onTouched()", "keydown.space": "onSpacePressed($any($event))" }, properties: { "attr.invalid": "isInvalid() || null", "attr.aria-invalid": "isInvalid() || null", "attr.size": "size()", "attr.data-e2e": "e2eAttr()", "disabled": "
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EdsRadio, isStandalone: true, selector: "input[edsRadio]", inputs: { e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isInvalid: { classPropertyName: "isInvalid", publicName: "isInvalid", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "radio" }, listeners: { "click": "onHostClick($event)", "change": "onHostChange($event)", "blur": "onTouched()", "keydown.space": "onSpacePressed($any($event))" }, properties: { "attr.invalid": "isInvalid() || null", "attr.aria-invalid": "isInvalid() || null", "attr.size": "size()", "attr.data-e2e": "e2eAttr()", "disabled": "internalDisabled()", "attr.data-readonly": "readonly() || null" }, classAttribute: "eds-radio" }, providers: [
|
|
74
86
|
{
|
|
75
87
|
provide: NG_VALUE_ACCESSOR,
|
|
76
88
|
useExisting: forwardRef(() => EdsRadio),
|
|
77
89
|
multi: true,
|
|
78
90
|
},
|
|
79
|
-
], ngImport: i0, template: '', isInline: true, styles: [".eui-21 :host.eds-radio{appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;vertical-align:middle;cursor:pointer}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled):not([aria-disabled=true]):not(:checked):not(:disabled):not([readonly]):not([indeterminate=true]):not([invalid=true]){border-color:var(--eds-c-border)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox:checked:not([readonly]):not([invalid=true]),.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[checked=true]:not([readonly]):not([invalid=true]),.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[indeterminate=true]:not([readonly]){background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([invalid=true]){background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-primary--hover)}.eui-21 :host.eds-radio{--_eds-radio-size: var(--eds-si-xl);width:var(--_eds-radio-size);height:var(--_eds-radio-size);border-radius:var(--eds-br-full);background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border)}.eui-21 :host.eds-radio:before{content:\"\";display:block;width:var(--_eds-radio-size);height:var(--_eds-radio-size);
|
|
91
|
+
], ngImport: i0, template: '', isInline: true, styles: [".eui-21 :host.eds-radio{appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;vertical-align:middle;cursor:pointer}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled):not([aria-disabled=true]):not(:checked):not(:disabled):not([readonly]):not([indeterminate=true]):not([invalid=true]){border-color:var(--eds-c-border)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox:checked:not([readonly]):not([invalid=true]),.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[checked=true]:not([readonly]):not([invalid=true]),.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[indeterminate=true]:not([readonly]){background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]){background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-primary--hover)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]):before{background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-radio{--_eds-radio-size: var(--eds-si-xl);--_eds-radio-dot-size: var(--eds-si-m);width:var(--_eds-radio-size);height:var(--_eds-radio-size);border-radius:var(--eds-br-full);background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border)}.eui-21 :host.eds-radio:before{content:\"\";display:block;width:var(--_eds-radio-dot-size);height:var(--_eds-radio-dot-size);border-radius:var(--eds-br-full);background-color:transparent}.eui-21 :host.eds-radio[size=l]{--_eds-radio-size: var(--eds-si-2xl);--_eds-radio-dot-size: var(--eds-si-l)}.eui-21 :host.eds-radio:checked{border-color:var(--eds-c-border-primary)}.eui-21 :host.eds-radio:checked:before{background-color:var(--eds-c-surface-primary)}.eui-21 :host.eds-radio:disabled{background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-disabled);pointer-events:none;cursor:default}.eui-21 :host.eds-radio:disabled:checked:before{background-color:var(--eds-c-surface-disabled)}.eui-21 :host.eds-radio[data-readonly]{pointer-events:none;cursor:default;-webkit-user-select:none;user-select:none}.eui-21 :host.eds-radio[data-readonly]:checked{display:none}.eui-21 :host.eds-radio[data-readonly]:checked+::ng-deep label{display:inline}.eui-21 :host.eds-radio[data-readonly]:not(:checked){display:none}.eui-21 :host.eds-radio[data-readonly]:not(:checked)+::ng-deep label{display:none}.eui-21 :host.eds-radio[invalid]:not(:disabled):not([data-readonly]){border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-radio[invalid]:not(:disabled):not([data-readonly]):checked{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-radio[invalid]:not(:disabled):not([data-readonly]):checked:before{background-color:var(--eds-c-surface-critical)}.eui-21 :host.eds-radio:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-radio[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-focus-critical)!important;outline-offset:2px!important}.eui-21 :host.eds-radio:disabled+::ng-deep label{color:var(--eds-c-foreground-disabled)}.eui-21 :host.eds-radio+::ng-deep label{cursor:pointer}.eui-21 :host.eds-radio:disabled+::ng-deep label,.eui-21 :host.eds-radio[data-readonly]+::ng-deep label{cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
80
92
|
}
|
|
81
93
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsRadio, decorators: [{
|
|
82
94
|
type: Component,
|
|
@@ -93,14 +105,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
|
|
|
93
105
|
'[attr.aria-invalid]': 'isInvalid() || null',
|
|
94
106
|
'[attr.size]': 'size()',
|
|
95
107
|
'[attr.data-e2e]': 'e2eAttr()',
|
|
96
|
-
|
|
97
|
-
|
|
108
|
+
// Reflect the *internal* disabled state so it reacts to both the `[disabled]`
|
|
109
|
+
// input and a reactive form disabling the control via `setDisabledState`.
|
|
110
|
+
'[disabled]': 'internalDisabled()',
|
|
111
|
+
// NOTE: do NOT reflect the native `readonly` attribute — it is invalid on
|
|
112
|
+
// `<input type="radio">` and makes Chromium force `appearance: auto`, which
|
|
113
|
+
// collapses the custom control (only the label shows). Reflect a non-native
|
|
114
|
+
// `data-readonly` attribute instead; readonly behaviour is handled in JS below.
|
|
115
|
+
'[attr.data-readonly]': 'readonly() || null',
|
|
98
116
|
'(click)': 'onHostClick($event)',
|
|
99
117
|
'(change)': 'onHostChange($event)',
|
|
100
118
|
'(blur)': 'onTouched()',
|
|
101
119
|
'(keydown.space)': 'onSpacePressed($any($event))',
|
|
102
|
-
}, styles: [".eui-21 :host.eds-radio{appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;vertical-align:middle;cursor:pointer}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled):not([aria-disabled=true]):not(:checked):not(:disabled):not([readonly]):not([indeterminate=true]):not([invalid=true]){border-color:var(--eds-c-border)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox:checked:not([readonly]):not([invalid=true]),.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[checked=true]:not([readonly]):not([invalid=true]),.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[indeterminate=true]:not([readonly]){background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([invalid=true]){background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-primary--hover)}.eui-21 :host.eds-radio{--_eds-radio-size: var(--eds-si-xl);width:var(--_eds-radio-size);height:var(--_eds-radio-size);border-radius:var(--eds-br-full);background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border)}.eui-21 :host.eds-radio:before{content:\"\";display:block;width:var(--_eds-radio-size);height:var(--_eds-radio-size);
|
|
103
|
-
}], propDecorators: { e2eAttr: [{ type: i0.Input, args: [{ isSignal: true, alias: "e2eAttr", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], isInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isInvalid", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
120
|
+
}, styles: [".eui-21 :host.eds-radio{appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;vertical-align:middle;cursor:pointer}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled):not([aria-disabled=true]):not(:checked):not(:disabled):not([readonly]):not([indeterminate=true]):not([invalid=true]){border-color:var(--eds-c-border)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox:checked:not([readonly]):not([invalid=true]),.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[checked=true]:not([readonly]):not([invalid=true]),.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[indeterminate=true]:not([readonly]){background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]){background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-primary--hover)}.eui-21 :host.eds-radio:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]):before{background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-radio{--_eds-radio-size: var(--eds-si-xl);--_eds-radio-dot-size: var(--eds-si-m);width:var(--_eds-radio-size);height:var(--_eds-radio-size);border-radius:var(--eds-br-full);background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border)}.eui-21 :host.eds-radio:before{content:\"\";display:block;width:var(--_eds-radio-dot-size);height:var(--_eds-radio-dot-size);border-radius:var(--eds-br-full);background-color:transparent}.eui-21 :host.eds-radio[size=l]{--_eds-radio-size: var(--eds-si-2xl);--_eds-radio-dot-size: var(--eds-si-l)}.eui-21 :host.eds-radio:checked{border-color:var(--eds-c-border-primary)}.eui-21 :host.eds-radio:checked:before{background-color:var(--eds-c-surface-primary)}.eui-21 :host.eds-radio:disabled{background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-disabled);pointer-events:none;cursor:default}.eui-21 :host.eds-radio:disabled:checked:before{background-color:var(--eds-c-surface-disabled)}.eui-21 :host.eds-radio[data-readonly]{pointer-events:none;cursor:default;-webkit-user-select:none;user-select:none}.eui-21 :host.eds-radio[data-readonly]:checked{display:none}.eui-21 :host.eds-radio[data-readonly]:checked+::ng-deep label{display:inline}.eui-21 :host.eds-radio[data-readonly]:not(:checked){display:none}.eui-21 :host.eds-radio[data-readonly]:not(:checked)+::ng-deep label{display:none}.eui-21 :host.eds-radio[invalid]:not(:disabled):not([data-readonly]){border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-radio[invalid]:not(:disabled):not([data-readonly]):checked{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-radio[invalid]:not(:disabled):not([data-readonly]):checked:before{background-color:var(--eds-c-surface-critical)}.eui-21 :host.eds-radio:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-radio[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-focus-critical)!important;outline-offset:2px!important}.eui-21 :host.eds-radio:disabled+::ng-deep label{color:var(--eds-c-foreground-disabled)}.eui-21 :host.eds-radio+::ng-deep label{cursor:pointer}.eui-21 :host.eds-radio:disabled+::ng-deep label,.eui-21 :host.eds-radio[data-readonly]+::ng-deep label{cursor:default}\n"] }]
|
|
121
|
+
}], ctorParameters: () => [], propDecorators: { e2eAttr: [{ type: i0.Input, args: [{ isSignal: true, alias: "e2eAttr", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], isInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isInvalid", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
104
122
|
|
|
105
123
|
/** Convenience array for importing eds-radio. */
|
|
106
124
|
const EDS_RADIO = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-radio.mjs","sources":["../../eds-radio/eds-radio.ts","../../eds-radio/index.ts","../../eds-radio/eui-eds-eds-radio.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n inject,\n input,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/** Local narrowed size union — the radio's size variant contract. */\nexport type EdsRadioSize = 'm' | 'l';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[edsRadio]',\n template: '',\n styleUrl: './eds-radio.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EdsRadio),\n multi: true,\n },\n ],\n host: {\n type: 'radio',\n class: 'eds-radio',\n '[attr.invalid]': 'isInvalid() || null',\n '[attr.aria-invalid]': 'isInvalid() || null',\n '[attr.size]': 'size()',\n '[attr.data-e2e]': 'e2eAttr()',\n '[disabled]': '
|
|
1
|
+
{"version":3,"file":"eui-eds-eds-radio.mjs","sources":["../../eds-radio/eds-radio.ts","../../eds-radio/index.ts","../../eds-radio/eui-eds-eds-radio.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n inject,\n input,\n signal,\n effect,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/** Local narrowed size union — the radio's size variant contract. */\nexport type EdsRadioSize = 'm' | 'l';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[edsRadio]',\n template: '',\n styleUrl: './eds-radio.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EdsRadio),\n multi: true,\n },\n ],\n host: {\n type: 'radio',\n class: 'eds-radio',\n '[attr.invalid]': 'isInvalid() || null',\n '[attr.aria-invalid]': 'isInvalid() || null',\n '[attr.size]': 'size()',\n '[attr.data-e2e]': 'e2eAttr()',\n // Reflect the *internal* disabled state so it reacts to both the `[disabled]`\n // input and a reactive form disabling the control via `setDisabledState`.\n '[disabled]': 'internalDisabled()',\n // NOTE: do NOT reflect the native `readonly` attribute — it is invalid on\n // `<input type=\"radio\">` and makes Chromium force `appearance: auto`, which\n // collapses the custom control (only the label shows). Reflect a non-native\n // `data-readonly` attribute instead; readonly behaviour is handled in JS below.\n '[attr.data-readonly]': 'readonly() || null',\n '(click)': 'onHostClick($event)',\n '(change)': 'onHostChange($event)',\n '(blur)': 'onTouched()',\n '(keydown.space)': 'onSpacePressed($any($event))',\n },\n})\nexport class EdsRadio implements ControlValueAccessor {\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-radio'\n */\n e2eAttr = input('eds-radio');\n\n /**\n * Controls whether the radio is disabled.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the radio is readonly.\n * @default false\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the radio shows an invalid/error state.\n * @default false\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Controls the radio size.\n * @default 'm'\n */\n size = input<EdsRadioSize>('m');\n\n private _elementRef: ElementRef<HTMLInputElement> = inject(ElementRef);\n\n /**\n * Internal disabled state, written by both the `disabled` input (via effect)\n * and the reactive-forms `setDisabledState` callback. The host `[disabled]`\n * binding reads this so `form.disable()` visually disables the radio.\n */\n protected internalDisabled = signal(false);\n\n constructor() {\n // Sync the public `disabled` input → internal state.\n effect(() => {\n this.internalDisabled.set(this.disabled());\n });\n }\n\n // --- ControlValueAccessor ---\n\n writeValue(value: string): void {\n // Radio is checked when its value matches the form control value\n this._elementRef.nativeElement.checked = this._elementRef.nativeElement.value === 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 setDisabledState(isDisabled: boolean): void {\n // Reactive forms (e.g. form.disable()) disable the control through here.\n this.internalDisabled.set(isDisabled);\n }\n\n // --- Event handlers ---\n\n // ControlValueAccessor callbacks\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onTouched: () => void = () => { /* noop */ };\n\n protected onHostClick(event: MouseEvent): void {\n if (this.readonly()) {\n event.preventDefault();\n }\n }\n\n protected onHostChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this._onChange(target.value);\n this.onTouched();\n }\n\n protected onSpacePressed(event: KeyboardEvent): void {\n if (this.readonly()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onChange: (value: string) => void = () => { /* noop */ };\n}\n","import { EdsRadio } from './eds-radio';\n\nexport { EdsRadio };\nexport type { EdsRadioSize } from './eds-radio';\n\n/** Convenience array for importing eds-radio. */\nexport const EDS_RADIO = [\n EdsRadio,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAkDa,QAAQ,CAAA;AAwCjB,IAAA,WAAA,GAAA;AAvCA;;;AAGG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,WAAW;oFAAC;AAE5B;;;AAGG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD;;;AAGG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEzD;;;AAGG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,GAAG;iFAAC;AAEvB,QAAA,IAAA,CAAA,WAAW,GAAiC,MAAM,CAAC,UAAU,CAAC;AAEtE;;;;AAIG;QACO,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK;6FAAC;;;;AAiChC,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,EAAc,CAAC;;AAsB9C,QAAA,IAAA,CAAA,SAAS,GAA4B,MAAK,EAAc,CAAC;;QAnD7D,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC9C,QAAA,CAAC,CAAC;IACN;;AAIA,IAAA,UAAU,CAAC,KAAa,EAAA;;AAEpB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,KAAK,KAAK;IAC3F;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;;AAEhC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;IACzC;AAQU,IAAA,WAAW,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,KAAK,CAAC,cAAc,EAAE;QAC1B;IACJ;AAEU,IAAA,YAAY,CAAC,KAAY,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE;IACpB;AAEU,IAAA,cAAc,CAAC,KAAoB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QAC3B;IACJ;8GA1FS,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EA5BN;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,QAAQ,CAAC;AACvC,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATS,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wjHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA+BH,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAlCpB,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,YACjB,EAAE,EAAA,eAAA,EAEK,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC;AACvC,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;qBACJ,EAAA,IAAA,EACK;AACF,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,gBAAgB,EAAE,qBAAqB;AACvC,wBAAA,qBAAqB,EAAE,qBAAqB;AAC5C,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,iBAAiB,EAAE,WAAW;;;AAG9B,wBAAA,YAAY,EAAE,oBAAoB;;;;;AAKlC,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,SAAS,EAAE,qBAAqB;AAChC,wBAAA,UAAU,EAAE,sBAAsB;AAClC,wBAAA,QAAQ,EAAE,aAAa;AACvB,wBAAA,iBAAiB,EAAE,8BAA8B;AACpD,qBAAA,EAAA,MAAA,EAAA,CAAA,wjHAAA,CAAA,EAAA;;;AC3CL;AACO,MAAM,SAAS,GAAG;IACrB,QAAQ;;;ACPZ;;AAEG;;"}
|
|
@@ -242,7 +242,7 @@ class EdsSelect {
|
|
|
242
242
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsSelect, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
243
243
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EdsSelect, isStandalone: true, selector: "select[edsSelect]", inputs: { e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isInvalid: { classPropertyName: "isInvalid", publicName: "isInvalid", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, rowCount: { classPropertyName: "rowCount", publicName: "rowCount", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "change": "onHostChange($event)", "mousedown": "_toggleOpen()", "keydown": "_onKeydown($event)", "blur": "_setOpen(false)" }, properties: { "attr.readonly": "readonly() || null", "attr.placeholder-selected": "_isPlaceholderSelected || null", "attr.invalid": "_isInvalid() || null", "attr.aria-invalid": "_isInvalid() || null", "attr.input-size": "size()", "attr.aria-label": "ariaLabel()", "attr.data-e2e": "e2eAttr()", "attr.open": "_isOpen() || null" }, classAttribute: "eds-select" }, providers: [
|
|
244
244
|
{ provide: EDS_SELECT_COMPONENT, useExisting: EdsSelect },
|
|
245
|
-
], usesOnChanges: true, ngImport: i0, template: '<ng-content/>', isInline: true, styles: [".eui-21 :host.eds-select{--_eds-input-height: var(--eds-si-4xl);--_eds-input-pad-v: var(--eds-sp-xs);--_eds-input-pad-h: var(--eds-sp-s);--_eds-input-font: var(--eds-f-paragraph-m);--_eds-input-font-weight: var(--eds-f-w-regular);--_eds-input-placeholder-font: var(--eds-f-placeholder-m);--_eds-input-placeholder-font-weight: var(--eds-f-w-light);font:var(--_eds-input-font);font-weight:var(--_eds-input-font-weight);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);height:var(--_eds-input-height);padding:var(--_eds-input-pad-v) var(--_eds-input-pad-h);width:100%}.eui-21 :host.eds-select:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-select:not([hidden]){display:block}.eui-21 :host.eds-select::placeholder{color:var(--eds-c-foreground-placeholder);font:var(--_eds-input-placeholder-font);font-weight:var(--_eds-input-placeholder-font-weight);opacity:1}.eui-21 :host.eds-select[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-select:disabled:not([readonly]),.eui-21 :host.eds-select--disabled:not([readonly]){background-color:var(--eds-c-surface-disabled-subtle);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-disabled);pointer-events:none}.eui-21 :host.eds-select[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-
|
|
245
|
+
], usesOnChanges: true, ngImport: i0, template: '<ng-content/>', isInline: true, styles: [".eui-21 :host.eds-select{--_eds-input-height: var(--eds-si-4xl);--_eds-input-pad-v: var(--eds-sp-xs);--_eds-input-pad-h: var(--eds-sp-s);--_eds-input-font: var(--eds-f-paragraph-m);--_eds-input-font-weight: var(--eds-f-w-regular);--_eds-input-placeholder-font: var(--eds-f-placeholder-m);--_eds-input-placeholder-font-weight: var(--eds-f-w-light);font:var(--_eds-input-font);font-weight:var(--_eds-input-font-weight);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);height:var(--_eds-input-height);padding:var(--_eds-input-pad-v) var(--_eds-input-pad-h);width:100%}.eui-21 :host.eds-select:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-select:not([hidden]){display:block}.eui-21 :host.eds-select::placeholder{color:var(--eds-c-foreground-placeholder);font:var(--_eds-input-placeholder-font);font-weight:var(--_eds-input-placeholder-font-weight);opacity:1}.eui-21 :host.eds-select[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-select:disabled:not([readonly]),.eui-21 :host.eds-select--disabled:not([readonly]){background-color:var(--eds-c-surface-disabled-subtle);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-disabled);pointer-events:none}.eui-21 :host.eds-select[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-focus-critical)!important;outline-offset:2px!important}.eui-21 :host.eds-select--loading{padding-right:var(--eds-sp-7xl)}.eui-21 :host.eds-select--loading-icon{align-items:center;display:flex}.eui-21 :host.eds-select--loading-icon:after,.eui-21 :host.eds-select--loading-icon:before{content:\"\";height:var(--eds-sp-l);position:absolute;right:var(--eds-sp-s);width:var(--eds-sp-l)}.eui-21 :host.eds-select--loading-icon:before{border:var(--eds-sp-3xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-21 :host.eds-select--loading-icon:after{animation:loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-c-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eds-sp-3xs);box-shadow:0 0 0 1px transparent}.eui-21 :host.eds-select--loading-icon--sm:after,.eui-21 :host.eds-select--loading-icon--sm:before{height:var(--eds-sp-m);width:var(--eds-sp-m)}@keyframes loading{to{transform:rotate(360deg)}}.eui-21 :host.eds-select[input-size=s]{--_eds-input-height: calc(var(--eds-si-3xl) + var(--eds-si-2xs));--_eds-input-pad-v: var(--eds-sp-2xs);--_eds-input-pad-h: var(--eds-sp-s)}.eui-21 :host.eds-select[input-size=l]{--_eds-input-height: var(--eds-si-6xl);--_eds-input-pad-v: var(--eds-sp-s);--_eds-input-pad-h: var(--eds-sp-m)}.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled):not([aria-disabled=true]):not(:checked):not(:disabled):not([readonly]):not([indeterminate=true]):not([invalid=true]){border-color:var(--eds-c-border)}.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox:checked:not([readonly]):not([invalid=true]),.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[checked=true]:not([readonly]):not([invalid=true]),.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[indeterminate=true]:not([readonly]){background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]){background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-primary--hover)}.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]):before{background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-select{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-21 :host.eds-select:focus:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-select{color:var(--eds-c-foreground);overflow-y:auto}.eui-21 :host.eds-select[hidden],.eui-21 :host.eds-select[readonly]{display:none}.eui-21 :host.eds-select[readonly][multiple=true] option:checked{background:none}.eui-21 :host.eds-select[readonly][multiple=true] :not(option:checked){display:none}.eui-21 :host.eds-select[multiple=true],.eui-21 :host.eds-select[size]:not([size=\"1\"]):not([size=\"0\"]){background-image:none;height:auto;overflow:auto;padding:var(--eds-sp-3xs) 0}.eui-21 :host.eds-select[placeholder-selected]{color:var(--eds-c-foreground-placeholder)}.eui-21 :host.eds-select optgroup{font:var(--eds-f-label-m);font-weight:var(--eds-f-w-semibold)}.eui-21 :host.eds-select optgroup,.eui-21 :host.eds-select option{appearance:none;color:var(--eds-c-foreground);display:block;padding:var(--eds-sp-3xs);white-space:pre}.eui-21 :host.eds-select optgroup:disabled,.eui-21 :host.eds-select option:disabled{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-select optgroup.eds-select__placeholder,.eui-21 :host.eds-select option.eds-select__placeholder{color:var(--eds-c-foreground-placeholder)!important}.eui-21 :host.eds-select:not([readonly]):not([multiple]),.eui-21 :host.eds-select[size=\"1\"],.eui-21 :host.eds-select[size=\"0\"]{appearance:none;background-color:var(--eds-c-surface-elevation)}.eui-21 :host.eds-select:not([readonly]):not([multiple]):disabled,.eui-21 :host.eds-select[size=\"1\"]:disabled,.eui-21 :host.eds-select[size=\"0\"]:disabled{background-color:var(--eds-c-surface-disabled-subtle)}.eui-21 :host.eds-select:not([readonly]):not([multiple]),.eui-21 :host.eds-select[size=\"1\"],.eui-21 :host.eds-select[size=\"0\"]{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%23404040'%3E%3Cpath d='M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z'/%3E%3C/svg%3E\");background-position:calc(100% - var(--eds-sp-s)) center;background-repeat:no-repeat;background-size:var(--eds-sp-l);padding-right:var(--eds-sp-3xl)}.eui-21 :host.eds-select:not([readonly]):not([multiple])[open],.eui-21 :host.eds-select[size=\"1\"][open],.eui-21 :host.eds-select[size=\"0\"][open]{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%23404040'%3E%3Cpath d='M213.66,165.66a8,8,0,0,1-11.32,0L128,91.31,53.66,165.66a8,8,0,0,1-11.32-11.32l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,213.66,165.66Z'/%3E%3C/svg%3E\")}.eui-21 :host.eds-select[invalid]{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-select[invalid]:focus:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-critical)!important;outline-offset:2px!important}.eds-select__readonly-display{font:var(--eds-f-paragraph-m);background-color:transparent;border:none;box-shadow:none;color:var(--eds-c-foreground);padding:var(--eds-sp-xs) 0;width:100%;pointer-events:none;outline:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
246
246
|
}
|
|
247
247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsSelect, decorators: [{
|
|
248
248
|
type: Component,
|
|
@@ -266,7 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
|
|
|
266
266
|
'(mousedown)': '_toggleOpen()',
|
|
267
267
|
'(keydown)': '_onKeydown($event)',
|
|
268
268
|
'(blur)': '_setOpen(false)',
|
|
269
|
-
}, styles: [".eui-21 :host.eds-select{--_eds-input-height: var(--eds-si-4xl);--_eds-input-pad-v: var(--eds-sp-xs);--_eds-input-pad-h: var(--eds-sp-s);--_eds-input-font: var(--eds-f-paragraph-m);--_eds-input-font-weight: var(--eds-f-w-regular);--_eds-input-placeholder-font: var(--eds-f-placeholder-m);--_eds-input-placeholder-font-weight: var(--eds-f-w-light);font:var(--_eds-input-font);font-weight:var(--_eds-input-font-weight);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);height:var(--_eds-input-height);padding:var(--_eds-input-pad-v) var(--_eds-input-pad-h);width:100%}.eui-21 :host.eds-select:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-select:not([hidden]){display:block}.eui-21 :host.eds-select::placeholder{color:var(--eds-c-foreground-placeholder);font:var(--_eds-input-placeholder-font);font-weight:var(--_eds-input-placeholder-font-weight);opacity:1}.eui-21 :host.eds-select[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-select:disabled:not([readonly]),.eui-21 :host.eds-select--disabled:not([readonly]){background-color:var(--eds-c-surface-disabled-subtle);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-disabled);pointer-events:none}.eui-21 :host.eds-select[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-
|
|
269
|
+
}, styles: [".eui-21 :host.eds-select{--_eds-input-height: var(--eds-si-4xl);--_eds-input-pad-v: var(--eds-sp-xs);--_eds-input-pad-h: var(--eds-sp-s);--_eds-input-font: var(--eds-f-paragraph-m);--_eds-input-font-weight: var(--eds-f-w-regular);--_eds-input-placeholder-font: var(--eds-f-placeholder-m);--_eds-input-placeholder-font-weight: var(--eds-f-w-light);font:var(--_eds-input-font);font-weight:var(--_eds-input-font-weight);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);height:var(--_eds-input-height);padding:var(--_eds-input-pad-v) var(--_eds-input-pad-h);width:100%}.eui-21 :host.eds-select:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-select:not([hidden]){display:block}.eui-21 :host.eds-select::placeholder{color:var(--eds-c-foreground-placeholder);font:var(--_eds-input-placeholder-font);font-weight:var(--_eds-input-placeholder-font-weight);opacity:1}.eui-21 :host.eds-select[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-select:disabled:not([readonly]),.eui-21 :host.eds-select--disabled:not([readonly]){background-color:var(--eds-c-surface-disabled-subtle);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-disabled);pointer-events:none}.eui-21 :host.eds-select[invalid]:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-focus-critical)!important;outline-offset:2px!important}.eui-21 :host.eds-select--loading{padding-right:var(--eds-sp-7xl)}.eui-21 :host.eds-select--loading-icon{align-items:center;display:flex}.eui-21 :host.eds-select--loading-icon:after,.eui-21 :host.eds-select--loading-icon:before{content:\"\";height:var(--eds-sp-l);position:absolute;right:var(--eds-sp-s);width:var(--eds-sp-l)}.eui-21 :host.eds-select--loading-icon:before{border:var(--eds-sp-3xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-21 :host.eds-select--loading-icon:after{animation:loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-c-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eds-sp-3xs);box-shadow:0 0 0 1px transparent}.eui-21 :host.eds-select--loading-icon--sm:after,.eui-21 :host.eds-select--loading-icon--sm:before{height:var(--eds-sp-m);width:var(--eds-sp-m)}@keyframes loading{to{transform:rotate(360deg)}}.eui-21 :host.eds-select[input-size=s]{--_eds-input-height: calc(var(--eds-si-3xl) + var(--eds-si-2xs));--_eds-input-pad-v: var(--eds-sp-2xs);--_eds-input-pad-h: var(--eds-sp-s)}.eui-21 :host.eds-select[input-size=l]{--_eds-input-height: var(--eds-si-6xl);--_eds-input-pad-v: var(--eds-sp-s);--_eds-input-pad-h: var(--eds-sp-m)}.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled):not([aria-disabled=true]):not(:checked):not(:disabled):not([readonly]):not([indeterminate=true]):not([invalid=true]){border-color:var(--eds-c-border)}.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox:checked:not([readonly]):not([invalid=true]),.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[checked=true]:not([readonly]):not([invalid=true]),.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-checkbox[indeterminate=true]:not([readonly]){background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]){background-color:var(--eds-c-surface-elevation);border-color:var(--eds-c-border-primary--hover)}.eui-21 :host.eds-select:hover:not([aria-disabled=true]):not(:disabled).eds-radio:checked:not([readonly]):not([data-readonly]):not([invalid=true]):not([invalid]):before{background-color:var(--eds-c-surface-primary--hover)}.eui-21 :host.eds-select{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-21 :host.eds-select:focus:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:2px!important}.eui-21 :host.eds-select{color:var(--eds-c-foreground);overflow-y:auto}.eui-21 :host.eds-select[hidden],.eui-21 :host.eds-select[readonly]{display:none}.eui-21 :host.eds-select[readonly][multiple=true] option:checked{background:none}.eui-21 :host.eds-select[readonly][multiple=true] :not(option:checked){display:none}.eui-21 :host.eds-select[multiple=true],.eui-21 :host.eds-select[size]:not([size=\"1\"]):not([size=\"0\"]){background-image:none;height:auto;overflow:auto;padding:var(--eds-sp-3xs) 0}.eui-21 :host.eds-select[placeholder-selected]{color:var(--eds-c-foreground-placeholder)}.eui-21 :host.eds-select optgroup{font:var(--eds-f-label-m);font-weight:var(--eds-f-w-semibold)}.eui-21 :host.eds-select optgroup,.eui-21 :host.eds-select option{appearance:none;color:var(--eds-c-foreground);display:block;padding:var(--eds-sp-3xs);white-space:pre}.eui-21 :host.eds-select optgroup:disabled,.eui-21 :host.eds-select option:disabled{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-select optgroup.eds-select__placeholder,.eui-21 :host.eds-select option.eds-select__placeholder{color:var(--eds-c-foreground-placeholder)!important}.eui-21 :host.eds-select:not([readonly]):not([multiple]),.eui-21 :host.eds-select[size=\"1\"],.eui-21 :host.eds-select[size=\"0\"]{appearance:none;background-color:var(--eds-c-surface-elevation)}.eui-21 :host.eds-select:not([readonly]):not([multiple]):disabled,.eui-21 :host.eds-select[size=\"1\"]:disabled,.eui-21 :host.eds-select[size=\"0\"]:disabled{background-color:var(--eds-c-surface-disabled-subtle)}.eui-21 :host.eds-select:not([readonly]):not([multiple]),.eui-21 :host.eds-select[size=\"1\"],.eui-21 :host.eds-select[size=\"0\"]{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%23404040'%3E%3Cpath d='M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z'/%3E%3C/svg%3E\");background-position:calc(100% - var(--eds-sp-s)) center;background-repeat:no-repeat;background-size:var(--eds-sp-l);padding-right:var(--eds-sp-3xl)}.eui-21 :host.eds-select:not([readonly]):not([multiple])[open],.eui-21 :host.eds-select[size=\"1\"][open],.eui-21 :host.eds-select[size=\"0\"][open]{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%23404040'%3E%3Cpath d='M213.66,165.66a8,8,0,0,1-11.32,0L128,91.31,53.66,165.66a8,8,0,0,1-11.32-11.32l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,213.66,165.66Z'/%3E%3C/svg%3E\")}.eui-21 :host.eds-select[invalid]{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-select[invalid]:focus:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-critical)!important;outline-offset:2px!important}.eds-select__readonly-display{font:var(--eds-f-paragraph-m);background-color:transparent;border:none;box-shadow:none;color:var(--eds-c-foreground);padding:var(--eds-sp-xs) 0;width:100%;pointer-events:none;outline:none}\n"] }]
|
|
270
270
|
}], propDecorators: { e2eAttr: [{ type: i0.Input, args: [{ isSignal: true, alias: "e2eAttr", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], isInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isInvalid", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], rowCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowCount", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
271
271
|
|
|
272
272
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|