@ember-eui/core 12.0.10 → 12.0.12
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-flyout.d.ts +1 -1
- package/declarations/components/eui-flyout.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-footer.d.ts.map +1 -1
- package/declarations/components/eui-markdown-editor-toolbar.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-range.d.ts +2 -2
- package/declarations/components/eui-range.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-flyout.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-footer.js +14 -5
- package/dist/components/eui-markdown-editor-footer.js.map +1 -1
- package/dist/components/eui-markdown-editor-toolbar.js +4 -2
- package/dist/components/eui-markdown-editor-toolbar.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-range.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-tool-tip.js","sources":["../../src/components/eui-tool-tip.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\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 didUpdate from '@ember/render-modifiers/modifiers/did-insert';\nimport { cancel, later, next, scheduleOnce } from '@ember/runloop';\n\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport { keys } from '../utils/keys.ts';\nimport { findPopoverPosition } from '../utils/popover/index.ts';\nimport EuiPortal from './eui-portal.gts';\nimport EuiToolTipPopover from './eui-tool-tip-popover.gts';\n\nimport type { EuiTooltipPopoverSignature } from './eui-tool-tip-popover';\n\nexport type ToolTipPositions = 'top' | 'right' | 'bottom' | 'left';\n\nexport type ToolTipDelay = 'regular' | 'long';\n\nconst delayToMsMap: { [key in ToolTipDelay]: number } = {\n regular: 250,\n long: 250 * 5\n};\n\ninterface ToolTipStyles {\n top: string;\n left: string | 'auto';\n right?: string | 'auto';\n opacity?: string;\n visibility?: 'hidden';\n display?: 'inlineBlock';\n}\n\nconst displayToClassNameMap = {\n inlineBlock: undefined,\n block: 'euiToolTipAnchor--displayBlock'\n};\n\nconst DEFAULT_TOOLTIP_STYLES: ToolTipStyles = {\n // position the tooltip content near the top-left\n // corner of the window so it can't create scrollbars\n // 50,50 because who knows what negative margins, padding, etc\n top: '50px',\n left: '50px',\n // just in case, avoid any potential flicker by hiding\n // the tooltip before it is positioned\n opacity: '0',\n // prevent accidental mouse interaction while positioning\n visibility: 'hidden',\n display: 'inlineBlock'\n};\n\nexport type EuiTooltipArgs = {\n /**\n * Passes onto the the trigger.\n */\n anchorClassName?: string;\n /**\n * Passes onto the tooltip itself, not the trigger.\n */\n className?: string;\n /**\n * The main content of your tooltip.\n */\n content?: string;\n /**\n * Common display alternatives for the anchor wrapper\n */\n display?: keyof typeof displayToClassNameMap;\n /**\n * Delay before showing tooltip. Good for repeatable items.\n */\n delay?: ToolTipDelay;\n /**\n * An optional title for your tooltip.\n */\n title?: string;\n /**\n * Unless you provide one, this will be randomly generated.\n */\n id?: string;\n /**\n * Suggested position. If there is not enough room for it this will be changed.\n */\n position?: ToolTipPositions;\n\n attachTo?: undefined | HTMLElement | string | null;\n\n isShown?: boolean | undefined;\n\n /**\n * If supplied, called when mouse movement causes the tool tip to be\n * hidden.\n */\n onMouseOut?: (event: MouseEvent) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n\n hasTitle?: boolean;\n};\n\nexport interface EuiToolTipSignature {\n Element: EuiTooltipPopoverSignature['Element'];\n Args: EuiTooltipArgs;\n Blocks: {\n default?: [id: string];\n title?: [];\n content?: [];\n anchor?: [id: string];\n };\n}\n\nexport default class EuiToolTip extends Component<EuiToolTipSignature> {\n anchor: null | HTMLElement = null;\n popover: null | HTMLElement = null;\n\n @argOrDefaultDecorator('top') position!: ToolTipPositions;\n @argOrDefaultDecorator('regular') delay!: ToolTipDelay;\n\n //STATE\n @tracked visible = false;\n @tracked hasFocus = false;\n @tracked calculatedPosition: ToolTipPositions = this.position;\n @tracked toolTipStyles: ToolTipStyles = DEFAULT_TOOLTIP_STYLES;\n @tracked arrowStyles: { left?: string; top?: string } = {};\n @tracked id: string = this.args.id || guidFor({});\n @tracked _attachTo: undefined | HTMLElement | string | null = null;\n\n private timeoutId?: ReturnType<typeof later>;\n\n @action\n updateAttachTo(): void {\n if (!this.args.attachTo && this._attachTo) {\n this.removeAttachToHandlers();\n this._attachTo = null;\n\n return;\n }\n\n if (this.args.attachTo && this.args.attachTo !== this._attachTo) {\n next(() => {\n this.removeAttachToHandlers();\n this._attachTo = this.args.attachTo;\n this.setupAttachToHandlers();\n });\n }\n }\n\n @action\n setupAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.addEventListener('mousemove', this.showToolTip);\n this.attachTo.addEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.addEventListener('mouseout', this.onMouseOut);\n this.attachTo.addEventListener('focusout', this.onBlur);\n this.positionToolTip();\n }\n }\n\n @action\n removeAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.removeEventListener('mousemove', this.showToolTip);\n this.attachTo.removeEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.removeEventListener('mouseout', this.onMouseOut);\n this.attachTo.removeEventListener('focusout', this.onBlur);\n }\n }\n\n @action\n clearAnimationTimeout(): void {\n if (this.timeoutId) {\n cancel(this.timeoutId);\n this.timeoutId = undefined;\n }\n }\n\n @action\n visibleDidUpdate(value: boolean): void {\n if (this.visible === false && value === true) {\n requestAnimationFrame(this.testAnchor);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.clearAnimationTimeout();\n this.removeAttachToHandlers();\n }\n\n @action\n testAnchor(): void {\n // when the tooltip is visible, this checks if the anchor is still part of document\n // this fixes when the react root is removed from the dom without unmounting\n // https://github.com/elastic/eui/issues/1105\n if (document.body.contains(this._anchor) === false) {\n // the anchor is no longer part of `document`\n this.hideToolTip();\n } else {\n if (this.visible) {\n // if still visible, keep checking\n requestAnimationFrame(this.testAnchor);\n }\n }\n }\n\n @action\n didInsertAnchor(ref: HTMLElement): void {\n this.anchor = ref;\n }\n\n @action\n setPopoverRef(ref: HTMLElement | null): void {\n this.popover = ref;\n\n // if the popover has been unmounted, clear\n // any previous knowledge about its size\n if (ref === null) {\n this.toolTipStyles = DEFAULT_TOOLTIP_STYLES;\n this.arrowStyles = {};\n } else {\n this.positionToolTip();\n }\n }\n\n @action\n showToolTip(): void {\n if (!this.timeoutId && !this.visible) {\n const fn = (): void => {\n this.visible = true;\n };\n\n this.timeoutId = later(\n this,\n () => {\n scheduleOnce('afterRender', this, fn);\n },\n delayToMsMap[this.delay]\n );\n }\n }\n\n @cached\n get attachTo(): Element | null | undefined {\n if (typeof this._attachTo === 'string') {\n return document.querySelector(this._attachTo);\n } else {\n return this._attachTo;\n }\n }\n\n get _anchor(): Element | null {\n return this.attachTo || this.anchor;\n }\n\n @action\n positionToolTip(): void {\n const requestedPosition = this.position;\n\n if (!this._anchor || !this.popover) {\n return;\n }\n\n const { position, left, top, arrow } = findPopoverPosition({\n anchor: this._anchor as HTMLElement,\n popover: this.popover,\n position: requestedPosition,\n offset: 16, // offset popover 16px from the anchor\n arrowConfig: {\n arrowWidth: 12,\n arrowBuffer: 4\n }\n });\n\n const windowWidth =\n document.documentElement.clientWidth || window.innerWidth;\n const useRightValue = windowWidth / 2 < left;\n\n const toolTipStyles: ToolTipStyles = {\n top: `${top}px`,\n left: useRightValue ? 'auto' : `${left}px`,\n right: useRightValue\n ? `${windowWidth - left - this.popover.offsetWidth}px`\n : 'auto'\n };\n\n this.visible = true;\n this.calculatedPosition = position;\n this.toolTipStyles = toolTipStyles;\n\n if (arrow) {\n this.arrowStyles = {\n left: `${arrow.left}px`,\n top: `${arrow?.top}px`\n };\n }\n }\n\n @action\n hideToolTip(): void {\n if (this.args.isShown === true) {\n return;\n }\n\n this.clearAnimationTimeout();\n\n const fn = (): void => {\n if (!this.isDestroying || !this.isDestroyed) {\n this.visible = false;\n }\n };\n\n scheduleOnce('afterRender', this, fn);\n }\n\n @action\n hasFocusMouseMoveListener(): void {\n this.hideToolTip();\n window.removeEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n\n @action\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === keys.TAB) {\n window.addEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n }\n\n @action\n onFocus(): void {\n this.hasFocus = true;\n this.showToolTip();\n }\n\n @action\n onBlur(): void {\n this.hasFocus = false;\n this.hideToolTip();\n }\n\n @action\n onMouseOut(event: MouseEvent): void {\n // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has\n // left the anchor for a non-child.\n if (\n this._anchor === event.relatedTarget ||\n (this._anchor != null &&\n !this._anchor.contains(event.relatedTarget as Node))\n ) {\n if (!this.hasFocus) {\n this.hideToolTip();\n }\n }\n\n if (this.args.onMouseOut) {\n this.args.onMouseOut(event);\n }\n }\n\n <template>\n {{#let\n (has-block \"content\") (has-block \"title\") (has-block \"anchor\")\n as |hasContentBlock hasTitleBlock hasAnchorBlock|\n }}\n {{#if @attachTo}}\n <span\n {{didInsert this.updateAttachTo}}\n {{didUpdate this.updateAttachTo @attachTo}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n ></span>\n {{else}}\n <span\n role=\"tooltip\"\n class={{classNames\n \"euiToolTipAnchor\"\n (if (eq @display \"block\") \"euiToolTipAnchor--displayBlock\")\n @anchorClassName\n }}\n {{didInsert this.didInsertAnchor}}\n {{on \"mouseover\" this.showToolTip}}\n {{on \"focusin\" this.onFocus}}\n {{on \"focusout\" this.onBlur}}\n {{on \"mouseout\" this.onMouseOut}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n >\n {{#if hasAnchorBlock}}\n {{yield this.id to=\"anchor\"}}\n {{else}}\n {{yield this.id}}\n {{/if}}\n </span>\n {{/if}}\n {{#if\n (and this.visible (or @title @content hasContentBlock hasTitleBlock))\n }}\n <EuiPortal>\n <EuiToolTipPopover\n class={{classNames\n \"euiToolTip\"\n @className\n componentName=\"EuiToolTip\"\n position=this.calculatedPosition\n }}\n @positionToolTip={{this.positionToolTip}}\n @popoverRef={{this.setPopoverRef}}\n id={{this.id}}\n @hasTitle={{if\n (and (argOrDefault @hasTitle true) (or hasTitleBlock @title))\n true\n }}\n role=\"tooltip\"\n ...attributes\n {{style this.toolTipStyles}}\n >\n <:title>\n {{#if hasTitleBlock}}\n {{yield to=\"title\"}}\n {{else}}\n {{@title}}\n {{/if}}\n </:title>\n <:content>\n <div class=\"euiToolTip__arrow\" {{style this.arrowStyles}}></div>\n <div {{resizeObserver onResize=this.positionToolTip}}>\n {{#if hasContentBlock}}\n {{yield to=\"content\"}}\n {{else}}\n {{@content}}\n {{/if}}\n </div>\n </:content>\n </EuiToolTipPopover>\n </EuiPortal>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["delayToMsMap","regular","long","DEFAULT_TOOLTIP_STYLES","top","left","opacity","visibility","display","EuiToolTip","Component","anchor","popover","g","prototype","argOrDefaultDecorator","i","void 0","tracked","position","args","id","guidFor","timeoutId","updateAttachTo","attachTo","_attachTo","removeAttachToHandlers","next","setupAttachToHandlers","n","action","addEventListener","showToolTip","onFocus","onMouseOut","onBlur","positionToolTip","removeEventListener","clearAnimationTimeout","cancel","undefined","visibleDidUpdate","value","visible","requestAnimationFrame","testAnchor","willDestroy","document","body","contains","_anchor","hideToolTip","didInsertAnchor","ref","setPopoverRef","toolTipStyles","arrowStyles","fn","later","scheduleOnce","delay","querySelector","cached","requestedPosition","arrow","findPopoverPosition","offset","arrowConfig","arrowWidth","arrowBuffer","windowWidth","documentElement","clientWidth","window","innerWidth","useRightValue","right","offsetWidth","calculatedPosition","isShown","isDestroying","isDestroyed","hasFocusMouseMoveListener","onKeyUp","event","key","keys","TAB","hasFocus","relatedTarget","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert","didUpdate","eq","classNames","on","and","or","EuiPortal","EuiToolTipPopover","argOrDefault","style","resizeObserver"],"mappings":";;;;;;;;;;;;;;;;;;;;AA0BA,MAAMA,YAAkD,GAAA;AACtDC,EAAAA,OAAS,EAAA,GAAA;EACTC,IAAA,EAAM,GAAM,GAAA;AACd,CAAA;AAgBA,MAAMC,sBAAwC,GAAA;AAC5C;AACA;AACA;AACAC,EAAAA,GAAK,EAAA,MAAA;AACLC,EAAAA,IAAM,EAAA,MAAA;AACN;AACA;AACAC,EAAAA,OAAS,EAAA,GAAA;AACT;AACAC,EAAAA,UAAY,EAAA,QAAA;AACZC,EAAAA,OAAS,EAAA;AACX,CAAA;AA8De,MAAMC,mBAAmBC,SAAU,CAAA;AAChDC,EAAAA,MAAQ,GAAqB,IAAK;AAClCC,EAAAA,OAAS,GAAqB,IAAK;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,UAAA,EAAA,CAElCC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,OAAA,EAAA,CACtBC,qBAAsB,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAGtBI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAkB,KAAM;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,MAAA,EADzB;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CAECI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAmB,KAAM;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,SAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,oBAAA,EAAA,CACzBI,OAAA,CAAA,EAAA,YAAA;MAAA,OAA+C,IAAI,CAACC,QAAQ;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,mBAAA,IAAAH,CAAA,CAAA,IAAA,EAAA,oBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CAC5DI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAuCf,sBAAuB;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,cAAA,IAAAa,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,aAAA,EAAA,CAC9DI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAuD,EAAG;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,YAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,aAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,IAAA,EAAA,CAC1DI,OAAA,CAAA,EAAA,YAAA;MAAA,OAAqB,IAAI,CAACE,IAAI,CAACC,EAAE,IAAIC,OAAQ,CAAA,EAAI,CAAA;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,GAAA,IAAAN,CAAA,CAAA,IAAA,EAAA,IAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACjDI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6D,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,MAAA;EAE3DM,SAAA;AAGRC,EAAAA,cAAAA,GAAuB;IACrB,IAAI,CAAC,IAAI,CAACJ,IAAI,CAACK,QAAQ,IAAI,IAAI,CAACC,SAAS,EAAE;MACzC,IAAI,CAACC,sBAAsB,EAAA;MAC3B,IAAI,CAACD,SAAS,GAAG,IAAA;AAEjB,MAAA;AACF;AAEA,IAAA,IAAI,IAAI,CAACN,IAAI,CAACK,QAAQ,IAAI,IAAI,CAACL,IAAI,CAACK,QAAQ,KAAK,IAAI,CAACC,SAAS,EAAE;AAC/DE,MAAAA,IAAK,CAAA,MAAA;QACH,IAAI,CAACD,sBAAsB,EAAA;AAC3B,QAAA,IAAI,CAACD,SAAS,GAAG,IAAI,CAACN,IAAI,CAACK,QAAQ;QACnC,IAAI,CAACI,qBAAqB,EAAA;AAC5B,OAAA,CAAA;AACF;AACF;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,gBAAA,EAAA,CAhBCiB,MAAA,CAAA,CAAA;AAAA;AAmBDF,EAAAA,qBAAAA,GAA8B;AAC5B,IAAA,IAAI,IAAI,CAACH,SAAS,IAAI,IAAI,CAACD,QAAQ,EAAE;MACnC,IAAI,CAACA,QAAQ,CAACO,gBAAgB,CAAC,WAAa,EAAA,IAAI,CAACC,WAAW,CAAA;MAC5D,IAAI,CAACR,QAAQ,CAACO,gBAAgB,CAAC,SAAW,EAAA,IAAI,CAACE,OAAO,CAAA;AACtD;MACA,IAAI,CAACT,QAAQ,CAACO,gBAAgB,CAAC,UAAY,EAAA,IAAI,CAACG,UAAU,CAAA;MAC1D,IAAI,CAACV,QAAQ,CAACO,gBAAgB,CAAC,UAAY,EAAA,IAAI,CAACI,MAAM,CAAA;MACtD,IAAI,CAACC,eAAe,EAAA;AACtB;AACF;AAAA,EAAA;IAAAP,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,uBAAA,EAAA,CAVCiB,MAAA,CAAA,CAAA;AAAA;AAaDJ,EAAAA,sBAAAA,GAA+B;AAC7B,IAAA,IAAI,IAAI,CAACD,SAAS,IAAI,IAAI,CAACD,QAAQ,EAAE;MACnC,IAAI,CAACA,QAAQ,CAACa,mBAAmB,CAAC,WAAa,EAAA,IAAI,CAACL,WAAW,CAAA;MAC/D,IAAI,CAACR,QAAQ,CAACa,mBAAmB,CAAC,SAAW,EAAA,IAAI,CAACJ,OAAO,CAAA;AACzD;MACA,IAAI,CAACT,QAAQ,CAACa,mBAAmB,CAAC,UAAY,EAAA,IAAI,CAACH,UAAU,CAAA;MAC7D,IAAI,CAACV,QAAQ,CAACa,mBAAmB,CAAC,UAAY,EAAA,IAAI,CAACF,MAAM,CAAA;AAC3D;AACF;AAAA,EAAA;IAAAN,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,wBAAA,EAAA,CATCiB,MAAA,CAAA,CAAA;AAAA;AAYDQ,EAAAA,qBAAAA,GAA8B;IAC5B,IAAI,IAAI,CAAChB,SAAS,EAAE;AAClBiB,MAAAA,MAAO,CAAA,IAAI,CAACjB,SAAS,CAAA;MACrB,IAAI,CAACA,SAAS,GAAGkB,SAAA;AACnB;AACF;AAAA,EAAA;IAAAX,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,uBAAA,EAAA,CANCiB,MAAA,CAAA,CAAA;AAAA;EASDW,gBAAAA,CAAiBC,KAAc,EAAQ;IACrC,IAAI,IAAI,CAACC,OAAO,KAAK,KAAA,IAASD,UAAU,IAAM,EAAA;AAC5CE,MAAAA,qBAAsB,CAAA,IAAI,CAACC,UAAU,CAAA;AACvC;AACF;AAAA,EAAA;IAAAhB,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,kBAAA,EAAA,CALCiB,MAAA,CAAA,CAAA;AAAA;AAODgB,EAAAA,WAAAA,GAAoB;IAClB,KAAK,CAACA,WAAA,EAAA;IACN,IAAI,CAACR,qBAAqB,EAAA;IAC1B,IAAI,CAACZ,sBAAsB,EAAA;AAC7B;AAGAmB,EAAAA,UAAAA,GAAmB;AACjB;AACA;AACA;AACA,IAAA,IAAIE,QAAA,CAASC,IAAI,CAACC,QAAQ,CAAC,IAAI,CAACC,OAAO,CAAA,KAAM,KAAO,EAAA;AAClD;MACA,IAAI,CAACC,WAAW,EAAA;AAClB,KAAO,MAAA;MACL,IAAI,IAAI,CAACR,OAAO,EAAE;AAChB;AACAC,QAAAA,qBAAsB,CAAA,IAAI,CAACC,UAAU,CAAA;AACvC;AACF;AACF;AAAA,EAAA;IAAAhB,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,YAAA,EAAA,CAdCiB,MAAA,CAAA,CAAA;AAAA;EAiBDsB,eAAAA,CAAgBC,GAAgB,EAAQ;IACtC,IAAI,CAAC3C,MAAM,GAAG2C,GAAA;AAChB;AAAA,EAAA;IAAAxB,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,iBAAA,EAAA,CAHCiB,MAAA,CAAA,CAAA;AAAA;EAMDwB,aAAAA,CAAcD,GAAuB,EAAQ;IAC3C,IAAI,CAAC1C,OAAO,GAAG0C,GAAA;AAEf;AACA;IACA,IAAIA,QAAQ,IAAM,EAAA;MAChB,IAAI,CAACE,aAAa,GAAGrD,sBAAA;AACrB,MAAA,IAAI,CAACsD,WAAW,GAAG,EAAC;AACtB,KAAO,MAAA;MACL,IAAI,CAACpB,eAAe,EAAA;AACtB;AACF;AAAA,EAAA;IAAAP,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,eAAA,EAAA,CAZCiB,MAAA,CAAA,CAAA;AAAA;AAeDE,EAAAA,WAAAA,GAAoB;IAClB,IAAI,CAAC,IAAI,CAACV,SAAS,IAAI,CAAC,IAAI,CAACqB,OAAO,EAAE;MACpC,MAAMc,EAAA,GAAKA,MAAQ;QACjB,IAAI,CAACd,OAAO,GAAG,IAAA;OACjB;AAEA,MAAA,IAAI,CAACrB,SAAS,GAAGoC,KAAA,CACf,IAAI,EACJ,MAAA;AACEC,QAAAA,YAAa,CAAA,aAAA,EAAe,IAAI,EAAEF,EAAA,CAAA;AACpC,OAAA,EACA1D,YAAY,CAAC,IAAI,CAAC6D,KAAK,CAAC,CAAA;AAE5B;AACF;AAAA,EAAA;IAAA/B,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,aAAA,EAAA,CAfCiB,MAAA,CAAA,CAAA;AAAA;EAiBD,IACIN,QAAYA,GAA2B;AACzC,IAAA,IAAI,OAAO,IAAI,CAACC,SAAS,KAAK,QAAU,EAAA;AACtC,MAAA,OAAOsB,QAAS,CAAAc,aAAa,CAAC,IAAI,CAACpC,SAAS,CAAA;AAC9C,KAAO,MAAA;MACL,OAAO,IAAI,CAACA,SAAS;AACvB;AACF;AAAA,EAAA;IAAAI,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,UAAA,EAAA,CAPCiD,MAAA,CAAA,CAAA;AAAA;EASD,IAAIZ,OAAAA,GAA0B;AAC5B,IAAA,OAAO,IAAI,CAAC1B,QAAQ,IAAI,IAAI,CAACd,MAAM;AACrC;AAGA0B,EAAAA,eAAAA,GAAwB;AACtB,IAAA,MAAM2B,iBAAA,GAAoB,IAAI,CAAC7C,QAAQ;IAEvC,IAAI,CAAC,IAAI,CAACgC,OAAO,IAAI,CAAC,IAAI,CAACvC,OAAO,EAAE;AAClC,MAAA;AACF;IAEA,MAAM;MAAEO,QAAQ;MAAEd,IAAI;MAAED,GAAG;AAAE6D,MAAAA;KAAO,GAAGC,mBAAoB,CAAA;MACzDvD,MAAQ,EAAA,IAAI,CAACwC,OAAW;MACxBvC,OAAS,EAAA,IAAI,CAACA,OAAO;AACrBO,MAAAA,QAAU,EAAA6C,iBAAA;AACVG,MAAAA,MAAQ,EAAA,EAAA;AACRC,MAAAA,WAAa,EAAA;AACXC,QAAAA,UAAY,EAAA,EAAA;AACZC,QAAAA,WAAa,EAAA;AACf;AACF,KAAA,CAAA;IAEA,MAAMC,cACJvB,QAAS,CAAAwB,eAAe,CAACC,WAAW,IAAIC,OAAOC,UAAU;AAC3D,IAAA,MAAMC,aAAA,GAAgBL,cAAc,CAAI,GAAAlE,IAAA;AAExC,IAAA,MAAMmD,aAA+B,GAAA;MACnCpD,GAAA,EAAK,CAAGA,EAAAA,GAAI,CAAG,EAAA,CAAA;AACfC,MAAAA,IAAA,EAAMuE,gBAAgB,MAAS,GAAA,CAAA,EAAGvE,IAAA,CAAQ,EAAA,CAAA;AAC1CwE,MAAAA,KAAA,EAAOD,aACH,GAAA,CAAA,EAAGL,WAAA,GAAclE,IAAO,GAAA,IAAI,CAACO,OAAO,CAACkE,WAAW,IAAI,GACpD;KACN;IAEA,IAAI,CAAClC,OAAO,GAAG,IAAA;IACf,IAAI,CAACmC,kBAAkB,GAAG5D,QAAA;IAC1B,IAAI,CAACqC,aAAa,GAAGA,aAAA;AAErB,IAAA,IAAIS,KAAO,EAAA;MACT,IAAI,CAACR,WAAW,GAAG;AACjBpD,QAAAA,IAAA,EAAM,CAAA,EAAG4D,KAAA,CAAM5D,IAAI,CAAI,EAAA,CAAA;AACvBD,QAAAA,GAAA,EAAK,CAAA,EAAG6D,KAAO,EAAA7D,GAAA,CAAA,EAAA;OACjB;AACF;AACF;AAAA,EAAA;IAAA0B,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,iBAAA,EAAA,CAzCCiB,MAAA,CAAA,CAAA;AAAA;AA4CDqB,EAAAA,WAAAA,GAAoB;AAClB,IAAA,IAAI,IAAI,CAAChC,IAAI,CAAC4D,OAAO,KAAK,IAAM,EAAA;AAC9B,MAAA;AACF;IAEA,IAAI,CAACzC,qBAAqB,EAAA;IAE1B,MAAMmB,EAAA,GAAKA,MAAQ;MACjB,IAAI,CAAC,IAAI,CAACuB,YAAY,IAAI,CAAC,IAAI,CAACC,WAAW,EAAE;QAC3C,IAAI,CAACtC,OAAO,GAAG,KAAA;AACjB;KACF;AAEAgB,IAAAA,YAAa,CAAA,aAAA,EAAe,IAAI,EAAEF,EAAA,CAAA;AACpC;AAAA,EAAA;IAAA5B,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,aAAA,EAAA,CAfCiB,MAAA,CAAA,CAAA;AAAA;AAkBDoD,EAAAA,yBAAAA,GAAkC;IAChC,IAAI,CAAC/B,WAAW,EAAA;IAChBsB,MAAA,CAAOpC,mBAAmB,CAAC,WAAa,EAAA,IAAI,CAAC6C,yBAAyB,CAAA;AACxE;AAAA,EAAA;IAAArD,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,2BAAA,EAAA,CAJCiB,MAAA,CAAA,CAAA;AAAA;EAODqD,OAAAA,CAAQC,KAAoB,EAAQ;AAClC,IAAA,IAAIA,KAAM,CAAAC,GAAG,KAAKC,IAAA,CAAKC,GAAG,EAAE;MAC1Bd,MAAA,CAAO1C,gBAAgB,CAAC,WAAa,EAAA,IAAI,CAACmD,yBAAyB,CAAA;AACrE;AACF;AAAA,EAAA;IAAArD,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,SAAA,EAAA,CALCiB,MAAA,CAAA,CAAA;AAAA;AAQDG,EAAAA,OAAAA,GAAgB;IACd,IAAI,CAACuD,QAAQ,GAAG,IAAA;IAChB,IAAI,CAACxD,WAAW,EAAA;AAClB;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,SAAA,EAAA,CAJCiB,MAAA,CAAA,CAAA;AAAA;AAODK,EAAAA,MAAAA,GAAe;IACb,IAAI,CAACqD,QAAQ,GAAG,KAAA;IAChB,IAAI,CAACrC,WAAW,EAAA;AAClB;AAAA,EAAA;IAAAtB,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,QAAA,EAAA,CAJCiB,MAAA,CAAA,CAAA;AAAA;EAODI,UAAAA,CAAWkD,KAAiB,EAAQ;AAClC;AACA;IACA,IACE,IAAI,CAAClC,OAAO,KAAKkC,KAAA,CAAMK,aAAa,IACnC,IAAI,CAACvC,OAAO,IAAI,QACf,CAAC,IAAI,CAACA,OAAO,CAACD,QAAQ,CAACmC,KAAM,CAAAK,aAAiB,CAChD,EAAA;AACA,MAAA,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE;QAClB,IAAI,CAACrC,WAAW,EAAA;AAClB;AACF;AAEA,IAAA,IAAI,IAAI,CAAChC,IAAI,CAACe,UAAU,EAAE;AACxB,MAAA,IAAI,CAACf,IAAI,CAACe,UAAU,CAACkD,KAAA,CAAA;AACvB;AACF;AAAA,EAAA;IAAAvD,CAAA,CAAA,IAAA,CAAAhB,SAAA,EAAA,YAAA,EAAA,CAjBCiB,MAAA,CAAA,CAAA;AAAA;AAmBD,EAAA;IAAA4D,oBAAA,CAAAC,kBAAA,CAoFA,sqEAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;mBAAAC,SAAA;QAAAC,EAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,SAAA;2BAAAC,iBAAA;QAAAC,YAAA;QAAAC,KAAA;AAAAC,wBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
1
|
+
{"version":3,"file":"eui-tool-tip.js","sources":["../../src/components/eui-tool-tip.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\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 didUpdate from '@ember/render-modifiers/modifiers/did-insert';\nimport { cancel, later, next, scheduleOnce } from '@ember/runloop';\n\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport { keys } from '../utils/keys.ts';\nimport { findPopoverPosition } from '../utils/popover/index.ts';\nimport EuiPortal from './eui-portal.gts';\nimport EuiToolTipPopover from './eui-tool-tip-popover.gts';\n\nimport type { EuiTooltipPopoverSignature } from './eui-tool-tip-popover';\n\nexport type ToolTipPositions = 'top' | 'right' | 'bottom' | 'left';\n\nexport type ToolTipDelay = 'regular' | 'long';\n\nconst delayToMsMap: { [key in ToolTipDelay]: number } = {\n regular: 250,\n long: 250 * 5\n};\n\ninterface ToolTipStyles {\n top: string;\n left: string | 'auto';\n right?: string | 'auto';\n opacity?: string;\n visibility?: 'hidden';\n display?: 'inlineBlock';\n}\n\nconst displayToClassNameMap = {\n inlineBlock: undefined,\n block: 'euiToolTipAnchor--displayBlock'\n};\n\nconst DEFAULT_TOOLTIP_STYLES: ToolTipStyles = {\n // position the tooltip content near the top-left\n // corner of the window so it can't create scrollbars\n // 50,50 because who knows what negative margins, padding, etc\n top: '50px',\n left: '50px',\n // just in case, avoid any potential flicker by hiding\n // the tooltip before it is positioned\n opacity: '0',\n // prevent accidental mouse interaction while positioning\n visibility: 'hidden',\n display: 'inlineBlock'\n};\n\nexport type EuiTooltipArgs = {\n /**\n * Passes onto the the trigger.\n */\n anchorClassName?: string;\n /**\n * Passes onto the tooltip itself, not the trigger.\n */\n className?: string;\n /**\n * The main content of your tooltip.\n */\n content?: string;\n /**\n * Common display alternatives for the anchor wrapper\n */\n display?: keyof typeof displayToClassNameMap;\n /**\n * Delay before showing tooltip. Good for repeatable items.\n */\n delay?: ToolTipDelay;\n /**\n * An optional title for your tooltip.\n */\n title?: string;\n /**\n * Unless you provide one, this will be randomly generated.\n */\n id?: string;\n /**\n * Suggested position. If there is not enough room for it this will be changed.\n */\n position?: ToolTipPositions;\n\n attachTo?: undefined | HTMLElement | string | null;\n\n isShown?: boolean | undefined;\n\n /**\n * If supplied, called when mouse movement causes the tool tip to be\n * hidden.\n */\n onMouseOut?: (event: MouseEvent) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n\n hasTitle?: boolean;\n};\n\nexport interface EuiToolTipSignature {\n Element: EuiTooltipPopoverSignature['Element'];\n Args: EuiTooltipArgs;\n Blocks: {\n default?: [id: string];\n title?: [];\n content?: [];\n anchor?: [id: string];\n };\n}\n\nexport default class EuiToolTip extends Component<EuiToolTipSignature> {\n anchor: null | HTMLElement = null;\n popover: null | HTMLElement = null;\n\n @argOrDefaultDecorator('top') position!: ToolTipPositions;\n @argOrDefaultDecorator('regular') delay!: ToolTipDelay;\n\n //STATE\n @tracked visible = false;\n @tracked hasFocus = false;\n @tracked calculatedPosition: ToolTipPositions = this.position;\n @tracked toolTipStyles: ToolTipStyles = DEFAULT_TOOLTIP_STYLES;\n @tracked arrowStyles: { left?: string; top?: string } = {};\n @tracked id: string = this.args.id || guidFor({});\n @tracked _attachTo: undefined | HTMLElement | string | null = null;\n\n private timeoutId?: ReturnType<typeof later>;\n\n @action\n updateAttachTo(): void {\n if (!this.args.attachTo && this._attachTo) {\n this.removeAttachToHandlers();\n this._attachTo = null;\n\n return;\n }\n\n if (this.args.attachTo && this.args.attachTo !== this._attachTo) {\n next(() => {\n this.removeAttachToHandlers();\n this._attachTo = this.args.attachTo;\n this.setupAttachToHandlers();\n });\n }\n }\n\n @action\n setupAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.addEventListener('mousemove', this.showToolTip);\n this.attachTo.addEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.addEventListener('mouseout', this.onMouseOut);\n this.attachTo.addEventListener('focusout', this.onBlur);\n this.positionToolTip();\n }\n }\n\n @action\n removeAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.removeEventListener('mousemove', this.showToolTip);\n this.attachTo.removeEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.removeEventListener('mouseout', this.onMouseOut);\n this.attachTo.removeEventListener('focusout', this.onBlur);\n }\n }\n\n @action\n clearAnimationTimeout(): void {\n if (this.timeoutId) {\n cancel(this.timeoutId);\n this.timeoutId = undefined;\n }\n }\n\n @action\n visibleDidUpdate(value: boolean): void {\n if (this.visible === false && value === true) {\n requestAnimationFrame(this.testAnchor);\n }\n }\n\n @action\n testAnchor(): void {\n // when the tooltip is visible, this checks if the anchor is still part of document\n // this fixes when the react root is removed from the dom without unmounting\n // https://github.com/elastic/eui/issues/1105\n if (document.body.contains(this._anchor) === false) {\n // the anchor is no longer part of `document`\n this.hideToolTip();\n } else {\n if (this.visible) {\n // if still visible, keep checking\n requestAnimationFrame(this.testAnchor);\n }\n }\n }\n\n @action\n didInsertAnchor(ref: HTMLElement): void {\n this.anchor = ref;\n }\n\n @action\n setPopoverRef(ref: HTMLElement | null): void {\n this.popover = ref;\n\n // if the popover has been unmounted, clear\n // any previous knowledge about its size\n if (ref === null) {\n this.toolTipStyles = DEFAULT_TOOLTIP_STYLES;\n this.arrowStyles = {};\n } else {\n this.positionToolTip();\n }\n }\n\n @action\n showToolTip(): void {\n if (!this.timeoutId && !this.visible) {\n const fn = (): void => {\n this.visible = true;\n };\n\n this.timeoutId = later(\n this,\n () => {\n scheduleOnce('afterRender', this, fn);\n },\n delayToMsMap[this.delay]\n );\n }\n }\n\n @cached\n get attachTo(): Element | null | undefined {\n if (typeof this._attachTo === 'string') {\n return document.querySelector(this._attachTo);\n } else {\n return this._attachTo;\n }\n }\n\n get _anchor(): Element | null {\n return this.attachTo || this.anchor;\n }\n\n @action\n positionToolTip(): void {\n const requestedPosition = this.position;\n\n if (!this._anchor || !this.popover) {\n return;\n }\n\n const { position, left, top, arrow } = findPopoverPosition({\n anchor: this._anchor as HTMLElement,\n popover: this.popover,\n position: requestedPosition,\n offset: 16, // offset popover 16px from the anchor\n arrowConfig: {\n arrowWidth: 12,\n arrowBuffer: 4\n }\n });\n\n const windowWidth =\n document.documentElement.clientWidth || window.innerWidth;\n const useRightValue = windowWidth / 2 < left;\n\n const toolTipStyles: ToolTipStyles = {\n top: `${top}px`,\n left: useRightValue ? 'auto' : `${left}px`,\n right: useRightValue\n ? `${windowWidth - left - this.popover.offsetWidth}px`\n : 'auto'\n };\n\n this.visible = true;\n this.calculatedPosition = position;\n this.toolTipStyles = toolTipStyles;\n\n if (arrow) {\n this.arrowStyles = {\n left: `${arrow.left}px`,\n top: `${arrow?.top}px`\n };\n }\n }\n\n @action\n hideToolTip(): void {\n if (this.args.isShown === true) {\n return;\n }\n\n this.clearAnimationTimeout();\n\n const fn = (): void => {\n if (!this.isDestroying || !this.isDestroyed) {\n this.visible = false;\n }\n };\n\n scheduleOnce('afterRender', this, fn);\n }\n\n @action\n hasFocusMouseMoveListener(): void {\n this.hideToolTip();\n window.removeEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n\n @action\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === keys.TAB) {\n window.addEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n }\n\n @action\n onFocus(): void {\n this.hasFocus = true;\n this.showToolTip();\n }\n\n @action\n onBlur(): void {\n this.hasFocus = false;\n this.hideToolTip();\n }\n\n @action\n onMouseOut(event: MouseEvent): void {\n // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has\n // left the anchor for a non-child.\n if (\n this._anchor === event.relatedTarget ||\n (this._anchor != null &&\n !this._anchor.contains(event.relatedTarget as Node))\n ) {\n if (!this.hasFocus) {\n this.hideToolTip();\n }\n }\n\n if (this.args.onMouseOut) {\n this.args.onMouseOut(event);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n this.clearAnimationTimeout();\n this.removeAttachToHandlers();\n this.anchor = null;\n this.popover = null;\n this._attachTo = null;\n }\n\n <template>\n {{#let\n (has-block \"content\") (has-block \"title\") (has-block \"anchor\")\n as |hasContentBlock hasTitleBlock hasAnchorBlock|\n }}\n {{#if @attachTo}}\n <span\n {{didInsert this.updateAttachTo}}\n {{didUpdate this.updateAttachTo @attachTo}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n ></span>\n {{else}}\n <span\n role=\"tooltip\"\n class={{classNames\n \"euiToolTipAnchor\"\n (if (eq @display \"block\") \"euiToolTipAnchor--displayBlock\")\n @anchorClassName\n }}\n {{didInsert this.didInsertAnchor}}\n {{on \"mouseover\" this.showToolTip}}\n {{on \"focusin\" this.onFocus}}\n {{on \"focusout\" this.onBlur}}\n {{on \"mouseout\" this.onMouseOut}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n >\n {{#if hasAnchorBlock}}\n {{yield this.id to=\"anchor\"}}\n {{else}}\n {{yield this.id}}\n {{/if}}\n </span>\n {{/if}}\n {{#if\n (and this.visible (or @title @content hasContentBlock hasTitleBlock))\n }}\n <EuiPortal>\n <EuiToolTipPopover\n class={{classNames\n \"euiToolTip\"\n @className\n componentName=\"EuiToolTip\"\n position=this.calculatedPosition\n }}\n @positionToolTip={{this.positionToolTip}}\n @popoverRef={{this.setPopoverRef}}\n id={{this.id}}\n @hasTitle={{if\n (and (argOrDefault @hasTitle true) (or hasTitleBlock @title))\n true\n }}\n role=\"tooltip\"\n ...attributes\n {{style this.toolTipStyles}}\n >\n <:title>\n {{#if hasTitleBlock}}\n {{yield to=\"title\"}}\n {{else}}\n {{@title}}\n {{/if}}\n </:title>\n <:content>\n <div class=\"euiToolTip__arrow\" {{style this.arrowStyles}}></div>\n <div {{resizeObserver onResize=this.positionToolTip}}>\n {{#if hasContentBlock}}\n {{yield to=\"content\"}}\n {{else}}\n {{@content}}\n {{/if}}\n </div>\n </:content>\n </EuiToolTipPopover>\n </EuiPortal>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["delayToMsMap","regular","long","DEFAULT_TOOLTIP_STYLES","top","left","opacity","visibility","display","EuiToolTip","Component","anchor","popover","g","prototype","argOrDefaultDecorator","i","void 0","tracked","position","args","id","guidFor","timeoutId","updateAttachTo","attachTo","_attachTo","removeAttachToHandlers","next","setupAttachToHandlers","n","action","addEventListener","showToolTip","onFocus","onMouseOut","onBlur","positionToolTip","removeEventListener","clearAnimationTimeout","cancel","undefined","visibleDidUpdate","value","visible","requestAnimationFrame","testAnchor","document","body","contains","_anchor","hideToolTip","didInsertAnchor","ref","setPopoverRef","toolTipStyles","arrowStyles","fn","later","scheduleOnce","delay","querySelector","cached","requestedPosition","arrow","findPopoverPosition","offset","arrowConfig","arrowWidth","arrowBuffer","windowWidth","documentElement","clientWidth","window","innerWidth","useRightValue","right","offsetWidth","calculatedPosition","isShown","isDestroying","isDestroyed","hasFocusMouseMoveListener","onKeyUp","event","key","keys","TAB","hasFocus","relatedTarget","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert","didUpdate","eq","classNames","on","and","or","EuiPortal","EuiToolTipPopover","argOrDefault","style","resizeObserver"],"mappings":"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"}
|
|
@@ -34,6 +34,8 @@ class EuiWrappingPopover extends Component {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
this.args.onWrappingDestroy?.();
|
|
37
|
+
this.portal = null;
|
|
38
|
+
this.anchor = null;
|
|
37
39
|
}
|
|
38
40
|
static {
|
|
39
41
|
setComponentTemplate(precompileTemplate("\n <EuiPortal @portalRef={{this.setPortalRef}} @insert={{this.insert}}>\n <EuiPopover @closePopover={{@closePopover}} @isOpen={{@isOpen}} @anchorClassName={{@anchorClassName}} @portalRef={{@popoverPortalRef}} @anchorPosition={{@anchorPosition}} @attachToAnchor={{@attachToAnchor}} @container={{@container}} @display={{@display}} @hasArrow={{@hasArrow}} @initialFocus={{@initialFocus}} @ownFocus={{@ownFocus}} @panelClassName={{@panelClassName}} @panelPaddingSize={{@panelPaddingSize}} @panelStyle={{@panelStyle}} @panelRef={{@panelRef}} @popoverRef={{@popoverRef}} ...attributes>\n <:button>\n <div {{this.setAnchorRef}} class=\"euiWrappingPopover__anchor\" />\n </:button>\n\n <:content>\n {{yield}}\n </:content>\n </EuiPopover>\n </EuiPortal>\n ", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-wrapping-popover.js","sources":["../../src/components/eui-wrapping-popover.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nimport { modifier } from 'ember-modifier';\n\nimport EuiPopover from './eui-popover.gts';\nimport EuiPortal from './eui-portal.gts';\n\nimport type { EuiPopoverSignature } from './eui-popover.gts';\n\nexport interface EuiWrappingPopoverSignature {\n Element: EuiPopoverSignature['Element'];\n Args: EuiPopoverSignature['Args'] & {\n button?: HTMLElement;\n onWrappingDestroy?: () => void;\n portalRef?: (ref: HTMLElement) => void;\n popoverPortalRef?: (ref: HTMLElement) => void;\n };\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiWrappingPopover extends Component<EuiWrappingPopoverSignature> {\n private portal: HTMLElement | null = null;\n private anchor: HTMLElement | null = null;\n\n setAnchorRef = modifier((element: HTMLElement) => {\n this.anchor = element;\n this.anchor.insertAdjacentElement('beforebegin', this.args.button!);\n });\n\n setPortalRef = (element: HTMLElement) => {\n this.portal = element;\n this.args.portalRef?.(element);\n };\n\n get insert(): { sibling: HTMLElement; position: 'after' } | undefined {\n if (this.args.button) {\n return {\n sibling: this.args.button,\n position: 'after'\n };\n }\n\n return;\n }\n\n willDestroy() {\n super.willDestroy();\n\n if (this.args.button && this.args.button.parentNode) {\n if (this.portal) {\n this.portal.insertAdjacentElement('beforebegin', this.args.button);\n }\n }\n this.args.onWrappingDestroy?.();\n }\n\n <template>\n <EuiPortal @portalRef={{this.setPortalRef}} @insert={{this.insert}}>\n <EuiPopover\n @closePopover={{@closePopover}}\n @isOpen={{@isOpen}}\n @anchorClassName={{@anchorClassName}}\n @portalRef={{@popoverPortalRef}}\n @anchorPosition={{@anchorPosition}}\n @attachToAnchor={{@attachToAnchor}}\n @container={{@container}}\n @display={{@display}}\n @hasArrow={{@hasArrow}}\n @initialFocus={{@initialFocus}}\n @ownFocus={{@ownFocus}}\n @panelClassName={{@panelClassName}}\n @panelPaddingSize={{@panelPaddingSize}}\n @panelStyle={{@panelStyle}}\n @panelRef={{@panelRef}}\n @popoverRef={{@popoverRef}}\n ...attributes\n >\n <:button>\n <div {{this.setAnchorRef}} class=\"euiWrappingPopover__anchor\" />\n </:button>\n\n <:content>\n {{yield}}\n </:content>\n </EuiPopover>\n </EuiPortal>\n </template>\n}\n"],"names":["EuiWrappingPopover","Component","portal","anchor","setAnchorRef","modifier","element","insertAdjacentElement","args","button","setPortalRef","portalRef","insert","sibling","position","willDestroy","parentNode","onWrappingDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","EuiPortal","EuiPopover"],"mappings":";;;;;;;;AAuBe,MAAMA,2BAA2BC,SAAU,CAAA;AAChDC,EAAAA,MAAQ,GAAqB,IAAK;AAClCC,EAAAA,MAAQ,GAAqB,IAAK;AAE1CC,EAAAA,YAAe,GAAAC,QAAA,CAAUC,OAAS,IAAA;IAChC,IAAI,CAACH,MAAM,GAAGG,OAAA;AACd,IAAA,IAAI,CAACH,MAAM,CAACI,qBAAqB,CAAC,eAAe,IAAI,CAACC,IAAI,CAACC,MAAM,CAAA;AACnE,GAAG,CAAA;EAEHC,YAAA,GAAgBJ,OAAS,IAAA;IACvB,IAAI,CAACJ,MAAM,GAAGI,OAAA;AACd,IAAA,IAAI,CAACE,IAAI,CAACG,SAAS,GAAGL,OAAA,CAAA;GACtB;EAEF,IAAIM,MAAAA,GAAkE;AACpE,IAAA,IAAI,IAAI,CAACJ,IAAI,CAACC,MAAM,EAAE;MACpB,OAAO;AACLI,QAAAA,OAAA,EAAS,IAAI,CAACL,IAAI,CAACC,MAAM;AACzBK,QAAAA,QAAU,EAAA;OACZ;AACF;AAEA,IAAA;AACF;AAEAC,EAAAA,WAAcA,GAAA;IACZ,KAAK,CAACA,WAAA,EAAA;AAEN,IAAA,IAAI,IAAI,CAACP,IAAI,CAACC,MAAM,IAAI,IAAI,CAACD,IAAI,CAACC,MAAM,CAACO,UAAU,EAAE;MACnD,IAAI,IAAI,CAACd,MAAM,EAAE;AACf,QAAA,IAAI,CAACA,MAAM,CAACK,qBAAqB,CAAC,eAAe,IAAI,CAACC,IAAI,CAACC,MAAM,CAAA;AACnE;AACF;
|
|
1
|
+
{"version":3,"file":"eui-wrapping-popover.js","sources":["../../src/components/eui-wrapping-popover.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nimport { modifier } from 'ember-modifier';\n\nimport EuiPopover from './eui-popover.gts';\nimport EuiPortal from './eui-portal.gts';\n\nimport type { EuiPopoverSignature } from './eui-popover.gts';\n\nexport interface EuiWrappingPopoverSignature {\n Element: EuiPopoverSignature['Element'];\n Args: EuiPopoverSignature['Args'] & {\n button?: HTMLElement;\n onWrappingDestroy?: () => void;\n portalRef?: (ref: HTMLElement) => void;\n popoverPortalRef?: (ref: HTMLElement) => void;\n };\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiWrappingPopover extends Component<EuiWrappingPopoverSignature> {\n private portal: HTMLElement | null = null;\n private anchor: HTMLElement | null = null;\n\n setAnchorRef = modifier((element: HTMLElement) => {\n this.anchor = element;\n this.anchor.insertAdjacentElement('beforebegin', this.args.button!);\n });\n\n setPortalRef = (element: HTMLElement) => {\n this.portal = element;\n this.args.portalRef?.(element);\n };\n\n get insert(): { sibling: HTMLElement; position: 'after' } | undefined {\n if (this.args.button) {\n return {\n sibling: this.args.button,\n position: 'after'\n };\n }\n\n return;\n }\n\n willDestroy() {\n super.willDestroy();\n\n if (this.args.button && this.args.button.parentNode) {\n if (this.portal) {\n this.portal.insertAdjacentElement('beforebegin', this.args.button);\n }\n }\n\n this.args.onWrappingDestroy?.();\n this.portal = null;\n this.anchor = null;\n }\n\n <template>\n <EuiPortal @portalRef={{this.setPortalRef}} @insert={{this.insert}}>\n <EuiPopover\n @closePopover={{@closePopover}}\n @isOpen={{@isOpen}}\n @anchorClassName={{@anchorClassName}}\n @portalRef={{@popoverPortalRef}}\n @anchorPosition={{@anchorPosition}}\n @attachToAnchor={{@attachToAnchor}}\n @container={{@container}}\n @display={{@display}}\n @hasArrow={{@hasArrow}}\n @initialFocus={{@initialFocus}}\n @ownFocus={{@ownFocus}}\n @panelClassName={{@panelClassName}}\n @panelPaddingSize={{@panelPaddingSize}}\n @panelStyle={{@panelStyle}}\n @panelRef={{@panelRef}}\n @popoverRef={{@popoverRef}}\n ...attributes\n >\n <:button>\n <div {{this.setAnchorRef}} class=\"euiWrappingPopover__anchor\" />\n </:button>\n\n <:content>\n {{yield}}\n </:content>\n </EuiPopover>\n </EuiPortal>\n </template>\n}\n"],"names":["EuiWrappingPopover","Component","portal","anchor","setAnchorRef","modifier","element","insertAdjacentElement","args","button","setPortalRef","portalRef","insert","sibling","position","willDestroy","parentNode","onWrappingDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","EuiPortal","EuiPopover"],"mappings":";;;;;;;;AAuBe,MAAMA,2BAA2BC,SAAU,CAAA;AAChDC,EAAAA,MAAQ,GAAqB,IAAK;AAClCC,EAAAA,MAAQ,GAAqB,IAAK;AAE1CC,EAAAA,YAAe,GAAAC,QAAA,CAAUC,OAAS,IAAA;IAChC,IAAI,CAACH,MAAM,GAAGG,OAAA;AACd,IAAA,IAAI,CAACH,MAAM,CAACI,qBAAqB,CAAC,eAAe,IAAI,CAACC,IAAI,CAACC,MAAM,CAAA;AACnE,GAAG,CAAA;EAEHC,YAAA,GAAgBJ,OAAS,IAAA;IACvB,IAAI,CAACJ,MAAM,GAAGI,OAAA;AACd,IAAA,IAAI,CAACE,IAAI,CAACG,SAAS,GAAGL,OAAA,CAAA;GACtB;EAEF,IAAIM,MAAAA,GAAkE;AACpE,IAAA,IAAI,IAAI,CAACJ,IAAI,CAACC,MAAM,EAAE;MACpB,OAAO;AACLI,QAAAA,OAAA,EAAS,IAAI,CAACL,IAAI,CAACC,MAAM;AACzBK,QAAAA,QAAU,EAAA;OACZ;AACF;AAEA,IAAA;AACF;AAEAC,EAAAA,WAAcA,GAAA;IACZ,KAAK,CAACA,WAAA,EAAA;AAEN,IAAA,IAAI,IAAI,CAACP,IAAI,CAACC,MAAM,IAAI,IAAI,CAACD,IAAI,CAACC,MAAM,CAACO,UAAU,EAAE;MACnD,IAAI,IAAI,CAACd,MAAM,EAAE;AACf,QAAA,IAAI,CAACA,MAAM,CAACK,qBAAqB,CAAC,eAAe,IAAI,CAACC,IAAI,CAACC,MAAM,CAAA;AACnE;AACF;AAEA,IAAA,IAAI,CAACD,IAAI,CAACS,iBAAiB,IAAA;IAC3B,IAAI,CAACf,MAAM,GAAG,IAAA;IACd,IAAI,CAACC,MAAM,GAAG,IAAA;AAChB;AAEA,EAAA;IAAAe,oBAAA,CAAAC,kBAAA,CA8BA,6yBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;AAAAC,oBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -7,9 +7,9 @@ import { n } from 'decorator-transforms/runtime';
|
|
|
7
7
|
class OutsideClickDetector extends Modifier {
|
|
8
8
|
id;
|
|
9
9
|
capturedDownIds = [];
|
|
10
|
-
element;
|
|
11
|
-
named;
|
|
12
|
-
positional;
|
|
10
|
+
element = null;
|
|
11
|
+
named = null;
|
|
12
|
+
positional = null;
|
|
13
13
|
onClickOutside(e) {
|
|
14
14
|
const {
|
|
15
15
|
isDisabled,
|
|
@@ -47,6 +47,9 @@ class OutsideClickDetector extends Modifier {
|
|
|
47
47
|
document.removeEventListener('mouseup', this.onClickOutside);
|
|
48
48
|
document.removeEventListener('touchend', this.onClickOutside);
|
|
49
49
|
this.removeElementEvents();
|
|
50
|
+
this.element = null;
|
|
51
|
+
this.named = null;
|
|
52
|
+
this.positional = null;
|
|
50
53
|
}
|
|
51
54
|
addElementEvents() {
|
|
52
55
|
if (this.element) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outside-click-detector.js","sources":["../../src/modifiers/outside-click-detector.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport Modifier from 'ember-modifier';\n\ninterface Named {\n onOutsideClick: (event: Event) => void;\n isDisabled?: boolean;\n onMouseDown?: (event: MouseEvent | TouchEvent) => void;\n onMouseUp?: (event: MouseEvent | TouchEvent) => void;\n onTouchStart?: (event: MouseEvent | TouchEvent) => void;\n onTouchEnd?: (event: MouseEvent | TouchEvent) => void;\n}\n\ntype Positional = [];\n\ninterface OutsideClickDetectorModifierArgs {\n Element: Element;\n Args: {\n Positional: Positional;\n Named: Named;\n };\n}\n\nexport interface EuiEvent extends Event {\n euiGeneratedBy: string[];\n}\n\nexport default class OutsideClickDetector extends Modifier<OutsideClickDetectorModifierArgs> {\n id!: string;\n capturedDownIds: string[] = [];\n\n element
|
|
1
|
+
{"version":3,"file":"outside-click-detector.js","sources":["../../src/modifiers/outside-click-detector.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport Modifier from 'ember-modifier';\n\ninterface Named {\n onOutsideClick: (event: Event) => void;\n isDisabled?: boolean;\n onMouseDown?: (event: MouseEvent | TouchEvent) => void;\n onMouseUp?: (event: MouseEvent | TouchEvent) => void;\n onTouchStart?: (event: MouseEvent | TouchEvent) => void;\n onTouchEnd?: (event: MouseEvent | TouchEvent) => void;\n}\n\ntype Positional = [];\n\ninterface OutsideClickDetectorModifierArgs {\n Element: Element;\n Args: {\n Positional: Positional;\n Named: Named;\n };\n}\n\nexport interface EuiEvent extends Event {\n euiGeneratedBy: string[];\n}\n\nexport default class OutsideClickDetector extends Modifier<OutsideClickDetectorModifierArgs> {\n id!: string;\n capturedDownIds: string[] = [];\n\n element: HTMLElement | null = null;\n named: Named | null = null;\n positional: Positional | null = null;\n\n @action\n onClickOutside(e: Event): void {\n const { isDisabled, onOutsideClick } = this.named!;\n\n if (isDisabled) {\n this.capturedDownIds = [];\n\n return;\n }\n\n const event = e as unknown as EuiEvent;\n\n if (\n (event.euiGeneratedBy && event.euiGeneratedBy.includes(this.id)) ||\n this.capturedDownIds.includes(this.id)\n ) {\n this.capturedDownIds = [];\n\n return;\n }\n\n this.capturedDownIds = [];\n\n return onOutsideClick(event);\n }\n\n modify(element: HTMLElement, positional: Positional, named: Named): void {\n this.element = element;\n this.named = named;\n this.positional = positional;\n this._setup();\n registerDestructor(this, () => this._teardown());\n }\n\n _setup(): void {\n this.id = guidFor({});\n document.addEventListener('mouseup', this.onClickOutside);\n document.addEventListener('touchend', this.onClickOutside);\n this.addElementEvents();\n }\n\n _teardown(): void {\n document.removeEventListener('mouseup', this.onClickOutside);\n document.removeEventListener('touchend', this.onClickOutside);\n this.removeElementEvents();\n this.element = null;\n this.named = null;\n this.positional = null;\n }\n\n addElementEvents(): void {\n if (this.element) {\n this.element.addEventListener('mousedown', this.onChildMouseDown);\n this.element.addEventListener('touchstart', this.onChildMouseDown);\n this.element.addEventListener('mouseup', this.onChildMouseUp);\n this.element.addEventListener('touchend', this.onChildMouseUp);\n }\n }\n\n removeElementEvents(): void {\n if (this.element) {\n this.element.removeEventListener('mousedown', this.onChildMouseDown);\n this.element.removeEventListener('touchstart', this.onChildMouseDown);\n this.element.removeEventListener('mouseup', this.onChildMouseUp);\n this.element.removeEventListener('touchend', this.onChildMouseUp);\n }\n }\n\n @action\n onChildClick(\n event: MouseEvent | TouchEvent,\n cb: (event: MouseEvent | TouchEvent) => void\n ): void {\n // to support nested click detectors, build an array\n // of detector ids that have been encountered;\n\n if (event.hasOwnProperty('euiGeneratedBy')) {\n (event as unknown as EuiEvent).euiGeneratedBy.push(this.id);\n } else {\n (event as unknown as EuiEvent).euiGeneratedBy = [this.id];\n }\n\n if (cb) cb(event);\n }\n\n @action\n onChildMouseDown(event: MouseEvent | TouchEvent): any {\n this.onChildClick(event, (e) => {\n const nativeEvent = e as unknown as EuiEvent;\n\n this.capturedDownIds = nativeEvent.euiGeneratedBy;\n this.named?.onMouseDown?.(e);\n this.named?.onTouchStart?.(e);\n });\n }\n\n @action\n onChildMouseUp(event: TouchEvent | MouseEvent): any {\n this.onChildClick(event, (e) => {\n this.named?.onMouseUp?.(e);\n this.named?.onTouchEnd?.(e);\n });\n }\n}\n"],"names":["OutsideClickDetector","Modifier","id","capturedDownIds","element","named","positional","onClickOutside","e","isDisabled","onOutsideClick","event","euiGeneratedBy","includes","n","prototype","action","modify","_setup","registerDestructor","_teardown","guidFor","document","addEventListener","addElementEvents","removeEventListener","removeElementEvents","onChildMouseDown","onChildMouseUp","onChildClick","cb","hasOwnProperty","push","nativeEvent","onMouseDown","onTouchStart","onMouseUp","onTouchEnd"],"mappings":"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"}
|
|
@@ -41,9 +41,9 @@ class ResizeObserver extends Modifier {
|
|
|
41
41
|
height = 0;
|
|
42
42
|
width = 0;
|
|
43
43
|
observer = null;
|
|
44
|
-
element;
|
|
45
|
-
named;
|
|
46
|
-
positional;
|
|
44
|
+
element = null;
|
|
45
|
+
named = null;
|
|
46
|
+
positional = null;
|
|
47
47
|
setSize({
|
|
48
48
|
width,
|
|
49
49
|
height
|
|
@@ -84,6 +84,9 @@ class ResizeObserver extends Modifier {
|
|
|
84
84
|
height: boundingRect.height
|
|
85
85
|
});
|
|
86
86
|
this.observer = makeResizeObserver(element, () => {
|
|
87
|
+
if (!element) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
87
90
|
const boundingRect = element.getBoundingClientRect();
|
|
88
91
|
setSize({
|
|
89
92
|
width: boundingRect.width,
|
|
@@ -99,6 +102,10 @@ class ResizeObserver extends Modifier {
|
|
|
99
102
|
}
|
|
100
103
|
_teardown() {
|
|
101
104
|
this.observer?.disconnect();
|
|
105
|
+
this.observer = null;
|
|
106
|
+
this.element = null;
|
|
107
|
+
this.named = null;
|
|
108
|
+
this.positional = null;
|
|
102
109
|
}
|
|
103
110
|
}
|
|
104
111
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize-observer.js","sources":["../../src/modifiers/resize-observer.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\n\nimport Modifier from 'ember-modifier';\n\n// IE11 and Safari don't support the `ResizeObserver` API at the time of writing\nconst hasResizeObserver =\n typeof window !== 'undefined' &&\n typeof (window as any).ResizeObserver !== 'undefined';\n\nexport interface Observer {\n disconnect: () => void;\n observe: (element: Element, options?: { [key: string]: any }) => void;\n}\n\nconst mutationObserverOptions = {\n // [MutationObserverInit](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit)\n attributes: true, // Account for style changes from `className` or `style`\n characterData: true, // Account for text content size differences\n childList: true, // Account for adding/removing child nodes\n subtree: true // Account for deep child nodes\n};\n\ninterface ResizeObserverSignature {\n Element: Element;\n Args: {\n Positional: [
|
|
1
|
+
{"version":3,"file":"resize-observer.js","sources":["../../src/modifiers/resize-observer.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\n\nimport Modifier from 'ember-modifier';\n\n// IE11 and Safari don't support the `ResizeObserver` API at the time of writing\nconst hasResizeObserver =\n typeof window !== 'undefined' &&\n typeof (window as any).ResizeObserver !== 'undefined';\n\nexport interface Observer {\n disconnect: () => void;\n observe: (element: Element, options?: { [key: string]: any }) => void;\n}\n\nconst mutationObserverOptions = {\n // [MutationObserverInit](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit)\n attributes: true, // Account for style changes from `className` or `style`\n characterData: true, // Account for text content size differences\n childList: true, // Account for adding/removing child nodes\n subtree: true // Account for deep child nodes\n};\n\ninterface ResizeObserverSignature {\n Element: Element;\n Args: {\n Positional: ['width' | 'height'] | [];\n Named: {\n onResize: (dimensions: { height: number; width: number }) => void;\n };\n };\n}\n\nconst makeCompatibleObserver = (node: Element, callback: () => void) => {\n const observer = new MutationObserver(callback);\n //eslint-disable-next-line\n observer.observe(node, mutationObserverOptions);\n\n window.addEventListener('resize', callback);\n\n const _disconnect = observer.disconnect.bind(observer);\n\n observer.disconnect = () => {\n _disconnect();\n window.removeEventListener('resize', callback);\n };\n\n return observer;\n};\n\nconst makeResizeObserver = (node: Element, callback: () => void) => {\n let observer: Observer | undefined;\n\n if (hasResizeObserver) {\n observer = new (window as any).ResizeObserver(callback);\n observer!.observe(node);\n } else {\n observer = makeCompatibleObserver(node, callback);\n requestAnimationFrame(callback); // Mimic ResizeObserver behavior of triggering a resize event on init\n }\n\n return observer;\n};\n\nexport default class ResizeObserver extends Modifier<ResizeObserverSignature> {\n height: number = 0;\n width: number = 0;\n observer: Observer | null = null;\n\n element: Element | null = null;\n named: ResizeObserverSignature['Args']['Named'] | null = null;\n positional: ResizeObserverSignature['Args']['Positional'] | null = null;\n\n @action\n setSize({ width, height }: { width: number; height: number }) {\n let [dimension] = this.positional!;\n const doesWidthMatter = dimension !== 'height';\n const doesHeightMatter = dimension !== 'width';\n\n if (\n (doesWidthMatter && width !== this.width) ||\n (doesHeightMatter && height !== this.height)\n ) {\n this.width = width;\n this.height = height;\n this.named?.onResize({ width, height });\n }\n }\n\n modify(\n element: Element,\n positional: ResizeObserverSignature['Args']['Positional'] = [],\n named: ResizeObserverSignature['Args']['Named']\n ) {\n this.element = element;\n this.named = named;\n this.positional = positional;\n this._setup();\n registerDestructor(this, () => this._teardown());\n }\n\n _setup() {\n let { setSize, element } = this;\n\n if (element != null) {\n // ResizeObserver's first call to the observation callback is scheduled in the future\n // so find the element's initial dimensions now\n const boundingRect = element.getBoundingClientRect();\n\n setSize({\n width: boundingRect.width,\n height: boundingRect.height\n });\n\n this.observer = makeResizeObserver(element, () => {\n if (!element) {\n return;\n }\n\n const boundingRect = element.getBoundingClientRect();\n\n setSize({\n width: boundingRect.width,\n height: boundingRect.height\n });\n })!;\n } else {\n setSize({\n width: 0,\n height: 0\n });\n }\n }\n\n _teardown() {\n this.observer?.disconnect();\n this.observer = null;\n this.element = null;\n this.named = null;\n this.positional = null;\n }\n}\n"],"names":["hasResizeObserver","window","ResizeObserver","mutationObserverOptions","attributes","characterData","childList","subtree","makeCompatibleObserver","node","callback","observer","MutationObserver","observe","addEventListener","_disconnect","disconnect","bind","removeEventListener","makeResizeObserver","requestAnimationFrame","Modifier","height","width","element","named","positional","setSize","dimension","doesWidthMatter","doesHeightMatter","onResize","n","prototype","action","modify","_setup","registerDestructor","_teardown","boundingRect","getBoundingClientRect"],"mappings":";;;;;AAMA,MAAMA,iBAAiB,GACrB,OAAOC,MAAM,KAAK,WAAW,IAC7B,OAAQA,MAAM,CAASC,cAAc,KAAK,WAAW;AAOvD,MAAMC,uBAAuB,GAAG;AAC9B;AACAC,EAAAA,UAAU,EAAE,IAAI;AAAE;AAClBC,EAAAA,aAAa,EAAE,IAAI;AAAE;AACrBC,EAAAA,SAAS,EAAE,IAAI;AAAE;EACjBC,OAAO,EAAE,IAAI;AACf,CAAC;AAYD,MAAMC,sBAAsB,GAAGA,CAACC,IAAa,EAAEC,QAAoB,KAAK;AACtE,EAAA,MAAMC,QAAQ,GAAG,IAAIC,gBAAgB,CAACF,QAAQ,CAAC;AAC/C;AACAC,EAAAA,QAAQ,CAACE,OAAO,CAACJ,IAAI,EAAEN,uBAAuB,CAAC;AAE/CF,EAAAA,MAAM,CAACa,gBAAgB,CAAC,QAAQ,EAAEJ,QAAQ,CAAC;EAE3C,MAAMK,WAAW,GAAGJ,QAAQ,CAACK,UAAU,CAACC,IAAI,CAACN,QAAQ,CAAC;EAEtDA,QAAQ,CAACK,UAAU,GAAG,MAAM;AAC1BD,IAAAA,WAAW,EAAE;AACbd,IAAAA,MAAM,CAACiB,mBAAmB,CAAC,QAAQ,EAAER,QAAQ,CAAC;GAC/C;AAED,EAAA,OAAOC,QAAQ;AACjB,CAAC;AAED,MAAMQ,kBAAkB,GAAGA,CAACV,IAAa,EAAEC,QAAoB,KAAK;AAClE,EAAA,IAAIC,QAA8B;AAElC,EAAA,IAAIX,iBAAiB,EAAE;AACrBW,IAAAA,QAAQ,GAAG,IAAKV,MAAM,CAASC,cAAc,CAACQ,QAAQ,CAAC;AACvDC,IAAAA,QAAQ,CAAEE,OAAO,CAACJ,IAAI,CAAC;AACzB,GAAC,MAAM;AACLE,IAAAA,QAAQ,GAAGH,sBAAsB,CAACC,IAAI,EAAEC,QAAQ,CAAC;AACjDU,IAAAA,qBAAqB,CAACV,QAAQ,CAAC,CAAC;AAClC;AAEA,EAAA,OAAOC,QAAQ;AACjB,CAAC;AAEc,MAAMT,cAAc,SAASmB,QAAQ,CAA0B;AAC5EC,EAAAA,MAAM,GAAW,CAAC;AAClBC,EAAAA,KAAK,GAAW,CAAC;AACjBZ,EAAAA,QAAQ,GAAoB,IAAI;AAEhCa,EAAAA,OAAO,GAAmB,IAAI;AAC9BC,EAAAA,KAAK,GAAoD,IAAI;AAC7DC,EAAAA,UAAU,GAAyD,IAAI;AAGvEC,EAAAA,OAAOA,CAAC;IAAEJ,KAAK;AAAED,IAAAA;AAA0C,GAAC,EAAE;AAC5D,IAAA,IAAI,CAACM,SAAS,CAAC,GAAG,IAAI,CAACF,UAAW;AAClC,IAAA,MAAMG,eAAe,GAAGD,SAAS,KAAK,QAAQ;AAC9C,IAAA,MAAME,gBAAgB,GAAGF,SAAS,KAAK,OAAO;AAE9C,IAAA,IACGC,eAAe,IAAIN,KAAK,KAAK,IAAI,CAACA,KAAK,IACvCO,gBAAgB,IAAIR,MAAM,KAAK,IAAI,CAACA,MAAO,EAC5C;MACA,IAAI,CAACC,KAAK,GAAGA,KAAK;MAClB,IAAI,CAACD,MAAM,GAAGA,MAAM;AACpB,MAAA,IAAI,CAACG,KAAK,EAAEM,QAAQ,CAAC;QAAER,KAAK;AAAED,QAAAA;AAAO,OAAC,CAAC;AACzC;AACF;AAAC,EAAA;IAAAU,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAdAC,MAAM,CAAA,CAAA;AAAA;EAgBPC,MAAMA,CACJX,OAAgB,EAChBE,UAAyD,GAAG,EAAE,EAC9DD,KAA+C,EAC/C;IACA,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACU,MAAM,EAAE;IACbC,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,CAACC,SAAS,EAAE,CAAC;AAClD;AAEAF,EAAAA,MAAMA,GAAG;IACP,IAAI;MAAET,OAAO;AAAEH,MAAAA;AAAQ,KAAC,GAAG,IAAI;IAE/B,IAAIA,OAAO,IAAI,IAAI,EAAE;AACnB;AACA;AACA,MAAA,MAAMe,YAAY,GAAGf,OAAO,CAACgB,qBAAqB,EAAE;AAEpDb,MAAAA,OAAO,CAAC;QACNJ,KAAK,EAAEgB,YAAY,CAAChB,KAAK;QACzBD,MAAM,EAAEiB,YAAY,CAACjB;AACvB,OAAC,CAAC;AAEF,MAAA,IAAI,CAACX,QAAQ,GAAGQ,kBAAkB,CAACK,OAAO,EAAE,MAAM;QAChD,IAAI,CAACA,OAAO,EAAE;AACZ,UAAA;AACF;AAEA,QAAA,MAAMe,YAAY,GAAGf,OAAO,CAACgB,qBAAqB,EAAE;AAEpDb,QAAAA,OAAO,CAAC;UACNJ,KAAK,EAAEgB,YAAY,CAAChB,KAAK;UACzBD,MAAM,EAAEiB,YAAY,CAACjB;AACvB,SAAC,CAAC;AACJ,OAAC,CAAE;AACL,KAAC,MAAM;AACLK,MAAAA,OAAO,CAAC;AACNJ,QAAAA,KAAK,EAAE,CAAC;AACRD,QAAAA,MAAM,EAAE;AACV,OAAC,CAAC;AACJ;AACF;AAEAgB,EAAAA,SAASA,GAAG;AACV,IAAA,IAAI,CAAC3B,QAAQ,EAAEK,UAAU,EAAE;IAC3B,IAAI,CAACL,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACa,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,KAAK,GAAG,IAAI;IACjB,IAAI,CAACC,UAAU,GAAG,IAAI;AACxB;AACF;;;;"}
|