@eui/components 18.0.0-rc.33 → 18.0.0-rc.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/docs/components/EuiAppComponent.html +13 -1
  2. package/docs/components/EuiAppHeaderComponent.html +13 -1
  3. package/docs/components/EuiAppSidebarComponent.html +13 -1
  4. package/docs/components/EuiAppTopMessageComponent.html +13 -1
  5. package/docs/components/EuiInputNumberComponent.html +12 -1
  6. package/docs/dependencies.html +1 -1
  7. package/docs/js/search/search_index.js +2 -2
  8. package/esm2022/eui-input-number/eui-input-number.component.mjs +14 -6
  9. package/esm2022/layout/eui-app/eui-app-header/header.component.mjs +11 -6
  10. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar.component.mjs +10 -5
  11. package/esm2022/layout/eui-app/eui-app-top-message/top-message.component.mjs +12 -7
  12. package/esm2022/layout/eui-app/eui-app.component.mjs +10 -6
  13. package/eui-input-number/eui-input-number.component.d.ts +3 -2
  14. package/eui-input-number/eui-input-number.component.d.ts.map +1 -1
  15. package/fesm2022/eui-components-eui-input-number.mjs +13 -5
  16. package/fesm2022/eui-components-eui-input-number.mjs.map +1 -1
  17. package/fesm2022/eui-components-layout.mjs +34 -18
  18. package/fesm2022/eui-components-layout.mjs.map +1 -1
  19. package/layout/eui-app/eui-app-header/header.component.d.ts +2 -1
  20. package/layout/eui-app/eui-app-header/header.component.d.ts.map +1 -1
  21. package/layout/eui-app/eui-app-sidebar/sidebar.component.d.ts +3 -2
  22. package/layout/eui-app/eui-app-sidebar/sidebar.component.d.ts.map +1 -1
  23. package/layout/eui-app/eui-app-top-message/top-message.component.d.ts +2 -1
  24. package/layout/eui-app/eui-app-top-message/top-message.component.d.ts.map +1 -1
  25. package/layout/eui-app/eui-app.component.d.ts +2 -1
  26. package/layout/eui-app/eui-app.component.d.ts.map +1 -1
  27. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-eui-input-number.mjs","sources":["../../eui-input-number/eui-input-number.component.ts","../../eui-input-number/eui-number-control.directive.ts","../../eui-input-number/eui-input-number.module.ts","../../eui-input-number/eui-components-eui-input-number.ts"],"sourcesContent":["import {\n Optional,\n LOCALE_ID,\n Inject,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n Injector,\n numberAttribute,\n booleanAttribute,\n} from '@angular/core';\nimport { LocaleService } from '@eui/core';\nimport { LocaleState } from '@eui/core';\nimport { coerceBooleanProperty, coerceNumberProperty, BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { type CleaveOptions } from 'cleave.js/options';\nimport Cleave from 'cleave.js';\nimport { CleaveEventOnChange } from './models/cleave-event-onchange.model';\nimport { InputDirective } from '@eui/components/shared';\nimport { DOCUMENT, getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport { EuiClearableDirective, EuiLoadingDirective } from '@eui/components/directives';\nimport { NgControl } from '@angular/forms';\n\nexport interface CleaveInstance extends Cleave {\n initSwapHiddenInput?: () => void;\n initNumeralFormatter?: () => void;\n initTimeFormatter?: () => void;\n initDateFormatter?: () => void;\n initPhoneFormatter?: () => void;\n updateCreditCardPropsByValue?: () => void;\n updateValueState?: () => void;\n callOnValueChanged?: () => void;\n onChange?: (event?: Event) => void;\n onCut?: (event?: Event) => void;\n onFocus?: (event?: Event) => void;\n onCopy?: (event?: Event) => void;\n onKeyDown?: (event?: Event) => void;\n onChangeListener?: (event?: Event) => void;\n onKeyDownListener?: (event?: Event) => void;\n onFocusListener?: (event?: Event) => void;\n onCutListener?: (event?: Event) => void;\n onCopyListener?: (event?: Event) => void;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[euiInputNumber]',\n styleUrls: ['./styles/_index.scss'],\n template: '',\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: EuiClearableDirective,\n inputs: ['euiClearable', 'readonly', 'disabled'],\n },\n {\n directive: EuiLoadingDirective,\n inputs: ['euiLoading', 'readonly'],\n },\n ],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(blur)': 'onTouched()',\n },\n})\nexport class EuiInputNumberComponent extends InputDirective implements OnInit, OnDestroy, DoCheck, OnChanges {\n /**\n * The minimum number can be entered. Blocks user's input if not in range.\n */\n @Input({ transform: numberAttribute }) min!: number;\n /**\n * The maximum number can be entered. Blocks user's input if not in range.\n */\n @Input({ transform: numberAttribute }) max!: number;\n /** Adds leading zero to a number. Formatting will not work.\n * e.g. with leadingZero=3 input number 5 => 005\n */\n @Input({ transform: numberAttribute }) leadingZero = 0;\n @Input()\n public get isInvalid(): boolean {\n return this._isInvalid || null;\n }\n\n public set isInvalid(state: BooleanInput) {\n this.setInvalid(state);\n }\n @HostBinding('class')\n public get cssClasses(): string {\n return [super.getCssClasses('eui-input-number'), this._isInvalid ? 'eui-input-number--invalid' : ''].join(' ').trim();\n }\n\n /** how many digits for the decimal part */\n @Input()\n get fractionDigits(): number {\n return this._fractionDigits;\n }\n set fractionDigits(value: NumberInput) {\n this._fractionDigits = coerceNumberProperty(value);\n }\n /** how many digits for the integer part */\n @Input({ transform: numberAttribute }) digits!: number;\n @Input({ transform: booleanAttribute }) fillFraction: boolean;\n /** rounds a number with more than two decimals UP */\n @Input({ transform: numberAttribute }) roundUp!: number;\n protected _isInvalid: boolean;\n /**\n * does not format the and do a thousand grouping of number\n */\n @Input({ transform: booleanAttribute }) noFormat: boolean;\n @HostBinding('attr.type') protected type = 'eui-number';\n @Input() value: string;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public onChangeCallback: (_: any) => void;\n cleaveInstance: CleaveInstance;\n\n /** holds instance of cleave */\n /** options for the Cleave instance */\n private options: CleaveOptions;\n private _fractionDigits = 0;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _renderer: Renderer2,\n @Optional() private localeService: LocaleService,\n @Inject(LOCALE_ID) private locale_id: string,\n injector: Injector,\n @Inject(DOCUMENT) private document: Document,\n ) {\n super(_elementRef, _renderer, injector);\n\n // set default options\n this.options = {\n numeral: true,\n delimiter: getLocaleNumberSymbol(locale_id || 'en', NumberSymbol.Group),\n numeralDecimalMark: getLocaleNumberSymbol(locale_id || 'en', NumberSymbol.Decimal),\n numeralDecimalScale: this.fractionDigits,\n numeralIntegerScale: this.digits,\n };\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n\n // instantiate cleave\n if (!this.control) {\n this.initCleave();\n }\n\n // subscribe to localization service and listen for locale change. De-construction of locale should happen here!\n this.localeService?.getState().subscribe((state: LocaleState) => {\n this.options = this.getCleaveOptsBasedOnLocale(state?.id);\n\n // update the options on the cleave instance\n this.updateOptions(true);\n });\n\n this._renderer.setProperty(this._elementRef.nativeElement, 'rootClassName', 'eui-input-number');\n }\n\n ngDoCheck(): void {\n if (!this.control) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n }\n this.isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.hasOwn(changes, 'value')) {\n this._elementRef.nativeElement.value = this.value;\n if (this.cleaveInstance) {\n this.cleaveInstance.setRawValue(this.value);\n }\n }\n if (Object.hasOwn(changes, 'fractionDigits')) {\n this.options = { ...this.options, numeralDecimalScale: this.fractionDigits };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'noFormat')) {\n this.options = { ...this.options, numeralThousandsGroupStyle: this.noFormat ? 'none' : 'thousand' };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'fillFraction') && this.cleaveInstance) {\n this.applyFractionFill(this.cleaveInstance.getRawValue());\n }\n if (Object.hasOwn(changes, 'digits')) {\n this.options = { ...this.options, numeralIntegerScale: this.digits };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'min')) {\n this.min = changes['min'].currentValue;\n if (changes['min'].currentValue >= 0) {\n if (this.cleaveInstance) {\n // take care of the sign symbol\n this.cleaveInstance.setRawValue(Math.abs(Number(this.cleaveInstance.getRawValue())).toString());\n }\n }\n }\n if (Object.hasOwn(changes, 'max')) {\n this.max = changes['max'].currentValue;\n // check if current value is in range\n if (this.cleaveInstance) {\n const number = Number(this.cleaveInstance.getRawValue());\n if (number > this.max) {\n this.cleaveInstance.setRawValue(this.max.toString());\n }\n }\n }\n if (Object.hasOwn(changes, 'roundUp')) {\n if (changes['roundUp'].currentValue > 0) {\n if (this.cleaveInstance) {\n let number = Number.parseFloat(this.cleaveInstance.getRawValue());\n number = this.decimalAdjust(number, this.roundUp * -1);\n this.cleaveInstance.setRawValue(number.toString());\n }\n }\n }\n if(Object.hasOwn(changes, 'placeholder')) {\n // parse number\n const number = this.parseNumber(changes['placeholder'].currentValue?.toString() || undefined);\n // set placeholder in case none is provided\n this.setPlaceholderAttribute(isNaN(number) ? changes['placeholder'].currentValue : number);\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n // destroy cleave instance\n if (this.cleaveInstance) {\n this.cleaveInstance.destroy();\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: any = (_: any): void => {\n if (this.control && (_ !== null || _ !== undefined)) {\n // parse number\n // const value = Number(_);\n // run on next MicroTask to avoid NG0100 error TODO: deeper investigation\n // Promise.resolve().then(() => this.control.viewToModelUpdate(value));\n // in case control is FormControl\n // this.control?.control.setValue(isNaN(value) ? null : value, { emitEvent: false, emitModelToViewChange: false });\n }\n };\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTouched: any = (): void => {\n this.control?.control.markAsTouched();\n };\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n // get the value from clipboard\n const value = (event.clipboardData || window['clipboardData']).getData('text');\n // in case round UP is enabled\n if (this.roundUp > 0) {\n const div = this.document.createElement('input');\n // create a clone of cleaveInstance\n const cloneInstance: CleaveInstance = new Cleave(div, { ...this.options, numeralDecimalScale: 8 });\n cloneInstance.setRawValue(value.toString());\n let number = Number.parseFloat(cloneInstance.getRawValue());\n number = this.decimalAdjust(number, this.roundUp * -1);\n if (!Number.isNaN(number)) {\n this.cleaveInstance.setRawValue(number.toString());\n // TODO: investigate in the future how can this be avoided\n setTimeout(() => {\n // this.writeValue(number.toString());\n }, 0);\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeyDown(e: KeyboardEvent): void {\n // check if it's a single symbol and not Special like (Ctrl, backspace etc)\n if (e?.key?.length <= 1 && !e.ctrlKey && !e.altKey && !e.metaKey) {\n // stop event propagation if key pressed is not a number or locale character or minus sign\n if (\n Number.isNaN(Number.parseInt(e.key, 10)) &&\n this.isMinusAllowed(e.key) &&\n e.key !== getLocaleNumberSymbol(this.localeService?.currentLocale || this.locale_id, NumberSymbol.Decimal)\n ) {\n e.stopPropagation();\n e.preventDefault();\n // stop event propagation if key pressed exceeds the min/max value range\n } else if (!Number.isNaN(Number.parseInt(e.key, 10)) && this.isOutSideRange(e)) {\n e.stopPropagation();\n e.preventDefault();\n } else if (this.isOutSideRange(e)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n // protect decimal symbol deletion in case fillFraction is on\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const element = this._elementRef.nativeElement;\n // position of caret\n const pos = element.selectionStart;\n // get character about to be deleted\n const char = element.value.charAt(pos - 1);\n // in case the char is the decimal symbol prevent deletion and move caret in front\n if (char === getLocaleNumberSymbol(this.localeService?.currentLocale || this.locale_id, NumberSymbol.Decimal)) {\n e.stopPropagation();\n e.preventDefault();\n element.setSelectionRange(pos - 1, pos - 1);\n } else if (this.isOutSideRange(e)) {\n // don't allow insertion that will put number out of range\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n\n @HostListener('focusout')\n protected onFocusout(): void {\n // in case fillFraction feature is on and there's no integer part add leading 0\n if (this.fillFraction && this.cleaveInstance.getRawValue().match(/^\\.[0-9]+/g)) {\n this.cleaveInstance.setRawValue('0' + this.cleaveInstance.getRawValue());\n }\n\n // in case round UP is enabled\n if (this.roundUp > 0) {\n const number = Number.parseFloat(this.cleaveInstance.getRawValue());\n this.cleaveInstance.setRawValue(this.decimalAdjust(number, this.roundUp * -1).toString());\n }\n\n // in case min is set and value is less than min reset to the min value\n if (this.min !== null && this.min !== undefined && Number.parseFloat(this.cleaveInstance.getRawValue()) < this.min) {\n this.cleaveInstance.setRawValue(this.min.toString());\n }\n\n // in case max is set and value is greater than max reset to the max value\n if (this.max !== null && this.max !== undefined && Number.parseFloat(this.cleaveInstance.getRawValue()) > this.max) {\n this.cleaveInstance.setRawValue(this.max.toString());\n }\n }\n\n protected setInvalid(state?: BooleanInput): void {\n // in case it's controlled by NgControl override\n this._isInvalid = this.control ? this.control.invalid && this.control.touched : coerceBooleanProperty(state);\n\n // set BaseDirective Attribute\n this.euiDanger = this._isInvalid;\n }\n\n /**\n * @Override setPlaceholder setPlaceholderAttribute of InputDirective\n * Updates the placeholder value based on current number format and given value.\n * If value passed contains characters it doesn't format placeholder.\n * */\n protected setPlaceholderAttribute(value: string | number): void {\n // if value is a number, format the value based on current number format\n if (typeof value === 'number' && !isNaN(value)) {\n const div = this.document.createElement('input');\n // create a clone of cleaveInstance\n const cloneInstance: CleaveInstance = new Cleave(div, this.options);\n // BEWARE: by the time your setRawValue cleave options have changed thus number formatting\n cloneInstance.setRawValue(value.toString());\n // set the value with current format as placeholder\n super.setPlaceholderAttribute(cloneInstance.getFormattedValue());\n } else if (typeof value === 'string') {\n super.setPlaceholderAttribute(value.toString());\n } else if (isNaN(value)) {\n value = this._elementRef.nativeElement.placeholder;\n super.setPlaceholderAttribute(value.toString());\n }\n }\n\n /**\n * instantiate Cleave.js\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initCleave(onChangeCallback?: (obj: any) => any): void {\n // change the cleave prototype function to intercept onCut callback\n // and allow based on the event bubbling and disabled state\n // TIP: change behavior of onCut to stop in case bubble is canceled\n // TODO: See relevant issue https://github.com/nosir/cleave.js/issues/675\n const _onCut = Cleave.prototype['onCut'];\n Cleave.prototype['onCut'] = function (e: Event): void {\n // eslint-disable-next-line no-invalid-this\n if (!e.cancelBubble && !this.element.disabled) {\n // eslint-disable-next-line no-invalid-this\n _onCut.call(this, e);\n }\n };\n\n // in case options is undefined\n const opts: CleaveOptions = { ...this.options };\n\n // set the onValue change listener to keep the value at readOnly element in sync\n opts.onValueChanged = onChangeCallback || this.onValueChanged.bind(this);\n\n // in case round UP is enabled\n if (this.roundUp > 0) {\n const number = Number.parseFloat(this._elementRef.nativeElement.value);\n this._elementRef.nativeElement.value = this.decimalAdjust(number, this.roundUp * -1);\n }\n\n // create the Cleave instance with the new or updated options\n this.cleaveInstance = new Cleave(this._elementRef.nativeElement, opts);\n }\n\n /**\n * Updates the cleave options by destroying the current instance and creating another one while keeping the previous\n * value.\n */\n private updateOptions(localeUpdated = false): void {\n if (this.cleaveInstance) {\n // the value before destroying cleave instance\n const previousValue = this.cleaveInstance.getRawValue();\n\n // update the Cleave instance with the new or updated options\n this.cleaveInstance.properties = {\n ...this.cleaveInstance.properties,\n ...this.options,\n initValue: previousValue,\n };\n\n // init number formatter with updated options\n this.cleaveInstance.initNumeralFormatter();\n\n // In case previous settings where numeralDecimalMark='.' with value 1000.99, and they changed to\n // numeralDecimalMark=','; set initValue to 1000.99 or even 1000,99 will not be reflected and cleave will\n // remove the decimal part. Set of the value after initialization causes reformat of number and works.\n this.cleaveInstance.setRawValue(previousValue);\n\n // parse number\n const number = this.parseNumber(this._elementRef.nativeElement.placeholder || undefined, localeUpdated);\n // set placeholder in case none is provided\n this.setPlaceholderAttribute(number);\n }\n }\n\n /**\n * Callback function of the Cleave instance that is invoked when value is changed.\n *\n * @param event type of CleaveEventOnChange\n */\n private onValueChanged(event: CleaveEventOnChange): void {\n const { target } = event;\n\n if (this.fillFraction) {\n this.applyFractionFill(target.rawValue);\n }\n this.onChange(Number.parseFloat(target.rawValue));\n // fill leading zero\n if (this.leadingZero) {\n const size = this.leadingZero > this.digits && this.digits > 0 ? this.digits : this.leadingZero;\n this._elementRef.nativeElement.value = this.padZero(event.target.rawValue, size);\n }\n }\n\n /**\n * responsible to extract all locale information needed to build CleaveOptions related to number format.\n *\n * @param id The id of the locale\n */\n private getCleaveOptsBasedOnLocale(id: string): CleaveOptions {\n if (!id || id === '') {\n throw new Error('Locale id cannot be empty or undefined');\n }\n const opts: CleaveOptions = {\n numeral: true,\n delimiter: getLocaleNumberSymbol(id, NumberSymbol.Group),\n numeralDecimalMark: getLocaleNumberSymbol(id, NumberSymbol.Decimal),\n numeralDecimalScale: this.fractionDigits,\n numeralIntegerScale: this.digits,\n numeralThousandsGroupStyle: this.noFormat ? 'none' : 'thousand', // TODO: implement based on locale\n };\n\n return { ...this.options, ...opts };\n }\n\n /**\n * Applies the fill of decimal part with zeros in case decimal part of given number has\n * size less than the max fraction digits.\n *\n * @param number\n * @param cleaveInstance\n * @private\n */\n private applyFractionFill(number: string, cleaveInstance: CleaveInstance = this.cleaveInstance): void {\n // if fill fraction is enabled and there's cleave instance\n if (this.fillFraction) {\n if (this.cleaveInstance) {\n number = number?.toString();\n if (number === '' || !number) {\n return;\n }\n const hasDecimal = number.split('.').length > 1;\n // in case there's already decimal point in number\n if (hasDecimal) {\n const decimalSize = number.split('.')[1].length;\n // if size of decimal part of number is less than the max fraction digits\n if (decimalSize < this._fractionDigits) {\n number = number + new Array(this._fractionDigits - decimalSize).fill(0).join('');\n const pos = this._elementRef.nativeElement.selectionStart;\n cleaveInstance.setRawValue(number);\n this._elementRef.nativeElement.setSelectionRange(pos, pos);\n }\n // in case there's not, force it by filling it as much zero as the fraction digits\n } else if (this.fractionDigits > 0) {\n number = `${number}.${new Array(this._fractionDigits).fill(0).join('')}`;\n const pos = this._elementRef.nativeElement.selectionStart;\n cleaveInstance.setRawValue(number);\n this._elementRef.nativeElement.setSelectionRange(pos, pos);\n }\n }\n }\n }\n\n /**\n * Parses a given formatted number and returns it as a number.\n *\n * @param value The formatted number you want to parse e.g. 111,888.22\n * @param userPrevLocaleState Use previous locale state to parse the value. By default, is false\n * @private\n */\n private parseNumber(value: string, userPrevLocaleState = false): number {\n // locale state\n const locale = userPrevLocaleState ? this.localeService?.previousLocale : this.localeService?.currentLocale || this.locale_id || 'en';\n // get decimal and group symbols\n const decimalSymbol = getLocaleNumberSymbol(locale, NumberSymbol.Decimal);\n const groupSymbol = getLocaleNumberSymbol(locale, NumberSymbol.Group);\n // replace symbols to parse number\n const parsedNumber = value?.split(groupSymbol).join('').split(decimalSymbol).join('.');\n return Number.parseFloat(parsedNumber);\n }\n\n /**\n * Pad leading zero to the number\n *\n * @param num The number to add leading zero to\n * @param size Number of number's leading zero\n * @private\n */\n private padZero(num, size): string {\n num = num.toString();\n // get integer and decimal part\n // eslint-disable-next-line prefer-const\n let [integer, decimal] = num.split('.');\n while (integer.length < size) {\n integer = '0' + integer;\n }\n return decimal ? `${integer}.${decimal}` : integer;\n }\n\n /**\n * checks whether the min symbol is allowed. It is allowed when minus symbol\n * provided and min input is undefined or min provided and is negative.\n *\n * @param key The key string coming from an event\n */\n private isMinusAllowed(key: string): boolean {\n return !this.min || this.min < 0 ? key !== '-' : true;\n }\n\n /**\n * check whether the key entered is inside the min and\n * max range. Returns true if it's out of range.\n *\n * @param e A keyboard event\n */\n private isOutSideRange(e: KeyboardEvent): boolean {\n if (!this.cleaveInstance) {\n return false;\n }\n // get caret position\n const pos = e.target['selectionStart'];\n // get caret position (in case there's text selected)\n const endPos = e.target['selectionEnd'];\n // get current value (formatted)\n let value = e.target['value'];\n // remove key from value\n if (e.key === 'Delete' || e.key === 'Backspace') {\n // check if there's selection of text to be removed\n if (pos !== endPos) {\n value = e.target['value'].substring(0, pos) + e.target['value'].substring(endPos, e.target['value'].length);\n } else {\n value = e.target['value'].substring(0, pos - 1) + e.target['value'].substring(endPos, e.target['value'].length);\n }\n } else {\n // add key to the value\n value = [value.slice(0, pos), e.key, value.slice(endPos)].join('');\n }\n\n // create a Cleave instance to extract the number from formatted value\n const cleave: CleaveInstance = new Cleave(this.document.createElement('input'), { ...this.options });\n cleave.setRawValue(value);\n const number = Number(cleave.getRawValue());\n // destroy cleave instance\n cleave.destroy();\n return !isNaN(number) &&\n this.min >= 0 ? (this.isDefined(this.max) && this.max < number) : (this.min > number || this.max < number) &&\n this.max <= 0 ? (this.isDefined(this.min) && this.min > number) : (this.min > number || this.max < number);\n }\n\n /**\n * Decimal adjustment of a number.\n *\n * @param value The number.\n * @param exp The exponent (the 10 logarithm of the adjustment base).\n * @returns The adjusted value.\n */\n private decimalAdjust(value: number, exp: number): number {\n // If the exp is undefined or zero...\n if (typeof exp === 'undefined' || +exp === 0) {\n return Math.round(value);\n }\n value = +value;\n exp = +exp;\n // If the value is not a number or the exp is not an integer...\n if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n return NaN;\n }\n // Shift\n let cleaned = value.toString().split('e');\n value = Math.round(+(cleaned[0] + 'e' + (cleaned[1] ? +cleaned[1] - exp : -exp)));\n // Shift back\n cleaned = value.toString().split('e');\n return +(cleaned[0] + 'e' + (cleaned[1] ? +cleaned[1] + exp : exp));\n }\n\n /**\n * Checks whether a value is defined or not\n *\n * @param value\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isDefined(value: any): boolean {\n return value !== undefined && value !== null;\n }\n}\n","import { Directive, ElementRef, forwardRef, OnInit, Optional } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CleaveInstance, EuiInputNumberComponent } from './eui-input-number.component';\nimport Cleave from 'cleave.js';\n\n@Directive({\n selector: 'input[euiInputNumber][formControl],input[euiInputNumber][formControlName],input[euiInputNumber][ngModel]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiInputNumberDirective),\n multi: true,\n },\n ],\n})\nexport class EuiInputNumberDirective implements ControlValueAccessor, OnInit {\n /** hold a copy of the value */\n private value: number;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (t: any) => void;\n\n constructor(\n private elementRef: ElementRef,\n @Optional() private euiNumberComponent: EuiInputNumberComponent,\n ) {}\n\n ngOnInit(): void {\n this.euiNumberComponent['initCleave'](this.valueChanges.bind(this));\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(obj: any): void {\n const cleave: CleaveInstance = new Cleave(document.createElement('input'), { ...this.euiNumberComponent['options'] });\n cleave.setRawValue(obj);\n if (this.euiNumberComponent.fillFraction && obj !== '' && obj) {\n this.euiNumberComponent['applyFractionFill'](obj, cleave);\n }\n let valueOfElement: string;\n // fill leading zero\n if (this.euiNumberComponent.leadingZero) {\n const size =\n this.euiNumberComponent.leadingZero > this.euiNumberComponent.digits && this.euiNumberComponent.digits > 0\n ? this.euiNumberComponent.digits\n : this.euiNumberComponent.leadingZero;\n valueOfElement = this.euiNumberComponent['padZero'](cleave.getFormattedValue(), size);\n } else {\n valueOfElement = cleave.getFormattedValue();\n }\n this.elementRef.nativeElement.value = valueOfElement;\n this.value = Number.parseFloat(cleave.getRawValue());\n cleave.destroy();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = (t): void => {\n this.value = t;\n fn(t);\n };\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.euiNumberComponent.disabled = isDisabled;\n }\n\n private onTouched(): void {\n // this.euiNumberComponent.isInvalid = this.control.invalid;\n }\n\n private valueChanges(event): void {\n const { target } = event;\n\n this.euiNumberComponent['onValueChanged'](event);\n const numberCoerce = Number.parseFloat(target.rawValue);\n if (this.value !== numberCoerce && this.onChange) {\n this.onChange(isNaN(numberCoerce) ? null : numberCoerce);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiInputNumberComponent } from './eui-input-number.component';\nimport { EuiInputNumberDirective } from './eui-number-control.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [EuiInputNumberComponent, EuiInputNumberDirective],\n exports: [EuiInputNumberComponent, EuiInputNumberDirective],\n})\nexport class EuiInputNumberModule {}\n\n/**\n * @deprecated Use EuiInputNumberModule instead. This will be removed in eUI 19.\n */\n@NgModule({\n imports: [EuiInputNumberModule],\n exports: [EuiInputNumberModule],\n})\nexport class EuiInputNumberDirectiveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EuiInputNumberComponent"],"mappings":"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"}
1
+ {"version":3,"file":"eui-components-eui-input-number.mjs","sources":["../../eui-input-number/eui-input-number.component.ts","../../eui-input-number/eui-number-control.directive.ts","../../eui-input-number/eui-input-number.module.ts","../../eui-input-number/eui-components-eui-input-number.ts"],"sourcesContent":["import {\n Optional,\n LOCALE_ID,\n Inject,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n Injector,\n numberAttribute,\n PLATFORM_ID,\n booleanAttribute,\n} from '@angular/core';\nimport { LocaleService } from '@eui/core';\nimport { LocaleState } from '@eui/core';\nimport { coerceBooleanProperty, coerceNumberProperty, BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { type CleaveOptions } from 'cleave.js/options';\nimport Cleave from 'cleave.js';\nimport { CleaveEventOnChange } from './models/cleave-event-onchange.model';\nimport { InputDirective } from '@eui/components/shared';\nimport { DOCUMENT, getLocaleNumberSymbol, NumberSymbol, isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { EuiClearableDirective, EuiLoadingDirective } from '@eui/components/directives';\nimport { NgControl } from '@angular/forms';\n\nexport interface CleaveInstance extends Cleave {\n initSwapHiddenInput?: () => void;\n initNumeralFormatter?: () => void;\n initTimeFormatter?: () => void;\n initDateFormatter?: () => void;\n initPhoneFormatter?: () => void;\n updateCreditCardPropsByValue?: () => void;\n updateValueState?: () => void;\n callOnValueChanged?: () => void;\n onChange?: (event?: Event) => void;\n onCut?: (event?: Event) => void;\n onFocus?: (event?: Event) => void;\n onCopy?: (event?: Event) => void;\n onKeyDown?: (event?: Event) => void;\n onChangeListener?: (event?: Event) => void;\n onKeyDownListener?: (event?: Event) => void;\n onFocusListener?: (event?: Event) => void;\n onCutListener?: (event?: Event) => void;\n onCopyListener?: (event?: Event) => void;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[euiInputNumber]',\n styleUrls: ['./styles/_index.scss'],\n template: '',\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: EuiClearableDirective,\n inputs: ['euiClearable', 'readonly', 'disabled'],\n },\n {\n directive: EuiLoadingDirective,\n inputs: ['euiLoading', 'readonly'],\n },\n ],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(blur)': 'onTouched()',\n },\n})\nexport class EuiInputNumberComponent extends InputDirective implements OnInit, OnDestroy, DoCheck, OnChanges {\n /**\n * The minimum number can be entered. Blocks user's input if not in range.\n */\n @Input({ transform: numberAttribute }) min!: number;\n /**\n * The maximum number can be entered. Blocks user's input if not in range.\n */\n @Input({ transform: numberAttribute }) max!: number;\n /** Adds leading zero to a number. Formatting will not work.\n * e.g. with leadingZero=3 input number 5 => 005\n */\n @Input({ transform: numberAttribute }) leadingZero = 0;\n @Input()\n public get isInvalid(): boolean {\n return this._isInvalid || null;\n }\n\n public set isInvalid(state: BooleanInput) {\n this.setInvalid(state);\n }\n @HostBinding('class')\n public get cssClasses(): string {\n return [super.getCssClasses('eui-input-number'), this._isInvalid ? 'eui-input-number--invalid' : ''].join(' ').trim();\n }\n\n /** how many digits for the decimal part */\n @Input()\n get fractionDigits(): number {\n return this._fractionDigits;\n }\n set fractionDigits(value: NumberInput) {\n this._fractionDigits = coerceNumberProperty(value);\n }\n /** how many digits for the integer part */\n @Input({ transform: numberAttribute }) digits!: number;\n @Input({ transform: booleanAttribute }) fillFraction: boolean;\n /** rounds a number with more than two decimals UP */\n @Input({ transform: numberAttribute }) roundUp!: number;\n protected _isInvalid: boolean;\n /**\n * does not format the and do a thousand grouping of number\n */\n @Input({ transform: booleanAttribute }) noFormat: boolean;\n @HostBinding('attr.type') protected type = 'eui-number';\n @Input() value: string;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public onChangeCallback: (_: any) => void;\n cleaveInstance: CleaveInstance;\n\n /** holds instance of cleave */\n /** options for the Cleave instance */\n private options: CleaveOptions;\n private _fractionDigits = 0;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _renderer: Renderer2,\n @Optional() private localeService: LocaleService,\n @Inject(LOCALE_ID) private locale_id: string,\n injector: Injector,\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: unknown,\n ) {\n super(_elementRef, _renderer, injector);\n\n // set default options\n this.options = {\n numeral: true,\n delimiter: getLocaleNumberSymbol(locale_id || 'en', NumberSymbol.Group),\n numeralDecimalMark: getLocaleNumberSymbol(locale_id || 'en', NumberSymbol.Decimal),\n numeralDecimalScale: this.fractionDigits,\n numeralIntegerScale: this.digits,\n };\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n\n // instantiate cleave\n if (!this.control) {\n this.initCleave();\n }\n\n // subscribe to localization service and listen for locale change. De-construction of locale should happen here!\n this.localeService?.getState().subscribe((state: LocaleState) => {\n this.options = this.getCleaveOptsBasedOnLocale(state?.id);\n\n // update the options on the cleave instance\n this.updateOptions(true);\n });\n\n this._renderer.setProperty(this._elementRef.nativeElement, 'rootClassName', 'eui-input-number');\n }\n\n ngDoCheck(): void {\n if (!this.control) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n }\n this.isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.hasOwn(changes, 'value')) {\n this._elementRef.nativeElement.value = this.value;\n if (this.cleaveInstance) {\n this.cleaveInstance.setRawValue(this.value);\n }\n }\n if (Object.hasOwn(changes, 'fractionDigits')) {\n this.options = { ...this.options, numeralDecimalScale: this.fractionDigits };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'noFormat')) {\n this.options = { ...this.options, numeralThousandsGroupStyle: this.noFormat ? 'none' : 'thousand' };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'fillFraction') && this.cleaveInstance) {\n this.applyFractionFill(this.cleaveInstance.getRawValue());\n }\n if (Object.hasOwn(changes, 'digits')) {\n this.options = { ...this.options, numeralIntegerScale: this.digits };\n this.updateOptions();\n }\n if (Object.hasOwn(changes, 'min')) {\n this.min = changes['min'].currentValue;\n if (changes['min'].currentValue >= 0) {\n if (this.cleaveInstance) {\n // take care of the sign symbol\n this.cleaveInstance.setRawValue(Math.abs(Number(this.cleaveInstance.getRawValue())).toString());\n }\n }\n }\n if (Object.hasOwn(changes, 'max')) {\n this.max = changes['max'].currentValue;\n // check if current value is in range\n if (this.cleaveInstance) {\n const number = Number(this.cleaveInstance.getRawValue());\n if (number > this.max) {\n this.cleaveInstance.setRawValue(this.max.toString());\n }\n }\n }\n if (Object.hasOwn(changes, 'roundUp')) {\n if (changes['roundUp'].currentValue > 0) {\n if (this.cleaveInstance) {\n let number = Number.parseFloat(this.cleaveInstance.getRawValue());\n number = this.decimalAdjust(number, this.roundUp * -1);\n this.cleaveInstance.setRawValue(number.toString());\n }\n }\n }\n if(Object.hasOwn(changes, 'placeholder')) {\n // parse number\n const number = this.parseNumber(changes['placeholder'].currentValue?.toString() || undefined);\n // set placeholder in case none is provided\n this.setPlaceholderAttribute(isNaN(number) ? changes['placeholder'].currentValue : number);\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n // destroy cleave instance\n if (this.cleaveInstance) {\n this.cleaveInstance.destroy();\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: any = (_: any): void => {\n if (this.control && (_ !== null || _ !== undefined)) {\n // parse number\n // const value = Number(_);\n // run on next MicroTask to avoid NG0100 error TODO: deeper investigation\n // Promise.resolve().then(() => this.control.viewToModelUpdate(value));\n // in case control is FormControl\n // this.control?.control.setValue(isNaN(value) ? null : value, { emitEvent: false, emitModelToViewChange: false });\n }\n };\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTouched: any = (): void => {\n this.control?.control.markAsTouched();\n };\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n // get the value from clipboard\n const value = (event.clipboardData || window['clipboardData']).getData('text');\n // in case round UP is enabled\n if (this.roundUp > 0) {\n const div = this.document.createElement('input');\n // create a clone of cleaveInstance\n const cloneInstance: CleaveInstance = new Cleave(div, { ...this.options, numeralDecimalScale: 8 });\n cloneInstance.setRawValue(value.toString());\n let number = Number.parseFloat(cloneInstance.getRawValue());\n number = this.decimalAdjust(number, this.roundUp * -1);\n if (!Number.isNaN(number)) {\n this.cleaveInstance.setRawValue(number.toString());\n // TODO: investigate in the future how can this be avoided\n setTimeout(() => {\n // this.writeValue(number.toString());\n }, 0);\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeyDown(e: KeyboardEvent): void {\n // check if it's a single symbol and not Special like (Ctrl, backspace etc)\n if (e?.key?.length <= 1 && !e.ctrlKey && !e.altKey && !e.metaKey) {\n // stop event propagation if key pressed is not a number or locale character or minus sign\n if (\n Number.isNaN(Number.parseInt(e.key, 10)) &&\n this.isMinusAllowed(e.key) &&\n e.key !== getLocaleNumberSymbol(this.localeService?.currentLocale || this.locale_id, NumberSymbol.Decimal)\n ) {\n e.stopPropagation();\n e.preventDefault();\n // stop event propagation if key pressed exceeds the min/max value range\n } else if (!Number.isNaN(Number.parseInt(e.key, 10)) && this.isOutSideRange(e)) {\n e.stopPropagation();\n e.preventDefault();\n } else if (this.isOutSideRange(e)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n // protect decimal symbol deletion in case fillFraction is on\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const element = this._elementRef.nativeElement;\n // position of caret\n const pos = element.selectionStart;\n // get character about to be deleted\n const char = element.value.charAt(pos - 1);\n // in case the char is the decimal symbol prevent deletion and move caret in front\n if (char === getLocaleNumberSymbol(this.localeService?.currentLocale || this.locale_id, NumberSymbol.Decimal)) {\n e.stopPropagation();\n e.preventDefault();\n element.setSelectionRange(pos - 1, pos - 1);\n } else if (this.isOutSideRange(e)) {\n // don't allow insertion that will put number out of range\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n\n @HostListener('focusout')\n protected onFocusout(): void {\n // in case fillFraction feature is on and there's no integer part add leading 0\n if (this.fillFraction && this.cleaveInstance.getRawValue().match(/^\\.[0-9]+/g)) {\n this.cleaveInstance.setRawValue('0' + this.cleaveInstance.getRawValue());\n }\n\n // in case round UP is enabled\n if (this.roundUp > 0) {\n const number = Number.parseFloat(this.cleaveInstance.getRawValue());\n this.cleaveInstance.setRawValue(this.decimalAdjust(number, this.roundUp * -1).toString());\n }\n\n // in case min is set and value is less than min reset to the min value\n if (this.min !== null && this.min !== undefined && Number.parseFloat(this.cleaveInstance.getRawValue()) < this.min) {\n this.cleaveInstance.setRawValue(this.min.toString());\n }\n\n // in case max is set and value is greater than max reset to the max value\n if (this.max !== null && this.max !== undefined && Number.parseFloat(this.cleaveInstance.getRawValue()) > this.max) {\n this.cleaveInstance.setRawValue(this.max.toString());\n }\n }\n\n protected setInvalid(state?: BooleanInput): void {\n // in case it's controlled by NgControl override\n this._isInvalid = this.control ? this.control.invalid && this.control.touched : coerceBooleanProperty(state);\n\n // set BaseDirective Attribute\n this.euiDanger = this._isInvalid;\n }\n\n /**\n * @Override setPlaceholder setPlaceholderAttribute of InputDirective\n * Updates the placeholder value based on current number format and given value.\n * If value passed contains characters it doesn't format placeholder.\n * */\n protected setPlaceholderAttribute(value: string | number): void {\n // if value is a number, format the value based on current number format\n if (typeof value === 'number' && !isNaN(value) && isPlatformBrowser(this.platformId)) {\n const div = this.document.createElement('input');\n // create a clone of cleaveInstance\n const cloneInstance: CleaveInstance = new Cleave(div, this.options);\n // BEWARE: by the time your setRawValue cleave options have changed thus number formatting\n cloneInstance.setRawValue(value.toString());\n // set the value with current format as placeholder\n super.setPlaceholderAttribute(cloneInstance.getFormattedValue());\n } else if (typeof value === 'string') {\n super.setPlaceholderAttribute(value.toString());\n } else if (isNaN(value)) {\n value = this._elementRef.nativeElement.placeholder;\n super.setPlaceholderAttribute(value.toString());\n }\n }\n\n /**\n * instantiate Cleave.js\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initCleave(onChangeCallback?: (obj: any) => any): void {\n if(isPlatformServer(this.platformId)) {\n // in case it's not a browser environment\n return;\n }\n // change the cleave prototype function to intercept onCut callback\n // and allow based on the event bubbling and disabled state\n // TIP: change behavior of onCut to stop in case bubble is canceled\n // TODO: See relevant issue https://github.com/nosir/cleave.js/issues/675\n const _onCut = Cleave.prototype['onCut'];\n Cleave.prototype['onCut'] = function (e: Event): void {\n // eslint-disable-next-line no-invalid-this\n if (!e.cancelBubble && !this.element.disabled) {\n // eslint-disable-next-line no-invalid-this\n _onCut.call(this, e);\n }\n };\n\n // in case options is undefined\n const opts: CleaveOptions = { ...this.options };\n\n // set the onValue change listener to keep the value at readOnly element in sync\n opts.onValueChanged = onChangeCallback || this.onValueChanged.bind(this);\n\n // in case round UP is enabled\n if (this.roundUp > 0) {\n const number = Number.parseFloat(this._elementRef.nativeElement.value);\n this._elementRef.nativeElement.value = this.decimalAdjust(number, this.roundUp * -1);\n }\n\n // create the Cleave instance with the new or updated options\n this.cleaveInstance = new Cleave(this._elementRef.nativeElement, opts);\n }\n\n /**\n * Updates the cleave options by destroying the current instance and creating another one while keeping the previous\n * value.\n */\n private updateOptions(localeUpdated = false): void {\n if (this.cleaveInstance) {\n // the value before destroying cleave instance\n const previousValue = this.cleaveInstance.getRawValue();\n\n // update the Cleave instance with the new or updated options\n this.cleaveInstance.properties = {\n ...this.cleaveInstance.properties,\n ...this.options,\n initValue: previousValue,\n };\n\n // init number formatter with updated options\n this.cleaveInstance.initNumeralFormatter();\n\n // In case previous settings where numeralDecimalMark='.' with value 1000.99, and they changed to\n // numeralDecimalMark=','; set initValue to 1000.99 or even 1000,99 will not be reflected and cleave will\n // remove the decimal part. Set of the value after initialization causes reformat of number and works.\n this.cleaveInstance.setRawValue(previousValue);\n\n // parse number\n const number = this.parseNumber(this._elementRef.nativeElement.placeholder || undefined, localeUpdated);\n // set placeholder in case none is provided\n this.setPlaceholderAttribute(number);\n }\n }\n\n /**\n * Callback function of the Cleave instance that is invoked when value is changed.\n *\n * @param event type of CleaveEventOnChange\n */\n private onValueChanged(event: CleaveEventOnChange): void {\n const { target } = event;\n\n if (this.fillFraction) {\n this.applyFractionFill(target.rawValue);\n }\n this.onChange(Number.parseFloat(target.rawValue));\n // fill leading zero\n if (this.leadingZero) {\n const size = this.leadingZero > this.digits && this.digits > 0 ? this.digits : this.leadingZero;\n this._elementRef.nativeElement.value = this.padZero(event.target.rawValue, size);\n }\n }\n\n /**\n * responsible to extract all locale information needed to build CleaveOptions related to number format.\n *\n * @param id The id of the locale\n */\n private getCleaveOptsBasedOnLocale(id: string): CleaveOptions {\n if (!id || id === '') {\n throw new Error('Locale id cannot be empty or undefined');\n }\n const opts: CleaveOptions = {\n numeral: true,\n delimiter: getLocaleNumberSymbol(id, NumberSymbol.Group),\n numeralDecimalMark: getLocaleNumberSymbol(id, NumberSymbol.Decimal),\n numeralDecimalScale: this.fractionDigits,\n numeralIntegerScale: this.digits,\n numeralThousandsGroupStyle: this.noFormat ? 'none' : 'thousand', // TODO: implement based on locale\n };\n\n return { ...this.options, ...opts };\n }\n\n /**\n * Applies the fill of decimal part with zeros in case decimal part of given number has\n * size less than the max fraction digits.\n *\n * @param number\n * @param cleaveInstance\n * @private\n */\n private applyFractionFill(number: string, cleaveInstance: CleaveInstance = this.cleaveInstance): void {\n // if fill fraction is enabled and there's cleave instance\n if (this.fillFraction) {\n if (this.cleaveInstance) {\n number = number?.toString();\n if (number === '' || !number) {\n return;\n }\n const hasDecimal = number.split('.').length > 1;\n // in case there's already decimal point in number\n if (hasDecimal) {\n const decimalSize = number.split('.')[1].length;\n // if size of decimal part of number is less than the max fraction digits\n if (decimalSize < this._fractionDigits) {\n number = number + new Array(this._fractionDigits - decimalSize).fill(0).join('');\n const pos = this._elementRef.nativeElement.selectionStart;\n cleaveInstance.setRawValue(number);\n this._elementRef.nativeElement.setSelectionRange(pos, pos);\n }\n // in case there's not, force it by filling it as much zero as the fraction digits\n } else if (this.fractionDigits > 0) {\n number = `${number}.${new Array(this._fractionDigits).fill(0).join('')}`;\n const pos = this._elementRef.nativeElement.selectionStart;\n cleaveInstance.setRawValue(number);\n this._elementRef.nativeElement.setSelectionRange(pos, pos);\n }\n }\n }\n }\n\n /**\n * Parses a given formatted number and returns it as a number.\n *\n * @param value The formatted number you want to parse e.g. 111,888.22\n * @param userPrevLocaleState Use previous locale state to parse the value. By default, is false\n * @private\n */\n private parseNumber(value: string, userPrevLocaleState = false): number {\n // locale state\n const locale = userPrevLocaleState ? this.localeService?.previousLocale : this.localeService?.currentLocale || this.locale_id || 'en';\n // get decimal and group symbols\n const decimalSymbol = getLocaleNumberSymbol(locale, NumberSymbol.Decimal);\n const groupSymbol = getLocaleNumberSymbol(locale, NumberSymbol.Group);\n // replace symbols to parse number\n const parsedNumber = value?.split(groupSymbol).join('').split(decimalSymbol).join('.');\n return Number.parseFloat(parsedNumber);\n }\n\n /**\n * Pad leading zero to the number\n *\n * @param num The number to add leading zero to\n * @param size Number of number's leading zero\n * @private\n */\n private padZero(num, size): string {\n num = num.toString();\n // get integer and decimal part\n // eslint-disable-next-line prefer-const\n let [integer, decimal] = num.split('.');\n while (integer.length < size) {\n integer = '0' + integer;\n }\n return decimal ? `${integer}.${decimal}` : integer;\n }\n\n /**\n * checks whether the min symbol is allowed. It is allowed when minus symbol\n * provided and min input is undefined or min provided and is negative.\n *\n * @param key The key string coming from an event\n */\n private isMinusAllowed(key: string): boolean {\n return !this.min || this.min < 0 ? key !== '-' : true;\n }\n\n /**\n * check whether the key entered is inside the min and\n * max range. Returns true if it's out of range.\n *\n * @param e A keyboard event\n */\n private isOutSideRange(e: KeyboardEvent): boolean {\n if (!this.cleaveInstance) {\n return false;\n }\n // get caret position\n const pos = e.target['selectionStart'];\n // get caret position (in case there's text selected)\n const endPos = e.target['selectionEnd'];\n // get current value (formatted)\n let value = e.target['value'];\n // remove key from value\n if (e.key === 'Delete' || e.key === 'Backspace') {\n // check if there's selection of text to be removed\n if (pos !== endPos) {\n value = e.target['value'].substring(0, pos) + e.target['value'].substring(endPos, e.target['value'].length);\n } else {\n value = e.target['value'].substring(0, pos - 1) + e.target['value'].substring(endPos, e.target['value'].length);\n }\n } else {\n // add key to the value\n value = [value.slice(0, pos), e.key, value.slice(endPos)].join('');\n }\n\n // create a Cleave instance to extract the number from formatted value\n const cleave: CleaveInstance = new Cleave(this.document.createElement('input'), { ...this.options });\n cleave.setRawValue(value);\n const number = Number(cleave.getRawValue());\n // destroy cleave instance\n cleave.destroy();\n return !isNaN(number) &&\n this.min >= 0 ? (this.isDefined(this.max) && this.max < number) : (this.min > number || this.max < number) &&\n this.max <= 0 ? (this.isDefined(this.min) && this.min > number) : (this.min > number || this.max < number);\n }\n\n /**\n * Decimal adjustment of a number.\n *\n * @param value The number.\n * @param exp The exponent (the 10 logarithm of the adjustment base).\n * @returns The adjusted value.\n */\n private decimalAdjust(value: number, exp: number): number {\n // If the exp is undefined or zero...\n if (typeof exp === 'undefined' || +exp === 0) {\n return Math.round(value);\n }\n value = +value;\n exp = +exp;\n // If the value is not a number or the exp is not an integer...\n if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n return NaN;\n }\n // Shift\n let cleaned = value.toString().split('e');\n value = Math.round(+(cleaned[0] + 'e' + (cleaned[1] ? +cleaned[1] - exp : -exp)));\n // Shift back\n cleaned = value.toString().split('e');\n return +(cleaned[0] + 'e' + (cleaned[1] ? +cleaned[1] + exp : exp));\n }\n\n /**\n * Checks whether a value is defined or not\n *\n * @param value\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isDefined(value: any): boolean {\n return value !== undefined && value !== null;\n }\n}\n","import { Directive, ElementRef, forwardRef, OnInit, Optional } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CleaveInstance, EuiInputNumberComponent } from './eui-input-number.component';\nimport Cleave from 'cleave.js';\n\n@Directive({\n selector: 'input[euiInputNumber][formControl],input[euiInputNumber][formControlName],input[euiInputNumber][ngModel]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiInputNumberDirective),\n multi: true,\n },\n ],\n})\nexport class EuiInputNumberDirective implements ControlValueAccessor, OnInit {\n /** hold a copy of the value */\n private value: number;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (t: any) => void;\n\n constructor(\n private elementRef: ElementRef,\n @Optional() private euiNumberComponent: EuiInputNumberComponent,\n ) {}\n\n ngOnInit(): void {\n this.euiNumberComponent['initCleave'](this.valueChanges.bind(this));\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(obj: any): void {\n const cleave: CleaveInstance = new Cleave(document.createElement('input'), { ...this.euiNumberComponent['options'] });\n cleave.setRawValue(obj);\n if (this.euiNumberComponent.fillFraction && obj !== '' && obj) {\n this.euiNumberComponent['applyFractionFill'](obj, cleave);\n }\n let valueOfElement: string;\n // fill leading zero\n if (this.euiNumberComponent.leadingZero) {\n const size =\n this.euiNumberComponent.leadingZero > this.euiNumberComponent.digits && this.euiNumberComponent.digits > 0\n ? this.euiNumberComponent.digits\n : this.euiNumberComponent.leadingZero;\n valueOfElement = this.euiNumberComponent['padZero'](cleave.getFormattedValue(), size);\n } else {\n valueOfElement = cleave.getFormattedValue();\n }\n this.elementRef.nativeElement.value = valueOfElement;\n this.value = Number.parseFloat(cleave.getRawValue());\n cleave.destroy();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = (t): void => {\n this.value = t;\n fn(t);\n };\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.euiNumberComponent.disabled = isDisabled;\n }\n\n private onTouched(): void {\n // this.euiNumberComponent.isInvalid = this.control.invalid;\n }\n\n private valueChanges(event): void {\n const { target } = event;\n\n this.euiNumberComponent['onValueChanged'](event);\n const numberCoerce = Number.parseFloat(target.rawValue);\n if (this.value !== numberCoerce && this.onChange) {\n this.onChange(isNaN(numberCoerce) ? null : numberCoerce);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiInputNumberComponent } from './eui-input-number.component';\nimport { EuiInputNumberDirective } from './eui-number-control.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [EuiInputNumberComponent, EuiInputNumberDirective],\n exports: [EuiInputNumberComponent, EuiInputNumberDirective],\n})\nexport class EuiInputNumberModule {}\n\n/**\n * @deprecated Use EuiInputNumberModule instead. This will be removed in eUI 19.\n */\n@NgModule({\n imports: [EuiInputNumberModule],\n exports: [EuiInputNumberModule],\n})\nexport class EuiInputNumberDirectiveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EuiInputNumberComponent"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i1$1 from '@angular/common';
2
- import { CommonModule, NgFor, NgIf, NgForOf, AsyncPipe, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';
2
+ import { DOCUMENT, CommonModule, NgFor, NgIf, NgForOf, AsyncPipe, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, HostBinding, HostListener, EventEmitter, booleanAttribute, Input, Output, ContentChildren, forwardRef, NgModule, Inject, ContentChild, Host, PLATFORM_ID, Directive, ViewChild } from '@angular/core';
4
+ import { Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, HostBinding, HostListener, EventEmitter, booleanAttribute, Input, Output, ContentChildren, forwardRef, NgModule, ContentChild, Host, PLATFORM_ID, Directive, ViewChild } from '@angular/core';
5
5
  import * as i1$2 from '@angular/router';
6
6
  import { RouterModule, RouterLink } from '@angular/router';
7
7
  import { Subscription, Subject, fromEvent, startWith } from 'rxjs';
@@ -55,8 +55,9 @@ import * as i4$4 from '@eui/components/eui-badge';
55
55
  import { EuiBadgeModule } from '@eui/components/eui-badge';
56
56
 
57
57
  class EuiAppSidebarComponent {
58
- constructor(asService) {
58
+ constructor(asService, document) {
59
59
  this.asService = asService;
60
+ this.document = document;
60
61
  this.string = 'eui-app-sidebar';
61
62
  this.subscriptions = [];
62
63
  }
@@ -83,9 +84,9 @@ class EuiAppSidebarComponent {
83
84
  ...this.asService.state,
84
85
  hasSidebar: false,
85
86
  });
86
- CssUtils.removeSidebarCssVars();
87
+ CssUtils.removeSidebarCssVars(this.document);
87
88
  }
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppSidebarComponent, deps: [{ token: i1.EuiAppShellService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppSidebarComponent, deps: [{ token: i1.EuiAppShellService, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
89
90
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: EuiAppSidebarComponent, selector: "eui-app-sidebar", host: { listeners: { "body:click": "close()" }, properties: { "class": "this.string" } }, ngImport: i0, template: "<aside class=\"eui-app-sidebar-content\">\n <ng-content select=\"eui-app-sidebar-header-user-profile\"></ng-content>\n <ng-content select=\"eui-app-sidebar-header\"></ng-content>\n <ng-content select=\"eui-app-sidebar-body\"></ng-content>\n <ng-content select=\"eui-app-sidebar-footer\"></ng-content>\n <ng-content select=\"eui-app-sidebar-drawer\"></ng-content>\n</aside>\n", styles: [".eui-app-sidebar{background-color:var(--eui-c-bg);height:100%;left:0;position:fixed;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:top .1s ease,width .1s ease-in,margin-left .1s ease-in;width:var(--eui-app-sidebar-width);box-shadow:var(--eui-sh-10)}.eui-app.ff.sidebar--close:not(.sidebar--hover) .eui-app-sidebar{width:calc(var(--eui-app-sidebar-width-close-active) + 16px)}.modal-open .eui-app-sidebar{z-index:auto}.eui-app-sidebar-content{border-right:1px solid var(--eui-c-neutral-bg-light);background-color:#f9f9f9;box-shadow:0 8px 10px #b7c0cebf;display:flex;flex-direction:column;height:100%;max-height:calc(100% - (var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height)));overflow:hidden;position:relative}.eui-app-sidebar-header{align-items:center;background-color:var(--eui-c-neutral-bg-light);border-bottom:1px solid var(--eui-c-neutral-bg-light);display:flex;width:100%}.eui-app-sidebar-body{display:flex;height:100%;max-height:calc(100% - (var(--eui-app-sidebar-header-height) + var(--eui-app-sidebar-footer-height)));overflow-x:hidden;overflow-y:scroll}.eui-app-sidebar-body::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-app-sidebar-body::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-app-sidebar-body::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-app-sidebar-body::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.sidebar--close:not(.sidebar--hover) .eui-app-sidebar-body{max-height:100%}.eui-app-sidebar-footer{align-items:center;display:flex;flex:0 0 auto;justify-content:center;padding:var(--eui-s-xs)}.eui-app-sidebar-menu{display:flex;height:100%;width:100%}@media screen and (max-width: 767px){.eui-app-sidebar{z-index:var(--eui-zi-sidebar)}.eui-app-sidebar-body{max-height:100%}.sidebar--close .eui-app-sidebar{box-shadow:none!important;margin-left:calc(var(--eui-app-sidebar-width-active) * -1)}.sidebar--open .eui-app-sidebar{display:initial;margin-left:0;width:75%}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app-sidebar{z-index:var(--eui-zi-sidebar)}.eui-app-sidebar-body{max-height:100%}.sidebar--close .eui-app-sidebar{box-shadow:none!important;margin-left:calc(var(--eui-app-sidebar-width-active) * -1)}.sidebar--open .eui-app-sidebar{display:initial;margin-left:0;width:50%}.sidebar--hidden.sidebar--open .eui-app-sidebar{box-shadow:var(--eui-sh-4);width:var(--eui-app-sidebar-width-active)}}@media screen and (min-width: 996px){.sidebar--hover .eui-app-sidebar{z-index:var(--eui-zi-sidebar)}.sidebar--close:not(.sidebar--hover) .eui-app-sidebar{width:var(--eui-app-sidebar-width-close)}.sidebar--close:not(.sidebar--hover) .eui-app-sidebar-header{display:none}.sidebar--close:not(.sidebar--hover) .eui-app-sidebar-footer{text-indent:-9999px}.sidebar--hidden.sidebar--close .eui-app-sidebar{margin-left:calc(var(--eui-app-sidebar-width-active) * -1)}.sidebar--hidden.sidebar--open .eui-app-sidebar{box-shadow:var(--eui-sh-4);display:initial;margin-left:0;width:var(--eui-app-sidebar-width-active);z-index:var(--eui-zi-sidebar)}}.eui-app-sidebar-drawer{display:none}.eui-app.sidebar--open.md .eui-app-sidebar-drawer,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer{display:flex;height:100%;position:fixed;top:100vh;transition:top .25s ease-in-out}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content{background:var(--eui-c-bg);border-top:1px solid var(--eui-c-neutral-lightest);height:calc(100% - var(--eui-app-sidebar-header-user-profile));overflow-y:auto;padding:var(--eui-s-s);width:100%}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content::-webkit-scrollbar,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content::-webkit-scrollbar,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb:hover,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb:hover,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content::-webkit-scrollbar-track,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content::-webkit-scrollbar-track,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-app.sidebar--open.md .eui-app-sidebar-drawer--expanded,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer--expanded,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer--expanded{top:var(--eui-app-sidebar-header-user-profile);position:absolute;width:100%}.eui-app.sidebar--close.md .eui-app-sidebar-drawer,.eui-app.sidebar--close.xs .eui-app-sidebar-drawer,.eui-app.sidebar--close.sm .eui-app-sidebar-drawer{position:fixed;top:100vh}@media screen and (max-width: 767px){.eui-app-sidebar-drawer,.eui-app-sidebar-drawer--expanded{width:75%}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app-sidebar-drawer,.eui-app-sidebar-drawer--expanded{width:50%}}\n"], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
90
91
  }
91
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppSidebarComponent, decorators: [{
@@ -93,6 +94,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
93
94
  args: [{ selector: 'eui-app-sidebar', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<aside class=\"eui-app-sidebar-content\">\n <ng-content select=\"eui-app-sidebar-header-user-profile\"></ng-content>\n <ng-content select=\"eui-app-sidebar-header\"></ng-content>\n <ng-content select=\"eui-app-sidebar-body\"></ng-content>\n <ng-content select=\"eui-app-sidebar-footer\"></ng-content>\n <ng-content select=\"eui-app-sidebar-drawer\"></ng-content>\n</aside>\n", styles: [".eui-app-sidebar{background-color:var(--eui-c-bg);height:100%;left:0;position:fixed;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:top .1s ease,width .1s ease-in,margin-left .1s ease-in;width:var(--eui-app-sidebar-width);box-shadow:var(--eui-sh-10)}.eui-app.ff.sidebar--close:not(.sidebar--hover) .eui-app-sidebar{width:calc(var(--eui-app-sidebar-width-close-active) + 16px)}.modal-open .eui-app-sidebar{z-index:auto}.eui-app-sidebar-content{border-right:1px solid var(--eui-c-neutral-bg-light);background-color:#f9f9f9;box-shadow:0 8px 10px #b7c0cebf;display:flex;flex-direction:column;height:100%;max-height:calc(100% - (var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height)));overflow:hidden;position:relative}.eui-app-sidebar-header{align-items:center;background-color:var(--eui-c-neutral-bg-light);border-bottom:1px solid var(--eui-c-neutral-bg-light);display:flex;width:100%}.eui-app-sidebar-body{display:flex;height:100%;max-height:calc(100% - (var(--eui-app-sidebar-header-height) + var(--eui-app-sidebar-footer-height)));overflow-x:hidden;overflow-y:scroll}.eui-app-sidebar-body::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-app-sidebar-body::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-app-sidebar-body::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-app-sidebar-body::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.sidebar--close:not(.sidebar--hover) .eui-app-sidebar-body{max-height:100%}.eui-app-sidebar-footer{align-items:center;display:flex;flex:0 0 auto;justify-content:center;padding:var(--eui-s-xs)}.eui-app-sidebar-menu{display:flex;height:100%;width:100%}@media screen and (max-width: 767px){.eui-app-sidebar{z-index:var(--eui-zi-sidebar)}.eui-app-sidebar-body{max-height:100%}.sidebar--close .eui-app-sidebar{box-shadow:none!important;margin-left:calc(var(--eui-app-sidebar-width-active) * -1)}.sidebar--open .eui-app-sidebar{display:initial;margin-left:0;width:75%}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app-sidebar{z-index:var(--eui-zi-sidebar)}.eui-app-sidebar-body{max-height:100%}.sidebar--close .eui-app-sidebar{box-shadow:none!important;margin-left:calc(var(--eui-app-sidebar-width-active) * -1)}.sidebar--open .eui-app-sidebar{display:initial;margin-left:0;width:50%}.sidebar--hidden.sidebar--open .eui-app-sidebar{box-shadow:var(--eui-sh-4);width:var(--eui-app-sidebar-width-active)}}@media screen and (min-width: 996px){.sidebar--hover .eui-app-sidebar{z-index:var(--eui-zi-sidebar)}.sidebar--close:not(.sidebar--hover) .eui-app-sidebar{width:var(--eui-app-sidebar-width-close)}.sidebar--close:not(.sidebar--hover) .eui-app-sidebar-header{display:none}.sidebar--close:not(.sidebar--hover) .eui-app-sidebar-footer{text-indent:-9999px}.sidebar--hidden.sidebar--close .eui-app-sidebar{margin-left:calc(var(--eui-app-sidebar-width-active) * -1)}.sidebar--hidden.sidebar--open .eui-app-sidebar{box-shadow:var(--eui-sh-4);display:initial;margin-left:0;width:var(--eui-app-sidebar-width-active);z-index:var(--eui-zi-sidebar)}}.eui-app-sidebar-drawer{display:none}.eui-app.sidebar--open.md .eui-app-sidebar-drawer,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer{display:flex;height:100%;position:fixed;top:100vh;transition:top .25s ease-in-out}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content{background:var(--eui-c-bg);border-top:1px solid var(--eui-c-neutral-lightest);height:calc(100% - var(--eui-app-sidebar-header-user-profile));overflow-y:auto;padding:var(--eui-s-s);width:100%}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content::-webkit-scrollbar,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content::-webkit-scrollbar,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb:hover,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb:hover,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-app.sidebar--open.md .eui-app-sidebar-drawer-content::-webkit-scrollbar-track,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer-content::-webkit-scrollbar-track,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-app.sidebar--open.md .eui-app-sidebar-drawer--expanded,.eui-app.sidebar--open.xs .eui-app-sidebar-drawer--expanded,.eui-app.sidebar--open.sm .eui-app-sidebar-drawer--expanded{top:var(--eui-app-sidebar-header-user-profile);position:absolute;width:100%}.eui-app.sidebar--close.md .eui-app-sidebar-drawer,.eui-app.sidebar--close.xs .eui-app-sidebar-drawer,.eui-app.sidebar--close.sm .eui-app-sidebar-drawer{position:fixed;top:100vh}@media screen and (max-width: 767px){.eui-app-sidebar-drawer,.eui-app-sidebar-drawer--expanded{width:75%}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app-sidebar-drawer,.eui-app-sidebar-drawer--expanded{width:50%}}\n"] }]
94
95
  }], ctorParameters: () => [{ type: i1.EuiAppShellService, decorators: [{
95
96
  type: Optional
97
+ }] }, { type: Document, decorators: [{
98
+ type: Inject,
99
+ args: [DOCUMENT]
96
100
  }] }], propDecorators: { string: [{
97
101
  type: HostBinding,
98
102
  args: ['class']
@@ -1210,11 +1214,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
1210
1214
  }] });
1211
1215
 
1212
1216
  class EuiAppComponent {
1213
- constructor(asService, euiGrowlService, cdRef, platformId) {
1217
+ constructor(asService, euiGrowlService, cdRef, platformId, document) {
1214
1218
  this.asService = asService;
1215
1219
  this.euiGrowlService = euiGrowlService;
1216
1220
  this.cdRef = cdRef;
1217
1221
  this.platformId = platformId;
1222
+ this.document = document;
1218
1223
  this.cssClasses = 'eui-app';
1219
1224
  this.appSubTitle = '';
1220
1225
  this.themeClass = '';
@@ -1230,7 +1235,7 @@ class EuiAppComponent {
1230
1235
  }
1231
1236
  ngOnInit() {
1232
1237
  this.isViewLoaded = false;
1233
- CssUtils.initCssVars();
1238
+ CssUtils.initCssVars(this.document);
1234
1239
  if (isPlatformBrowser(this.platformId)) {
1235
1240
  const browserAgent = window.navigator.userAgent.toLowerCase();
1236
1241
  this.asService.setState({
@@ -1264,7 +1269,7 @@ class EuiAppComponent {
1264
1269
  windowHeight: window.innerHeight,
1265
1270
  windowWidth: window.innerWidth,
1266
1271
  });
1267
- CssUtils.setAppViewportCssVars();
1272
+ CssUtils.setAppViewportCssVars(this.platformId);
1268
1273
  });
1269
1274
  }
1270
1275
  ngOnChanges(changes) {
@@ -1285,7 +1290,7 @@ class EuiAppComponent {
1285
1290
  this.destroy$.next(true);
1286
1291
  this.destroy$.unsubscribe();
1287
1292
  }
1288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppComponent, deps: [{ token: i1.EuiAppShellService }, { token: i1.EuiGrowlService }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
1293
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppComponent, deps: [{ token: i1.EuiAppShellService }, { token: i1.EuiGrowlService }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
1289
1294
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0", type: EuiAppComponent, selector: "eui-app", inputs: { appSubTitle: "appSubTitle", themeClass: "themeClass", isSidebarOpen: ["isSidebarOpen", "isSidebarOpen", booleanAttribute], isShrinkHeaderActive: ["isShrinkHeaderActive", "isShrinkHeaderActive", booleanAttribute], isSidebarHidden: ["isSidebarHidden", "isSidebarHidden", booleanAttribute] }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "appSidebar", first: true, predicate: i0.forwardRef(() => EuiAppSidebarComponent), descendants: true }, { propertyName: "customPageWrapper", first: true, predicate: i0.forwardRef(() => EuiAppPageWrapperDirective), descendants: true }, { propertyName: "appToolbar", first: true, predicate: i0.forwardRef(() => EuiAppToolbarComponent), descendants: true }], usesOnChanges: true, ngImport: i0, template: "<eui-dimmer [isDimmerActive]=\"(asService.state$ | async).isDimmerActive\"></eui-dimmer>\n\n<ng-content select=\"eui-app-sidebar\"></ng-content>\n<ng-container *ngIf=\"!appSidebar && (asService.state$ | async).menuLinks.length !== 0 && (asService.state$ | async).hasHeader && (asService.breakpoints$ | async).isMobile\">\n <eui-app-sidebar>\n <eui-app-sidebar-body>\n <eui-app-sidebar-menu [items]=\"(asService.state$ | async).menuLinks\" [hasIcons]=\"true\"></eui-app-sidebar-menu>\n </eui-app-sidebar-body>\n </eui-app-sidebar>\n</ng-container>\n\n<div class=\"eui-app-main\" *ngIf=\"isViewLoaded\">\n <ng-content select=\"eui-app-top-message\"></ng-content>\n\n <ng-content select=\"eui-app-header\"></ng-content>\n\n <ng-container\n *ngIf=\"!appToolbar && (asService.state$ | async).hasHeader && (asService.breakpoints$ | async).isMobile; else elseBlockToolbar\">\n <eui-app-toolbar>\n <eui-toolbar></eui-toolbar>\n </eui-app-toolbar>\n </ng-container>\n\n <ng-template #elseBlockToolbar>\n <ng-content select=\"eui-app-toolbar\"></ng-content>\n </ng-template>\n\n <ng-content select=\"eui-app-breadcrumb\"></ng-content>\n\n <div class=\"eui-app-main-content\" role=\"main\">\n <ng-content select=\"eui-app-page-wrapper\"></ng-content>\n <ng-container *ngIf=\"hasNoPageWrapper\">\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ng-content select=\"eui-app-footer\"></ng-content>\n</div>\n\n<eui-growl\n [value]=\"euiGrowlService.growlMessages\"\n [sticky]=\"euiGrowlService.isGrowlSticky\"\n [closeAllSticky]=\"euiGrowlService.isCloseAllSticky\"\n [life]=\"euiGrowlService.growlLife\"\n [position]=\"euiGrowlService.growlPosition\"\n (clicked)=\"euiGrowlService.growlCallback ? euiGrowlService.growlCallback(): null\"></eui-growl>\n\n<eui-block-document [isBlocked]=\"(asService.state$ | async).isBlockDocumentActive\"></eui-block-document>\n", styles: [".eui-app{display:flex;overflow:hidden}@media screen and (max-width: 767px){.eui-app.sidebar--open:before{background:#0000004d;bottom:0;content:\"\";position:fixed;right:0;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:all .1s ease;width:100vw;z-index:980}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app.sidebar--open:before{background:#0000004d;bottom:0;content:\"\";position:fixed;right:0;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:all .1s ease;width:100vw;z-index:980}}@media screen and (min-width: 996px){.sidebar--hidden.eui-app.sidebar--open:before{background:#0000004d;bottom:0;content:\"\";position:fixed;right:0;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:all .1s ease;width:100vw;z-index:980}}.eui-app-main{min-height:100vh;background:var(--eui-c-bg);width:calc(100% - var(--eui-app-sidebar-width));margin-left:var(--eui-app-sidebar-width);transition:top .1s ease,width .1s ease-in,margin-left .1s ease-in-out;display:flex;flex-direction:column}@media screen and (max-width: 767px){.eui-app-main{margin-left:0;width:100%}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app-main{margin-left:0;width:100%}}@media screen and (min-width: 996px){.sidebar--close .eui-app-main{margin-left:var(--eui-app-sidebar-width-close);width:calc(100% - var(--eui-app-sidebar-width-close))}.sidebar--hidden.sidebar--close .eui-app-main,.sidebar--hidden.sidebar--open .eui-app-main{margin-left:0;width:100%}}.eui-app-main-content{flex-grow:1;margin-top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height) - var(--eui-app-breadcrumb-height));position:relative}eui-app-page-wrapper{display:flex;width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: EuiAppToolbarComponent, selector: "eui-app-toolbar", inputs: ["euiSecondary"] }, { kind: "component", type: EuiToolbarComponent, selector: "eui-toolbar", inputs: ["euiSecondary", "euiPrimary"] }, { kind: "component", type: EuiAppSidebarComponent, selector: "eui-app-sidebar" }, { kind: "component", type: EuiAppSidebarBodyComponent, selector: "eui-app-sidebar-body" }, { kind: "component", type: EuiAppSidebarMenuComponent, selector: "eui-app-sidebar-menu", inputs: ["hasFilter", "hasIcons", "hasTooltip", "expandAllItems", "isCollapsed", "hasCollapsedInitials", "isFlat", "hasScrollToItem", "hasBoldRootLevel", "items"], outputs: ["sidebarItemClick"] }, { kind: "component", type: i9$1.EuiBlockDocumentComponent, selector: "eui-block-document", inputs: ["isBlocked", "ariaLabel"] }, { kind: "component", type: i10.EuiGrowlComponent, selector: "eui-growl", inputs: ["e2eAttr", "sticky", "life", "value", "closeAllSticky", "position"], outputs: ["growlClick"] }, { kind: "component", type: i11.EuiDimmerComponent, selector: "eui-dimmer", inputs: ["isDimmerActive", "e2eAttr"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
1290
1295
  }
1291
1296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppComponent, decorators: [{
@@ -1294,6 +1299,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
1294
1299
  }], ctorParameters: () => [{ type: i1.EuiAppShellService }, { type: i1.EuiGrowlService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
1295
1300
  type: Inject,
1296
1301
  args: [PLATFORM_ID]
1302
+ }] }, { type: Document, decorators: [{
1303
+ type: Inject,
1304
+ args: [DOCUMENT]
1297
1305
  }] }], propDecorators: { cssClasses: [{
1298
1306
  type: HostBinding,
1299
1307
  args: ['class']
@@ -1340,11 +1348,12 @@ class EuiAppHeaderComponent {
1340
1348
  set isShrinkHeaderActive(value) {
1341
1349
  this._isShrinkHeaderActive = coerceBooleanProperty(value);
1342
1350
  }
1343
- constructor(asService, zone, viewportRuler, scrollDispatcher) {
1351
+ constructor(asService, zone, viewportRuler, scrollDispatcher, document) {
1344
1352
  this.asService = asService;
1345
1353
  this.zone = zone;
1346
1354
  this.viewportRuler = viewportRuler;
1347
1355
  this.scrollDispatcher = scrollDispatcher;
1356
+ this.document = document;
1348
1357
  this.role = 'banner';
1349
1358
  this._isShrinkHeaderActive = false;
1350
1359
  this.isHeaderShrinked = false;
@@ -1361,7 +1370,7 @@ class EuiAppHeaderComponent {
1361
1370
  .subscribe(() => {
1362
1371
  // read the top scroll position of the viewport
1363
1372
  const topScrollPos = this.viewportRuler.getViewportScrollPosition().top;
1364
- CssUtils.setHeaderShrinkCssVar(topScrollPos > 0);
1373
+ CssUtils.setHeaderShrinkCssVar(topScrollPos > 0, this.document);
1365
1374
  // change the shrinkHeader value only if it's different from the current one
1366
1375
  if (topScrollPos > 0 !== this.isHeaderShrinked) {
1367
1376
  // we need to run this inside angular zone to trigger change detection in CSS
@@ -1382,13 +1391,16 @@ class EuiAppHeaderComponent {
1382
1391
  getCssClasses() {
1383
1392
  return ['eui-app-header', this.isHeaderShrinked ? 'eui-app-header--shrinked' : ''].join(' ');
1384
1393
  }
1385
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppHeaderComponent, deps: [{ token: i1.EuiAppShellService }, { token: i0.NgZone }, { token: i2$4.ViewportRuler }, { token: i2$4.ScrollDispatcher }], target: i0.ɵɵFactoryTarget.Component }); }
1394
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppHeaderComponent, deps: [{ token: i1.EuiAppShellService }, { token: i0.NgZone }, { token: i2$4.ViewportRuler }, { token: i2$4.ScrollDispatcher }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
1386
1395
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: EuiAppHeaderComponent, selector: "eui-app-header", inputs: { isShrinkHeaderActive: "isShrinkHeaderActive" }, host: { properties: { "class": "this.cssClasses", "attr.role": "this.role" } }, ngImport: i0, template: "<eui-sidebar-toggle\n *ngIf=\"(asService.state$ | async).hasSidebar && (asService.state$ | async).hasHeader && !(asService.state$ | async).hasToolbar\"\n class=\"eui-app-header__sidebar-toggle\"\n iconSvgFillColor=\"primary\">\n</eui-sidebar-toggle>\n\n<ng-content select=\"eui-header\"></ng-content>\n", styles: [".eui-app-header{align-items:center;background-color:var(--eui-c-white);display:flex;flex-direction:row;height:var(--eui-app-header-height);position:fixed;right:0;top:var(--eui-app-top-message-height);width:100%;z-index:var(--eui-zi-header);transition:visibility .1s ease}.eui-app-header--shrinked{visibility:hidden}.eui-app-header__sidebar-toggle{padding-left:var(--eui-s-xs);padding-top:var(--eui-s-m)}@media screen and (max-width: 767px){.eui-app-header{visibility:hidden}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EuiSidebarToggleComponent, selector: "eui-sidebar-toggle", inputs: ["e2eAttr", "iconSvgFillColor"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
1387
1396
  }
1388
1397
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppHeaderComponent, decorators: [{
1389
1398
  type: Component,
1390
1399
  args: [{ selector: 'eui-app-header', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<eui-sidebar-toggle\n *ngIf=\"(asService.state$ | async).hasSidebar && (asService.state$ | async).hasHeader && !(asService.state$ | async).hasToolbar\"\n class=\"eui-app-header__sidebar-toggle\"\n iconSvgFillColor=\"primary\">\n</eui-sidebar-toggle>\n\n<ng-content select=\"eui-header\"></ng-content>\n", styles: [".eui-app-header{align-items:center;background-color:var(--eui-c-white);display:flex;flex-direction:row;height:var(--eui-app-header-height);position:fixed;right:0;top:var(--eui-app-top-message-height);width:100%;z-index:var(--eui-zi-header);transition:visibility .1s ease}.eui-app-header--shrinked{visibility:hidden}.eui-app-header__sidebar-toggle{padding-left:var(--eui-s-xs);padding-top:var(--eui-s-m)}@media screen and (max-width: 767px){.eui-app-header{visibility:hidden}}\n"] }]
1391
- }], ctorParameters: () => [{ type: i1.EuiAppShellService }, { type: i0.NgZone }, { type: i2$4.ViewportRuler }, { type: i2$4.ScrollDispatcher }], propDecorators: { cssClasses: [{
1400
+ }], ctorParameters: () => [{ type: i1.EuiAppShellService }, { type: i0.NgZone }, { type: i2$4.ViewportRuler }, { type: i2$4.ScrollDispatcher }, { type: Document, decorators: [{
1401
+ type: Inject,
1402
+ args: [DOCUMENT]
1403
+ }] }], propDecorators: { cssClasses: [{
1392
1404
  type: HostBinding,
1393
1405
  args: ['class']
1394
1406
  }], role: [{
@@ -1501,12 +1513,13 @@ class EuiAppTopMessageComponent {
1501
1513
  get isVisible() {
1502
1514
  return this._isVisible;
1503
1515
  }
1504
- constructor(asService, elRef, cd, obs, baseStatesDirective) {
1516
+ constructor(asService, elRef, cd, obs, baseStatesDirective, document) {
1505
1517
  this.asService = asService;
1506
1518
  this.elRef = elRef;
1507
1519
  this.cd = cd;
1508
1520
  this.obs = obs;
1509
1521
  this.baseStatesDirective = baseStatesDirective;
1522
+ this.document = document;
1510
1523
  this.role = 'banner';
1511
1524
  this.isCloseable = false;
1512
1525
  this.hasCustomContent = false;
@@ -1525,12 +1538,12 @@ class EuiAppTopMessageComponent {
1525
1538
  ...this.asService.state,
1526
1539
  hasTopMessage: false,
1527
1540
  });
1528
- CssUtils.activateTopMessageCssVars(0);
1541
+ CssUtils.activateTopMessageCssVars(0, this.document);
1529
1542
  this.appTopMessageChanges.unsubscribe();
1530
1543
  }
1531
1544
  onCloseClick() {
1532
1545
  this.isVisible = false;
1533
- CssUtils.activateTopMessageCssVars(0);
1546
+ CssUtils.activateTopMessageCssVars(0, this.document);
1534
1547
  this.topMessageClose.emit();
1535
1548
  }
1536
1549
  _calculateHeight() {
@@ -1540,7 +1553,7 @@ class EuiAppTopMessageComponent {
1540
1553
  this.cd.reattach();
1541
1554
  this.cd.detectChanges();
1542
1555
  }
1543
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppTopMessageComponent, deps: [{ token: i1.EuiAppShellService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2$5.ContentObserver }, { token: i3$1.BaseStatesDirective }], target: i0.ɵɵFactoryTarget.Component }); }
1556
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppTopMessageComponent, deps: [{ token: i1.EuiAppShellService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2$5.ContentObserver }, { token: i3$1.BaseStatesDirective }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
1544
1557
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0", type: EuiAppTopMessageComponent, selector: "eui-app-top-message", inputs: { isCloseable: ["isCloseable", "isCloseable", booleanAttribute], hasCustomContent: ["hasCustomContent", "hasCustomContent", booleanAttribute], isVisible: "isVisible" }, outputs: { topMessageClose: "topMessageClose" }, host: { properties: { "class": "this.cssClasses", "attr.role": "this.role" } }, viewQueries: [{ propertyName: "appTopMessage", first: true, predicate: ["appTopMessage"], descendants: true }], hostDirectives: [{ directive: i3$1.BaseStatesDirective, inputs: ["euiPrimary", "euiPrimary", "euiInfo", "euiInfo", "euiWarning", "euiWarning", "euiSuccess", "euiSuccess", "euiDanger", "euiDanger", "euiAccent", "euiAccent", "euiVariant", "euiVariant"] }], ngImport: i0, template: "<div class=\"eui-app-top-message__wrapper\" #appTopMessage>\n <div class=\"eui-app-top-message__content\">\n <ng-content></ng-content>\n </div>\n <eui-icon-button *ngIf=\"isCloseable\"\n icon=\"close:outline\"\n (buttonClick)=\"onCloseClick()\"\n ariaLabel=\"Close top message\"\n fillColor=\"white\"\n euiRounded\n class=\"eui-app-top-message__close\"/>\n</div>\n", styles: [".eui-app-top-message{padding:var(--eui-s-xs) var(--eui-s-s);position:fixed;width:100%;right:0;top:0;z-index:var(--eui-zi-top-message);background-color:var(--eui-c-danger-dark);color:var(--eui-c-danger-contrast)}.eui-app-top-message__wrapper{display:flex;flex-direction:row;align-items:center;width:100%}.eui-app-top-message__content{display:flex;flex-direction:column;width:100%}.eui-app-top-message__close{margin-left:auto}.eui-app-top-message--primary{background-color:var(--eui-c-primary)}.eui-app-top-message--primary .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-primary-light)}.eui-app-top-message--info{background-color:var(--eui-c-info)}.eui-app-top-message--info .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-info-light)}.eui-app-top-message--success{background-color:var(--eui-c-success-dark)}.eui-app-top-message--success .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-success)}.eui-app-top-message--warning{background-color:var(--eui-c-warning)}.eui-app-top-message--warning .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-warning-light)}.eui-app-top-message--danger{background-color:var(--eui-c-danger-dark)}.eui-app-top-message--danger .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-danger)}.eui-app-top-message--hidden{display:none}.eui-app-top-message--custom{padding:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.EuiIconButtonComponent, selector: "eui-icon-button", inputs: ["icon", "fillColor", "size", "ariaLabel", "tabindex", "hasNoPadding", "hasFocusHoverColor", "hasFocusHoverBg", "euiRounded", "euiDisabled"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
1545
1558
  }
1546
1559
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiAppTopMessageComponent, decorators: [{
@@ -1559,7 +1572,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
1559
1572
  ],
1560
1573
  },
1561
1574
  ], template: "<div class=\"eui-app-top-message__wrapper\" #appTopMessage>\n <div class=\"eui-app-top-message__content\">\n <ng-content></ng-content>\n </div>\n <eui-icon-button *ngIf=\"isCloseable\"\n icon=\"close:outline\"\n (buttonClick)=\"onCloseClick()\"\n ariaLabel=\"Close top message\"\n fillColor=\"white\"\n euiRounded\n class=\"eui-app-top-message__close\"/>\n</div>\n", styles: [".eui-app-top-message{padding:var(--eui-s-xs) var(--eui-s-s);position:fixed;width:100%;right:0;top:0;z-index:var(--eui-zi-top-message);background-color:var(--eui-c-danger-dark);color:var(--eui-c-danger-contrast)}.eui-app-top-message__wrapper{display:flex;flex-direction:row;align-items:center;width:100%}.eui-app-top-message__content{display:flex;flex-direction:column;width:100%}.eui-app-top-message__close{margin-left:auto}.eui-app-top-message--primary{background-color:var(--eui-c-primary)}.eui-app-top-message--primary .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-primary-light)}.eui-app-top-message--info{background-color:var(--eui-c-info)}.eui-app-top-message--info .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-info-light)}.eui-app-top-message--success{background-color:var(--eui-c-success-dark)}.eui-app-top-message--success .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-success)}.eui-app-top-message--warning{background-color:var(--eui-c-warning)}.eui-app-top-message--warning .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-warning-light)}.eui-app-top-message--danger{background-color:var(--eui-c-danger-dark)}.eui-app-top-message--danger .eui-app-top-message__close .eui-icon-button__button:hover{background-color:var(--eui-c-danger)}.eui-app-top-message--hidden{display:none}.eui-app-top-message--custom{padding:0}\n"] }]
1562
- }], ctorParameters: () => [{ type: i1.EuiAppShellService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2$5.ContentObserver }, { type: i3$1.BaseStatesDirective }], propDecorators: { cssClasses: [{
1575
+ }], ctorParameters: () => [{ type: i1.EuiAppShellService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2$5.ContentObserver }, { type: i3$1.BaseStatesDirective }, { type: Document, decorators: [{
1576
+ type: Inject,
1577
+ args: [DOCUMENT]
1578
+ }] }], propDecorators: { cssClasses: [{
1563
1579
  type: HostBinding,
1564
1580
  args: ['class']
1565
1581
  }], role: [{