@ember-eui/core 12.0.11 → 12.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/declarations/components/eui-accordion.d.ts +3 -2
- package/declarations/components/eui-accordion.d.ts.map +1 -1
- package/declarations/components/eui-auto-sizer.d.ts.map +1 -1
- package/declarations/components/eui-card.d.ts +1 -0
- package/declarations/components/eui-card.d.ts.map +1 -1
- package/declarations/components/eui-code-block.d.ts +1 -0
- package/declarations/components/eui-code-block.d.ts.map +1 -1
- package/declarations/components/eui-code.d.ts +2 -2
- package/declarations/components/eui-code.d.ts.map +1 -1
- package/declarations/components/eui-context-menu-item.d.ts +1 -0
- package/declarations/components/eui-context-menu-item.d.ts.map +1 -1
- package/declarations/components/eui-dual-range.d.ts +1 -0
- package/declarations/components/eui-dual-range.d.ts.map +1 -1
- package/declarations/components/eui-field-search.d.ts +1 -0
- package/declarations/components/eui-field-search.d.ts.map +1 -1
- package/declarations/components/eui-file-picker.d.ts +1 -0
- package/declarations/components/eui-file-picker.d.ts.map +1 -1
- package/declarations/components/eui-global-toast-list.d.ts.map +1 -1
- package/declarations/components/eui-header-section-item-button.d.ts +1 -0
- package/declarations/components/eui-header-section-item-button.d.ts.map +1 -1
- package/declarations/components/eui-inner-text.d.ts.map +1 -1
- package/declarations/components/eui-input-popover.d.ts +1 -0
- package/declarations/components/eui-input-popover.d.ts.map +1 -1
- package/declarations/components/eui-markdown-editor.d.ts +1 -0
- package/declarations/components/eui-markdown-editor.d.ts.map +1 -1
- package/declarations/components/eui-overlay-mask.d.ts +1 -0
- package/declarations/components/eui-overlay-mask.d.ts.map +1 -1
- package/declarations/components/eui-popover.d.ts.map +1 -1
- package/declarations/components/eui-portal.d.ts +1 -1
- package/declarations/components/eui-portal.d.ts.map +1 -1
- package/declarations/components/eui-range-ticks.d.ts +2 -1
- package/declarations/components/eui-range-ticks.d.ts.map +1 -1
- package/declarations/components/eui-range-track.d.ts +2 -1
- package/declarations/components/eui-range-track.d.ts.map +1 -1
- package/declarations/components/eui-tabbed-content.d.ts.map +1 -1
- package/declarations/components/eui-tool-tip-popover.d.ts.map +1 -1
- package/declarations/components/eui-tool-tip.d.ts +1 -1
- package/declarations/components/eui-tool-tip.d.ts.map +1 -1
- package/declarations/components/eui-wrapping-popover.d.ts.map +1 -1
- package/declarations/modifiers/outside-click-detector.d.ts +3 -3
- package/declarations/modifiers/outside-click-detector.d.ts.map +1 -1
- package/declarations/modifiers/resize-observer.d.ts +4 -4
- package/declarations/modifiers/resize-observer.d.ts.map +1 -1
- package/dist/components/eui-accordion.js +13 -10
- package/dist/components/eui-accordion.js.map +1 -1
- package/dist/components/eui-auto-sizer.js +4 -0
- package/dist/components/eui-auto-sizer.js.map +1 -1
- package/dist/components/eui-card.js +4 -0
- package/dist/components/eui-card.js.map +1 -1
- package/dist/components/eui-code-block.js +7 -0
- package/dist/components/eui-code-block.js.map +1 -1
- package/dist/components/eui-code.js +3 -1
- package/dist/components/eui-code.js.map +1 -1
- package/dist/components/eui-collapsible-nav-group.js +2 -2
- package/dist/components/eui-collapsible-nav-group.js.map +1 -1
- package/dist/components/eui-context-menu-item.js +4 -0
- package/dist/components/eui-context-menu-item.js.map +1 -1
- package/dist/components/eui-dual-range.js +4 -0
- package/dist/components/eui-dual-range.js.map +1 -1
- package/dist/components/eui-field-search.js +4 -0
- package/dist/components/eui-field-search.js.map +1 -1
- package/dist/components/eui-file-picker.js +4 -0
- package/dist/components/eui-file-picker.js.map +1 -1
- package/dist/components/eui-global-toast-list.js +1 -0
- package/dist/components/eui-global-toast-list.js.map +1 -1
- package/dist/components/eui-header-section-item-button.js +5 -0
- package/dist/components/eui-header-section-item-button.js.map +1 -1
- package/dist/components/eui-inner-text.js +1 -0
- package/dist/components/eui-inner-text.js.map +1 -1
- package/dist/components/eui-input-popover.js +5 -0
- package/dist/components/eui-input-popover.js.map +1 -1
- package/dist/components/eui-markdown-editor.js +6 -0
- package/dist/components/eui-markdown-editor.js.map +1 -1
- package/dist/components/eui-notification-event-messages.js +2 -2
- package/dist/components/eui-notification-event-messages.js.map +1 -1
- package/dist/components/eui-overlay-mask.js +4 -0
- package/dist/components/eui-overlay-mask.js.map +1 -1
- package/dist/components/eui-popover.js +3 -0
- package/dist/components/eui-popover.js.map +1 -1
- package/dist/components/eui-portal.js +2 -1
- package/dist/components/eui-portal.js.map +1 -1
- package/dist/components/eui-range-ticks.js +4 -1
- package/dist/components/eui-range-ticks.js.map +1 -1
- package/dist/components/eui-range-track.js +4 -0
- package/dist/components/eui-range-track.js.map +1 -1
- package/dist/components/eui-tabbed-content.js +1 -0
- package/dist/components/eui-tabbed-content.js.map +1 -1
- package/dist/components/eui-tool-tip-popover.js +1 -0
- package/dist/components/eui-tool-tip-popover.js.map +1 -1
- package/dist/components/eui-tool-tip.js +8 -5
- package/dist/components/eui-tool-tip.js.map +1 -1
- package/dist/components/eui-wrapping-popover.js +2 -0
- package/dist/components/eui-wrapping-popover.js.map +1 -1
- package/dist/modifiers/outside-click-detector.js +6 -3
- package/dist/modifiers/outside-click-detector.js.map +1 -1
- package/dist/modifiers/resize-observer.js +10 -3
- package/dist/modifiers/resize-observer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-dual-range.js","sources":["../../src/components/eui-dual-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { later } from '@ember/runloop';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, {\n argOrDefaultDecorator\n} from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { keys } from '../utils/keys.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport { EUI_THUMB_SIZE } from '../utils/range/index.ts';\nimport EuiFormControlLayoutDelimited from './eui-form-control-layout-delimited.gts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeThumb from './eui-range-thumb.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { EuiRangeArgs } from './eui-range';\nimport type {\n EuiRangeInputArgs,\n EuiRangeInputSignature\n} from './eui-range-input';\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport type ValueMember = number | string;\n\nexport interface EuiDualRangeArgs {\n value: [ValueMember, ValueMember];\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onChange: (\n values: [ValueMember, ValueMember],\n isValid: boolean,\n event: Event | MouseEvent | KeyboardEvent\n ) => void;\n fullWidth?: boolean;\n isInvalid?: boolean;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: EuiRangeArgs['showInput'];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Specified ticks at specified values\n */\n ticks?: EuiRangeTick[];\n /**\n * Creates an input group with element(s) coming before input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n /**\n * Creates an input group with element(s) coming after input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n minInputProps?: Partial<EuiRangeInputArgs>;\n\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n maxInputProps?: Partial<EuiRangeInputArgs>;\n\n readOnly?: boolean;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n\n isAppendProvided?: boolean;\n\n isFakeMaxBlock?: boolean;\n\n isFakeMinBlock?: boolean;\n\n disable?: boolean;\n\n ariaDescribedby?: string;\n\n ariaLabel?: string;\n\n name?: string;\n\n id?: string;\n\n compressed?: boolean;\n\n showRange?: boolean;\n\n showTicks?: boolean;\n\n step?: number;\n\n min?: number;\n\n max?: number;\n}\n\nexport interface EuiDualRangeSignature {\n Element: EuiRangeInputSignature['Element'];\n Args: EuiDualRangeArgs;\n Blocks: {\n prepend: EuiRangeInputSignature['Blocks']['prepend'];\n append: EuiRangeInputSignature['Blocks']['append'];\n min: [number?];\n max: [number?];\n };\n}\n\nexport default class EuiDualRangeComponent extends Component<EuiDualRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(true) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked hasFocus = false;\n @tracked rangeSliderRefAvailable = false;\n @tracked isPopoverOpen = false;\n @tracked rangeWidth: number | undefined;\n @tracked isVisible = true;\n ///\n\n preventPopoverClose = false;\n rangeSliderRef: HTMLInputElement | null = null;\n\n @action\n didInsertRangeSlider(ref: HTMLInputElement | null): void {\n this.rangeSliderRef = ref;\n\n this.rangeSliderRefAvailable = !!ref;\n this.rangeWidth = ref ? ref.clientWidth : undefined;\n\n if (this.rangeSliderRef?.clientWidth && !this.isVisible) {\n this.isVisible = true;\n }\n }\n\n get lowerValue(): ValueMember {\n return this.args.value ? this.args.value[0] : this.min;\n }\n\n get upperValue(): ValueMember {\n return this.args.value ? this.args.value[1] : this.max;\n }\n\n get lowerValueIsValid(): boolean {\n return isWithinRange(this.min, this.upperValue, this.lowerValue);\n }\n\n get upperValueIsValid(): boolean {\n return isWithinRange(this.lowerValue, this.max, this.upperValue);\n }\n\n get isValid(): boolean {\n return this.lowerValueIsValid && this.upperValueIsValid;\n }\n\n @action\n _determineInvalidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // If the values are invalid, find whether the new value is in the upper\n // or lower half and move the appropriate handle to the new value,\n // while the other handle gets moved to the opposite bound (if invalid)\n const lowerHalf = Math.abs(this.max - this.min) / 2 + this.min;\n const newValIsLow = isWithinRange(this.min, lowerHalf, newVal);\n\n if (newValIsLow) {\n lower = newVal;\n upper = !this.upperValueIsValid ? this.max : upper;\n } else {\n lower = !this.lowerValueIsValid ? this.min : lower;\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineValidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // Lower thumb targeted or right-moving swap has occurred\n if (\n Math.abs((lower as number) - (newVal as number)) <\n Math.abs((upper as number) - (newVal as number))\n ) {\n lower = newVal;\n }\n // Upper thumb targeted or left-moving swap has occurred\n else {\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineThumbMovement(newVal: number, e: Event): void {\n // Determine thumb movement based on slider interaction\n if (!this.isValid) {\n // Non-standard positioning follows\n this._determineInvalidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n } else {\n // Standard positioning based on click event proximity to thumb locations\n this._determineValidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n }\n\n @action\n _handleOnChange(lower: ValueMember, upper: ValueMember, e: Event): void {\n const isValid =\n isWithinRange(this.min, upper, lower) &&\n isWithinRange(lower, this.max, upper);\n\n this.args.onChange([lower, upper], isValid, e);\n }\n\n @action\n handleSliderChange(e: Event): void {\n this._determineThumbMovement(\n Number((e.currentTarget as HTMLInputElement).value),\n e\n );\n }\n\n @action\n _resetToRangeEnds(e: KeyboardEvent): void {\n // Arbitrary decision to pass `min` instead of `max`. Result is the same.\n this._determineInvalidThumbMovement(\n this.min,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n\n @action\n _isDirectionalKeyPress(event: KeyboardEvent): boolean {\n return (\n [\n keys.ARROW_UP,\n keys.ARROW_RIGHT,\n keys.ARROW_DOWN,\n keys.ARROW_LEFT\n ].indexOf(event.key as keys) > -1\n );\n }\n\n @action\n handleInputKeyDown(e: KeyboardEvent): void {\n // Relevant only when initial values are both `''` and `showInput` is set\n if (this._isDirectionalKeyPress(e) && !this.isValid) {\n e.preventDefault();\n this._resetToRangeEnds(e);\n }\n }\n\n @action\n handleLowerInputChange(e: Event): void {\n this._handleOnChange(\n (e.target as HTMLInputElement).value,\n this.upperValue,\n e\n );\n }\n\n @action\n handleUpperInputChange(e: Event): void {\n this._handleOnChange(\n this.lowerValue,\n (e.target as HTMLInputElement).value,\n e\n );\n }\n\n @action\n _handleKeyDown(value: ValueMember, event: KeyboardEvent): number {\n let newVal = Number(value);\n let stepRemainder = 0;\n const step = this.args.step || 1;\n\n switch (event.key) {\n case keys.ARROW_UP:\n case keys.ARROW_RIGHT:\n event.preventDefault();\n newVal += step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal - stepRemainder;\n }\n\n break;\n case keys.ARROW_DOWN:\n case keys.ARROW_LEFT:\n event.preventDefault();\n newVal -= step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal + (step - stepRemainder);\n }\n\n break;\n }\n\n return newVal;\n }\n\n @action\n handleLowerKeyDown(event: KeyboardEvent): void {\n let lower = this.lowerValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.lowerValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n lower = this._handleKeyDown(lower, event);\n }\n\n if (lower >= (this.upperValue as number) || lower < this.min) return;\n this._handleOnChange(lower, this.upperValue, event);\n }\n\n @action\n handleUpperKeyDown(event: KeyboardEvent): void {\n let upper = this.upperValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.upperValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n upper = this._handleKeyDown(upper, event);\n }\n\n if (upper <= (this.lowerValue as number) || upper > this.max) return;\n this._handleOnChange(this.lowerValue, upper, event);\n }\n\n @action\n calculateThumbPositionStyle(value: number, width?: number): { left: string } {\n // Calculate the left position based on value\n const decimal = (value - this.min) / (this.max - this.min);\n // Must be between 0-100%\n let valuePosition = decimal <= 1 ? decimal : 1;\n\n valuePosition = valuePosition >= 0 ? valuePosition : 0;\n\n const trackWidth =\n this.args.showInput === 'inputWithPopover' && !!width\n ? width\n : this.rangeSliderRef?.clientWidth;\n\n let thumbToTrackRatio = 0;\n\n if (trackWidth) {\n thumbToTrackRatio = EUI_THUMB_SIZE / trackWidth;\n } else {\n thumbToTrackRatio = EUI_THUMB_SIZE / 1;\n }\n\n const trackPositionScale = (1 - thumbToTrackRatio) * 100;\n\n return { left: `${valuePosition * trackPositionScale}%` };\n }\n\n @action\n setPreventPopoverClose(value: boolean): void {\n this.preventPopoverClose = value;\n }\n\n get calculateLowerValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.lowerValue) || this.min,\n this.rangeWidth\n );\n }\n\n get calculateUpperValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.upperValue) || this.max,\n this.rangeWidth\n );\n }\n\n @action\n toggleHasFocus(): void {\n this.hasFocus = !this.hasFocus;\n }\n\n @action\n onThumbFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.hasFocus = true;\n }\n\n @action\n onThumbBlur(e: FocusEvent): void {\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.hasFocus = false;\n }\n\n @action\n onInputFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.preventPopoverClose = true;\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: FocusEvent): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n onResize(width?: number): void {\n this.rangeWidth = width;\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{this.fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n @onPanelResize={{this.onResize}}\n >\n <:input>\n <EuiFormControlLayoutDelimited\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:startControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleLowerInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:startControl>\n <:endControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleUpperInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:endControl>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayoutDelimited>\n </:input>\n <:content>\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showInput}}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleLowerInputChange}}\n />\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{/if}}\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{!@glint-expect-error}}\n {{on \"click\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{on \"keydown\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if this.showInput}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{! maxinput }}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @controlOnly={{this.showInputOnly}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleUpperInputChange}}\n />\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiDualRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","args","id","guidFor","preventPopoverClose","rangeSliderRef","didInsertRangeSlider","ref","rangeSliderRefAvailable","rangeWidth","clientWidth","undefined","isVisible","n","action","lowerValue","value","min","upperValue","max","lowerValueIsValid","isWithinRange","upperValueIsValid","isValid","_determineInvalidThumbMovement","newVal","lower","upper","e","lowerHalf","Math","abs","newValIsLow","_handleOnChange","_determineValidThumbMovement","_determineThumbMovement","onChange","handleSliderChange","Number","currentTarget","_resetToRangeEnds","_isDirectionalKeyPress","event","keys","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ARROW_LEFT","indexOf","key","handleInputKeyDown","preventDefault","handleLowerInputChange","target","handleUpperInputChange","_handleKeyDown","stepRemainder","step","handleLowerKeyDown","TAB","handleUpperKeyDown","calculateThumbPositionStyle","width","decimal","valuePosition","trackWidth","showInput","thumbToTrackRatio","EUI_THUMB_SIZE","trackPositionScale","left","setPreventPopoverClose","calculateLowerValueThumbPositionStyle","calculateUpperValueThumbPositionStyle","toggleHasFocus","hasFocus","onThumbFocus","onFocus","onThumbBlur","onBlur","onInputFocus","isPopoverOpen","onInputBlur","later","closePopover","onResize","digitTolerance","String","length","showInputOnly","canShowDropdown","readOnly","disabled","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiFormControlLayoutDelimited","or","EuiRangeInput","castTo","on","fn","onKey","optional","EuiRangeWrapper","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","EuiRangeSlider","didInsert","EuiRangeThumb","simpleStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-dual-range.js","sources":["../../src/components/eui-dual-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { later } from '@ember/runloop';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, {\n argOrDefaultDecorator\n} from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { keys } from '../utils/keys.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport { EUI_THUMB_SIZE } from '../utils/range/index.ts';\nimport EuiFormControlLayoutDelimited from './eui-form-control-layout-delimited.gts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeThumb from './eui-range-thumb.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { EuiRangeArgs } from './eui-range';\nimport type {\n EuiRangeInputArgs,\n EuiRangeInputSignature\n} from './eui-range-input';\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport type ValueMember = number | string;\n\nexport interface EuiDualRangeArgs {\n value: [ValueMember, ValueMember];\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onChange: (\n values: [ValueMember, ValueMember],\n isValid: boolean,\n event: Event | MouseEvent | KeyboardEvent\n ) => void;\n fullWidth?: boolean;\n isInvalid?: boolean;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: EuiRangeArgs['showInput'];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Specified ticks at specified values\n */\n ticks?: EuiRangeTick[];\n /**\n * Creates an input group with element(s) coming before input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n /**\n * Creates an input group with element(s) coming after input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n minInputProps?: Partial<EuiRangeInputArgs>;\n\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n maxInputProps?: Partial<EuiRangeInputArgs>;\n\n readOnly?: boolean;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n\n isAppendProvided?: boolean;\n\n isFakeMaxBlock?: boolean;\n\n isFakeMinBlock?: boolean;\n\n disable?: boolean;\n\n ariaDescribedby?: string;\n\n ariaLabel?: string;\n\n name?: string;\n\n id?: string;\n\n compressed?: boolean;\n\n showRange?: boolean;\n\n showTicks?: boolean;\n\n step?: number;\n\n min?: number;\n\n max?: number;\n}\n\nexport interface EuiDualRangeSignature {\n Element: EuiRangeInputSignature['Element'];\n Args: EuiDualRangeArgs;\n Blocks: {\n prepend: EuiRangeInputSignature['Blocks']['prepend'];\n append: EuiRangeInputSignature['Blocks']['append'];\n min: [number?];\n max: [number?];\n };\n}\n\nexport default class EuiDualRangeComponent extends Component<EuiDualRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(true) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked hasFocus = false;\n @tracked rangeSliderRefAvailable = false;\n @tracked isPopoverOpen = false;\n @tracked rangeWidth: number | undefined;\n @tracked isVisible = true;\n ///\n\n preventPopoverClose = false;\n rangeSliderRef: HTMLInputElement | null = null;\n\n @action\n didInsertRangeSlider(ref: HTMLInputElement | null): void {\n this.rangeSliderRef = ref;\n\n this.rangeSliderRefAvailable = !!ref;\n this.rangeWidth = ref ? ref.clientWidth : undefined;\n\n if (this.rangeSliderRef?.clientWidth && !this.isVisible) {\n this.isVisible = true;\n }\n }\n\n get lowerValue(): ValueMember {\n return this.args.value ? this.args.value[0] : this.min;\n }\n\n get upperValue(): ValueMember {\n return this.args.value ? this.args.value[1] : this.max;\n }\n\n get lowerValueIsValid(): boolean {\n return isWithinRange(this.min, this.upperValue, this.lowerValue);\n }\n\n get upperValueIsValid(): boolean {\n return isWithinRange(this.lowerValue, this.max, this.upperValue);\n }\n\n get isValid(): boolean {\n return this.lowerValueIsValid && this.upperValueIsValid;\n }\n\n @action\n _determineInvalidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // If the values are invalid, find whether the new value is in the upper\n // or lower half and move the appropriate handle to the new value,\n // while the other handle gets moved to the opposite bound (if invalid)\n const lowerHalf = Math.abs(this.max - this.min) / 2 + this.min;\n const newValIsLow = isWithinRange(this.min, lowerHalf, newVal);\n\n if (newValIsLow) {\n lower = newVal;\n upper = !this.upperValueIsValid ? this.max : upper;\n } else {\n lower = !this.lowerValueIsValid ? this.min : lower;\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineValidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // Lower thumb targeted or right-moving swap has occurred\n if (\n Math.abs((lower as number) - (newVal as number)) <\n Math.abs((upper as number) - (newVal as number))\n ) {\n lower = newVal;\n }\n // Upper thumb targeted or left-moving swap has occurred\n else {\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineThumbMovement(newVal: number, e: Event): void {\n // Determine thumb movement based on slider interaction\n if (!this.isValid) {\n // Non-standard positioning follows\n this._determineInvalidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n } else {\n // Standard positioning based on click event proximity to thumb locations\n this._determineValidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n }\n\n @action\n _handleOnChange(lower: ValueMember, upper: ValueMember, e: Event): void {\n const isValid =\n isWithinRange(this.min, upper, lower) &&\n isWithinRange(lower, this.max, upper);\n\n this.args.onChange([lower, upper], isValid, e);\n }\n\n @action\n handleSliderChange(e: Event): void {\n this._determineThumbMovement(\n Number((e.currentTarget as HTMLInputElement).value),\n e\n );\n }\n\n @action\n _resetToRangeEnds(e: KeyboardEvent): void {\n // Arbitrary decision to pass `min` instead of `max`. Result is the same.\n this._determineInvalidThumbMovement(\n this.min,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n\n @action\n _isDirectionalKeyPress(event: KeyboardEvent): boolean {\n return (\n [\n keys.ARROW_UP,\n keys.ARROW_RIGHT,\n keys.ARROW_DOWN,\n keys.ARROW_LEFT\n ].indexOf(event.key as keys) > -1\n );\n }\n\n @action\n handleInputKeyDown(e: KeyboardEvent): void {\n // Relevant only when initial values are both `''` and `showInput` is set\n if (this._isDirectionalKeyPress(e) && !this.isValid) {\n e.preventDefault();\n this._resetToRangeEnds(e);\n }\n }\n\n @action\n handleLowerInputChange(e: Event): void {\n this._handleOnChange(\n (e.target as HTMLInputElement).value,\n this.upperValue,\n e\n );\n }\n\n @action\n handleUpperInputChange(e: Event): void {\n this._handleOnChange(\n this.lowerValue,\n (e.target as HTMLInputElement).value,\n e\n );\n }\n\n @action\n _handleKeyDown(value: ValueMember, event: KeyboardEvent): number {\n let newVal = Number(value);\n let stepRemainder = 0;\n const step = this.args.step || 1;\n\n switch (event.key) {\n case keys.ARROW_UP:\n case keys.ARROW_RIGHT:\n event.preventDefault();\n newVal += step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal - stepRemainder;\n }\n\n break;\n case keys.ARROW_DOWN:\n case keys.ARROW_LEFT:\n event.preventDefault();\n newVal -= step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal + (step - stepRemainder);\n }\n\n break;\n }\n\n return newVal;\n }\n\n @action\n handleLowerKeyDown(event: KeyboardEvent): void {\n let lower = this.lowerValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.lowerValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n lower = this._handleKeyDown(lower, event);\n }\n\n if (lower >= (this.upperValue as number) || lower < this.min) return;\n this._handleOnChange(lower, this.upperValue, event);\n }\n\n @action\n handleUpperKeyDown(event: KeyboardEvent): void {\n let upper = this.upperValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.upperValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n upper = this._handleKeyDown(upper, event);\n }\n\n if (upper <= (this.lowerValue as number) || upper > this.max) return;\n this._handleOnChange(this.lowerValue, upper, event);\n }\n\n @action\n calculateThumbPositionStyle(value: number, width?: number): { left: string } {\n // Calculate the left position based on value\n const decimal = (value - this.min) / (this.max - this.min);\n // Must be between 0-100%\n let valuePosition = decimal <= 1 ? decimal : 1;\n\n valuePosition = valuePosition >= 0 ? valuePosition : 0;\n\n const trackWidth =\n this.args.showInput === 'inputWithPopover' && !!width\n ? width\n : this.rangeSliderRef?.clientWidth;\n\n let thumbToTrackRatio = 0;\n\n if (trackWidth) {\n thumbToTrackRatio = EUI_THUMB_SIZE / trackWidth;\n } else {\n thumbToTrackRatio = EUI_THUMB_SIZE / 1;\n }\n\n const trackPositionScale = (1 - thumbToTrackRatio) * 100;\n\n return { left: `${valuePosition * trackPositionScale}%` };\n }\n\n @action\n setPreventPopoverClose(value: boolean): void {\n this.preventPopoverClose = value;\n }\n\n get calculateLowerValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.lowerValue) || this.min,\n this.rangeWidth\n );\n }\n\n get calculateUpperValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.upperValue) || this.max,\n this.rangeWidth\n );\n }\n\n @action\n toggleHasFocus(): void {\n this.hasFocus = !this.hasFocus;\n }\n\n @action\n onThumbFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.hasFocus = true;\n }\n\n @action\n onThumbBlur(e: FocusEvent): void {\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.hasFocus = false;\n }\n\n @action\n onInputFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.preventPopoverClose = true;\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: FocusEvent): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n onResize(width?: number): void {\n this.rangeWidth = width;\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n willDestroy() {\n super.willDestroy();\n\n this.rangeSliderRef = null;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{this.fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n @onPanelResize={{this.onResize}}\n >\n <:input>\n <EuiFormControlLayoutDelimited\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:startControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleLowerInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:startControl>\n <:endControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleUpperInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:endControl>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayoutDelimited>\n </:input>\n <:content>\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showInput}}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleLowerInputChange}}\n />\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{/if}}\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{!@glint-expect-error}}\n {{on \"click\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{on \"keydown\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if this.showInput}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{! maxinput }}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @controlOnly={{this.showInputOnly}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleUpperInputChange}}\n />\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiDualRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","args","id","guidFor","preventPopoverClose","rangeSliderRef","didInsertRangeSlider","ref","rangeSliderRefAvailable","rangeWidth","clientWidth","undefined","isVisible","n","action","lowerValue","value","min","upperValue","max","lowerValueIsValid","isWithinRange","upperValueIsValid","isValid","_determineInvalidThumbMovement","newVal","lower","upper","e","lowerHalf","Math","abs","newValIsLow","_handleOnChange","_determineValidThumbMovement","_determineThumbMovement","onChange","handleSliderChange","Number","currentTarget","_resetToRangeEnds","_isDirectionalKeyPress","event","keys","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ARROW_LEFT","indexOf","key","handleInputKeyDown","preventDefault","handleLowerInputChange","target","handleUpperInputChange","_handleKeyDown","stepRemainder","step","handleLowerKeyDown","TAB","handleUpperKeyDown","calculateThumbPositionStyle","width","decimal","valuePosition","trackWidth","showInput","thumbToTrackRatio","EUI_THUMB_SIZE","trackPositionScale","left","setPreventPopoverClose","calculateLowerValueThumbPositionStyle","calculateUpperValueThumbPositionStyle","toggleHasFocus","hasFocus","onThumbFocus","onFocus","onThumbBlur","onBlur","onInputFocus","isPopoverOpen","onInputBlur","later","closePopover","onResize","digitTolerance","String","length","showInputOnly","canShowDropdown","readOnly","disabled","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiFormControlLayoutDelimited","or","EuiRangeInput","castTo","on","fn","onKey","optional","EuiRangeWrapper","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","EuiRangeSlider","didInsert","EuiRangeThumb","simpleStyle"],"mappings":"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"}
|
|
@@ -113,6 +113,10 @@ class EuiFieldSearch extends Component {
|
|
|
113
113
|
static {
|
|
114
114
|
n(this.prototype, "didInsertInput", [action]);
|
|
115
115
|
}
|
|
116
|
+
willDestroy() {
|
|
117
|
+
super.willDestroy();
|
|
118
|
+
this.inputElement = null;
|
|
119
|
+
}
|
|
116
120
|
static {
|
|
117
121
|
setComponentTemplate(precompileTemplate("\n {{#let (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\")) (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\")) (argOrDefault @id (randomId)) as |hasPrepend hasAppend inputId|}}\n {{#let (classNames (if @fullWidth \"euiFieldSearch--fullWidth\") (if @compressed \"euiFieldSearch--compressed\") (if (or hasPrepend hasAppend) \"euiFieldSearch--inGroup\") (if @isLoading \"euiFieldSearch--isLoading\") (if (and (argOrDefault @isClearable true) @value) \"euiFieldSearch--isClearable\") \"euiFieldSearch\") as |classes|}}\n <EuiFormControlLayout @icon=\"search\" @fullWidth={{@fullWidth}} @isLoading={{@isLoading}} @disabled={{@disabled}} @clear={{if (and @isClearable @value (not @readOnly) (and (not @isDisabled) (not @disabled))) this.onClear}} @compressed={{@compressed}} @useGroup={{or hasPrepend hasAppend}}>\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input id={{inputId}} class={{classes}} value={{this.value}} disabled={{@disabled}} type=\"text\" placeholder={{@placeholder}} ...attributes {{on \"keyup\" (fn this.onKeyUp this.incremental @onSearch)}} {{on \"search\" this.setValue}} {{on \"change\" this.setValue}} {{didInsert this.didInsertInput}} {{didUpdate this.didUpdateValue @value}} {{validatableControl @isInvalid}} />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n ", {
|
|
118
122
|
strictMode: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-field-search.js","sources":["../../src/components/eui-field-search.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\n\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport { Browser } from '../utils/browser/index.ts';\nimport { keys } from '../utils/keys.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\n\nlet isSearchSupported = false;\n\n/**\n * You can find more typing on the template\n */\ntype EuiFieldSearchArgs = {\n value?: string;\n defaultValue?: string;\n\n /**\n * When `true` the search will be executed (that is, the `onSearch` will be called) as the\n * user types.\n */\n incremental?: boolean;\n /**\n * Optional callback method called on open and close with a single `isOpen` parameter\n */\n onKeyUp?: (e: KeyboardEvent) => void;\n onSearch: (value: string) => void;\n\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n isClearable?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n id?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n};\n\nexport interface EuiFieldSearchSignature {\n Element: HTMLInputElement;\n Args: EuiFieldSearchArgs;\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n field: [];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nexport default class EuiFieldSearch extends Component<EuiFieldSearchSignature> {\n @tracked inputElement: HTMLInputElement | null = null;\n @tracked value: string | undefined =\n this.args.value ||\n (this.args.defaultValue ? `${this.args.defaultValue}` : '');\n\n @argOrDefaultDecorator(false) incremental = false;\n\n @action\n setValue(e: Event): void {\n const value = (e.target as HTMLInputElement).value;\n\n if (this.value !== value) {\n this.value = value;\n }\n\n this.args.onSearch?.(this.value);\n }\n\n @action\n onKeyUp(\n incremental: boolean,\n onSearch: (value: string) => void,\n e: KeyboardEvent\n ): void {\n this.value = (e.target as HTMLInputElement).value;\n\n if (this.args.onKeyUp) {\n this.args.onKeyUp(e);\n\n if (e.defaultPrevented) {\n return;\n }\n }\n\n if (\n onSearch &&\n ((e.key !== keys.ENTER && incremental) ||\n (e.key === keys.ENTER && !isSearchSupported))\n ) {\n onSearch((e.target as HTMLInputElement).value);\n }\n }\n\n @action\n didUpdateValue() {\n this.value = this.args.value;\n }\n\n @action\n onClear(): void {\n const nativeInputValue = Object.getOwnPropertyDescriptor(\n HTMLInputElement.prototype,\n 'value'\n );\n const nativeInputValueSetter = nativeInputValue\n ? nativeInputValue.set\n : undefined;\n\n if (nativeInputValueSetter) {\n nativeInputValueSetter.call(this.inputElement, '');\n }\n\n // dispatch input event, with IE11 support/fallback\n let event;\n\n if ('Event' in window && typeof Event === 'function') {\n event = new Event('input', {\n bubbles: true,\n cancelable: false\n });\n } else {\n // IE11\n event = document.createEvent('Event');\n event.initEvent('input', true, false);\n }\n\n if (this.inputElement) {\n if (event) {\n this.inputElement.dispatchEvent(event);\n }\n\n // set focus on the search field\n this.inputElement.focus();\n this.inputElement.dispatchEvent(new Event('change'));\n }\n\n this.value = '';\n\n if (this.args.onSearch && this.incremental) {\n this.args.onSearch('');\n }\n }\n\n @action\n didInsertInput(inputRef: HTMLInputElement): void {\n this.inputElement = inputRef;\n isSearchSupported = Browser.isEventSupported('search', this.inputElement);\n }\n\n <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiFieldSearch--fullWidth\")\n (if @compressed \"euiFieldSearch--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldSearch--inGroup\")\n (if @isLoading \"euiFieldSearch--isLoading\")\n (if\n (and (argOrDefault @isClearable true) @value)\n \"euiFieldSearch--isClearable\"\n )\n \"euiFieldSearch\"\n )\n as |classes|\n }}\n <EuiFormControlLayout\n @icon=\"search\"\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @disabled={{@disabled}}\n @clear={{if\n (and\n @isClearable\n @value\n (not @readOnly)\n (and (not @isDisabled) (not @disabled))\n )\n this.onClear\n }}\n @compressed={{@compressed}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n value={{this.value}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n ...attributes\n {{on \"keyup\" (fn this.onKeyUp this.incremental @onSearch)}}\n {{on \"search\" this.setValue}}\n {{on \"change\" this.setValue}}\n {{didInsert this.didInsertInput}}\n {{didUpdate this.didUpdateValue @value}}\n {{validatableControl @isInvalid}}\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n </template>\n}\n"],"names":["isSearchSupported","EuiFieldSearch","Component","g","prototype","tracked","i","void 0","args","value","defaultValue","argOrDefaultDecorator","setValue","e","target","onSearch","n","action","onKeyUp","incremental","defaultPrevented","key","keys","ENTER","didUpdateValue","onClear","nativeInputValue","Object","getOwnPropertyDescriptor","HTMLInputElement","nativeInputValueSetter","set","undefined","call","inputElement","event","window","Event","bubbles","cancelable","document","createEvent","initEvent","dispatchEvent","focus","didInsertInput","inputRef","Browser","isEventSupported","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","EuiFormControlLayout","on","fn","didInsert","didUpdate","validatableControl"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-field-search.js","sources":["../../src/components/eui-field-search.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\n\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport { Browser } from '../utils/browser/index.ts';\nimport { keys } from '../utils/keys.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\n\nlet isSearchSupported = false;\n\n/**\n * You can find more typing on the template\n */\ntype EuiFieldSearchArgs = {\n value?: string;\n defaultValue?: string;\n\n /**\n * When `true` the search will be executed (that is, the `onSearch` will be called) as the\n * user types.\n */\n incremental?: boolean;\n /**\n * Optional callback method called on open and close with a single `isOpen` parameter\n */\n onKeyUp?: (e: KeyboardEvent) => void;\n onSearch: (value: string) => void;\n\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n isClearable?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n id?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n};\n\nexport interface EuiFieldSearchSignature {\n Element: HTMLInputElement;\n Args: EuiFieldSearchArgs;\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n field: [];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nexport default class EuiFieldSearch extends Component<EuiFieldSearchSignature> {\n @tracked inputElement: HTMLInputElement | null = null;\n @tracked value: string | undefined =\n this.args.value ||\n (this.args.defaultValue ? `${this.args.defaultValue}` : '');\n\n @argOrDefaultDecorator(false) incremental = false;\n\n @action\n setValue(e: Event): void {\n const value = (e.target as HTMLInputElement).value;\n\n if (this.value !== value) {\n this.value = value;\n }\n\n this.args.onSearch?.(this.value);\n }\n\n @action\n onKeyUp(\n incremental: boolean,\n onSearch: (value: string) => void,\n e: KeyboardEvent\n ): void {\n this.value = (e.target as HTMLInputElement).value;\n\n if (this.args.onKeyUp) {\n this.args.onKeyUp(e);\n\n if (e.defaultPrevented) {\n return;\n }\n }\n\n if (\n onSearch &&\n ((e.key !== keys.ENTER && incremental) ||\n (e.key === keys.ENTER && !isSearchSupported))\n ) {\n onSearch((e.target as HTMLInputElement).value);\n }\n }\n\n @action\n didUpdateValue() {\n this.value = this.args.value;\n }\n\n @action\n onClear(): void {\n const nativeInputValue = Object.getOwnPropertyDescriptor(\n HTMLInputElement.prototype,\n 'value'\n );\n const nativeInputValueSetter = nativeInputValue\n ? nativeInputValue.set\n : undefined;\n\n if (nativeInputValueSetter) {\n nativeInputValueSetter.call(this.inputElement, '');\n }\n\n // dispatch input event, with IE11 support/fallback\n let event;\n\n if ('Event' in window && typeof Event === 'function') {\n event = new Event('input', {\n bubbles: true,\n cancelable: false\n });\n } else {\n // IE11\n event = document.createEvent('Event');\n event.initEvent('input', true, false);\n }\n\n if (this.inputElement) {\n if (event) {\n this.inputElement.dispatchEvent(event);\n }\n\n // set focus on the search field\n this.inputElement.focus();\n this.inputElement.dispatchEvent(new Event('change'));\n }\n\n this.value = '';\n\n if (this.args.onSearch && this.incremental) {\n this.args.onSearch('');\n }\n }\n\n @action\n didInsertInput(inputRef: HTMLInputElement): void {\n this.inputElement = inputRef;\n isSearchSupported = Browser.isEventSupported('search', this.inputElement);\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n this.inputElement = null;\n }\n\n <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiFieldSearch--fullWidth\")\n (if @compressed \"euiFieldSearch--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldSearch--inGroup\")\n (if @isLoading \"euiFieldSearch--isLoading\")\n (if\n (and (argOrDefault @isClearable true) @value)\n \"euiFieldSearch--isClearable\"\n )\n \"euiFieldSearch\"\n )\n as |classes|\n }}\n <EuiFormControlLayout\n @icon=\"search\"\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @disabled={{@disabled}}\n @clear={{if\n (and\n @isClearable\n @value\n (not @readOnly)\n (and (not @isDisabled) (not @disabled))\n )\n this.onClear\n }}\n @compressed={{@compressed}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n value={{this.value}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n ...attributes\n {{on \"keyup\" (fn this.onKeyUp this.incremental @onSearch)}}\n {{on \"search\" this.setValue}}\n {{on \"change\" this.setValue}}\n {{didInsert this.didInsertInput}}\n {{didUpdate this.didUpdateValue @value}}\n {{validatableControl @isInvalid}}\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n </template>\n}\n"],"names":["isSearchSupported","EuiFieldSearch","Component","g","prototype","tracked","i","void 0","args","value","defaultValue","argOrDefaultDecorator","setValue","e","target","onSearch","n","action","onKeyUp","incremental","defaultPrevented","key","keys","ENTER","didUpdateValue","onClear","nativeInputValue","Object","getOwnPropertyDescriptor","HTMLInputElement","nativeInputValueSetter","set","undefined","call","inputElement","event","window","Event","bubbles","cancelable","document","createEvent","initEvent","dispatchEvent","focus","didInsertInput","inputRef","Browser","isEventSupported","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","EuiFormControlLayout","on","fn","didInsert","didUpdate","validatableControl"],"mappings":"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"}
|
|
@@ -106,6 +106,10 @@ class EuiFilePickerComponent extends Component {
|
|
|
106
106
|
static {
|
|
107
107
|
n(this.prototype, "didInsertInput", [action]);
|
|
108
108
|
}
|
|
109
|
+
willDestroy() {
|
|
110
|
+
super.willDestroy();
|
|
111
|
+
this.fileInput = null;
|
|
112
|
+
}
|
|
109
113
|
static {
|
|
110
114
|
setComponentTemplate(precompileTemplate("\n {{#let (classNames (if @compressed \"euiFilePicker--compressed\") (if @fullWidth \"euiFilePicker--fullWidth\") (if @isInvalid \"euiFilePicker--isInvalid\") (if @isLoading \"euiFilePicker--isLoading\") display=this.display componentName=\"EuiFilePicker\") (argOrDefault @id (randomId)) as |classes inputId|}}\n {{#let (if inputId (concat inputId \"-filePicker__prompt\") (randomId)) (notEq this.promptText null) (eq this.display \"default\") as |promptId isOverridingInitialPrompt normalFormControl|}}\n <div class=\"{{classes}}\n {{if this.isHoveringDrop \"euiFilePicker__showDrop\"}}\n {{if isOverridingInitialPrompt \"euiFilePicker--hasFiles\"}}\">\n <div class=\"euiFilePicker__wrap\">\n <input type=\"file\" id={{inputId}} name={{@name}} class=\"euiFilePicker__input\" disabled={{@disabled}} aria-describedby={{promptId}} multiple={{@multiple}} {{on \"dragover\" this.showDrop}} {{on \"dragleave\" this.hideDrop}} {{on \"drop\" this.hideDrop}} {{on \"change\" this.handleChange}} {{didInsert this.didInsertInput}} {{validatableControl @isInvalid}} ...attributes />\n <div class=\"euiFilePicker__prompt\" id={{promptId}}>\n <EuiIcon @iconClasses=\"euiFilePicker__icon\" @type=\"importAction\" @size={{if true \"m\" \"l\"}} aria-hidden=\"true\" />\n <div class=\"euiFilePicker__promptText\">\n {{if this.promptText this.promptText this.initialPromptText}}\n </div>\n {{#if (and @isLoading normalFormControl)}}\n <EuiLoadingSpinner class=\"euiFilePicker__loadingSpinner\" />\n {{else if isOverridingInitialPrompt}}\n {{#if normalFormControl}}\n <button type=\"button\" aria-label=\"Clear selected files\" class=\"euiFilePicker__clearButton\" {{on \"click\" this.removeFiles}}>\n <EuiIcon @iconClasses=\"euiFilePicker__clearIcon\" @type=\"cross\" />\n </button>\n {{else}}\n <EuiButtonEmpty aria-label=\"Clear selected files\" class=\"euiFilePicker__clearButton\" @size=\"xs\" {{on \"click\" this.removeFiles}}>\n Remove\n </EuiButtonEmpty>\n {{/if}}\n {{/if}}\n {{#if (and (not normalFormControl) @isLoading)}}\n <EuiProgress @size=\"xs\" @color=\"accent\" position=\"absolute\" />\n {{/if}}\n </div>\n </div>\n </div>\n {{/let}}\n {{/let}}\n ", {
|
|
111
115
|
strictMode: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-file-picker.js","sources":["../../src/components/eui-file-picker.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { concat } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport { and, eq, not, notEq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\nimport EuiProgress from './eui-progress.gts';\n\nimport type { displayMapping } from '../utils/css-mappings/eui-file-picker.ts';\n\nexport type EuiFilePickerDisplay = keyof typeof displayMapping;\n\n/**\n * You can find more typing on the template\n */\ntype EuiFilePicker = {\n id?: string;\n name?: string;\n class?: string;\n /**\n * The content that appears in the dropzone if no file is attached\n */\n initialPromptText?: Component | string | null;\n /**\n * Use as a callback to access the HTML FileList API\n */\n onChange?: (files: FileList | null) => void;\n /**\n * Reduces the size to a typical (compressed) input\n */\n compressed?: boolean;\n /**\n * Size or type of display;\n * `default` for normal height, similar to other controls;\n * `large` for taller size\n */\n display?: EuiFilePickerDisplay;\n fullWidth?: boolean;\n isInvalid?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n multiple?: boolean;\n\n /**\n * Optionally pass a fn to get the instance of the component to access it programatically\n */\n ref?: (c: typeof EuiFilePickerComponent) => void;\n};\n\nexport interface EuiFilePickerSignature {\n Element: HTMLInputElement;\n Args: EuiFilePicker;\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiFilePickerComponent extends Component<EuiFilePickerSignature> {\n @tracked fileInput: HTMLInputElement | null = null;\n @tracked promptText: string | null | undefined = null;\n @tracked isHoveringDrop = false;\n\n @argOrDefaultDecorator('Select or drag and drop a file') initialPromptText!:\n | Component\n | string\n | null;\n\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator('') display!: string;\n\n @action\n showDrop(): void {\n if (!this.args.disabled) {\n this.isHoveringDrop = true;\n }\n }\n\n @action\n hideDrop(): void {\n this.isHoveringDrop = false;\n }\n\n @action\n handleChange(): void {\n if (!this.fileInput) return;\n\n if (this.fileInput.files && this.fileInput.files.length > 1) {\n this.promptText = `${this.fileInput.files.length} files selected`;\n // TODO: Change when EuiI18n is available\n // <EuiI18n\n // token=\"euiFilePicker.filesSelected\"\n // default=\"{fileCount} files selected\"\n // values={{ fileCount: this.fileInput.files.length }}\n // />\n } else if (this.fileInput.files && this.fileInput.files.length === 0) {\n this.promptText = null;\n } else {\n this.promptText = this.fileInput.value.split('\\\\').pop();\n }\n\n const { onChange } = this.args;\n\n if (onChange) {\n onChange(this.fileInput.files);\n }\n }\n\n @action\n removeFiles(e?: MouseEvent): void {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (!this.fileInput) return;\n\n this.fileInput.value = '';\n this.handleChange();\n }\n\n @action\n didInsertInput(inputRef: HTMLInputElement): void {\n this.fileInput = inputRef;\n this.args.ref?.(this as any as typeof EuiFilePickerComponent);\n }\n\n <template>\n {{#let\n (classNames\n (if @compressed \"euiFilePicker--compressed\")\n (if @fullWidth \"euiFilePicker--fullWidth\")\n (if @isInvalid \"euiFilePicker--isInvalid\")\n (if @isLoading \"euiFilePicker--isLoading\")\n display=this.display\n componentName=\"EuiFilePicker\"\n )\n (argOrDefault @id (randomId))\n as |classes inputId|\n }}\n {{#let\n (if inputId (concat inputId \"-filePicker__prompt\") (randomId))\n (notEq this.promptText null)\n (eq this.display \"default\")\n as |promptId isOverridingInitialPrompt normalFormControl|\n }}\n <div\n class=\"{{classes}}\n {{if this.isHoveringDrop 'euiFilePicker__showDrop'}}\n {{if isOverridingInitialPrompt 'euiFilePicker--hasFiles'}}\"\n >\n <div class=\"euiFilePicker__wrap\">\n <input\n type=\"file\"\n id={{inputId}}\n name={{@name}}\n class=\"euiFilePicker__input\"\n disabled={{@disabled}}\n aria-describedby={{promptId}}\n multiple={{@multiple}}\n {{on \"dragover\" this.showDrop}}\n {{on \"dragleave\" this.hideDrop}}\n {{on \"drop\" this.hideDrop}}\n {{on \"change\" this.handleChange}}\n {{didInsert this.didInsertInput}}\n {{validatableControl @isInvalid}}\n ...attributes\n />\n <div class=\"euiFilePicker__prompt\" id={{promptId}}>\n <EuiIcon\n @iconClasses=\"euiFilePicker__icon\"\n @type=\"importAction\"\n @size={{if true \"m\" \"l\"}}\n aria-hidden=\"true\"\n />\n <div class=\"euiFilePicker__promptText\">\n {{if this.promptText this.promptText this.initialPromptText}}\n </div>\n {{#if (and @isLoading normalFormControl)}}\n <EuiLoadingSpinner class=\"euiFilePicker__loadingSpinner\" />\n {{else if isOverridingInitialPrompt}}\n {{#if normalFormControl}}\n <button\n type=\"button\"\n aria-label=\"Clear selected files\"\n class=\"euiFilePicker__clearButton\"\n {{on \"click\" this.removeFiles}}\n >\n <EuiIcon\n @iconClasses=\"euiFilePicker__clearIcon\"\n @type=\"cross\"\n />\n </button>\n {{else}}\n <EuiButtonEmpty\n aria-label=\"Clear selected files\"\n class=\"euiFilePicker__clearButton\"\n @size=\"xs\"\n {{on \"click\" this.removeFiles}}\n >\n Remove\n </EuiButtonEmpty>\n {{/if}}\n {{/if}}\n {{#if (and (not normalFormControl) @isLoading)}}\n <EuiProgress @size=\"xs\" @color=\"accent\" position=\"absolute\" />\n {{/if}}\n </div>\n </div>\n </div>\n {{/let}}\n {{/let}}\n </template>\n}\n"],"names":["EuiFilePickerComponent","Component","g","prototype","tracked","i","void 0","argOrDefaultDecorator","showDrop","args","disabled","isHoveringDrop","n","action","hideDrop","handleChange","fileInput","files","length","promptText","value","split","pop","onChange","removeFiles","e","stopPropagation","preventDefault","didInsertInput","inputRef","ref","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","randomId","concat","notEq","eq","on","didInsert","validatableControl","EuiIcon","and","EuiLoadingSpinner","EuiButtonEmpty","not","EuiProgress"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-file-picker.js","sources":["../../src/components/eui-file-picker.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { concat } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport { and, eq, not, notEq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\nimport EuiProgress from './eui-progress.gts';\n\nimport type { displayMapping } from '../utils/css-mappings/eui-file-picker.ts';\n\nexport type EuiFilePickerDisplay = keyof typeof displayMapping;\n\n/**\n * You can find more typing on the template\n */\ntype EuiFilePicker = {\n id?: string;\n name?: string;\n class?: string;\n /**\n * The content that appears in the dropzone if no file is attached\n */\n initialPromptText?: Component | string | null;\n /**\n * Use as a callback to access the HTML FileList API\n */\n onChange?: (files: FileList | null) => void;\n /**\n * Reduces the size to a typical (compressed) input\n */\n compressed?: boolean;\n /**\n * Size or type of display;\n * `default` for normal height, similar to other controls;\n * `large` for taller size\n */\n display?: EuiFilePickerDisplay;\n fullWidth?: boolean;\n isInvalid?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n multiple?: boolean;\n\n /**\n * Optionally pass a fn to get the instance of the component to access it programatically\n */\n ref?: (c: typeof EuiFilePickerComponent) => void;\n};\n\nexport interface EuiFilePickerSignature {\n Element: HTMLInputElement;\n Args: EuiFilePicker;\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiFilePickerComponent extends Component<EuiFilePickerSignature> {\n @tracked fileInput: HTMLInputElement | null = null;\n @tracked promptText: string | null | undefined = null;\n @tracked isHoveringDrop = false;\n\n @argOrDefaultDecorator('Select or drag and drop a file') initialPromptText!:\n | Component\n | string\n | null;\n\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator('') display!: string;\n\n @action\n showDrop(): void {\n if (!this.args.disabled) {\n this.isHoveringDrop = true;\n }\n }\n\n @action\n hideDrop(): void {\n this.isHoveringDrop = false;\n }\n\n @action\n handleChange(): void {\n if (!this.fileInput) return;\n\n if (this.fileInput.files && this.fileInput.files.length > 1) {\n this.promptText = `${this.fileInput.files.length} files selected`;\n // TODO: Change when EuiI18n is available\n // <EuiI18n\n // token=\"euiFilePicker.filesSelected\"\n // default=\"{fileCount} files selected\"\n // values={{ fileCount: this.fileInput.files.length }}\n // />\n } else if (this.fileInput.files && this.fileInput.files.length === 0) {\n this.promptText = null;\n } else {\n this.promptText = this.fileInput.value.split('\\\\').pop();\n }\n\n const { onChange } = this.args;\n\n if (onChange) {\n onChange(this.fileInput.files);\n }\n }\n\n @action\n removeFiles(e?: MouseEvent): void {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (!this.fileInput) return;\n\n this.fileInput.value = '';\n this.handleChange();\n }\n\n @action\n didInsertInput(inputRef: HTMLInputElement): void {\n this.fileInput = inputRef;\n this.args.ref?.(this as any as typeof EuiFilePickerComponent);\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n this.fileInput = null;\n }\n\n <template>\n {{#let\n (classNames\n (if @compressed \"euiFilePicker--compressed\")\n (if @fullWidth \"euiFilePicker--fullWidth\")\n (if @isInvalid \"euiFilePicker--isInvalid\")\n (if @isLoading \"euiFilePicker--isLoading\")\n display=this.display\n componentName=\"EuiFilePicker\"\n )\n (argOrDefault @id (randomId))\n as |classes inputId|\n }}\n {{#let\n (if inputId (concat inputId \"-filePicker__prompt\") (randomId))\n (notEq this.promptText null)\n (eq this.display \"default\")\n as |promptId isOverridingInitialPrompt normalFormControl|\n }}\n <div\n class=\"{{classes}}\n {{if this.isHoveringDrop 'euiFilePicker__showDrop'}}\n {{if isOverridingInitialPrompt 'euiFilePicker--hasFiles'}}\"\n >\n <div class=\"euiFilePicker__wrap\">\n <input\n type=\"file\"\n id={{inputId}}\n name={{@name}}\n class=\"euiFilePicker__input\"\n disabled={{@disabled}}\n aria-describedby={{promptId}}\n multiple={{@multiple}}\n {{on \"dragover\" this.showDrop}}\n {{on \"dragleave\" this.hideDrop}}\n {{on \"drop\" this.hideDrop}}\n {{on \"change\" this.handleChange}}\n {{didInsert this.didInsertInput}}\n {{validatableControl @isInvalid}}\n ...attributes\n />\n <div class=\"euiFilePicker__prompt\" id={{promptId}}>\n <EuiIcon\n @iconClasses=\"euiFilePicker__icon\"\n @type=\"importAction\"\n @size={{if true \"m\" \"l\"}}\n aria-hidden=\"true\"\n />\n <div class=\"euiFilePicker__promptText\">\n {{if this.promptText this.promptText this.initialPromptText}}\n </div>\n {{#if (and @isLoading normalFormControl)}}\n <EuiLoadingSpinner class=\"euiFilePicker__loadingSpinner\" />\n {{else if isOverridingInitialPrompt}}\n {{#if normalFormControl}}\n <button\n type=\"button\"\n aria-label=\"Clear selected files\"\n class=\"euiFilePicker__clearButton\"\n {{on \"click\" this.removeFiles}}\n >\n <EuiIcon\n @iconClasses=\"euiFilePicker__clearIcon\"\n @type=\"cross\"\n />\n </button>\n {{else}}\n <EuiButtonEmpty\n aria-label=\"Clear selected files\"\n class=\"euiFilePicker__clearButton\"\n @size=\"xs\"\n {{on \"click\" this.removeFiles}}\n >\n Remove\n </EuiButtonEmpty>\n {{/if}}\n {{/if}}\n {{#if (and (not normalFormControl) @isLoading)}}\n <EuiProgress @size=\"xs\" @color=\"accent\" position=\"absolute\" />\n {{/if}}\n </div>\n </div>\n </div>\n {{/let}}\n {{/let}}\n </template>\n}\n"],"names":["EuiFilePickerComponent","Component","g","prototype","tracked","i","void 0","argOrDefaultDecorator","showDrop","args","disabled","isHoveringDrop","n","action","hideDrop","handleChange","fileInput","files","length","promptText","value","split","pop","onChange","removeFiles","e","stopPropagation","preventDefault","didInsertInput","inputRef","ref","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","randomId","concat","notEq","eq","on","didInsert","validatableControl","EuiIcon","and","EuiLoadingSpinner","EuiButtonEmpty","not","EuiProgress"],"mappings":"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"}
|
|
@@ -177,6 +177,7 @@ class EuiGlobalToastList extends Component {
|
|
|
177
177
|
timer?.clear();
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
|
+
this.listElement = null;
|
|
180
181
|
}
|
|
181
182
|
static {
|
|
182
183
|
setComponentTemplate(precompileTemplate("\n <div aria-live=\"polite\" role=\"region\" class={{classNames componentName=\"EuiGlobalToastList\" side=(argOrDefault @side \"right\")}} style={{unless this.euiToaster.toasts.length \"padding:0px;\"}} {{didInsert this.didInsert}} {{on \"scroll\" this.onScroll}} {{on \"mouseenter\" this.onMouseEnter}} {{on \"mouseleave\" this.onMouseLeave}} ...attributes>\n {{#each this.euiToaster.toasts as |toast|}}\n <EuiToast class={{classNames \"euiGlobalToastListItem\" (if (get this.toastIdToDismissedMap toast.id) \"euiGlobalToastListItem-isDismissed\")}} @title={{toast.title}} @useMarkdownFormat={{toast.useMarkdownFormat}} @body={{toast.body}} @color={{toast.color}} @iconType={{toast.iconType}} @onClose={{queue (fn this.dismissToast toast) (optional toast.onClose)}} {{didInsert (fn this.didInsertToast toast)}} {{on \"focus\" this.onMouseEnter}} {{on \"blur\" this.onMouseLeave}} />\n {{/each}}\n </div>\n ", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-global-toast-list.js","sources":["../../src/components/eui-global-toast-list.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { inject as service } from '@ember/service';\nimport type Owner from '@ember/owner';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport Timer from '../utils/timer.ts';\nimport EuiToast from './eui-toast.gts';\n\nimport type EuiToasterService from '../services/eui-toaster';\nimport type {\n EuiToastProps,\n EuiToastPropsWithId\n} from '../services/eui-toaster';\nimport type { sideMapping } from '../utils/css-mappings/eui-global-toast-list.ts';\n\ntype EuiToastSide = keyof typeof sideMapping;\n\ntype GlobalToastListArgs = {\n dismissToast?: (this: EuiGlobalToastList, toast: EuiToastProps) => void;\n toastLifeTimeMs: number;\n\n /*\n Determines which side of the browser window the toasts should appear\n Default: 'right'\n\n */\n side?: EuiToastSide;\n};\n\nconst TOAST_FADE_OUT_MS = 250;\n\nexport interface EuiGlobalToastListItemSignature {\n Element: HTMLDivElement;\n Args: GlobalToastListArgs;\n}\n\nexport default class EuiGlobalToastList extends Component<EuiGlobalToastListItemSignature> {\n @service declare euiToaster: EuiToasterService;\n\n dismissTimeoutIds: number[] = [];\n toastIdToTimerMap: { [toastId: string]: Timer } = {};\n\n isScrollingToBottom = false;\n isScrolledToBottom = true;\n isUserInteracting = false;\n\n // See [Return Value](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#Return_value)\n // for information on initial value of 0\n isScrollingAnimationFrame = 0;\n startScrollingAnimationFrame = 0;\n\n listElement: Element | null = null;\n @tracked toastIdToDismissedMap: {\n [toastId: string]: boolean;\n } = {};\n\n startScrollingToBottom(): void {\n this.isScrollingToBottom = true;\n\n const scrollToBottom = () => {\n // Although we cancel the requestAnimationFrame in componentWillUnmount,\n // it's possible for this.listElement to become null in the meantime\n if (!this.listElement) {\n return;\n }\n\n const position = this.listElement.scrollTop;\n const destination =\n this.listElement.scrollHeight - this.listElement.clientHeight;\n const distanceToDestination = destination - position;\n\n if (distanceToDestination < 5) {\n this.listElement.scrollTop = destination;\n this.isScrollingToBottom = false;\n this.isScrolledToBottom = true;\n\n return;\n }\n\n this.listElement.scrollTop = position + distanceToDestination * 0.25;\n\n if (this.isScrollingToBottom) {\n this.isScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n };\n\n this.startScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n\n @action\n didInsertToast(toast: EuiToastPropsWithId): void {\n this.scheduleToastForDismissal(toast);\n\n if (!this.isUserInteracting) {\n // If the user has scrolled up the toast list then we don't want to annoy them by scrolling\n // all the way back to the bottom.\n if (this.isScrolledToBottom) {\n this.startScrollingToBottom();\n }\n }\n }\n\n @action\n onMouseEnter(): void {\n // Stop scrolling to bottom if we're in mid-scroll, because the user wants to interact with\n // the list.\n this.isScrollingToBottom = false;\n this.isUserInteracting = true;\n\n // Don't let toasts dismiss themselves while the user is interacting with them.\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.pause();\n }\n }\n }\n\n @action\n onMouseLeave(): void {\n this.isUserInteracting = false;\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.resume();\n }\n }\n }\n\n @action\n onScroll(): void {\n if (this.listElement) {\n this.isScrolledToBottom =\n this.listElement.scrollHeight - this.listElement.scrollTop ===\n this.listElement.clientHeight;\n }\n }\n\n scheduleAllToastsForDismissal(): void {\n this.euiToaster.toasts.forEach((toast) => {\n if (!this.toastIdToTimerMap[toast.id]) {\n this.scheduleToastForDismissal(toast);\n }\n });\n }\n\n @action\n scheduleToastForDismissal(toast: EuiToastPropsWithId): void {\n // Start fading the toast out once its lifetime elapses.\n this.toastIdToTimerMap[toast.id] = new Timer(\n this.dismissToast.bind(this, toast),\n toast.toastLifeTimeMs != null\n ? toast.toastLifeTimeMs\n : this.args.toastLifeTimeMs\n );\n }\n\n @action\n dismissToast(toast: EuiToastPropsWithId): void {\n // Remove the toast after it's done fading out.\n this.dismissTimeoutIds.push(\n window.setTimeout(() => {\n // Because this is wrapped in a setTimeout, and because React does not guarantee when\n // state updates happen, it is possible to double-dismiss a toast\n // including by double-clicking the \"x\" button on the toast\n // so, first check to make sure we haven't already dismissed this toast\n if (this.toastIdToTimerMap.hasOwnProperty(toast.id)) {\n if (this.args.dismissToast) {\n this.args.dismissToast.apply(this, [toast]);\n }\n\n this.toastIdToTimerMap[toast.id]!.clear();\n delete this.toastIdToTimerMap[toast.id];\n\n delete this.toastIdToDismissedMap[toast.id];\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap\n };\n this.euiToaster.remove(toast);\n }\n }, TOAST_FADE_OUT_MS)\n );\n\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap,\n [toast.id]: true\n };\n }\n\n constructor(owner: Owner, args: GlobalToastListArgs) {\n super(owner, args);\n this.scheduleAllToastsForDismissal();\n }\n\n @action\n didInsert(element: Element): void {\n this.listElement = element;\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.isScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.isScrollingAnimationFrame);\n }\n\n if (this.startScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.startScrollingAnimationFrame);\n }\n\n this.dismissTimeoutIds.forEach(clearTimeout);\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.clear();\n }\n }\n }\n\n <template>\n <div\n aria-live=\"polite\"\n role=\"region\"\n class={{classNames\n componentName=\"EuiGlobalToastList\"\n side=(argOrDefault @side \"right\")\n }}\n style={{unless this.euiToaster.toasts.length \"padding:0px;\"}}\n {{didInsert this.didInsert}}\n {{on \"scroll\" this.onScroll}}\n {{on \"mouseenter\" this.onMouseEnter}}\n {{on \"mouseleave\" this.onMouseLeave}}\n ...attributes\n >\n {{#each this.euiToaster.toasts as |toast|}}\n <EuiToast\n class={{classNames\n \"euiGlobalToastListItem\"\n (if\n (get this.toastIdToDismissedMap toast.id)\n \"euiGlobalToastListItem-isDismissed\"\n )\n }}\n @title={{toast.title}}\n @useMarkdownFormat={{toast.useMarkdownFormat}}\n @body={{toast.body}}\n @color={{toast.color}}\n @iconType={{toast.iconType}}\n @onClose={{queue\n (fn this.dismissToast toast)\n (optional toast.onClose)\n }}\n {{didInsert (fn this.didInsertToast toast)}}\n {{on \"focus\" this.onMouseEnter}}\n {{on \"blur\" this.onMouseLeave}}\n />\n {{/each}}\n </div>\n </template>\n}\n"],"names":["TOAST_FADE_OUT_MS","EuiGlobalToastList","Component","g","prototype","service","i","void 0","dismissTimeoutIds","toastIdToTimerMap","isScrollingToBottom","isScrolledToBottom","isUserInteracting","isScrollingAnimationFrame","startScrollingAnimationFrame","listElement","tracked","startScrollingToBottom","scrollToBottom","position","scrollTop","destination","scrollHeight","clientHeight","distanceToDestination","window","requestAnimationFrame","didInsertToast","toast","scheduleToastForDismissal","n","action","onMouseEnter","toastId","hasOwnProperty","timer","pause","onMouseLeave","resume","onScroll","scheduleAllToastsForDismissal","euiToaster","toasts","forEach","id","Timer","dismissToast","bind","toastLifeTimeMs","args","push","setTimeout","apply","clear","toastIdToDismissedMap","remove","constructor","owner","didInsert","element","willDestroy","cancelAnimationFrame","clearTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","on","EuiToast","get","queue","fn","optional"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-global-toast-list.js","sources":["../../src/components/eui-global-toast-list.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { inject as service } from '@ember/service';\nimport type Owner from '@ember/owner';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport Timer from '../utils/timer.ts';\nimport EuiToast from './eui-toast.gts';\n\nimport type EuiToasterService from '../services/eui-toaster';\nimport type {\n EuiToastProps,\n EuiToastPropsWithId\n} from '../services/eui-toaster';\nimport type { sideMapping } from '../utils/css-mappings/eui-global-toast-list.ts';\n\ntype EuiToastSide = keyof typeof sideMapping;\n\ntype GlobalToastListArgs = {\n dismissToast?: (this: EuiGlobalToastList, toast: EuiToastProps) => void;\n toastLifeTimeMs: number;\n\n /*\n Determines which side of the browser window the toasts should appear\n Default: 'right'\n\n */\n side?: EuiToastSide;\n};\n\nconst TOAST_FADE_OUT_MS = 250;\n\nexport interface EuiGlobalToastListItemSignature {\n Element: HTMLDivElement;\n Args: GlobalToastListArgs;\n}\n\nexport default class EuiGlobalToastList extends Component<EuiGlobalToastListItemSignature> {\n @service declare euiToaster: EuiToasterService;\n\n dismissTimeoutIds: number[] = [];\n toastIdToTimerMap: { [toastId: string]: Timer } = {};\n\n isScrollingToBottom = false;\n isScrolledToBottom = true;\n isUserInteracting = false;\n\n // See [Return Value](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#Return_value)\n // for information on initial value of 0\n isScrollingAnimationFrame = 0;\n startScrollingAnimationFrame = 0;\n\n listElement: Element | null = null;\n @tracked toastIdToDismissedMap: {\n [toastId: string]: boolean;\n } = {};\n\n startScrollingToBottom(): void {\n this.isScrollingToBottom = true;\n\n const scrollToBottom = () => {\n // Although we cancel the requestAnimationFrame in componentWillUnmount,\n // it's possible for this.listElement to become null in the meantime\n if (!this.listElement) {\n return;\n }\n\n const position = this.listElement.scrollTop;\n const destination =\n this.listElement.scrollHeight - this.listElement.clientHeight;\n const distanceToDestination = destination - position;\n\n if (distanceToDestination < 5) {\n this.listElement.scrollTop = destination;\n this.isScrollingToBottom = false;\n this.isScrolledToBottom = true;\n\n return;\n }\n\n this.listElement.scrollTop = position + distanceToDestination * 0.25;\n\n if (this.isScrollingToBottom) {\n this.isScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n };\n\n this.startScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n\n @action\n didInsertToast(toast: EuiToastPropsWithId): void {\n this.scheduleToastForDismissal(toast);\n\n if (!this.isUserInteracting) {\n // If the user has scrolled up the toast list then we don't want to annoy them by scrolling\n // all the way back to the bottom.\n if (this.isScrolledToBottom) {\n this.startScrollingToBottom();\n }\n }\n }\n\n @action\n onMouseEnter(): void {\n // Stop scrolling to bottom if we're in mid-scroll, because the user wants to interact with\n // the list.\n this.isScrollingToBottom = false;\n this.isUserInteracting = true;\n\n // Don't let toasts dismiss themselves while the user is interacting with them.\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.pause();\n }\n }\n }\n\n @action\n onMouseLeave(): void {\n this.isUserInteracting = false;\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.resume();\n }\n }\n }\n\n @action\n onScroll(): void {\n if (this.listElement) {\n this.isScrolledToBottom =\n this.listElement.scrollHeight - this.listElement.scrollTop ===\n this.listElement.clientHeight;\n }\n }\n\n scheduleAllToastsForDismissal(): void {\n this.euiToaster.toasts.forEach((toast) => {\n if (!this.toastIdToTimerMap[toast.id]) {\n this.scheduleToastForDismissal(toast);\n }\n });\n }\n\n @action\n scheduleToastForDismissal(toast: EuiToastPropsWithId): void {\n // Start fading the toast out once its lifetime elapses.\n this.toastIdToTimerMap[toast.id] = new Timer(\n this.dismissToast.bind(this, toast),\n toast.toastLifeTimeMs != null\n ? toast.toastLifeTimeMs\n : this.args.toastLifeTimeMs\n );\n }\n\n @action\n dismissToast(toast: EuiToastPropsWithId): void {\n // Remove the toast after it's done fading out.\n this.dismissTimeoutIds.push(\n window.setTimeout(() => {\n // Because this is wrapped in a setTimeout, and because React does not guarantee when\n // state updates happen, it is possible to double-dismiss a toast\n // including by double-clicking the \"x\" button on the toast\n // so, first check to make sure we haven't already dismissed this toast\n if (this.toastIdToTimerMap.hasOwnProperty(toast.id)) {\n if (this.args.dismissToast) {\n this.args.dismissToast.apply(this, [toast]);\n }\n\n this.toastIdToTimerMap[toast.id]!.clear();\n delete this.toastIdToTimerMap[toast.id];\n\n delete this.toastIdToDismissedMap[toast.id];\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap\n };\n this.euiToaster.remove(toast);\n }\n }, TOAST_FADE_OUT_MS)\n );\n\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap,\n [toast.id]: true\n };\n }\n\n constructor(owner: Owner, args: GlobalToastListArgs) {\n super(owner, args);\n this.scheduleAllToastsForDismissal();\n }\n\n @action\n didInsert(element: Element): void {\n this.listElement = element;\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.isScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.isScrollingAnimationFrame);\n }\n\n if (this.startScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.startScrollingAnimationFrame);\n }\n\n this.dismissTimeoutIds.forEach(clearTimeout);\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.clear();\n }\n }\n\n this.listElement = null;\n }\n\n <template>\n <div\n aria-live=\"polite\"\n role=\"region\"\n class={{classNames\n componentName=\"EuiGlobalToastList\"\n side=(argOrDefault @side \"right\")\n }}\n style={{unless this.euiToaster.toasts.length \"padding:0px;\"}}\n {{didInsert this.didInsert}}\n {{on \"scroll\" this.onScroll}}\n {{on \"mouseenter\" this.onMouseEnter}}\n {{on \"mouseleave\" this.onMouseLeave}}\n ...attributes\n >\n {{#each this.euiToaster.toasts as |toast|}}\n <EuiToast\n class={{classNames\n \"euiGlobalToastListItem\"\n (if\n (get this.toastIdToDismissedMap toast.id)\n \"euiGlobalToastListItem-isDismissed\"\n )\n }}\n @title={{toast.title}}\n @useMarkdownFormat={{toast.useMarkdownFormat}}\n @body={{toast.body}}\n @color={{toast.color}}\n @iconType={{toast.iconType}}\n @onClose={{queue\n (fn this.dismissToast toast)\n (optional toast.onClose)\n }}\n {{didInsert (fn this.didInsertToast toast)}}\n {{on \"focus\" this.onMouseEnter}}\n {{on \"blur\" this.onMouseLeave}}\n />\n {{/each}}\n </div>\n </template>\n}\n"],"names":["TOAST_FADE_OUT_MS","EuiGlobalToastList","Component","g","prototype","service","i","void 0","dismissTimeoutIds","toastIdToTimerMap","isScrollingToBottom","isScrolledToBottom","isUserInteracting","isScrollingAnimationFrame","startScrollingAnimationFrame","listElement","tracked","startScrollingToBottom","scrollToBottom","position","scrollTop","destination","scrollHeight","clientHeight","distanceToDestination","window","requestAnimationFrame","didInsertToast","toast","scheduleToastForDismissal","n","action","onMouseEnter","toastId","hasOwnProperty","timer","pause","onMouseLeave","resume","onScroll","scheduleAllToastsForDismissal","euiToaster","toasts","forEach","id","Timer","dismissToast","bind","toastLifeTimeMs","args","push","setTimeout","apply","clear","toastIdToDismissedMap","remove","constructor","owner","didInsert","element","willDestroy","cancelAnimationFrame","clearTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","on","EuiToast","get","queue","fn","optional"],"mappings":"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"}
|
|
@@ -135,6 +135,11 @@ class EuiHeaderSectionItemButtonComponent extends Component {
|
|
|
135
135
|
setButtonRef = ele => {
|
|
136
136
|
this.buttonRef = ele;
|
|
137
137
|
};
|
|
138
|
+
willDestroy() {
|
|
139
|
+
super.willDestroy();
|
|
140
|
+
this.buttonRef = undefined;
|
|
141
|
+
this.animationTargetRef = undefined;
|
|
142
|
+
}
|
|
138
143
|
static {
|
|
139
144
|
setComponentTemplate(precompileTemplate("\n <EuiButtonEmpty class=\"euiHeaderSectionItemButton\" @isDisabled={{@disabled}} @href={{@href}} @color=\"text\" {{didInsert this.setButtonRef}} {{on \"click\" (optional @onClick)}} ...attributes>\n <span {{didInsert this.setAnimationTargetRef}} class=\"euiHeaderSectionItemButton__content\">\n {{yield}}\n </span>\n {{#if @notification}}\n {{#if (eq @notification true)}}\n <EuiIcon @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\" @color={{argOrDefault @notificationColor \"accent\"}} @type=\"dot\" @size=\"l\" />\n {{else if @notification}}\n <EuiHideFor @sizes={{sizes}}>\n <EuiNotificationBadge class=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--badge\" @color={{argOrDefault @notificationColor \"accent\"}}>\n {{@notification}}\n </EuiNotificationBadge>\n </EuiHideFor>\n <EuiShowFor @sizes={{sizes}}>\n <EuiIcon @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\" @color={{argOrDefault @notificationColor \"accent\"}} @type=\"dot\" @size=\"l\" />\n </EuiShowFor>\n {{/if}}\n {{/if}}\n </EuiButtonEmpty>\n ", {
|
|
140
145
|
strictMode: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-header-section-item-button.js","sources":["../../src/components/eui-header-section-item-button.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\nimport EuiHideFor from './eui-hide-for.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiNotificationBadge from './eui-notification-badge.gts';\nimport EuiShowFor from './eui-show-for.gts';\n\nimport type { colorMapping } from '../utils/css-mappings/eui-notification-badge.ts';\nimport type { EuiHideForBreakpoints } from './eui-hide-for';\n\nconst keyframes: Keyframe[] = [\n { transform: 'rotate(0)', offset: 0, easing: 'ease-in-out' },\n {\n transform: 'rotate(30deg)',\n offset: 0.01,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.03,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(34deg)',\n offset: 0.05,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-32deg)',\n offset: 0.07,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(30deg)',\n offset: 0.09,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.11,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(26deg)',\n offset: 0.13,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-24deg)',\n offset: 0.15,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(22deg)',\n offset: 0.17,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-20deg)',\n offset: 0.19,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(18deg)',\n offset: 0.21,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-16deg)',\n offset: 0.23,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(14deg)',\n offset: 0.25,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-12deg)',\n offset: 0.27,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(10deg)',\n offset: 0.29,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-8deg)',\n offset: 0.31,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(6deg)',\n offset: 0.33,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-4deg)',\n offset: 0.35,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(2deg)',\n offset: 0.37,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-1deg)',\n offset: 0.39,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(1deg)',\n offset: 0.41,\n easing: 'ease-in-out'\n },\n { transform: 'rotate(0)', offset: 0.43, easing: 'ease-in-out' },\n { transform: 'rotate(0)', offset: 1, easing: 'ease-in-out' }\n];\n\nexport interface EuiHeaderSectionItemButtonSignature {\n Element: HTMLButtonElement | HTMLAnchorElement;\n Args: {\n ref?: (api: { euiAnimate: () => void }) => void;\n disabled?: boolean;\n href?: string;\n onClick?: (event: MouseEvent) => void;\n notification?: boolean | number;\n notificationColor?: keyof typeof colorMapping;\n };\n Blocks: { default: [] };\n}\n\nconst sizes: EuiHideForBreakpoints[] = ['xs'];\n\nexport default class EuiHeaderSectionItemButtonComponent extends Component<EuiHeaderSectionItemButtonSignature> {\n @tracked buttonRef: HTMLButtonElement | HTMLAnchorElement | undefined;\n @tracked animationTargetRef: HTMLSpanElement | undefined;\n\n setAnimationTargetRef = (ele: HTMLSpanElement) => {\n this.animationTargetRef = ele;\n this.args.ref?.({ euiAnimate: this.animate });\n };\n\n animate = () => {\n this.animationTargetRef?.animate(keyframes, { duration: 5000 });\n };\n\n setButtonRef = (ele: HTMLButtonElement | HTMLAnchorElement) => {\n this.buttonRef = ele;\n };\n\n <template>\n <EuiButtonEmpty\n class=\"euiHeaderSectionItemButton\"\n @isDisabled={{@disabled}}\n @href={{@href}}\n @color=\"text\"\n {{didInsert this.setButtonRef}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n <span\n {{didInsert this.setAnimationTargetRef}}\n class=\"euiHeaderSectionItemButton__content\"\n >\n {{yield}}\n </span>\n {{#if @notification}}\n {{#if (eq @notification true)}}\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n {{else if @notification}}\n <EuiHideFor @sizes={{sizes}}>\n <EuiNotificationBadge\n class=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--badge\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n >\n {{@notification}}\n </EuiNotificationBadge>\n </EuiHideFor>\n <EuiShowFor @sizes={{sizes}}>\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n </EuiShowFor>\n {{/if}}\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["keyframes","transform","offset","easing","sizes","EuiHeaderSectionItemButtonComponent","Component","g","prototype","tracked","i","void 0","setAnimationTargetRef","ele","animationTargetRef","args","ref","euiAnimate","animate","duration","setButtonRef","buttonRef","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","didInsert","on","optional","eq","EuiIcon","argOrDefault","EuiHideFor","EuiNotificationBadge","EuiShowFor"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"eui-header-section-item-button.js","sources":["../../src/components/eui-header-section-item-button.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\nimport EuiHideFor from './eui-hide-for.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiNotificationBadge from './eui-notification-badge.gts';\nimport EuiShowFor from './eui-show-for.gts';\n\nimport type { colorMapping } from '../utils/css-mappings/eui-notification-badge.ts';\nimport type { EuiHideForBreakpoints } from './eui-hide-for';\n\nconst keyframes: Keyframe[] = [\n { transform: 'rotate(0)', offset: 0, easing: 'ease-in-out' },\n {\n transform: 'rotate(30deg)',\n offset: 0.01,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.03,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(34deg)',\n offset: 0.05,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-32deg)',\n offset: 0.07,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(30deg)',\n offset: 0.09,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.11,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(26deg)',\n offset: 0.13,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-24deg)',\n offset: 0.15,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(22deg)',\n offset: 0.17,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-20deg)',\n offset: 0.19,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(18deg)',\n offset: 0.21,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-16deg)',\n offset: 0.23,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(14deg)',\n offset: 0.25,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-12deg)',\n offset: 0.27,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(10deg)',\n offset: 0.29,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-8deg)',\n offset: 0.31,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(6deg)',\n offset: 0.33,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-4deg)',\n offset: 0.35,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(2deg)',\n offset: 0.37,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-1deg)',\n offset: 0.39,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(1deg)',\n offset: 0.41,\n easing: 'ease-in-out'\n },\n { transform: 'rotate(0)', offset: 0.43, easing: 'ease-in-out' },\n { transform: 'rotate(0)', offset: 1, easing: 'ease-in-out' }\n];\n\nexport interface EuiHeaderSectionItemButtonSignature {\n Element: HTMLButtonElement | HTMLAnchorElement;\n Args: {\n ref?: (api: { euiAnimate: () => void }) => void;\n disabled?: boolean;\n href?: string;\n onClick?: (event: MouseEvent) => void;\n notification?: boolean | number;\n notificationColor?: keyof typeof colorMapping;\n };\n Blocks: { default: [] };\n}\n\nconst sizes: EuiHideForBreakpoints[] = ['xs'];\n\nexport default class EuiHeaderSectionItemButtonComponent extends Component<EuiHeaderSectionItemButtonSignature> {\n @tracked buttonRef: HTMLButtonElement | HTMLAnchorElement | undefined;\n @tracked animationTargetRef: HTMLSpanElement | undefined;\n\n setAnimationTargetRef = (ele: HTMLSpanElement) => {\n this.animationTargetRef = ele;\n this.args.ref?.({ euiAnimate: this.animate });\n };\n\n animate = () => {\n this.animationTargetRef?.animate(keyframes, { duration: 5000 });\n };\n\n setButtonRef = (ele: HTMLButtonElement | HTMLAnchorElement) => {\n this.buttonRef = ele;\n };\n\n willDestroy(): void {\n super.willDestroy();\n \n this.buttonRef = undefined;\n this.animationTargetRef = undefined;\n }\n\n <template>\n <EuiButtonEmpty\n class=\"euiHeaderSectionItemButton\"\n @isDisabled={{@disabled}}\n @href={{@href}}\n @color=\"text\"\n {{didInsert this.setButtonRef}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n <span\n {{didInsert this.setAnimationTargetRef}}\n class=\"euiHeaderSectionItemButton__content\"\n >\n {{yield}}\n </span>\n {{#if @notification}}\n {{#if (eq @notification true)}}\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n {{else if @notification}}\n <EuiHideFor @sizes={{sizes}}>\n <EuiNotificationBadge\n class=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--badge\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n >\n {{@notification}}\n </EuiNotificationBadge>\n </EuiHideFor>\n <EuiShowFor @sizes={{sizes}}>\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n </EuiShowFor>\n {{/if}}\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["keyframes","transform","offset","easing","sizes","EuiHeaderSectionItemButtonComponent","Component","g","prototype","tracked","i","void 0","setAnimationTargetRef","ele","animationTargetRef","args","ref","euiAnimate","animate","duration","setButtonRef","buttonRef","willDestroy","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","didInsert","on","optional","eq","EuiIcon","argOrDefault","EuiHideFor","EuiNotificationBadge","EuiShowFor"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-inner-text.js","sources":["../../src/components/eui-inner-text.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\n\nexport interface EuiInnerTextSignature {\n Args: {\n fallback?: string;\n };\n\n Blocks: {\n default: [(ref: HTMLElement) => void, string];\n };\n}\n\nexport default class EuiImage extends Component<EuiInnerTextSignature> {\n @tracked ref: HTMLElement | null = null;\n @tracked innerText = '';\n observer: MutationObserver | null = null;\n\n get innerTextFallback() {\n return this.args.fallback ?? '';\n }\n\n setupObserver() {\n this.observer?.disconnect();\n this.observer = new MutationObserver((mutationsList) => {\n if (mutationsList.length) this.updateInnerText(this.ref);\n });\n\n if (this.ref) {\n this.updateInnerText(this.ref);\n this.observer.observe(this.ref, {\n characterData: true,\n subtree: true,\n childList: true\n });\n }\n }\n\n updateInnerText(node: HTMLElement | null) {\n if (!node) return;\n this.setInnerText(\n // Check for `innerText` implementation rather than a simple OR check\n // because in real cases the result of `innerText` could correctly be `null`\n // while the result of `textContent` could correctly be non-`null` due to\n // differing reliance on browser layout calculations.\n // We prefer the result of `innerText`, if available.\n 'innerText' in node\n ? node.innerText\n : (node as HTMLElement).textContent || this.innerTextFallback\n );\n }\n\n setInnerText(text: string) {\n this.innerText = text;\n }\n\n @action\n setRef(ref: HTMLElement): void {\n this.ref = ref;\n this.setupObserver();\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.observer?.disconnect();\n }\n\n <template>\n {{yield this.setRef this.innerText}}\n </template>\n}\n"],"names":["EuiImage","Component","g","prototype","tracked","i","void 0","observer","innerTextFallback","args","fallback","setupObserver","disconnect","MutationObserver","mutationsList","length","updateInnerText","ref","observe","characterData","subtree","childList","node","setInnerText","innerText","textContent","text","setRef","n","action","willDestroy","setComponentTemplate","precompileTemplate","strictMode"],"mappings":";;;;;;;AAee,MAAMA,iBAAiBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,KAAA,EAAA,CAC7CC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAkC,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,IAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACvCC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAoB,EAAG;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,MAAA;AACxBC,EAAAA,QAAU,GAA0B,IAAK;EAEzC,IAAIC,iBAAoBA,GAAA;AACtB,IAAA,OAAO,IAAI,CAACC,IAAI,CAACC,QAAQ,IAAI,EAAA;AAC/B;AAEAC,EAAAA,aAAgBA,GAAA;AACd,IAAA,IAAI,CAACJ,QAAQ,EAAEK,UAAA,EAAA;AACf,IAAA,IAAI,CAACL,QAAQ,GAAG,IAAIM,iBAAkBC,aAAA,IAAA;MACpC,IAAIA,aAAA,CAAcC,MAAM,EAAE,IAAI,CAACC,eAAe,CAAC,IAAI,CAACC,GAAG,CAAA;AACzD,KAAA,CAAA;IAEA,IAAI,IAAI,CAACA,GAAG,EAAE;AACZ,MAAA,IAAI,CAACD,eAAe,CAAC,IAAI,CAACC,GAAG,CAAA;MAC7B,IAAI,CAACV,QAAQ,CAACW,OAAO,CAAC,IAAI,CAACD,GAAG,EAAE;AAC9BE,QAAAA,aAAe,EAAA,IAAA;AACfC,QAAAA,OAAS,EAAA,IAAA;AACTC,QAAAA,SAAW,EAAA;AACb,OAAA,CAAA;AACF;AACF;EAEAL,eAAgBA,CAAAM,IAAwB,EAAE;IACxC,IAAI,CAACA,IAAM,EAAA;AACX,IAAA,IAAI,CAACC,YAAY;AACf;AACA;AACA;AACA;AACA;AACA,IAAA,WAAA,IAAeD,IACX,GAAAA,IAAA,CAAKE,SAAS,GACbF,IAAA,CAAqBG,WAAW,IAAI,IAAI,CAACjB,iBAAiB,CAAA;AAEnE;EAEAe,YAAaA,CAAAG,IAAY,EAAE;IACzB,IAAI,CAACF,SAAS,GAAGE,IAAA;AACnB;EAGAC,MAAAA,CAAOV,GAAgB,EAAQ;IAC7B,IAAI,CAACA,GAAG,GAAGA,GAAA;IACX,IAAI,CAACN,aAAa,EAAA;AACpB;AAAA,EAAA;IAAAiB,CAAA,CAAA,IAAA,CAAAzB,SAAA,EAAA,QAAA,EAAA,CAJC0B,MAAA,CAAA,CAAA;AAAA;AAMDC,EAAAA,WAAAA,GAAoB;IAClB,KAAK,CAACA,WAAA,EAAA;AACN,IAAA,IAAI,CAACvB,QAAQ,EAAEK,UAAA,EAAA;
|
|
1
|
+
{"version":3,"file":"eui-inner-text.js","sources":["../../src/components/eui-inner-text.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\n\nexport interface EuiInnerTextSignature {\n Args: {\n fallback?: string;\n };\n\n Blocks: {\n default: [(ref: HTMLElement) => void, string];\n };\n}\n\nexport default class EuiImage extends Component<EuiInnerTextSignature> {\n @tracked ref: HTMLElement | null = null;\n @tracked innerText = '';\n observer: MutationObserver | null = null;\n\n get innerTextFallback() {\n return this.args.fallback ?? '';\n }\n\n setupObserver() {\n this.observer?.disconnect();\n this.observer = new MutationObserver((mutationsList) => {\n if (mutationsList.length) this.updateInnerText(this.ref);\n });\n\n if (this.ref) {\n this.updateInnerText(this.ref);\n this.observer.observe(this.ref, {\n characterData: true,\n subtree: true,\n childList: true\n });\n }\n }\n\n updateInnerText(node: HTMLElement | null) {\n if (!node) return;\n this.setInnerText(\n // Check for `innerText` implementation rather than a simple OR check\n // because in real cases the result of `innerText` could correctly be `null`\n // while the result of `textContent` could correctly be non-`null` due to\n // differing reliance on browser layout calculations.\n // We prefer the result of `innerText`, if available.\n 'innerText' in node\n ? node.innerText\n : (node as HTMLElement).textContent || this.innerTextFallback\n );\n }\n\n setInnerText(text: string) {\n this.innerText = text;\n }\n\n @action\n setRef(ref: HTMLElement): void {\n this.ref = ref;\n this.setupObserver();\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.observer?.disconnect();\n this.ref = null;\n }\n\n <template>\n {{yield this.setRef this.innerText}}\n </template>\n}\n"],"names":["EuiImage","Component","g","prototype","tracked","i","void 0","observer","innerTextFallback","args","fallback","setupObserver","disconnect","MutationObserver","mutationsList","length","updateInnerText","ref","observe","characterData","subtree","childList","node","setInnerText","innerText","textContent","text","setRef","n","action","willDestroy","setComponentTemplate","precompileTemplate","strictMode"],"mappings":";;;;;;;AAee,MAAMA,iBAAiBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,KAAA,EAAA,CAC7CC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAkC,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,IAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACvCC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAoB,EAAG;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,MAAA;AACxBC,EAAAA,QAAU,GAA0B,IAAK;EAEzC,IAAIC,iBAAoBA,GAAA;AACtB,IAAA,OAAO,IAAI,CAACC,IAAI,CAACC,QAAQ,IAAI,EAAA;AAC/B;AAEAC,EAAAA,aAAgBA,GAAA;AACd,IAAA,IAAI,CAACJ,QAAQ,EAAEK,UAAA,EAAA;AACf,IAAA,IAAI,CAACL,QAAQ,GAAG,IAAIM,iBAAkBC,aAAA,IAAA;MACpC,IAAIA,aAAA,CAAcC,MAAM,EAAE,IAAI,CAACC,eAAe,CAAC,IAAI,CAACC,GAAG,CAAA;AACzD,KAAA,CAAA;IAEA,IAAI,IAAI,CAACA,GAAG,EAAE;AACZ,MAAA,IAAI,CAACD,eAAe,CAAC,IAAI,CAACC,GAAG,CAAA;MAC7B,IAAI,CAACV,QAAQ,CAACW,OAAO,CAAC,IAAI,CAACD,GAAG,EAAE;AAC9BE,QAAAA,aAAe,EAAA,IAAA;AACfC,QAAAA,OAAS,EAAA,IAAA;AACTC,QAAAA,SAAW,EAAA;AACb,OAAA,CAAA;AACF;AACF;EAEAL,eAAgBA,CAAAM,IAAwB,EAAE;IACxC,IAAI,CAACA,IAAM,EAAA;AACX,IAAA,IAAI,CAACC,YAAY;AACf;AACA;AACA;AACA;AACA;AACA,IAAA,WAAA,IAAeD,IACX,GAAAA,IAAA,CAAKE,SAAS,GACbF,IAAA,CAAqBG,WAAW,IAAI,IAAI,CAACjB,iBAAiB,CAAA;AAEnE;EAEAe,YAAaA,CAAAG,IAAY,EAAE;IACzB,IAAI,CAACF,SAAS,GAAGE,IAAA;AACnB;EAGAC,MAAAA,CAAOV,GAAgB,EAAQ;IAC7B,IAAI,CAACA,GAAG,GAAGA,GAAA;IACX,IAAI,CAACN,aAAa,EAAA;AACpB;AAAA,EAAA;IAAAiB,CAAA,CAAA,IAAA,CAAAzB,SAAA,EAAA,QAAA,EAAA,CAJC0B,MAAA,CAAA,CAAA;AAAA;AAMDC,EAAAA,WAAAA,GAAoB;IAClB,KAAK,CAACA,WAAA,EAAA;AACN,IAAA,IAAI,CAACvB,QAAQ,EAAEK,UAAA,EAAA;IACf,IAAI,CAACK,GAAG,GAAG,IAAA;AACb;AAEA,EAAA;IAAAc,oBAAA,CAAAC,kBAAA,CAEA,gDAAA,EAAA;MAAAC,UAAA,EAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|