@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-accordion.js","sources":["../../src/components/eui-accordion.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, {\n argOrDefaultDecorator\n} from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\n\nimport type { paddingMapping } from '../utils/css-mappings/eui-accordion.ts';\nimport type { CommonArgs } from './common.ts';\n\ntype EuiAccordionPaddingSize = keyof typeof paddingMapping;\n\ntype AccordionArgs = {\n id?: string;\n\n element?: 'div' | 'fieldset';\n /**\n * Class that will apply to the trigger for the accordion.\n */\n buttonClassName?: string;\n\n buttonProps?: CommonArgs;\n\n /**\n * Applied to the main button receiving the `onToggle` event.\n * Anything other than the default `button` does not support removing the arrow display (for accessibility of focus).\n */\n buttonElement?: 'div' | 'legend' | 'button';\n /**\n * Extra props to pass to the EuiButtonIcon containing the arrow.\n */\n arrowProps?: {\n className?: string;\n };\n\n /**\n * Class that will apply to the trigger content for the accordion.\n */\n buttonContentClassName?: string;\n /**\n * The content of the clickable trigger\n */\n buttonContent?: Component;\n /**\n * Will appear right aligned against the button. Useful for separate actions like deletions.\n */\n extraAction?: Component | boolean;\n /**\n * The accordion will start in the open state.\n */\n initialIsOpen?: boolean;\n /**\n * Optional callback method called on open and close with a single `isOpen` parameter\n */\n onToggle?: (isOpen: boolean) => void;\n /**\n * The padding around the exposed accordion content.\n */\n paddingSize?: EuiAccordionPaddingSize;\n /**\n * Placement of the arrow indicator, or 'none' to hide it.\n */\n arrowDisplay?: 'left' | 'right' | 'none';\n /**\n * Control the opening of accordion via prop\n */\n forceState?: 'closed' | 'open';\n /**\n * Change `extraAction` and children into a loading spinner\n */\n isLoading?: boolean;\n /**\n * Choose whether the loading message replaces the content. Customize the message by passing a node\n */\n isLoadingMessage?: boolean | Component;\n\n isOpen?: boolean;\n\n childClassName?: string;\n triggerClassName?: string;\n childContentClassName?: string;\n};\n\nexport interface EuiAccordionSignature {\n Element: any;\n Args: AccordionArgs;\n Blocks: {\n buttonContent: [boolean | undefined];\n content: [];\n extraAction: [boolean | undefined];\n };\n}\n\nexport default class EuiAccordionAccordionComponent extends Component<EuiAccordionSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) isLoadingMessage!: boolean;\n @argOrDefaultDecorator(false) initialIsOpen!: boolean;\n @argOrDefaultDecorator('none') paddingSize!: EuiAccordionPaddingSize;\n @argOrDefaultDecorator('left') arrowDisplay!: AccordionArgs['arrowDisplay'];\n\n @tracked _opened;\n @tracked childWrapper: HTMLDivElement | null = null;\n @tracked childContent: HTMLDivElement | null = null;\n\n constructor(owner: Owner, args: AccordionArgs) {\n super(owner, args);\n\n this._opened = this.args.forceState\n ? this.args.forceState === 'open'\n : this.args.initialIsOpen;\n }\n\n get buttonElement() {\n return this.args.element === 'fieldset' ? 'legend' : 'button';\n }\n\n get buttonElementIsFocusable() {\n return this.buttonElement === 'button';\n }\n\n get _arrowDisplay() {\n return this.arrowDisplay === 'none' && !this.buttonElementIsFocusable\n ? 'left'\n : this.arrowDisplay;\n }\n\n get isOpen(): boolean | undefined {\n return this.args.forceState\n ? this.args.forceState === 'open'\n : this._opened;\n }\n\n get hasLoadingMessage(): boolean {\n return this.isLoadingMessage && this.isLoadingMessage !== true;\n }\n\n get buttonClasses(): string {\n return [\n 'euiAccordion__button',\n this.args.buttonClassName,\n this.args.buttonProps?.className\n ].join(' ');\n }\n\n get buttonContentClasses(): string {\n return [\n 'euiAccordion__buttonContent',\n this.args.buttonContentClassName\n ].join(' ');\n }\n\n get childContentStyle(): string | ReturnType<typeof htmlSafe> {\n return this._opened ? '' : htmlSafe(`height: 0px;`);\n }\n\n setChildContentHeight = () => {\n let forceState = this.args.forceState;\n\n requestAnimationFrame(() => {\n const height =\n this.childContent && (forceState ? forceState === 'open' : this._opened)\n ? this.childContent.clientHeight\n : 0;\n\n this.childWrapper &&\n this.childWrapper.setAttribute('style', `height: ${height}px`);\n });\n };\n\n @action\n onToggle(): void {\n if (this.args.forceState) {\n this.args.onToggle?.(this.args.forceState === 'open' ? false : true);\n } else {\n this._opened = !this._opened;\n\n if (this._opened && this.childWrapper) {\n this.childWrapper.focus();\n }\n\n this.args.onToggle?.(this._opened);\n }\n }\n\n <template>\n {{#let (argOrDefault @element \"div\") as |tagName|}}\n {{#if tagName}}\n {{#let\n (element tagName) (element this.buttonElement)\n as |Accordion ButtonElement|\n }}\n {{#if (and Accordion ButtonElement)}}\n <Accordion\n class={{classNames\n (if this.isOpen \"euiAccordion-isOpen\")\n componentName=\"EuiAccordion\"\n }}\n ...attributes\n >\n <div\n class={{classNames\n \"euiAccordion__triggerWrapper\"\n @triggerClassName\n }}\n >\n {{#if (eq this._arrowDisplay \"left\")}}\n <EuiButtonIcon\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n <ButtonElement\n type=\"button\"\n id={{argOrDefault @buttonProps.id (randomId)}}\n class={{this.buttonClasses}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n aria-labelledby={{argOrDefault @buttonProps.id (randomId)}}\n {{on \"click\" this.onToggle}}\n >\n <span class={{this.buttonContentClasses}}>\n {{yield this.isOpen to=\"buttonContent\"}}\n </span>\n </ButtonElement>\n {{#if\n (and\n @extraAction (has-block \"extraAction\") (not this.isLoading)\n )\n }}\n <div class=\"euiAccordion__optionalAction\">\n {{yield this.isOpen to=\"extraAction\"}}\n </div>\n {{else if this.isLoading}}\n <div class=\"euiAccordion__optionalAction\">\n <EuiLoadingSpinner />\n </div>\n {{/if}}\n {{#if (eq this._arrowDisplay \"right\")}}\n <EuiButtonIcon\n @color=\"text\"\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n </div>\n <div\n class=\"euiAccordion__childWrapper\"\n style={{this.childContentStyle}}\n id={{@id}}\n {{didInsert (set this \"childWrapper\")}}\n tabindex=\"-1\"\n role=\"region\"\n >\n {{(this.setChildContentHeight)}}\n <div\n class={{classNames\n (if this.isLoading \"euiAccordion__children-isLoading\")\n @childClassName\n }}\n {{didInsert\n (queue (set this \"childContent\") this.setChildContentHeight)\n }}\n {{resizeObserver onResize=this.setChildContentHeight}}\n >\n {{#if (and this.isLoading this.isLoadingMessage)}}\n <EuiLoadingSpinner class=\"euiAccordion__spinner\" />\n <span>\n {{#if this.hasLoadingMessage}}\n {{this.isLoadingMessage}}\n {{else}}\n {{! <EuiI18n @token=\"euiAccordion.isLoading\" @default=\"Loading\" /> }}\n Loading...\n {{/if}}\n </span>\n {{else}}\n <div\n class={{classNames\n componentName=\"EuiAccordion\"\n paddingSize=this.paddingSize\n }}\n >\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </div>\n </div>\n </Accordion>\n {{/if}}\n {{/let}}\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiAccordionAccordionComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","constructor","owner","args","_opened","forceState","initialIsOpen","buttonElement","element","buttonElementIsFocusable","_arrowDisplay","arrowDisplay","isOpen","hasLoadingMessage","isLoadingMessage","buttonClasses","buttonClassName","buttonProps","className","join","buttonContentClasses","buttonContentClassName","childContentStyle","htmlSafe","setChildContentHeight","requestAnimationFrame","height","childContent","clientHeight","childWrapper","setAttribute","onToggle","focus","n","action","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","classNames","eq","EuiButtonIcon","on","randomId","not","EuiLoadingSpinner","didInsert","set","queue","resizeObserver"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-accordion.js","sources":["../../src/components/eui-accordion.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';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, {\n argOrDefaultDecorator\n} from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\n\nimport type { paddingMapping } from '../utils/css-mappings/eui-accordion.ts';\nimport type { CommonArgs } from './common.ts';\n\ntype EuiAccordionPaddingSize = keyof typeof paddingMapping;\n\ntype AccordionArgs = {\n id?: string;\n\n element?: 'div' | 'fieldset';\n /**\n * Class that will apply to the trigger for the accordion.\n */\n buttonClassName?: string;\n\n buttonProps?: CommonArgs;\n\n /**\n * Applied to the main button receiving the `onToggle` event.\n * Anything other than the default `button` does not support removing the arrow display (for accessibility of focus).\n */\n buttonElement?: 'div' | 'legend' | 'button';\n /**\n * Extra props to pass to the EuiButtonIcon containing the arrow.\n */\n arrowProps?: {\n className?: string;\n };\n\n /**\n * Class that will apply to the trigger content for the accordion.\n */\n buttonContentClassName?: string;\n /**\n * The content of the clickable trigger\n */\n buttonContent?: Component;\n /**\n * Will appear right aligned against the button. Useful for separate actions like deletions.\n */\n extraAction?: Component | boolean;\n /**\n * The accordion will start in the open state.\n */\n initialIsOpen?: boolean;\n /**\n * Optional callback method called on open and close with a single `isOpen` parameter\n */\n onToggle?: (isOpen: boolean) => void;\n /**\n * The padding around the exposed accordion content.\n */\n paddingSize?: EuiAccordionPaddingSize;\n /**\n * Placement of the arrow indicator, or 'none' to hide it.\n */\n arrowDisplay?: 'left' | 'right' | 'none';\n /**\n * Control the opening of accordion via prop\n */\n forceState?: 'closed' | 'open';\n /**\n * Change `extraAction` and children into a loading spinner\n */\n isLoading?: boolean;\n /**\n * Choose whether the loading message replaces the content. Customize the message by passing a node\n */\n isLoadingMessage?: boolean | Component;\n\n isOpen?: boolean;\n\n childClassName?: string;\n triggerClassName?: string;\n childContentClassName?: string;\n};\n\nexport interface EuiAccordionSignature {\n Element: any;\n Args: AccordionArgs;\n Blocks: {\n buttonContent: [boolean | undefined];\n content: [];\n extraAction: [boolean | undefined];\n };\n}\n\nexport default class EuiAccordionComponent extends Component<EuiAccordionSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) isLoadingMessage!: boolean;\n @argOrDefaultDecorator(false) initialIsOpen!: boolean;\n @argOrDefaultDecorator('none') paddingSize!: EuiAccordionPaddingSize;\n @argOrDefaultDecorator('left') arrowDisplay!: AccordionArgs['arrowDisplay'];\n\n @tracked _opened;\n @tracked childWrapper: HTMLDivElement | null = null;\n @tracked childContent: HTMLDivElement | null = null;\n\n constructor(owner: Owner, args: AccordionArgs) {\n super(owner, args);\n\n this._opened = this.args.forceState\n ? this.args.forceState === 'open'\n : this.args.initialIsOpen;\n }\n\n get buttonElement() {\n return this.args.element === 'fieldset' ? 'legend' : 'button';\n }\n\n get buttonElementIsFocusable() {\n return this.buttonElement === 'button';\n }\n\n get _arrowDisplay() {\n return this.arrowDisplay === 'none' && !this.buttonElementIsFocusable\n ? 'left'\n : this.arrowDisplay;\n }\n\n get isOpen(): boolean | undefined {\n return this.args.forceState\n ? this.args.forceState === 'open'\n : this._opened;\n }\n\n get hasLoadingMessage(): boolean {\n return this.isLoadingMessage && this.isLoadingMessage !== true;\n }\n\n get buttonClasses(): string {\n return [\n 'euiAccordion__button',\n this.args.buttonClassName,\n this.args.buttonProps?.className\n ].join(' ');\n }\n\n get buttonContentClasses(): string {\n return [\n 'euiAccordion__buttonContent',\n this.args.buttonContentClassName\n ].join(' ');\n }\n\n get childContentStyle(): string | ReturnType<typeof htmlSafe> {\n return this._opened ? '' : htmlSafe(`height: 0px;`);\n }\n\n setChildContentHeight = () => {\n let forceState = this.args.forceState;\n\n requestAnimationFrame(() => {\n const height =\n this.childContent && (forceState ? forceState === 'open' : this._opened)\n ? this.childContent.clientHeight\n : 0;\n\n this.childWrapper &&\n this.childWrapper.setAttribute('style', `height: ${height}px`);\n });\n };\n\n onToggle = (): void => {\n if (this.args.forceState) {\n this.args.onToggle?.(this.args.forceState === 'open' ? false : true);\n } else {\n this._opened = !this._opened;\n\n if (this._opened && this.childWrapper) {\n this.childWrapper.focus();\n }\n\n this.args.onToggle?.(this._opened);\n }\n };\n\n willDestroy(): void {\n super.willDestroy();\n\n this.childWrapper = null;\n this.childContent = null;\n }\n\n <template>\n {{#let (argOrDefault @element \"div\") as |tagName|}}\n {{#if tagName}}\n {{#let\n (element tagName) (element this.buttonElement)\n as |Accordion ButtonElement|\n }}\n {{#if (and Accordion ButtonElement)}}\n <Accordion\n class={{classNames\n (if this.isOpen \"euiAccordion-isOpen\")\n componentName=\"EuiAccordion\"\n }}\n ...attributes\n >\n <div\n class={{classNames\n \"euiAccordion__triggerWrapper\"\n @triggerClassName\n }}\n >\n {{#if (eq this._arrowDisplay \"left\")}}\n <EuiButtonIcon\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n <ButtonElement\n type=\"button\"\n id={{argOrDefault @buttonProps.id (randomId)}}\n class={{this.buttonClasses}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n aria-labelledby={{argOrDefault @buttonProps.id (randomId)}}\n {{on \"click\" this.onToggle}}\n >\n <span class={{this.buttonContentClasses}}>\n {{yield this.isOpen to=\"buttonContent\"}}\n </span>\n </ButtonElement>\n {{#if\n (and\n @extraAction (has-block \"extraAction\") (not this.isLoading)\n )\n }}\n <div class=\"euiAccordion__optionalAction\">\n {{yield this.isOpen to=\"extraAction\"}}\n </div>\n {{else if this.isLoading}}\n <div class=\"euiAccordion__optionalAction\">\n <EuiLoadingSpinner />\n </div>\n {{/if}}\n {{#if (eq this._arrowDisplay \"right\")}}\n <EuiButtonIcon\n @color=\"text\"\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n </div>\n <div\n class=\"euiAccordion__childWrapper\"\n style={{this.childContentStyle}}\n id={{@id}}\n {{didInsert (set this \"childWrapper\")}}\n tabindex=\"-1\"\n role=\"region\"\n >\n <div\n class={{classNames\n (if this.isLoading \"euiAccordion__children-isLoading\")\n @childClassName\n }}\n {{didInsert\n (queue (set this \"childContent\") this.setChildContentHeight)\n }}\n {{resizeObserver onResize=this.setChildContentHeight}}\n {{didUpdate this.setChildContentHeight @forceState}}\n >\n {{#if (and this.isLoading this.isLoadingMessage)}}\n <EuiLoadingSpinner class=\"euiAccordion__spinner\" />\n <span>\n {{#if this.hasLoadingMessage}}\n {{this.isLoadingMessage}}\n {{else}}\n {{! <EuiI18n @token=\"euiAccordion.isLoading\" @default=\"Loading\" /> }}\n Loading...\n {{/if}}\n </span>\n {{else}}\n <div\n class={{classNames\n componentName=\"EuiAccordion\"\n paddingSize=this.paddingSize\n }}\n >\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </div>\n </div>\n </Accordion>\n {{/if}}\n {{/let}}\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiAccordionComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","constructor","owner","args","_opened","forceState","initialIsOpen","buttonElement","element","buttonElementIsFocusable","_arrowDisplay","arrowDisplay","isOpen","hasLoadingMessage","isLoadingMessage","buttonClasses","buttonClassName","buttonProps","className","join","buttonContentClasses","buttonContentClassName","childContentStyle","htmlSafe","setChildContentHeight","requestAnimationFrame","height","childContent","clientHeight","childWrapper","setAttribute","onToggle","focus","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","classNames","eq","EuiButtonIcon","on","randomId","not","EuiLoadingSpinner","didInsert","set","queue","resizeObserver","didUpdate"],"mappings":"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"}
|
|
@@ -102,6 +102,10 @@ class EuiAutoSizerComponent extends Component {
|
|
|
102
102
|
if (this._detectElementResize && this._parentNode) {
|
|
103
103
|
this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);
|
|
104
104
|
}
|
|
105
|
+
this._autoSizer = undefined;
|
|
106
|
+
this._parentNode = undefined;
|
|
107
|
+
this._window = undefined;
|
|
108
|
+
this._detectElementResize = undefined;
|
|
105
109
|
}
|
|
106
110
|
static {
|
|
107
111
|
setComponentTemplate(precompileTemplate("\n <div {{didInsert this.setRef}} {{style this.style.outerStyle}} ...attributes>\n {{yield this.style.childStyle}}\n </div>\n ", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-auto-sizer.js","sources":["../../src/components/eui-auto-sizer.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport style from 'ember-style-modifier/modifiers/style';\n\nimport createDetectElementResize from '../utils/detect-element-resize';\n\ntype Size = {\n height: number;\n width: number;\n};\n\ninterface EuiAutoSizerComponentArgs {\n /** Function responsible for rendering children.*/\n\n /** Optional custom CSS class name to attach to root AutoSizer element. */\n className?: string;\n\n /** Default height to use for initial render; useful for SSR */\n defaultHeight?: number;\n\n /** Default width to use for initial render; useful for SSR */\n defaultWidth?: number;\n\n /** Disable dynamic :height property */\n disableHeight?: boolean;\n\n /** Disable dynamic :width property */\n disableWidth?: boolean;\n\n /** Nonce of the inlined stylesheet for Content Security Policy */\n nonce?: string;\n\n /** Callback to be invoked on-resize */\n onResize?: (size: Size) => void;\n\n /** Optional inline style */\n style?: Record<string, string>;\n}\n\ntype ResizeHandler = (element: HTMLElement, onResize: () => void) => void;\n\ntype DetectElementResize = {\n addResizeListener: ResizeHandler;\n removeResizeListener: ResizeHandler;\n};\n\ntype DynamicStyle = {\n outerStyle: {\n height?: number | string;\n width?: number | string;\n overflow?: string;\n };\n childStyle?: {\n height?: number | string;\n width?: number | string;\n };\n};\n\nexport interface EuiAutoSizerSignature {\n Args: EuiAutoSizerComponentArgs;\n Element: HTMLDivElement;\n Blocks: {\n default: [DynamicStyle['childStyle']];\n };\n}\n\nexport default class EuiAutoSizerComponent extends Component<EuiAutoSizerSignature> {\n _autoSizer?: HTMLElement;\n _parentNode?: HTMLElement;\n _window?: any; // uses any instead of Window because Flow doesn't have window type\n _detectElementResize?: DetectElementResize;\n\n @tracked height: number | undefined;\n @tracked width: number | undefined;\n\n get disableHeight() {\n return this.args.disableHeight ?? false;\n }\n\n get disableWidth() {\n return this.args.disableWidth ?? false;\n }\n\n get style() {\n let style: DynamicStyle = {\n outerStyle: { overflow: 'visible' },\n childStyle: {}\n };\n\n if (!this.disableHeight) {\n style.outerStyle.height = `0px`;\n\n if (style.childStyle) {\n style.childStyle.height = `${this.height}px`;\n }\n }\n\n if (!this.disableWidth) {\n style.outerStyle.width = `0px`;\n\n if (style.childStyle) {\n style.childStyle.width = `${this.width}px`;\n }\n }\n\n return style;\n }\n\n setup() {\n const { nonce } = this.args;\n\n if (\n this._autoSizer &&\n this._autoSizer.parentNode &&\n this._autoSizer.parentNode.ownerDocument &&\n this._autoSizer.parentNode.ownerDocument.defaultView &&\n this._autoSizer.parentNode instanceof\n this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement\n ) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n this._window = this._autoSizer.parentNode.ownerDocument.defaultView;\n\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(\n nonce,\n this._window\n );\n this._detectElementResize?.addResizeListener(\n this._parentNode,\n this._onResize\n );\n\n this._onResize();\n }\n }\n\n _onResize = () => {\n const { disableHeight, disableWidth } = this;\n\n if (this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n const height = this._parentNode.offsetHeight || 0;\n const width = this._parentNode.offsetWidth || 0;\n\n const win = this._window || window;\n const style = win.getComputedStyle(this._parentNode) || {};\n const paddingLeft = parseInt(style.paddingLeft, 10) || 0;\n const paddingRight = parseInt(style.paddingRight, 10) || 0;\n const paddingTop = parseInt(style.paddingTop, 10) || 0;\n const paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n\n const newHeight = height - paddingTop - paddingBottom;\n const newWidth = width - paddingLeft - paddingRight;\n\n if (\n (!disableHeight && this.height !== newHeight) ||\n (!disableWidth && this.width !== newWidth)\n ) {\n this.height = height - paddingTop - paddingBottom;\n this.width = width - paddingLeft - paddingRight;\n\n this.args.onResize?.({ height, width });\n }\n }\n };\n\n setRef = (ele: HTMLElement) => {\n this._autoSizer = ele;\n this.setup();\n };\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(\n this._parentNode,\n this._onResize\n );\n }\n }\n\n <template>\n <div\n {{didInsert this.setRef}}\n {{style this.style.outerStyle}}\n ...attributes\n >\n {{yield this.style.childStyle}}\n </div>\n </template>\n}\n"],"names":["EuiAutoSizerComponent","Component","_autoSizer","_parentNode","_window","_detectElementResize","g","prototype","tracked","i","void 0","disableHeight","args","disableWidth","style","outerStyle","overflow","childStyle","height","width","setup","nonce","parentNode","ownerDocument","defaultView","HTMLElement","createDetectElementResize","addResizeListener","_onResize","offsetHeight","offsetWidth","win","window","getComputedStyle","paddingLeft","parseInt","paddingRight","paddingTop","paddingBottom","newHeight","newWidth","onResize","setRef","ele","willDestroy","removeResizeListener","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-auto-sizer.js","sources":["../../src/components/eui-auto-sizer.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport style from 'ember-style-modifier/modifiers/style';\n\nimport createDetectElementResize from '../utils/detect-element-resize';\n\ntype Size = {\n height: number;\n width: number;\n};\n\ninterface EuiAutoSizerComponentArgs {\n /** Function responsible for rendering children.*/\n\n /** Optional custom CSS class name to attach to root AutoSizer element. */\n className?: string;\n\n /** Default height to use for initial render; useful for SSR */\n defaultHeight?: number;\n\n /** Default width to use for initial render; useful for SSR */\n defaultWidth?: number;\n\n /** Disable dynamic :height property */\n disableHeight?: boolean;\n\n /** Disable dynamic :width property */\n disableWidth?: boolean;\n\n /** Nonce of the inlined stylesheet for Content Security Policy */\n nonce?: string;\n\n /** Callback to be invoked on-resize */\n onResize?: (size: Size) => void;\n\n /** Optional inline style */\n style?: Record<string, string>;\n}\n\ntype ResizeHandler = (element: HTMLElement, onResize: () => void) => void;\n\ntype DetectElementResize = {\n addResizeListener: ResizeHandler;\n removeResizeListener: ResizeHandler;\n};\n\ntype DynamicStyle = {\n outerStyle: {\n height?: number | string;\n width?: number | string;\n overflow?: string;\n };\n childStyle?: {\n height?: number | string;\n width?: number | string;\n };\n};\n\nexport interface EuiAutoSizerSignature {\n Args: EuiAutoSizerComponentArgs;\n Element: HTMLDivElement;\n Blocks: {\n default: [DynamicStyle['childStyle']];\n };\n}\n\nexport default class EuiAutoSizerComponent extends Component<EuiAutoSizerSignature> {\n _autoSizer?: HTMLElement;\n _parentNode?: HTMLElement;\n _window?: any; // uses any instead of Window because Flow doesn't have window type\n _detectElementResize?: DetectElementResize;\n\n @tracked height: number | undefined;\n @tracked width: number | undefined;\n\n get disableHeight() {\n return this.args.disableHeight ?? false;\n }\n\n get disableWidth() {\n return this.args.disableWidth ?? false;\n }\n\n get style() {\n let style: DynamicStyle = {\n outerStyle: { overflow: 'visible' },\n childStyle: {}\n };\n\n if (!this.disableHeight) {\n style.outerStyle.height = `0px`;\n\n if (style.childStyle) {\n style.childStyle.height = `${this.height}px`;\n }\n }\n\n if (!this.disableWidth) {\n style.outerStyle.width = `0px`;\n\n if (style.childStyle) {\n style.childStyle.width = `${this.width}px`;\n }\n }\n\n return style;\n }\n\n setup() {\n const { nonce } = this.args;\n\n if (\n this._autoSizer &&\n this._autoSizer.parentNode &&\n this._autoSizer.parentNode.ownerDocument &&\n this._autoSizer.parentNode.ownerDocument.defaultView &&\n this._autoSizer.parentNode instanceof\n this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement\n ) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n this._window = this._autoSizer.parentNode.ownerDocument.defaultView;\n\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(\n nonce,\n this._window\n );\n this._detectElementResize?.addResizeListener(\n this._parentNode,\n this._onResize\n );\n\n this._onResize();\n }\n }\n\n _onResize = () => {\n const { disableHeight, disableWidth } = this;\n\n if (this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n const height = this._parentNode.offsetHeight || 0;\n const width = this._parentNode.offsetWidth || 0;\n\n const win = this._window || window;\n const style = win.getComputedStyle(this._parentNode) || {};\n const paddingLeft = parseInt(style.paddingLeft, 10) || 0;\n const paddingRight = parseInt(style.paddingRight, 10) || 0;\n const paddingTop = parseInt(style.paddingTop, 10) || 0;\n const paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n\n const newHeight = height - paddingTop - paddingBottom;\n const newWidth = width - paddingLeft - paddingRight;\n\n if (\n (!disableHeight && this.height !== newHeight) ||\n (!disableWidth && this.width !== newWidth)\n ) {\n this.height = height - paddingTop - paddingBottom;\n this.width = width - paddingLeft - paddingRight;\n\n this.args.onResize?.({ height, width });\n }\n }\n };\n\n setRef = (ele: HTMLElement) => {\n this._autoSizer = ele;\n this.setup();\n };\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(\n this._parentNode,\n this._onResize\n );\n }\n\n this._autoSizer = undefined;\n this._parentNode = undefined;\n this._window = undefined;\n this._detectElementResize = undefined;\n }\n\n <template>\n <div\n {{didInsert this.setRef}}\n {{style this.style.outerStyle}}\n ...attributes\n >\n {{yield this.style.childStyle}}\n </div>\n </template>\n}\n"],"names":["EuiAutoSizerComponent","Component","_autoSizer","_parentNode","_window","_detectElementResize","g","prototype","tracked","i","void 0","disableHeight","args","disableWidth","style","outerStyle","overflow","childStyle","height","width","setup","nonce","parentNode","ownerDocument","defaultView","HTMLElement","createDetectElementResize","addResizeListener","_onResize","offsetHeight","offsetWidth","win","window","getComputedStyle","paddingLeft","parseInt","paddingRight","paddingTop","paddingBottom","newHeight","newWidth","onResize","setRef","ele","willDestroy","removeResizeListener","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert"],"mappings":";;;;;;;;;AAoEe,MAAMA,8BAA8BC,SAAU,CAAA;EAC3DC,UAAA;EACAC,WAAA;EACAC,OAAA;EACAC,oBAAA;AAA2C,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAE1CC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CACAC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,MAAA;EAED,IAAIC,aAAgBA,GAAA;AAClB,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,aAAa,IAAI,KAAA;AACpC;EAEA,IAAIE,YAAeA,GAAA;AACjB,IAAA,OAAO,IAAI,CAACD,IAAI,CAACC,YAAY,IAAI,KAAA;AACnC;EAEA,IAAIC,KAAQA,GAAA;AACV,IAAA,IAAIA,KAAsB,GAAA;AACxBC,MAAAA,UAAY,EAAA;AAAEC,QAAAA,QAAU,EAAA;OAAU;AAClCC,MAAAA,UAAA,EAAY;KACd;AAEA,IAAA,IAAI,CAAC,IAAI,CAACN,aAAa,EAAE;AACvBG,MAAAA,KAAA,CAAMC,UAAU,CAACG,MAAM,GAAG,CAAK,GAAA,CAAA;MAE/B,IAAIJ,KAAA,CAAMG,UAAU,EAAE;QACpBH,KAAM,CAAAG,UAAU,CAACC,MAAM,GAAG,CAAG,EAAA,IAAI,CAACA,MAAM,CAAI,EAAA,CAAA;AAC9C;AACF;AAEA,IAAA,IAAI,CAAC,IAAI,CAACL,YAAY,EAAE;AACtBC,MAAAA,KAAA,CAAMC,UAAU,CAACI,KAAK,GAAG,CAAK,GAAA,CAAA;MAE9B,IAAIL,KAAA,CAAMG,UAAU,EAAE;QACpBH,KAAM,CAAAG,UAAU,CAACE,KAAK,GAAG,CAAG,EAAA,IAAI,CAACA,KAAK,CAAI,EAAA,CAAA;AAC5C;AACF;AAEA,IAAA,OAAOL,KAAA;AACT;AAEAM,EAAAA,KAAQA,GAAA;IACN,MAAM;AAAEC,MAAAA;KAAO,GAAG,IAAI,CAACT,IAAI;IAE3B,IACE,IAAI,CAACV,UAAU,IACf,IAAI,CAACA,UAAU,CAACoB,UAAU,IAC1B,IAAI,CAACpB,UAAU,CAACoB,UAAU,CAACC,aAAa,IACxC,IAAI,CAACrB,UAAU,CAACoB,UAAU,CAACC,aAAa,CAACC,WAAW,IACpD,IAAI,CAACtB,UAAU,CAACoB,UAAU,YACxB,IAAI,CAACpB,UAAU,CAACoB,UAAU,CAACC,aAAa,CAACC,WAAW,CAACC,WAAW,EAClE;AACA;AACA;AACA;AACA,MAAA,IAAI,CAACtB,WAAW,GAAG,IAAI,CAACD,UAAU,CAACoB,UAAU;MAC7C,IAAI,CAAClB,OAAO,GAAG,IAAI,CAACF,UAAU,CAACoB,UAAU,CAACC,aAAa,CAACC,WAAW;AAEnE;AACA;MACA,IAAI,CAACnB,oBAAoB,GAAGqB,0BAC1BL,KACA,EAAA,IAAI,CAACjB,OAAO,CAAA;AAEd,MAAA,IAAI,CAACC,oBAAoB,EAAEsB,iBACzB,CAAA,IAAI,CAACxB,WAAW,EAChB,IAAI,CAACyB,SAAS,CAAA;MAGhB,IAAI,CAACA,SAAS,EAAA;AAChB;AACF;EAEAA,SAAY,GAAAA,MAAA;IACV,MAAM;MAAEjB,aAAa;AAAEE,MAAAA;AAAY,KAAE,GAAG,IAAI;IAE5C,IAAI,IAAI,CAACV,WAAW,EAAE;AACpB;AACA;AACA;MAEA,MAAMe,SAAS,IAAI,CAACf,WAAW,CAAC0B,YAAY,IAAI,CAAA;MAChD,MAAMV,QAAQ,IAAI,CAAChB,WAAW,CAAC2B,WAAW,IAAI,CAAA;AAE9C,MAAA,MAAMC,GAAM,GAAA,IAAI,CAAC3B,OAAO,IAAI4B,MAAA;AAC5B,MAAA,MAAMlB,KAAA,GAAQiB,IAAIE,gBAAgB,CAAC,IAAI,CAAC9B,WAAW,KAAK,EAAC;MACzD,MAAM+B,WAAc,GAAAC,QAAA,CAASrB,KAAM,CAAAoB,WAAW,EAAE,EAAO,CAAA,IAAA,CAAA;MACvD,MAAME,YAAe,GAAAD,QAAA,CAASrB,KAAM,CAAAsB,YAAY,EAAE,EAAO,CAAA,IAAA,CAAA;MACzD,MAAMC,UAAa,GAAAF,QAAA,CAASrB,KAAM,CAAAuB,UAAU,EAAE,EAAO,CAAA,IAAA,CAAA;MACrD,MAAMC,aAAgB,GAAAH,QAAA,CAASrB,KAAM,CAAAwB,aAAa,EAAE,EAAO,CAAA,IAAA,CAAA;AAE3D,MAAA,MAAMC,SAAA,GAAYrB,SAASmB,UAAa,GAAAC,aAAA;AACxC,MAAA,MAAME,QAAA,GAAWrB,QAAQe,WAAc,GAAAE,YAAA;AAEvC,MAAA,IACG,CAACzB,aAAA,IAAiB,IAAI,CAACO,MAAM,KAAKqB,SAAS,IAC3C,CAAC1B,YAAgB,IAAA,IAAI,CAACM,KAAK,KAAKqB,QACjC,EAAA;AACA,QAAA,IAAI,CAACtB,MAAM,GAAGA,MAAA,GAASmB,UAAa,GAAAC,aAAA;AACpC,QAAA,IAAI,CAACnB,KAAK,GAAGA,KAAA,GAAQe,WAAc,GAAAE,YAAA;AAEnC,QAAA,IAAI,CAACxB,IAAI,CAAC6B,QAAQ,GAAG;UAAEvB,MAAA;AAAQC,UAAAA;AAAM,SAAA,CAAA;AACvC;AACF;GACA;EAEFuB,MAAA,GAAUC,GAAK,IAAA;IACb,IAAI,CAACzC,UAAU,GAAGyC,GAAA;IAClB,IAAI,CAACvB,KAAK,EAAA;GACV;AAEFwB,EAAAA,WAAAA,GAAoB;IAClB,KAAK,CAACA,WAAA,EAAA;AAEN,IAAA,IAAI,IAAI,CAACvC,oBAAoB,IAAI,IAAI,CAACF,WAAW,EAAE;AACjD,MAAA,IAAI,CAACE,oBAAoB,CAACwC,oBAAoB,CAC5C,IAAI,CAAC1C,WAAW,EAChB,IAAI,CAACyB,SAAS,CAAA;AAElB;IAEA,IAAI,CAAC1B,UAAU,GAAG4C,SAAA;IAClB,IAAI,CAAC3C,WAAW,GAAG2C,SAAA;IACnB,IAAI,CAAC1C,OAAO,GAAG0C,SAAA;IACf,IAAI,CAACzC,oBAAoB,GAAGyC,SAAA;AAC9B;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAQA,4IAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;AAAArC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -44,6 +44,10 @@ class EuiCardComponent extends Component {
|
|
|
44
44
|
get footerClasses() {
|
|
45
45
|
return ['euiCard__footer', this.args.footerClassName].join(' ');
|
|
46
46
|
}
|
|
47
|
+
willDestroy() {
|
|
48
|
+
super.willDestroy();
|
|
49
|
+
this.link = null;
|
|
50
|
+
}
|
|
47
51
|
static {
|
|
48
52
|
setComponentTemplate(precompileTemplate("\n {{#let (if @selectable (randomId)) (and (not @isDisabled) (or @onClick @href (and @selectable (not @selectable.isDisabled)))) (argOrDefault @titleElement \"span\") (argOrDefault @layout \"vertical\") as |selectableId isClickable titleElement layout|}}\n <EuiPanel class={{classNames (if (eq layout \"horizontal\") \"euiCard--horizontal\") (if isClickable \"euiCard--isClickable\") (if @betaBadgeProps.label \"euiCard--hasBetaBadge\") (if @icon \"euiCard--hasIcon\" (if (has-block \"icon\") \"euiCard--hasIcon\")) (if @selectable \"euiCard--isSelectable\") (if (and @selectable @selectable.isSelected) \"euiCard-isSelected\") (if @isDisabled \"euiCard-isDisabled\") this.selectableColorClass componentName=\"EuiCard\" textAlign=(argOrDefault @textAlign \"center\")}} @color={{if @isDisabled \"subdued\" @display}} @onClick={{if isClickable this.outerOnClick}} @hasShadow={{if (or @isDisabled @display) true}} @hasBorder={{if @display true undefined}} @paddingSize={{@paddingSize}} ...attributes>\n\n {{#if (or (has-block \"icon\") (or @image @icon))}}\n <div class={{this.topClasses}}>\n {{#if (has-block \"icon\")}}\n {{yield \"euiCard__icon\" to=\"icon\"}}\n {{else}}\n {{#if (or @image @icon)}}\n {{#if (and @image (notEq layout \"horizontal\"))}}\n <div class=\"euiCard__image\">\n <img src={{@image}} alt=\"card-top\" />\n </div>\n {{/if}}\n {{#if @icon}}\n <EuiIcon @iconClasses=\"euiCard__icon\" @type={{@icon}} @size={{@iconSize}} />\n {{/if}}\n {{/if}}\n {{/if}}\n </div>\n {{/if}}\n\n <div class={{this.contentClasses}}>\n <EuiTitle class=\"euiCard__title\" @size={{argOrDefault @titleSize \"s\"}}>\n {{#if (has-block \"title\")}}\n {{yield (set this \"link\") to=\"title\"}}\n {{else if (and (not @isDisabled) @href)}}\n <a class=\"euiCard__titleAnchor\" target={{@target}} disabled={{@isDisabled}} href={{@href}} {{didInsert (set this \"link\")}}>\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n\n </a>\n {{else if (or @isDisabled @onClick)}}\n <button type=\"button\" class=\"euiCard__titleButton\" disabled={{@isDisabled}} {{didInsert (set this \"link\")}} {{on \"click\" (optional @onClick)}}>\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n </button>\n {{else}}\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n {{/if}}\n </EuiTitle>\n {{#if (or @description (has-block \"description\"))}}\n <EuiText @grow={{true}} @size=\"s\" class=\"euiCard__description\">\n {{#if (has-block \"description\")}}\n <p>{{yield to=\"description\"}}</p>\n {{else}}\n <p>{{@description}}</p>\n {{/if}}\n </EuiText>\n {{/if}}\n {{yield to=\"body\"}}\n </div>\n {{#if @betaBadgeProps.label}}\n <span class=\"euiCard__betaBadgeWrapper\">\n <EuiBetaBadge class=\"euiCard__betaBadge\" @label={{@betaBadgeProps.label}} @title={{@betaBadgeProps.title}} @tooltipContent={{@betaBadgeProps.tooltipContent}} />\n </span>\n {{/if}}\n {{#if (and (eq layout \"vertical\") (or (has-block \"footer\") @footer))}}\n <div class={{this.footerClasses}}>\n {{#if (has-block \"footer\")}}\n {{yield to=\"footer\"}}\n {{else}}\n {{@footer}}\n {{/if}}\n </div>\n {{/if}}\n {{#if @selectable}}\n <EuiCardSelect @type={{@selectable.type}} @buttonId={{selectableId}} @isSelected={{@selectable.isSelected}} @isDisabled={{@selectable.isDisabled}} @color={{@selectable.color}} @isLoading={{@selectable.isLoading}} @href={{@selectable.href}} @iconSide={{@selectable.iconSide}} @flush={{@selectable.flush}} {{didInsert (set this \"link\")}} @onClick={{optional @selectable.onClick}} />\n {{/if}}\n </EuiPanel>\n {{/let}}\n ", {
|
|
49
53
|
strictMode: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-card.js","sources":["../../src/components/eui-card.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 { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, notEq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiBetaBadge from './eui-beta-badge.gts';\nimport { euiCardSelectableColor } from './eui-card-select.gts';\nimport EuiCardSelect from './eui-card-select.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { EuiCardSelectProps } from './eui-card-select';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiPanelSignature } from './eui-panel';\nimport type { EuiTitleSignature } from './eui-title';\n\ntype EuiCardComponentArgs = {\n footer?: string;\n selectable?: EuiCardSelectProps;\n /**\n * Class that will apply to the card top section.\n */\n topClassName?: string;\n\n /**\n * Class that will apply to the card content section.\n */\n contentClassName?: string;\n\n /**\n * Class that will apply to the card footer section.\n */\n footerClassName?: string;\n\n target?: string;\n\n betaBadgeProps?: {\n label: string;\n title?: string;\n tooltipContent?: string;\n };\n\n description?: string;\n\n /**\n * The title of the card.\n */\n title?: string;\n titleSize?: EuiTitleSignature['Args']['size'];\n\n /**\n * The title element. Will wrap the title in a heading tag.\n */\n titleElement?: string;\n\n href?: string;\n\n onClick?: (e: MouseEvent) => void;\n\n isDisabled?: boolean;\n\n textAlign?: 'left' | 'center' | 'right';\n\n image?: string;\n icon?: string;\n layout?: 'horizontal' | 'vertical';\n\n display?: EuiPanelSignature['Args']['color'];\n paddingSize?: EuiPanelSignature['Args']['paddingSize'];\n\n iconSize?: EuiIconSignature['Args']['size'];\n};\n\nexport interface EuiCardSignature {\n Element: EuiPanelSignature['Element'];\n Args: EuiCardComponentArgs;\n Blocks: {\n icon: ['euiCard__icon'];\n title: [() => void];\n description: [];\n body: [];\n footer: [];\n };\n}\n\nexport default class EuiCardComponent extends Component<EuiCardSignature> {\n @tracked link: HTMLAnchorElement | HTMLButtonElement | null = null;\n\n outerOnClick = (e: MouseEvent) => {\n if (this.link && this.link !== e.target) {\n this.link.click();\n }\n };\n\n get selectableColorClass() {\n const selectable = this.args.selectable;\n\n return selectable\n ? `euiCard--isSelectable--${euiCardSelectableColor(\n selectable.color,\n selectable.isSelected\n )}`\n : undefined;\n }\n\n get topClasses(): string {\n return ['euiCard__top', this.args.topClassName].join(' ');\n }\n\n get contentClasses(): string {\n return ['euiCard__content', this.args.contentClassName].join(' ');\n }\n\n get footerClasses(): string {\n return ['euiCard__footer', this.args.footerClassName].join(' ');\n }\n\n <template>\n {{#let\n (if @selectable (randomId))\n (and\n (not @isDisabled)\n (or @onClick @href (and @selectable (not @selectable.isDisabled)))\n )\n (argOrDefault @titleElement \"span\")\n (argOrDefault @layout \"vertical\")\n as |selectableId isClickable titleElement layout|\n }}\n <EuiPanel\n class={{classNames\n (if (eq layout \"horizontal\") \"euiCard--horizontal\")\n (if isClickable \"euiCard--isClickable\")\n (if @betaBadgeProps.label \"euiCard--hasBetaBadge\")\n (if\n @icon \"euiCard--hasIcon\" (if (has-block \"icon\") \"euiCard--hasIcon\")\n )\n (if @selectable \"euiCard--isSelectable\")\n (if (and @selectable @selectable.isSelected) \"euiCard-isSelected\")\n (if @isDisabled \"euiCard-isDisabled\")\n this.selectableColorClass\n componentName=\"EuiCard\"\n textAlign=(argOrDefault @textAlign \"center\")\n }}\n @color={{if @isDisabled \"subdued\" @display}}\n @onClick={{if isClickable this.outerOnClick}}\n @hasShadow={{if (or @isDisabled @display) true}}\n @hasBorder={{if @display true undefined}}\n @paddingSize={{@paddingSize}}\n ...attributes\n >\n\n {{#if (or (has-block \"icon\") (or @image @icon))}}\n <div class={{this.topClasses}}>\n {{#if (has-block \"icon\")}}\n {{yield \"euiCard__icon\" to=\"icon\"}}\n {{else}}\n {{#if (or @image @icon)}}\n {{#if (and @image (notEq layout \"horizontal\"))}}\n <div class=\"euiCard__image\">\n <img src={{@image}} alt=\"card-top\" />\n </div>\n {{/if}}\n {{#if @icon}}\n <EuiIcon\n @iconClasses=\"euiCard__icon\"\n @type={{@icon}}\n @size={{@iconSize}}\n />\n {{/if}}\n {{/if}}\n {{/if}}\n </div>\n {{/if}}\n\n <div class={{this.contentClasses}}>\n <EuiTitle\n class=\"euiCard__title\"\n @size={{argOrDefault @titleSize \"s\"}}\n >\n {{#if (has-block \"title\")}}\n {{yield (set this \"link\") to=\"title\"}}\n {{else if (and (not @isDisabled) @href)}}\n <a\n class=\"euiCard__titleAnchor\"\n target={{@target}}\n disabled={{@isDisabled}}\n href={{@href}}\n {{didInsert (set this \"link\")}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n\n </a>\n {{else if (or @isDisabled @onClick)}}\n <button\n type=\"button\"\n class=\"euiCard__titleButton\"\n disabled={{@isDisabled}}\n {{didInsert (set this \"link\")}}\n {{on \"click\" (optional @onClick)}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n </button>\n {{else}}\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n {{/if}}\n </EuiTitle>\n {{#if (or @description (has-block \"description\"))}}\n <EuiText @grow={{true}} @size=\"s\" class=\"euiCard__description\">\n {{#if (has-block \"description\")}}\n <p>{{yield to=\"description\"}}</p>\n {{else}}\n <p>{{@description}}</p>\n {{/if}}\n </EuiText>\n {{/if}}\n {{yield to=\"body\"}}\n </div>\n {{#if @betaBadgeProps.label}}\n <span class=\"euiCard__betaBadgeWrapper\">\n <EuiBetaBadge\n class=\"euiCard__betaBadge\"\n @label={{@betaBadgeProps.label}}\n @title={{@betaBadgeProps.title}}\n @tooltipContent={{@betaBadgeProps.tooltipContent}}\n />\n </span>\n {{/if}}\n {{#if (and (eq layout \"vertical\") (or (has-block \"footer\") @footer))}}\n <div class={{this.footerClasses}}>\n {{#if (has-block \"footer\")}}\n {{yield to=\"footer\"}}\n {{else}}\n {{@footer}}\n {{/if}}\n </div>\n {{/if}}\n {{#if @selectable}}\n <EuiCardSelect\n @type={{@selectable.type}}\n @buttonId={{selectableId}}\n @isSelected={{@selectable.isSelected}}\n @isDisabled={{@selectable.isDisabled}}\n @color={{@selectable.color}}\n @isLoading={{@selectable.isLoading}}\n @href={{@selectable.href}}\n @iconSide={{@selectable.iconSide}}\n @flush={{@selectable.flush}}\n {{didInsert (set this \"link\")}}\n @onClick={{optional @selectable.onClick}}\n />\n {{/if}}\n </EuiPanel>\n {{/let}}\n </template>\n}\n"],"names":["EuiCardComponent","Component","g","prototype","tracked","i","void 0","outerOnClick","e","link","target","click","selectableColorClass","selectable","args","euiCardSelectableColor","color","isSelected","undefined","topClasses","topClassName","join","contentClasses","contentClassName","footerClasses","footerClassName","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","and","not","or","argOrDefault","EuiPanel","classNames","eq","notEq","EuiIcon","EuiTitle","set","didInsert","element","on","optional","EuiText","EuiBetaBadge","EuiCardSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+Fe,MAAMA,yBAAyBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CACrDC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6D,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,MAAA;EAEnEC,YAAA,GAAgBC,CAAG,IAAA;IACjB,IAAI,IAAI,CAACC,IAAI,IAAI,IAAI,CAACA,IAAI,KAAKD,CAAE,CAAAE,MAAM,EAAE;AACvC,MAAA,IAAI,CAACD,IAAI,CAACE,KAAK,EAAA;AACjB;GACA;EAEF,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,MAAMC,UAAa,GAAA,IAAI,CAACC,IAAI,CAACD,UAAU;AAEvC,IAAA,OAAOA,UACH,GAAA,CAA0BE,uBAAAA,EAAAA,sBACxB,CAAAF,UAAA,CAAWG,KAAK,EAChBH,UAAW,CAAAI,UAAU,CACrB,CAAA,CAAC,GACHC,SAAA;AACN;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,cAAA,EAAgB,IAAI,CAACL,IAAI,CAACM,YAAY,CAAC,CAACC,IAAI,CAAC,GAAA,CAAA;AACvD;EAEA,IAAIC,cAAAA,GAAyB;AAC3B,IAAA,OAAO,CAAC,kBAAA,EAAoB,IAAI,CAACR,IAAI,CAACS,gBAAgB,CAAC,CAACF,IAAI,CAAC,GAAA,CAAA;AAC/D;EAEA,IAAIG,aAAAA,GAAwB;AAC1B,IAAA,OAAO,CAAC,iBAAA,EAAmB,IAAI,CAACV,IAAI,CAACW,eAAe,CAAC,CAACJ,IAAI,CAAC,GAAA,CAAA;AAC7D;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CA0JA,y0JAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC,EAAA;QAAAC,QAAA;iBAAAC,gBAAA;QAAAC,YAAA;AAAAC,uBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
1
|
+
{"version":3,"file":"eui-card.js","sources":["../../src/components/eui-card.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 { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, notEq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiBetaBadge from './eui-beta-badge.gts';\nimport { euiCardSelectableColor } from './eui-card-select.gts';\nimport EuiCardSelect from './eui-card-select.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { EuiCardSelectProps } from './eui-card-select';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiPanelSignature } from './eui-panel';\nimport type { EuiTitleSignature } from './eui-title';\n\ntype EuiCardComponentArgs = {\n footer?: string;\n selectable?: EuiCardSelectProps;\n /**\n * Class that will apply to the card top section.\n */\n topClassName?: string;\n\n /**\n * Class that will apply to the card content section.\n */\n contentClassName?: string;\n\n /**\n * Class that will apply to the card footer section.\n */\n footerClassName?: string;\n\n target?: string;\n\n betaBadgeProps?: {\n label: string;\n title?: string;\n tooltipContent?: string;\n };\n\n description?: string;\n\n /**\n * The title of the card.\n */\n title?: string;\n titleSize?: EuiTitleSignature['Args']['size'];\n\n /**\n * The title element. Will wrap the title in a heading tag.\n */\n titleElement?: string;\n\n href?: string;\n\n onClick?: (e: MouseEvent) => void;\n\n isDisabled?: boolean;\n\n textAlign?: 'left' | 'center' | 'right';\n\n image?: string;\n icon?: string;\n layout?: 'horizontal' | 'vertical';\n\n display?: EuiPanelSignature['Args']['color'];\n paddingSize?: EuiPanelSignature['Args']['paddingSize'];\n\n iconSize?: EuiIconSignature['Args']['size'];\n};\n\nexport interface EuiCardSignature {\n Element: EuiPanelSignature['Element'];\n Args: EuiCardComponentArgs;\n Blocks: {\n icon: ['euiCard__icon'];\n title: [() => void];\n description: [];\n body: [];\n footer: [];\n };\n}\n\nexport default class EuiCardComponent extends Component<EuiCardSignature> {\n @tracked link: HTMLAnchorElement | HTMLButtonElement | null = null;\n\n outerOnClick = (e: MouseEvent) => {\n if (this.link && this.link !== e.target) {\n this.link.click();\n }\n };\n\n get selectableColorClass() {\n const selectable = this.args.selectable;\n\n return selectable\n ? `euiCard--isSelectable--${euiCardSelectableColor(\n selectable.color,\n selectable.isSelected\n )}`\n : undefined;\n }\n\n get topClasses(): string {\n return ['euiCard__top', this.args.topClassName].join(' ');\n }\n\n get contentClasses(): string {\n return ['euiCard__content', this.args.contentClassName].join(' ');\n }\n\n get footerClasses(): string {\n return ['euiCard__footer', this.args.footerClassName].join(' ');\n }\n\n willDestroy() {\n super.willDestroy();\n\n this.link = null;\n }\n\n <template>\n {{#let\n (if @selectable (randomId))\n (and\n (not @isDisabled)\n (or @onClick @href (and @selectable (not @selectable.isDisabled)))\n )\n (argOrDefault @titleElement \"span\")\n (argOrDefault @layout \"vertical\")\n as |selectableId isClickable titleElement layout|\n }}\n <EuiPanel\n class={{classNames\n (if (eq layout \"horizontal\") \"euiCard--horizontal\")\n (if isClickable \"euiCard--isClickable\")\n (if @betaBadgeProps.label \"euiCard--hasBetaBadge\")\n (if\n @icon \"euiCard--hasIcon\" (if (has-block \"icon\") \"euiCard--hasIcon\")\n )\n (if @selectable \"euiCard--isSelectable\")\n (if (and @selectable @selectable.isSelected) \"euiCard-isSelected\")\n (if @isDisabled \"euiCard-isDisabled\")\n this.selectableColorClass\n componentName=\"EuiCard\"\n textAlign=(argOrDefault @textAlign \"center\")\n }}\n @color={{if @isDisabled \"subdued\" @display}}\n @onClick={{if isClickable this.outerOnClick}}\n @hasShadow={{if (or @isDisabled @display) true}}\n @hasBorder={{if @display true undefined}}\n @paddingSize={{@paddingSize}}\n ...attributes\n >\n\n {{#if (or (has-block \"icon\") (or @image @icon))}}\n <div class={{this.topClasses}}>\n {{#if (has-block \"icon\")}}\n {{yield \"euiCard__icon\" to=\"icon\"}}\n {{else}}\n {{#if (or @image @icon)}}\n {{#if (and @image (notEq layout \"horizontal\"))}}\n <div class=\"euiCard__image\">\n <img src={{@image}} alt=\"card-top\" />\n </div>\n {{/if}}\n {{#if @icon}}\n <EuiIcon\n @iconClasses=\"euiCard__icon\"\n @type={{@icon}}\n @size={{@iconSize}}\n />\n {{/if}}\n {{/if}}\n {{/if}}\n </div>\n {{/if}}\n\n <div class={{this.contentClasses}}>\n <EuiTitle\n class=\"euiCard__title\"\n @size={{argOrDefault @titleSize \"s\"}}\n >\n {{#if (has-block \"title\")}}\n {{yield (set this \"link\") to=\"title\"}}\n {{else if (and (not @isDisabled) @href)}}\n <a\n class=\"euiCard__titleAnchor\"\n target={{@target}}\n disabled={{@isDisabled}}\n href={{@href}}\n {{didInsert (set this \"link\")}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n\n </a>\n {{else if (or @isDisabled @onClick)}}\n <button\n type=\"button\"\n class=\"euiCard__titleButton\"\n disabled={{@isDisabled}}\n {{didInsert (set this \"link\")}}\n {{on \"click\" (optional @onClick)}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n </button>\n {{else}}\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n {{/if}}\n </EuiTitle>\n {{#if (or @description (has-block \"description\"))}}\n <EuiText @grow={{true}} @size=\"s\" class=\"euiCard__description\">\n {{#if (has-block \"description\")}}\n <p>{{yield to=\"description\"}}</p>\n {{else}}\n <p>{{@description}}</p>\n {{/if}}\n </EuiText>\n {{/if}}\n {{yield to=\"body\"}}\n </div>\n {{#if @betaBadgeProps.label}}\n <span class=\"euiCard__betaBadgeWrapper\">\n <EuiBetaBadge\n class=\"euiCard__betaBadge\"\n @label={{@betaBadgeProps.label}}\n @title={{@betaBadgeProps.title}}\n @tooltipContent={{@betaBadgeProps.tooltipContent}}\n />\n </span>\n {{/if}}\n {{#if (and (eq layout \"vertical\") (or (has-block \"footer\") @footer))}}\n <div class={{this.footerClasses}}>\n {{#if (has-block \"footer\")}}\n {{yield to=\"footer\"}}\n {{else}}\n {{@footer}}\n {{/if}}\n </div>\n {{/if}}\n {{#if @selectable}}\n <EuiCardSelect\n @type={{@selectable.type}}\n @buttonId={{selectableId}}\n @isSelected={{@selectable.isSelected}}\n @isDisabled={{@selectable.isDisabled}}\n @color={{@selectable.color}}\n @isLoading={{@selectable.isLoading}}\n @href={{@selectable.href}}\n @iconSide={{@selectable.iconSide}}\n @flush={{@selectable.flush}}\n {{didInsert (set this \"link\")}}\n @onClick={{optional @selectable.onClick}}\n />\n {{/if}}\n </EuiPanel>\n {{/let}}\n </template>\n}\n"],"names":["EuiCardComponent","Component","g","prototype","tracked","i","void 0","outerOnClick","e","link","target","click","selectableColorClass","selectable","args","euiCardSelectableColor","color","isSelected","undefined","topClasses","topClassName","join","contentClasses","contentClassName","footerClasses","footerClassName","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","and","not","or","argOrDefault","EuiPanel","classNames","eq","notEq","EuiIcon","EuiTitle","set","didInsert","element","on","optional","EuiText","EuiBetaBadge","EuiCardSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+Fe,MAAMA,yBAAyBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CACrDC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6D,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,MAAA;EAEnEC,YAAA,GAAgBC,CAAG,IAAA;IACjB,IAAI,IAAI,CAACC,IAAI,IAAI,IAAI,CAACA,IAAI,KAAKD,CAAE,CAAAE,MAAM,EAAE;AACvC,MAAA,IAAI,CAACD,IAAI,CAACE,KAAK,EAAA;AACjB;GACA;EAEF,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,MAAMC,UAAa,GAAA,IAAI,CAACC,IAAI,CAACD,UAAU;AAEvC,IAAA,OAAOA,UACH,GAAA,CAA0BE,uBAAAA,EAAAA,sBACxB,CAAAF,UAAA,CAAWG,KAAK,EAChBH,UAAW,CAAAI,UAAU,CACrB,CAAA,CAAC,GACHC,SAAA;AACN;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,cAAA,EAAgB,IAAI,CAACL,IAAI,CAACM,YAAY,CAAC,CAACC,IAAI,CAAC,GAAA,CAAA;AACvD;EAEA,IAAIC,cAAAA,GAAyB;AAC3B,IAAA,OAAO,CAAC,kBAAA,EAAoB,IAAI,CAACR,IAAI,CAACS,gBAAgB,CAAC,CAACF,IAAI,CAAC,GAAA,CAAA;AAC/D;EAEA,IAAIG,aAAAA,GAAwB;AAC1B,IAAA,OAAO,CAAC,iBAAA,EAAmB,IAAI,CAACV,IAAI,CAACW,eAAe,CAAC,CAACJ,IAAI,CAAC,GAAA,CAAA;AAC7D;AAEAK,EAAAA,WAAcA,GAAA;IACZ,KAAK,CAACA,WAAA,EAAA;IAEN,IAAI,CAACjB,IAAI,GAAG,IAAA;AACd;AAEA,EAAA;IAAAkB,oBAAA,CAAAC,kBAAA,CA0JA,y0JAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC,EAAA;QAAAC,QAAA;iBAAAC,gBAAA;QAAAC,YAAA;AAAAC,uBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -226,6 +226,13 @@ class EuiCodeBlockComponent extends Component {
|
|
|
226
226
|
static {
|
|
227
227
|
n(this.prototype, "updateCode", [action]);
|
|
228
228
|
}
|
|
229
|
+
willDestroy() {
|
|
230
|
+
super.willDestroy();
|
|
231
|
+
this.codeTarget = undefined;
|
|
232
|
+
this.code = undefined;
|
|
233
|
+
this.codeFullScreen = undefined;
|
|
234
|
+
this.wrapperRef = undefined;
|
|
235
|
+
}
|
|
229
236
|
static {
|
|
230
237
|
setComponentTemplate(precompileTemplate("\n {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}\n {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}\n {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}\n {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}\n {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}\n {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}\n {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}\n {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}\n {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}\n {{#if this.codeTarget}}\n {{#in-element this.codeTarget}}\n {{yield}}\n {{/in-element}}\n {{/if}}\n <EuiInnerText as |setInnerTextRef innerText|>\n {{#let (classNames \"euiCodeBlock\" (if (or this.showCopyButton this.showFullScreenButton) \"euiCodeBlock--hasControl\") (if (and this.showCopyButton this.showFullScreenButton) \"euiCodeBlock--hasBothControls\") (if this.lineNumbersConfig.show \"euiCodeBlock--hasLineNumbers\")) (classNames \"euiCodeBlock__pre\" (if (or (eq this.whiteSpace \"pre\") this.isVirtualized) \"euiCodeBlock__pre--whiteSpacePre\") (if (and (eq this.whiteSpace \"pre-wrap\") (not this.isVirtualized)) \"euiCodeBlock__pre--whiteSpacePreWrap\") (if this.isVirtualized \"euiCodeBlock__pre--isVirtualized\")) as |wrapperClasses preClasses|}}\n <div class={{classNames wrapperClasses (if this.transparentBackground \"euiCodeBlock--transparentBackground\") componentName=\"EuiCodeBlock\" fontSize=this.fontSize paddingSize=this.paddingSize}} {{style this.optionalStyles}} {{highlightTargetModifier element=this.codeTarget language=this.language lineNumbersConfig=this.lineNumbersConfig onChange=this.updateCode}}>\n {{#if this.isVirtualized}}\n {{!--virtualized--}}\n <VirtualizedCodeBlock class={{preClasses}} tabindex=\"0\" {{onKey \"Escape\" this.closeFullScreen}} @language={{this.language}} @data={{this.data.data}} @rowHeight={{this.rowHeight}} />\n {{else}}\n {{!--template-lint-disable--}}\n <pre class={{preClasses}} {{style this.optionalStyles}} tabindex={{this.tabIndex}} {{didInsert (set this \"wrapperRef\")}} {{resizeObserver onResize=this.doesOverflow}} {{mutationObserver onMutation=this.doesOverflow observerOptions=(hash subtree=true childList=true)}} {{didInsert setInnerTextRef}}><code class=\"euiCodeBlock__code\" data-code-language={{this.language}} {{didInsert (set this \"code\")}} ...attributes></code></pre>\n\n {{/if}}\n\n <Controls @isFullScreen={{this.isFullScreen}} @showFullScreenButton={{this.showFullScreenButton}} @toggleFullScreen={{this.toggleFullScreen}} @showCopyButton={{this.showCopyButton}} @textToCopy={{textToCopyHelper isVirtualized=this.isVirtualized innerText=(cleanTextHelper innerText) element=this.data.element}} />\n\n {{#if this.isFullScreen}}\n <FullScreenDisplay class={{wrapperClasses}}>\n {{#if this.isVirtualized}}\n <VirtualizedCodeBlock class={{preClasses}} tabindex=\"0\" {{onKey \"Escape\" this.closeFullScreen}} @language={{this.language}} @data={{this.data.data}} @rowHeight={{fontSizeToRowHeightMap.l}} />\n {{else}}\n <pre class={{preClasses}} tabindex=\"0\" {{onKey \"Escape\" this.closeFullScreen}}><code class=\"euiCodeBlock__code\" data-code-language={{this.language}} {{didInsert (set this \"codeFullScreen\")}}></code></pre>\n {{/if}}\n <Controls @isFullScreen={{this.isFullScreen}} @showFullScreenButton={{this.showFullScreenButton}} @showCopyButton={{this.showCopyButton}} @toggleFullScreen={{this.toggleFullScreen}} @textToCopy={{textToCopyHelper isVirtualized=this.isVirtualized innerText=(cleanTextHelper innerText) element=this.data.element}} />\n </FullScreenDisplay>\n {{/if}}\n </div>\n {{/let}}\n </EuiInnerText>\n ", {
|
|
231
238
|
strictMode: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-code-block.js","sources":["../../src/components/eui-code-block.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { helper } from '@ember/component/helper';\nimport { hash } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { modifier } from 'ember-modifier';\nimport set from 'ember-set-helper/helpers/set';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, not,or } from 'ember-truth-helpers';\n\nimport Controls from '../components/eui-code-block/controls.gts';\nimport FullScreenDisplay from '../components/eui-code-block/full-screen-display.gts';\nimport VirtualizedCodeBlock from '../components/eui-code-block/virtualized.gts';\nimport EuiInnerText from '../components/eui-inner-text.gts';\nimport classNames from '../helpers/class-names.ts';\nimport mutationObserver from '../modifiers/mutation-observer.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport {\n checkSupportedLanguage,\n getHtmlContent,\n highlightByLine\n} from '../utils/code/utils.ts';\n\nimport type { EuiCodeSharedProps } from '../utils/code/utils.ts';\nimport type { RefractorNode } from 'refractor';\n\ninterface LineNumbersConfig {\n start?: number;\n highlight?: string;\n show?: boolean;\n}\n\nexport type PaddingSize = 'none' | 's' | 'm' | 'l';\nexport type FontSize = 's' | 'm' | 'l';\n\nconst fontSizeToRowHeightMap = {\n s: 18,\n m: 21,\n l: 24\n};\n\nexport type EuiCodeBlockArgs = EuiCodeSharedProps & {\n paddingSize?: PaddingSize;\n fontSize?: FontSize;\n\n /**\n * Specify how `white-space` inside the element is handled.\n * `pre` respects line breaks/white space but doesn't force them to wrap the line\n * `pre-wrap` respects line breaks/white space but does force them to wrap the line when necessary.\n */\n whiteSpace?: 'pre' | 'pre-wrap';\n\n /**\n * Displays an icon button to copy the code snippet to the clipboard.\n */\n isCopyable?: boolean;\n\n /**\n * Displays line numbers.\n * Optionally accepts a configuration object for setting the starting number and visual highlighting ranges:\n * `{ start: 100, highlight: '1, 5-10, 20-30, 40' }`\n */\n lineNumbers?: boolean | LineNumbersConfig;\n\n /**\n * Sets the maximum container height.\n * Accepts a pixel value (`300`) or a percentage (`'100%'`)\n * Ensure the container has calcuable height when using a percentage\n */\n overflowHeight?: number | string;\n\n /**\n * Renders code block lines virtually.\n * Useful for improving load times of large code blocks.\n *\n * When using this configuration, `overflowHeight` is required and\n * `whiteSpace` can only be `pre`.\n */\n isVirtualized?: boolean;\n};\n\nexport interface EuiCodeBlockSignature {\n Element: HTMLElement;\n Args: EuiCodeBlockArgs;\n Blocks: {\n default: [];\n };\n}\n\ninterface LineNumbersFinal {\n start: number;\n show: boolean;\n highlight?: string;\n}\n\nconst highlightTargetModifier = modifier(\n (\n _e,\n _pos: unknown[],\n {\n element: targetEle,\n language = 'text',\n lineNumbersConfig = { start: 1, show: false },\n onChange\n }: {\n element: Element | undefined;\n language: EuiCodeSharedProps['language'];\n lineNumbersConfig: LineNumbersFinal;\n onChange: ({\n data,\n element\n }: {\n data: RefractorNode[];\n element: HTMLElement;\n }) => void;\n }\n ) => {\n let observer: undefined | MutationObserver;\n\n const getHighlighedHtml = () => {\n const html = (targetEle?.textContent ? targetEle.textContent : '').trim();\n\n let data: RefractorNode[];\n\n if (typeof html !== 'string') {\n data = [];\n } else {\n data = highlightByLine(html, language, lineNumbersConfig);\n }\n\n return {\n data,\n element: getHtmlContent(data).element\n };\n };\n\n const setupObserver = () => {\n const newObserver = new MutationObserver((mutationsList) => {\n if (mutationsList.length) {\n onChange(getHighlighedHtml());\n }\n });\n\n if (targetEle) {\n onChange(getHighlighedHtml());\n newObserver.observe(targetEle, {\n characterData: true,\n subtree: true,\n childList: true\n });\n }\n\n return newObserver;\n };\n\n if (targetEle) {\n observer = setupObserver();\n }\n\n return () => {\n observer?.disconnect();\n };\n }\n);\n\nconst cleanTextHelper = helper(function ([text]: [string]) {\n return text?.replace(/[\\r\\n?]{2}|\\n\\n/g, '\\n') || '';\n});\n\nconst textToCopyHelper = helper(function (\n _pos,\n {\n isVirtualized,\n element,\n innerText\n }: {\n isVirtualized: boolean;\n element: HTMLElement | undefined;\n innerText: string;\n }\n) {\n if (element) {\n return isVirtualized\n ? element.textContent\n ? element.textContent\n : ''\n : innerText;\n }\n\n return '';\n});\n\nexport default class EuiCodeBlockComponent extends Component<EuiCodeBlockSignature> {\n //fake element where yield writes to, so we can observe and clone a highlighted version to code and codeFullSceen\n @tracked codeTarget?: HTMLElement;\n //<code> Element for non fullscreen\n @tracked code?: HTMLElement;\n //<code> Element for fullscreen modal\n @tracked codeFullScreen?: HTMLElement;\n @tracked wrapperRef?: HTMLElement;\n @tracked tabIndex = 1;\n @tracked isFullScreen = false;\n @tracked data?: { data: RefractorNode[]; element: HTMLElement };\n\n get language() {\n return checkSupportedLanguage(this.args.language || '');\n }\n\n get transparentBackground() {\n return this.args.transparentBackground ?? false;\n }\n\n get paddingSize() {\n return this.args.paddingSize ?? 'l';\n }\n\n get fontSize() {\n return this.args.fontSize ?? 's';\n }\n\n get isCopyable() {\n return this.args.isCopyable ?? false;\n }\n\n get whiteSpace() {\n return this.args.whiteSpace ?? 'pre-wrap';\n }\n\n get isVirtualized() {\n return !!(this.args.isVirtualized && Array.isArray(this.data?.data));\n }\n\n get lineNumbers() {\n return this.args.lineNumbers ?? false;\n }\n\n get lineNumbersConfig() {\n const { lineNumbers } = this;\n const config = typeof lineNumbers === 'object' ? lineNumbers : {};\n\n return lineNumbers\n ? { start: 1, show: true, ...config }\n : { start: 1, show: false };\n }\n\n get optionalStyles() {\n const overflowHeight = this.args.overflowHeight;\n\n if (overflowHeight) {\n const property =\n typeof overflowHeight === 'string' ? 'height' : 'maxHeight';\n\n return {\n [property]:\n typeof overflowHeight === 'string'\n ? overflowHeight\n : `${overflowHeight}px`\n };\n }\n\n return {};\n }\n\n get showCopyButton() {\n return this.isCopyable && true;\n }\n\n get rowHeight() {\n return fontSizeToRowHeightMap[this.fontSize];\n }\n\n get showFullScreenButton() {\n return !!this.args.overflowHeight;\n }\n\n constructor(owner: Owner, args: EuiCodeBlockArgs) {\n super(owner, args);\n this.codeTarget = document.createElement('div');\n }\n\n @action\n toggleFullScreen() {\n this.isFullScreen = !this.isFullScreen;\n }\n\n @action\n closeFullScreen(e: KeyboardEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.isFullScreen = false;\n }\n\n @action\n doesOverflow() {\n if (!this.wrapperRef) return;\n\n const { clientWidth, clientHeight, scrollWidth, scrollHeight } =\n this.wrapperRef;\n const doesOverflow =\n scrollHeight > clientHeight || scrollWidth > clientWidth;\n\n this.tabIndex = doesOverflow ? 0 : -1;\n }\n\n @action\n updateCode(resp: { data: RefractorNode[]; element: HTMLElement }) {\n const render = () => {\n const code = this.code;\n const codeFullScreen = this.codeFullScreen;\n\n if (code && !this.isFullScreen) {\n this.data = resp;\n code.innerHTML = resp.element.innerHTML;\n }\n\n if (codeFullScreen && this.isFullScreen) {\n this.data = resp;\n codeFullScreen.innerHTML = resp.element.innerHTML;\n }\n };\n\n scheduleOnce('afterRender', this, render);\n }\n\n <template>\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{#if this.codeTarget}}\n {{#in-element this.codeTarget}}\n {{yield}}\n {{/in-element}}\n {{/if}}\n <EuiInnerText as |setInnerTextRef innerText|>\n {{#let\n (classNames\n \"euiCodeBlock\"\n (if\n (or this.showCopyButton this.showFullScreenButton)\n \"euiCodeBlock--hasControl\"\n )\n (if\n (and this.showCopyButton this.showFullScreenButton)\n \"euiCodeBlock--hasBothControls\"\n )\n (if this.lineNumbersConfig.show \"euiCodeBlock--hasLineNumbers\")\n )\n (classNames\n \"euiCodeBlock__pre\"\n (if\n (or (eq this.whiteSpace \"pre\") this.isVirtualized)\n \"euiCodeBlock__pre--whiteSpacePre\"\n )\n (if\n (and (eq this.whiteSpace \"pre-wrap\") (not this.isVirtualized))\n \"euiCodeBlock__pre--whiteSpacePreWrap\"\n )\n (if this.isVirtualized \"euiCodeBlock__pre--isVirtualized\")\n )\n as |wrapperClasses preClasses|\n }}\n <div\n class={{classNames\n wrapperClasses\n (if\n this.transparentBackground \"euiCodeBlock--transparentBackground\"\n )\n componentName=\"EuiCodeBlock\"\n fontSize=this.fontSize\n paddingSize=this.paddingSize\n }}\n {{style this.optionalStyles}}\n {{highlightTargetModifier\n element=this.codeTarget\n language=this.language\n lineNumbersConfig=this.lineNumbersConfig\n onChange=this.updateCode\n }}\n >\n {{#if this.isVirtualized}}\n {{!virtualized}}\n <VirtualizedCodeBlock\n class={{preClasses}}\n tabindex=\"0\"\n {{onKey \"Escape\" this.closeFullScreen}}\n @language={{this.language}}\n @data={{this.data.data}}\n @rowHeight={{this.rowHeight}}\n />\n {{else}}\n {{!template-lint-disable}}\n <pre\n class={{preClasses}}\n {{style this.optionalStyles}}\n tabindex={{this.tabIndex}}\n {{didInsert (set this \"wrapperRef\")}}\n {{resizeObserver onResize=this.doesOverflow}}\n {{mutationObserver\n onMutation=this.doesOverflow\n observerOptions=(hash subtree=true childList=true)\n }}\n {{didInsert setInnerTextRef}}\n ><code\n class=\"euiCodeBlock__code\"\n data-code-language={{this.language}}\n {{didInsert (set this \"code\")}}\n ...attributes\n ></code></pre>\n\n {{/if}}\n\n <Controls\n @isFullScreen={{this.isFullScreen}}\n @showFullScreenButton={{this.showFullScreenButton}}\n @toggleFullScreen={{this.toggleFullScreen}}\n @showCopyButton={{this.showCopyButton}}\n @textToCopy={{textToCopyHelper\n isVirtualized=this.isVirtualized\n innerText=(cleanTextHelper innerText)\n element=this.data.element\n }}\n />\n\n {{#if this.isFullScreen}}\n <FullScreenDisplay class={{wrapperClasses}}>\n {{#if this.isVirtualized}}\n <VirtualizedCodeBlock\n class={{preClasses}}\n tabindex=\"0\"\n {{onKey \"Escape\" this.closeFullScreen}}\n @language={{this.language}}\n @data={{this.data.data}}\n @rowHeight={{fontSizeToRowHeightMap.l}}\n />\n {{else}}\n <pre\n class={{preClasses}}\n tabindex=\"0\"\n {{onKey \"Escape\" this.closeFullScreen}}\n ><code\n class=\"euiCodeBlock__code\"\n data-code-language={{this.language}}\n {{didInsert (set this \"codeFullScreen\")}}\n ></code></pre>\n {{/if}}\n <Controls\n @isFullScreen={{this.isFullScreen}}\n @showFullScreenButton={{this.showFullScreenButton}}\n @showCopyButton={{this.showCopyButton}}\n @toggleFullScreen={{this.toggleFullScreen}}\n @textToCopy={{textToCopyHelper\n isVirtualized=this.isVirtualized\n innerText=(cleanTextHelper innerText)\n element=this.data.element\n }}\n />\n </FullScreenDisplay>\n {{/if}}\n </div>\n {{/let}}\n </EuiInnerText>\n </template>\n}\n"],"names":["fontSizeToRowHeightMap","s","m","l","highlightTargetModifier","modifier","_e","_pos","element","targetEle","language","lineNumbersConfig","start","show","onChange","observer","getHighlighedHtml","html","textContent","trim","data","highlightByLine","getHtmlContent","setupObserver","newObserver","MutationObserver","mutationsList","length","observe","characterData","subtree","childList","disconnect","cleanTextHelper","helper","text","replace","textToCopyHelper","isVirtualized","innerText","EuiCodeBlockComponent","Component","g","prototype","tracked","i","void 0","checkSupportedLanguage","args","transparentBackground","paddingSize","fontSize","isCopyable","whiteSpace","Array","isArray","lineNumbers","config","optionalStyles","overflowHeight","property","showCopyButton","rowHeight","showFullScreenButton","constructor","owner","codeTarget","document","createElement","toggleFullScreen","isFullScreen","n","action","closeFullScreen","e","preventDefault","stopPropagation","doesOverflow","wrapperRef","clientWidth","clientHeight","scrollWidth","scrollHeight","tabIndex","updateCode","resp","render","code","codeFullScreen","innerHTML","scheduleOnce","setComponentTemplate","precompileTemplate","strictMode","scope","EuiInnerText","classNames","or","and","eq","not","style","VirtualizedCodeBlock","onKey","didInsert","set","resizeObserver","mutationObserver","hash","Controls","FullScreenDisplay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-code-block.js","sources":["../../src/components/eui-code-block.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { helper } from '@ember/component/helper';\nimport { hash } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { modifier } from 'ember-modifier';\nimport set from 'ember-set-helper/helpers/set';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, not,or } from 'ember-truth-helpers';\n\nimport Controls from '../components/eui-code-block/controls.gts';\nimport FullScreenDisplay from '../components/eui-code-block/full-screen-display.gts';\nimport VirtualizedCodeBlock from '../components/eui-code-block/virtualized.gts';\nimport EuiInnerText from '../components/eui-inner-text.gts';\nimport classNames from '../helpers/class-names.ts';\nimport mutationObserver from '../modifiers/mutation-observer.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport {\n checkSupportedLanguage,\n getHtmlContent,\n highlightByLine\n} from '../utils/code/utils.ts';\n\nimport type { EuiCodeSharedProps } from '../utils/code/utils.ts';\nimport type { RefractorNode } from 'refractor';\n\ninterface LineNumbersConfig {\n start?: number;\n highlight?: string;\n show?: boolean;\n}\n\nexport type PaddingSize = 'none' | 's' | 'm' | 'l';\nexport type FontSize = 's' | 'm' | 'l';\n\nconst fontSizeToRowHeightMap = {\n s: 18,\n m: 21,\n l: 24\n};\n\nexport type EuiCodeBlockArgs = EuiCodeSharedProps & {\n paddingSize?: PaddingSize;\n fontSize?: FontSize;\n\n /**\n * Specify how `white-space` inside the element is handled.\n * `pre` respects line breaks/white space but doesn't force them to wrap the line\n * `pre-wrap` respects line breaks/white space but does force them to wrap the line when necessary.\n */\n whiteSpace?: 'pre' | 'pre-wrap';\n\n /**\n * Displays an icon button to copy the code snippet to the clipboard.\n */\n isCopyable?: boolean;\n\n /**\n * Displays line numbers.\n * Optionally accepts a configuration object for setting the starting number and visual highlighting ranges:\n * `{ start: 100, highlight: '1, 5-10, 20-30, 40' }`\n */\n lineNumbers?: boolean | LineNumbersConfig;\n\n /**\n * Sets the maximum container height.\n * Accepts a pixel value (`300`) or a percentage (`'100%'`)\n * Ensure the container has calcuable height when using a percentage\n */\n overflowHeight?: number | string;\n\n /**\n * Renders code block lines virtually.\n * Useful for improving load times of large code blocks.\n *\n * When using this configuration, `overflowHeight` is required and\n * `whiteSpace` can only be `pre`.\n */\n isVirtualized?: boolean;\n};\n\nexport interface EuiCodeBlockSignature {\n Element: HTMLElement;\n Args: EuiCodeBlockArgs;\n Blocks: {\n default: [];\n };\n}\n\ninterface LineNumbersFinal {\n start: number;\n show: boolean;\n highlight?: string;\n}\n\nconst highlightTargetModifier = modifier(\n (\n _e,\n _pos: unknown[],\n {\n element: targetEle,\n language = 'text',\n lineNumbersConfig = { start: 1, show: false },\n onChange\n }: {\n element: Element | undefined;\n language: EuiCodeSharedProps['language'];\n lineNumbersConfig: LineNumbersFinal;\n onChange: ({\n data,\n element\n }: {\n data: RefractorNode[];\n element: HTMLElement;\n }) => void;\n }\n ) => {\n let observer: undefined | MutationObserver;\n\n const getHighlighedHtml = () => {\n const html = (targetEle?.textContent ? targetEle.textContent : '').trim();\n\n let data: RefractorNode[];\n\n if (typeof html !== 'string') {\n data = [];\n } else {\n data = highlightByLine(html, language, lineNumbersConfig);\n }\n\n return {\n data,\n element: getHtmlContent(data).element\n };\n };\n\n const setupObserver = () => {\n const newObserver = new MutationObserver((mutationsList) => {\n if (mutationsList.length) {\n onChange(getHighlighedHtml());\n }\n });\n\n if (targetEle) {\n onChange(getHighlighedHtml());\n newObserver.observe(targetEle, {\n characterData: true,\n subtree: true,\n childList: true\n });\n }\n\n return newObserver;\n };\n\n if (targetEle) {\n observer = setupObserver();\n }\n\n return () => {\n observer?.disconnect();\n };\n }\n);\n\nconst cleanTextHelper = helper(function ([text]: [string]) {\n return text?.replace(/[\\r\\n?]{2}|\\n\\n/g, '\\n') || '';\n});\n\nconst textToCopyHelper = helper(function (\n _pos,\n {\n isVirtualized,\n element,\n innerText\n }: {\n isVirtualized: boolean;\n element: HTMLElement | undefined;\n innerText: string;\n }\n) {\n if (element) {\n return isVirtualized\n ? element.textContent\n ? element.textContent\n : ''\n : innerText;\n }\n\n return '';\n});\n\nexport default class EuiCodeBlockComponent extends Component<EuiCodeBlockSignature> {\n //fake element where yield writes to, so we can observe and clone a highlighted version to code and codeFullSceen\n @tracked codeTarget?: HTMLElement;\n //<code> Element for non fullscreen\n @tracked code?: HTMLElement;\n //<code> Element for fullscreen modal\n @tracked codeFullScreen?: HTMLElement;\n @tracked wrapperRef?: HTMLElement;\n @tracked tabIndex = 1;\n @tracked isFullScreen = false;\n @tracked data?: { data: RefractorNode[]; element: HTMLElement };\n\n get language() {\n return checkSupportedLanguage(this.args.language || '');\n }\n\n get transparentBackground() {\n return this.args.transparentBackground ?? false;\n }\n\n get paddingSize() {\n return this.args.paddingSize ?? 'l';\n }\n\n get fontSize() {\n return this.args.fontSize ?? 's';\n }\n\n get isCopyable() {\n return this.args.isCopyable ?? false;\n }\n\n get whiteSpace() {\n return this.args.whiteSpace ?? 'pre-wrap';\n }\n\n get isVirtualized() {\n return !!(this.args.isVirtualized && Array.isArray(this.data?.data));\n }\n\n get lineNumbers() {\n return this.args.lineNumbers ?? false;\n }\n\n get lineNumbersConfig() {\n const { lineNumbers } = this;\n const config = typeof lineNumbers === 'object' ? lineNumbers : {};\n\n return lineNumbers\n ? { start: 1, show: true, ...config }\n : { start: 1, show: false };\n }\n\n get optionalStyles() {\n const overflowHeight = this.args.overflowHeight;\n\n if (overflowHeight) {\n const property =\n typeof overflowHeight === 'string' ? 'height' : 'maxHeight';\n\n return {\n [property]:\n typeof overflowHeight === 'string'\n ? overflowHeight\n : `${overflowHeight}px`\n };\n }\n\n return {};\n }\n\n get showCopyButton() {\n return this.isCopyable && true;\n }\n\n get rowHeight() {\n return fontSizeToRowHeightMap[this.fontSize];\n }\n\n get showFullScreenButton() {\n return !!this.args.overflowHeight;\n }\n\n constructor(owner: Owner, args: EuiCodeBlockArgs) {\n super(owner, args);\n this.codeTarget = document.createElement('div');\n }\n\n @action\n toggleFullScreen() {\n this.isFullScreen = !this.isFullScreen;\n }\n\n @action\n closeFullScreen(e: KeyboardEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.isFullScreen = false;\n }\n\n @action\n doesOverflow() {\n if (!this.wrapperRef) return;\n\n const { clientWidth, clientHeight, scrollWidth, scrollHeight } =\n this.wrapperRef;\n const doesOverflow =\n scrollHeight > clientHeight || scrollWidth > clientWidth;\n\n this.tabIndex = doesOverflow ? 0 : -1;\n }\n\n @action\n updateCode(resp: { data: RefractorNode[]; element: HTMLElement }) {\n const render = () => {\n const code = this.code;\n const codeFullScreen = this.codeFullScreen;\n\n if (code && !this.isFullScreen) {\n this.data = resp;\n code.innerHTML = resp.element.innerHTML;\n }\n\n if (codeFullScreen && this.isFullScreen) {\n this.data = resp;\n codeFullScreen.innerHTML = resp.element.innerHTML;\n }\n };\n\n scheduleOnce('afterRender', this, render);\n }\n\n willDestroy() {\n super.willDestroy();\n\n this.codeTarget = undefined;\n this.code = undefined;\n this.codeFullScreen = undefined;\n this.wrapperRef = undefined;\n }\n\n <template>\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{! DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY }}\n {{#if this.codeTarget}}\n {{#in-element this.codeTarget}}\n {{yield}}\n {{/in-element}}\n {{/if}}\n <EuiInnerText as |setInnerTextRef innerText|>\n {{#let\n (classNames\n \"euiCodeBlock\"\n (if\n (or this.showCopyButton this.showFullScreenButton)\n \"euiCodeBlock--hasControl\"\n )\n (if\n (and this.showCopyButton this.showFullScreenButton)\n \"euiCodeBlock--hasBothControls\"\n )\n (if this.lineNumbersConfig.show \"euiCodeBlock--hasLineNumbers\")\n )\n (classNames\n \"euiCodeBlock__pre\"\n (if\n (or (eq this.whiteSpace \"pre\") this.isVirtualized)\n \"euiCodeBlock__pre--whiteSpacePre\"\n )\n (if\n (and (eq this.whiteSpace \"pre-wrap\") (not this.isVirtualized))\n \"euiCodeBlock__pre--whiteSpacePreWrap\"\n )\n (if this.isVirtualized \"euiCodeBlock__pre--isVirtualized\")\n )\n as |wrapperClasses preClasses|\n }}\n <div\n class={{classNames\n wrapperClasses\n (if\n this.transparentBackground \"euiCodeBlock--transparentBackground\"\n )\n componentName=\"EuiCodeBlock\"\n fontSize=this.fontSize\n paddingSize=this.paddingSize\n }}\n {{style this.optionalStyles}}\n {{highlightTargetModifier\n element=this.codeTarget\n language=this.language\n lineNumbersConfig=this.lineNumbersConfig\n onChange=this.updateCode\n }}\n >\n {{#if this.isVirtualized}}\n {{!virtualized}}\n <VirtualizedCodeBlock\n class={{preClasses}}\n tabindex=\"0\"\n {{onKey \"Escape\" this.closeFullScreen}}\n @language={{this.language}}\n @data={{this.data.data}}\n @rowHeight={{this.rowHeight}}\n />\n {{else}}\n {{!template-lint-disable}}\n <pre\n class={{preClasses}}\n {{style this.optionalStyles}}\n tabindex={{this.tabIndex}}\n {{didInsert (set this \"wrapperRef\")}}\n {{resizeObserver onResize=this.doesOverflow}}\n {{mutationObserver\n onMutation=this.doesOverflow\n observerOptions=(hash subtree=true childList=true)\n }}\n {{didInsert setInnerTextRef}}\n ><code\n class=\"euiCodeBlock__code\"\n data-code-language={{this.language}}\n {{didInsert (set this \"code\")}}\n ...attributes\n ></code></pre>\n\n {{/if}}\n\n <Controls\n @isFullScreen={{this.isFullScreen}}\n @showFullScreenButton={{this.showFullScreenButton}}\n @toggleFullScreen={{this.toggleFullScreen}}\n @showCopyButton={{this.showCopyButton}}\n @textToCopy={{textToCopyHelper\n isVirtualized=this.isVirtualized\n innerText=(cleanTextHelper innerText)\n element=this.data.element\n }}\n />\n\n {{#if this.isFullScreen}}\n <FullScreenDisplay class={{wrapperClasses}}>\n {{#if this.isVirtualized}}\n <VirtualizedCodeBlock\n class={{preClasses}}\n tabindex=\"0\"\n {{onKey \"Escape\" this.closeFullScreen}}\n @language={{this.language}}\n @data={{this.data.data}}\n @rowHeight={{fontSizeToRowHeightMap.l}}\n />\n {{else}}\n <pre\n class={{preClasses}}\n tabindex=\"0\"\n {{onKey \"Escape\" this.closeFullScreen}}\n ><code\n class=\"euiCodeBlock__code\"\n data-code-language={{this.language}}\n {{didInsert (set this \"codeFullScreen\")}}\n ></code></pre>\n {{/if}}\n <Controls\n @isFullScreen={{this.isFullScreen}}\n @showFullScreenButton={{this.showFullScreenButton}}\n @showCopyButton={{this.showCopyButton}}\n @toggleFullScreen={{this.toggleFullScreen}}\n @textToCopy={{textToCopyHelper\n isVirtualized=this.isVirtualized\n innerText=(cleanTextHelper innerText)\n element=this.data.element\n }}\n />\n </FullScreenDisplay>\n {{/if}}\n </div>\n {{/let}}\n </EuiInnerText>\n </template>\n}\n"],"names":["fontSizeToRowHeightMap","s","m","l","highlightTargetModifier","modifier","_e","_pos","element","targetEle","language","lineNumbersConfig","start","show","onChange","observer","getHighlighedHtml","html","textContent","trim","data","highlightByLine","getHtmlContent","setupObserver","newObserver","MutationObserver","mutationsList","length","observe","characterData","subtree","childList","disconnect","cleanTextHelper","helper","text","replace","textToCopyHelper","isVirtualized","innerText","EuiCodeBlockComponent","Component","g","prototype","tracked","i","void 0","checkSupportedLanguage","args","transparentBackground","paddingSize","fontSize","isCopyable","whiteSpace","Array","isArray","lineNumbers","config","optionalStyles","overflowHeight","property","showCopyButton","rowHeight","showFullScreenButton","constructor","owner","codeTarget","document","createElement","toggleFullScreen","isFullScreen","n","action","closeFullScreen","e","preventDefault","stopPropagation","doesOverflow","wrapperRef","clientWidth","clientHeight","scrollWidth","scrollHeight","tabIndex","updateCode","resp","render","code","codeFullScreen","innerHTML","scheduleOnce","willDestroy","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","EuiInnerText","classNames","or","and","eq","not","style","VirtualizedCodeBlock","onKey","didInsert","set","resizeObserver","mutationObserver","hash","Controls","FullScreenDisplay"],"mappings":"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"}
|
|
@@ -67,9 +67,11 @@ class EuiCodeComponent extends Component {
|
|
|
67
67
|
willDestroy() {
|
|
68
68
|
super.willDestroy();
|
|
69
69
|
this.observer?.disconnect();
|
|
70
|
+
this.codeTarget = undefined;
|
|
71
|
+
this.code = undefined;
|
|
70
72
|
}
|
|
71
73
|
static {
|
|
72
|
-
setComponentTemplate(precompileTemplate("\n {{#in-element this.codeTarget}}\n
|
|
74
|
+
setComponentTemplate(precompileTemplate("\n {{#if this.codeTarget}}\n {{#in-element this.codeTarget}}\n {{yield}}\n {{/in-element}}\n {{/if}}\n <code class={{classNames \"euiCode\" (if @transparentBackground \"euiCode--transparentBackground\")}} data-code-language={{argOrDefault @language \"text\"}} {{didInsert (set this \"code\")}} {{didInsert this.update}} {{didUpdate this.update this.language}} {{didUpdate this.update this.language}} ...attributes></code>\n ", {
|
|
73
75
|
strictMode: true,
|
|
74
76
|
scope: () => ({
|
|
75
77
|
classNames,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-code.js","sources":["../../src/components/eui-code.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport set from 'ember-set-helper/helpers/set';\nimport { highlight } from 'refractor';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport { checkSupportedLanguage,getHtmlContent } from '../utils/code/utils.ts';\n\nimport type { EuiCodeSharedProps } from '../utils/code/utils.ts';\nimport type { RefractorNode } from 'refractor';\n\nexport type EuiCodeArgs = EuiCodeSharedProps & {\n //comments\n};\n\nexport interface EuiCodeSignature {\n Args: EuiCodeArgs;\n Blocks: {\n default: [];\n };\n Element: HTMLElement;\n}\n\nexport default class EuiCodeComponent extends Component<EuiCodeSignature> {\n @tracked codeTarget
|
|
1
|
+
{"version":3,"file":"eui-code.js","sources":["../../src/components/eui-code.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport set from 'ember-set-helper/helpers/set';\nimport { highlight } from 'refractor';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport { checkSupportedLanguage,getHtmlContent } from '../utils/code/utils.ts';\n\nimport type { EuiCodeSharedProps } from '../utils/code/utils.ts';\nimport type { RefractorNode } from 'refractor';\n\nexport type EuiCodeArgs = EuiCodeSharedProps & {\n //comments\n};\n\nexport interface EuiCodeSignature {\n Args: EuiCodeArgs;\n Blocks: {\n default: [];\n };\n Element: HTMLElement;\n}\n\nexport default class EuiCodeComponent extends Component<EuiCodeSignature> {\n @tracked codeTarget?: HTMLElement;\n @tracked code?: HTMLElement;\n observer: MutationObserver | null = null;\n\n constructor(owner: Owner, args: EuiCodeArgs) {\n super(owner, args);\n this.codeTarget = document.createElement('div');\n this.setupObserver();\n }\n\n get language() {\n return checkSupportedLanguage(this.args.language || '');\n }\n\n setupObserver() {\n this.observer?.disconnect();\n this.observer = new MutationObserver((mutationsList) => {\n if (mutationsList.length) this.update();\n });\n\n if (this.codeTarget) {\n this.update();\n this.observer.observe(this.codeTarget, {\n characterData: true,\n subtree: true,\n childList: true\n });\n }\n }\n\n @action\n update() {\n const render = () => {\n const html = (\n this.codeTarget?.textContent ? this.codeTarget.textContent : ''\n ).trim();\n\n let data: RefractorNode[];\n\n if (typeof html !== 'string') {\n data = [];\n } else {\n data = highlight(html, this.language);\n }\n\n const code = this.code;\n\n if (code) {\n code.innerHTML = getHtmlContent(data).element.innerHTML;\n }\n };\n\n scheduleOnce('afterRender', this, render);\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n this.observer?.disconnect();\n this.codeTarget = undefined;\n this.code = undefined;\n }\n\n <template>\n {{#if this.codeTarget}}\n {{#in-element this.codeTarget}}\n {{yield}}\n {{/in-element}}\n {{/if}}\n <code\n class={{classNames\n \"euiCode\"\n (if @transparentBackground \"euiCode--transparentBackground\")\n }}\n data-code-language={{argOrDefault @language \"text\"}}\n {{didInsert (set this \"code\")}}\n {{didInsert this.update}}\n {{didUpdate this.update this.language}}\n {{didUpdate this.update this.language}}\n ...attributes\n ></code>\n </template>\n}\n"],"names":["EuiCodeComponent","Component","g","prototype","tracked","i","void 0","observer","constructor","owner","args","codeTarget","document","createElement","setupObserver","language","checkSupportedLanguage","disconnect","MutationObserver","mutationsList","length","update","observe","characterData","subtree","childList","render","html","textContent","trim","data","highlight","code","innerHTML","getHtmlContent","element","scheduleOnce","n","action","willDestroy","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","didInsert","set","didUpdate"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { notEq, and } from 'ember-truth-helpers';
|
|
|
4
4
|
import randomId from '../-private/random-id.js';
|
|
5
5
|
import argOrDefault from '../helpers/arg-or-default.js';
|
|
6
6
|
import classNames from '../helpers/class-names.js';
|
|
7
|
-
import
|
|
7
|
+
import EuiAccordionComponent from './eui-accordion.js';
|
|
8
8
|
import EuiFlexGroup from './eui-flex-group.js';
|
|
9
9
|
import EuiFlexItem from './eui-flex-item.js';
|
|
10
10
|
import EuiIcon from './eui-icon.js';
|
|
@@ -20,7 +20,7 @@ const EuiCollapsibleNavGroup = setComponentTemplate(precompileTemplate("\n {{
|
|
|
20
20
|
randomId,
|
|
21
21
|
concat,
|
|
22
22
|
and,
|
|
23
|
-
EuiAccordion:
|
|
23
|
+
EuiAccordion: EuiAccordionComponent,
|
|
24
24
|
classNames,
|
|
25
25
|
EuiFlexGroup,
|
|
26
26
|
EuiFlexItem,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-collapsible-nav-group.js","sources":["../../src/components/eui-collapsible-nav-group.gts"],"sourcesContent":["import { concat } from '@ember/helper';\n\nimport { element } from 'ember-element-helper';\nimport { and, notEq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiAccordion from './eui-accordion.gts';\nimport EuiFlexGroup from './eui-flex-group.gts';\nimport EuiFlexItem from './eui-flex-item.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { EuiAccordionSignature } from './eui-accordion';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiTitleSignature } from './eui-title';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiCollapsibleNavGroupSignature {\n Element: EuiAccordionSignature['Element'];\n Args: {\n id?: string;\n titleElement?: string;\n isCollapsible?: boolean;\n initialIsOpen?: boolean;\n iconType?: EuiIconSignature['Args']['type'];\n iconSize?: EuiIconSignature['Args']['size'];\n titleTagName?: EuiTitleSignature['Args']['tagName'];\n titleSize?: EuiTitleSignature['Args']['size'];\n background?: string;\n };\n Blocks: {\n default: [];\n title: [];\n content: [];\n };\n}\n\nconst EuiCollapsibleNavGroup: TemplateOnlyComponent<EuiCollapsibleNavGroupSignature> =\n <template>\n {{#let\n (argOrDefault @id (randomId)) (argOrDefault @titleElement \"h3\")\n as |groupID titleElement|\n }}\n {{#let (concat groupID \"__title\") as |titleID|}}\n {{#if (and @isCollapsible (has-block \"title\"))}}\n <EuiAccordion\n id={{groupID}}\n class={{classNames\n (if (has-block \"title\") \"euiCollapsibleNavGroup--withHeading\")\n componentName=\"EuiCollapsibleNavGroup\"\n backgroundColor=(argOrDefault @background \"none\")\n }}\n @buttonClassName=\"euiCollapsibleNavGroup__heading\"\n @initialIsOpen={{argOrDefault @initialIsOpen true}}\n @arrowDisplay=\"right\"\n ...attributes\n >\n <:buttonContent>\n <EuiFlexGroup\n @gutterSize=\"m\"\n @alignItems=\"center\"\n @responsive={{false}}\n >\n {{#if @iconType}}\n <EuiFlexItem @grow={{false}}>\n <EuiIcon\n @type={{@iconType}}\n @size={{argOrDefault @iconSize \"l\"}}\n />\n </EuiFlexItem>\n {{/if}}\n <EuiFlexItem>\n <EuiTitle\n id={{concat groupID \"__title\"}}\n @tagName={{argOrDefault @titleTagName \"h3\"}}\n @size={{argOrDefault @titleSize \"xxs\"}}\n >\n {{#if (notEq titleElement \"h3\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement\n id={{titleID}}\n class=\"euiCollapsibleNavGroup__title\"\n >\n {{yield to=\"title\"}}\n </TitleElement>\n {{/let}}\n {{else}}\n <h3 id={{titleID}} class=\"euiCollapsibleNavGroup__title\">\n {{yield to=\"title\"}}\n </h3>\n {{/if}}\n </EuiTitle>\n </EuiFlexItem>\n </EuiFlexGroup>\n </:buttonContent>\n <:content>\n {{#if (has-block \"content\")}}\n <div class=\"euiCollapsibleNavGroup__children\">\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </:content>\n </EuiAccordion>\n {{else}}\n <div\n id={{groupID}}\n class={{classNames\n (if (has-block \"title\") \"euiCollapsibleNavGroup--withHeading\")\n componentName=\"EuiCollapsibleNavGroup\"\n backgroundColor=(argOrDefault @background \"none\")\n }}\n ...attributes\n >\n {{#if (has-block \"title\")}}\n <div class=\"euiCollapsibleNavGroup__heading\">\n <EuiFlexGroup\n @gutterSize=\"m\"\n @alignItems=\"center\"\n @responsive={{false}}\n >\n {{#if @iconType}}\n <EuiFlexItem @grow={{false}}>\n <EuiIcon\n @type={{@iconType}}\n @size={{argOrDefault @iconSize \"l\"}}\n />\n </EuiFlexItem>\n {{/if}}\n <EuiFlexItem>\n <EuiTitle\n id={{concat groupID \"__title\"}}\n @tagName={{argOrDefault @titleTagName \"h3\"}}\n @size={{argOrDefault @titleSize \"xxs\"}}\n >\n {{#if (notEq titleElement \"h3\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement\n id={{titleID}}\n class=\"euiCollapsibleNavGroup__title\"\n >\n {{yield to=\"title\"}}\n </TitleElement>\n {{/let}}\n {{else}}\n <h3\n id={{titleID}}\n class=\"euiCollapsibleNavGroup__title\"\n >\n {{yield to=\"title\"}}\n </h3>\n {{/if}}\n </EuiTitle>\n </EuiFlexItem>\n </EuiFlexGroup>\n </div>\n {{/if}}\n {{#if (has-block \"content\")}}\n <div class=\"euiCollapsibleNavGroup__children\">\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </div>\n {{/if}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiCollapsibleNavGroup;\n"],"names":["EuiCollapsibleNavGroup","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","randomId","concat","and","EuiAccordion","classNames","EuiFlexGroup","EuiFlexItem","EuiIcon","EuiTitle","notEq","element","templateOnly"],"mappings":";;;;;;;;;;;;;;;AAuCA,MAAMA,sBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA+HA,24HAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,MAAA;IAAAC,GAAA;kBAAAC,
|
|
1
|
+
{"version":3,"file":"eui-collapsible-nav-group.js","sources":["../../src/components/eui-collapsible-nav-group.gts"],"sourcesContent":["import { concat } from '@ember/helper';\n\nimport { element } from 'ember-element-helper';\nimport { and, notEq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiAccordion from './eui-accordion.gts';\nimport EuiFlexGroup from './eui-flex-group.gts';\nimport EuiFlexItem from './eui-flex-item.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { EuiAccordionSignature } from './eui-accordion';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiTitleSignature } from './eui-title';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiCollapsibleNavGroupSignature {\n Element: EuiAccordionSignature['Element'];\n Args: {\n id?: string;\n titleElement?: string;\n isCollapsible?: boolean;\n initialIsOpen?: boolean;\n iconType?: EuiIconSignature['Args']['type'];\n iconSize?: EuiIconSignature['Args']['size'];\n titleTagName?: EuiTitleSignature['Args']['tagName'];\n titleSize?: EuiTitleSignature['Args']['size'];\n background?: string;\n };\n Blocks: {\n default: [];\n title: [];\n content: [];\n };\n}\n\nconst EuiCollapsibleNavGroup: TemplateOnlyComponent<EuiCollapsibleNavGroupSignature> =\n <template>\n {{#let\n (argOrDefault @id (randomId)) (argOrDefault @titleElement \"h3\")\n as |groupID titleElement|\n }}\n {{#let (concat groupID \"__title\") as |titleID|}}\n {{#if (and @isCollapsible (has-block \"title\"))}}\n <EuiAccordion\n id={{groupID}}\n class={{classNames\n (if (has-block \"title\") \"euiCollapsibleNavGroup--withHeading\")\n componentName=\"EuiCollapsibleNavGroup\"\n backgroundColor=(argOrDefault @background \"none\")\n }}\n @buttonClassName=\"euiCollapsibleNavGroup__heading\"\n @initialIsOpen={{argOrDefault @initialIsOpen true}}\n @arrowDisplay=\"right\"\n ...attributes\n >\n <:buttonContent>\n <EuiFlexGroup\n @gutterSize=\"m\"\n @alignItems=\"center\"\n @responsive={{false}}\n >\n {{#if @iconType}}\n <EuiFlexItem @grow={{false}}>\n <EuiIcon\n @type={{@iconType}}\n @size={{argOrDefault @iconSize \"l\"}}\n />\n </EuiFlexItem>\n {{/if}}\n <EuiFlexItem>\n <EuiTitle\n id={{concat groupID \"__title\"}}\n @tagName={{argOrDefault @titleTagName \"h3\"}}\n @size={{argOrDefault @titleSize \"xxs\"}}\n >\n {{#if (notEq titleElement \"h3\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement\n id={{titleID}}\n class=\"euiCollapsibleNavGroup__title\"\n >\n {{yield to=\"title\"}}\n </TitleElement>\n {{/let}}\n {{else}}\n <h3 id={{titleID}} class=\"euiCollapsibleNavGroup__title\">\n {{yield to=\"title\"}}\n </h3>\n {{/if}}\n </EuiTitle>\n </EuiFlexItem>\n </EuiFlexGroup>\n </:buttonContent>\n <:content>\n {{#if (has-block \"content\")}}\n <div class=\"euiCollapsibleNavGroup__children\">\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </:content>\n </EuiAccordion>\n {{else}}\n <div\n id={{groupID}}\n class={{classNames\n (if (has-block \"title\") \"euiCollapsibleNavGroup--withHeading\")\n componentName=\"EuiCollapsibleNavGroup\"\n backgroundColor=(argOrDefault @background \"none\")\n }}\n ...attributes\n >\n {{#if (has-block \"title\")}}\n <div class=\"euiCollapsibleNavGroup__heading\">\n <EuiFlexGroup\n @gutterSize=\"m\"\n @alignItems=\"center\"\n @responsive={{false}}\n >\n {{#if @iconType}}\n <EuiFlexItem @grow={{false}}>\n <EuiIcon\n @type={{@iconType}}\n @size={{argOrDefault @iconSize \"l\"}}\n />\n </EuiFlexItem>\n {{/if}}\n <EuiFlexItem>\n <EuiTitle\n id={{concat groupID \"__title\"}}\n @tagName={{argOrDefault @titleTagName \"h3\"}}\n @size={{argOrDefault @titleSize \"xxs\"}}\n >\n {{#if (notEq titleElement \"h3\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement\n id={{titleID}}\n class=\"euiCollapsibleNavGroup__title\"\n >\n {{yield to=\"title\"}}\n </TitleElement>\n {{/let}}\n {{else}}\n <h3\n id={{titleID}}\n class=\"euiCollapsibleNavGroup__title\"\n >\n {{yield to=\"title\"}}\n </h3>\n {{/if}}\n </EuiTitle>\n </EuiFlexItem>\n </EuiFlexGroup>\n </div>\n {{/if}}\n {{#if (has-block \"content\")}}\n <div class=\"euiCollapsibleNavGroup__children\">\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </div>\n {{/if}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiCollapsibleNavGroup;\n"],"names":["EuiCollapsibleNavGroup","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","randomId","concat","and","EuiAccordion","classNames","EuiFlexGroup","EuiFlexItem","EuiIcon","EuiTitle","notEq","element","templateOnly"],"mappings":";;;;;;;;;;;;;;;AAuCA,MAAMA,sBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA+HA,24HAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,MAAA;IAAAC,GAAA;kBAAAC,qBAAA;IAAAC,UAAA;IAAAC,YAAA;IAAAC,WAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,KAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
|
|
@@ -25,6 +25,10 @@ class EuiContextMenuItemComponent extends Component {
|
|
|
25
25
|
static {
|
|
26
26
|
n(this.prototype, "registerLink", [action]);
|
|
27
27
|
}
|
|
28
|
+
willDestroy() {
|
|
29
|
+
super.willDestroy();
|
|
30
|
+
this.link = null;
|
|
31
|
+
}
|
|
28
32
|
static {
|
|
29
33
|
setComponentTemplate(precompileTemplate("\n {{#let (classNames \"euiContextMenuItem\" componentName=\"EuiContextMenuItem\" disabled=@disabled layoutAlign=(argOrDefault @layoutAlign \"center\") size=@size) as |classes|}}\n {{#if (and @href (not @disabled))}}\n <a class={{classes}} href={{@href}} target={{@target}} {{didInsert this.registerLink}} ...attributes />\n\n {{else}}\n <button class={{classes}} disabled={{@disabled}} type=\"button\" {{didInsert this.registerLink}} ...attributes />\n {{/if}}\n {{/let}}\n\n {{!-- shared code that will be rendered inside the button or anchor --}}\n {{#if this.link}}\n {{#in-element this.link}}\n <span class={{classNames \"euiContextMenu__itemLayout\" componentName=\"EuiContextMenuItem\" layoutAlign=(argOrDefault @layoutAlign \"center\")}}>\n {{#if @isLoading}}\n {{!-- spinner is not part of eui spec --}}\n <EuiLoadingSpinner class=\"euiContextMenu__icon\" />\n {{else}}\n <EuiIcon @iconClasses={{concat \"euiContextMenu__icon \" @iconClasses}} @type={{@icon}} @size=\"m\" @color=\"inherit\" />\n {{/if}}\n <span class=\"euiContextMenuItem__text\">\n {{yield}}\n </span>\n {{#if @hasPanel}}\n <EuiIcon @type=\"arrowRight\" @size=\"m\" class=\"euiContextMenu__arrow\" />\n {{/if}}\n </span>\n {{/in-element}}\n {{/if}}\n ", {
|
|
30
34
|
strictMode: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-context-menu-item.js","sources":["../../src/components/eui-context-menu-item.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { concat } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport { and, not } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\n\nimport type { layoutAlignMapping, sizeMapping } from '../utils/css-mappings/eui-context-menu-item.ts';\nimport type { EuiIconSignature } from './eui-icon';\n\nexport interface EuiContextMenuItemSignature {\n Element: HTMLAnchorElement | HTMLButtonElement;\n Args: {\n layoutAlign?: keyof typeof layoutAlignMapping;\n disabled?: boolean;\n size?: keyof typeof sizeMapping;\n href?: string;\n target?: string;\n isLoading?: boolean;\n icon: EuiIconSignature['Args']['type'];\n iconClasses?: string;\n hasPanel?: boolean;\n };\n\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiContextMenuItemComponent extends Component<EuiContextMenuItemSignature> {\n @tracked link: HTMLAnchorElement | HTMLButtonElement | null = null;\n\n @action\n registerLink(e: HTMLAnchorElement | HTMLButtonElement) {\n this.link = e;\n }\n\n <template>\n {{#let\n (classNames\n \"euiContextMenuItem\"\n componentName=\"EuiContextMenuItem\"\n disabled=@disabled\n layoutAlign=(argOrDefault @layoutAlign \"center\")\n size=@size\n )\n as |classes|\n }}\n {{#if (and @href (not @disabled))}}\n <a\n class={{classes}}\n href={{@href}}\n target={{@target}}\n {{didInsert this.registerLink}}\n ...attributes\n />\n\n {{else}}\n <button\n class={{classes}}\n disabled={{@disabled}}\n type=\"button\"\n {{didInsert this.registerLink}}\n ...attributes\n />\n {{/if}}\n {{/let}}\n\n {{! shared code that will be rendered inside the button or anchor }}\n {{#if this.link}}\n {{#in-element this.link}}\n <span\n class={{classNames\n \"euiContextMenu__itemLayout\"\n componentName=\"EuiContextMenuItem\"\n layoutAlign=(argOrDefault @layoutAlign \"center\")\n }}\n >\n {{#if @isLoading}}\n {{! spinner is not part of eui spec }}\n <EuiLoadingSpinner class=\"euiContextMenu__icon\" />\n {{else}}\n <EuiIcon\n @iconClasses={{concat \"euiContextMenu__icon \" @iconClasses}}\n @type={{@icon}}\n @size=\"m\"\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiContextMenuItem__text\">\n {{yield}}\n </span>\n {{#if @hasPanel}}\n <EuiIcon\n @type=\"arrowRight\"\n @size=\"m\"\n class=\"euiContextMenu__arrow\"\n />\n {{/if}}\n </span>\n {{/in-element}}\n {{/if}}\n </template>\n}\n"],"names":["EuiContextMenuItemComponent","Component","g","prototype","tracked","i","void 0","registerLink","e","link","n","action","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","and","not","didInsert","EuiLoadingSpinner","EuiIcon","concat"],"mappings":";;;;;;;;;;;;;;AAmCe,MAAMA,oCAAoCC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CAChEC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6D,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,MAAA;EAGnEC,YAAaA,CAAAC,CAAwC,EAAE;IACrD,IAAI,CAACC,IAAI,GAAGD,CAAA;AACd;AAAA,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAP,SAAA,EAAA,cAAA,EAAA,CAHCQ,MAAA,CAAA,CAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"eui-context-menu-item.js","sources":["../../src/components/eui-context-menu-item.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { concat } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport { and, not } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\n\nimport type { layoutAlignMapping, sizeMapping } from '../utils/css-mappings/eui-context-menu-item.ts';\nimport type { EuiIconSignature } from './eui-icon';\n\nexport interface EuiContextMenuItemSignature {\n Element: HTMLAnchorElement | HTMLButtonElement;\n Args: {\n layoutAlign?: keyof typeof layoutAlignMapping;\n disabled?: boolean;\n size?: keyof typeof sizeMapping;\n href?: string;\n target?: string;\n isLoading?: boolean;\n icon: EuiIconSignature['Args']['type'];\n iconClasses?: string;\n hasPanel?: boolean;\n };\n\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiContextMenuItemComponent extends Component<EuiContextMenuItemSignature> {\n @tracked link: HTMLAnchorElement | HTMLButtonElement | null = null;\n\n @action\n registerLink(e: HTMLAnchorElement | HTMLButtonElement) {\n this.link = e;\n }\n\n willDestroy() {\n super.willDestroy();\n \n this.link = null;\n }\n\n <template>\n {{#let\n (classNames\n \"euiContextMenuItem\"\n componentName=\"EuiContextMenuItem\"\n disabled=@disabled\n layoutAlign=(argOrDefault @layoutAlign \"center\")\n size=@size\n )\n as |classes|\n }}\n {{#if (and @href (not @disabled))}}\n <a\n class={{classes}}\n href={{@href}}\n target={{@target}}\n {{didInsert this.registerLink}}\n ...attributes\n />\n\n {{else}}\n <button\n class={{classes}}\n disabled={{@disabled}}\n type=\"button\"\n {{didInsert this.registerLink}}\n ...attributes\n />\n {{/if}}\n {{/let}}\n\n {{! shared code that will be rendered inside the button or anchor }}\n {{#if this.link}}\n {{#in-element this.link}}\n <span\n class={{classNames\n \"euiContextMenu__itemLayout\"\n componentName=\"EuiContextMenuItem\"\n layoutAlign=(argOrDefault @layoutAlign \"center\")\n }}\n >\n {{#if @isLoading}}\n {{! spinner is not part of eui spec }}\n <EuiLoadingSpinner class=\"euiContextMenu__icon\" />\n {{else}}\n <EuiIcon\n @iconClasses={{concat \"euiContextMenu__icon \" @iconClasses}}\n @type={{@icon}}\n @size=\"m\"\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiContextMenuItem__text\">\n {{yield}}\n </span>\n {{#if @hasPanel}}\n <EuiIcon\n @type=\"arrowRight\"\n @size=\"m\"\n class=\"euiContextMenu__arrow\"\n />\n {{/if}}\n </span>\n {{/in-element}}\n {{/if}}\n </template>\n}\n"],"names":["EuiContextMenuItemComponent","Component","g","prototype","tracked","i","void 0","registerLink","e","link","n","action","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","and","not","didInsert","EuiLoadingSpinner","EuiIcon","concat"],"mappings":";;;;;;;;;;;;;;AAmCe,MAAMA,oCAAoCC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CAChEC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6D,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,MAAA;EAGnEC,YAAaA,CAAAC,CAAwC,EAAE;IACrD,IAAI,CAACC,IAAI,GAAGD,CAAA;AACd;AAAA,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAP,SAAA,EAAA,cAAA,EAAA,CAHCQ,MAAA,CAAA,CAAA;AAAA;AAKDC,EAAAA,WAAcA,GAAA;IACZ,KAAK,CAACA,WAAA,EAAA;IAEN,IAAI,CAACH,IAAI,GAAG,IAAA;AACd;AAEA,EAAA;IAAAI,oBAAA,CAAAC,kBAAA,CAiEA,y4CAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,UAAA;QAAAC,YAAA;QAAAC,GAAA;QAAAC,GAAA;QAAAC,SAAA;QAAAC,iBAAA;QAAAC,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -400,6 +400,10 @@ class EuiDualRangeComponent extends Component {
|
|
|
400
400
|
get canShowDropdown() {
|
|
401
401
|
return this.showInputOnly && !this.args.readOnly && !this.args.disabled;
|
|
402
402
|
}
|
|
403
|
+
willDestroy() {
|
|
404
|
+
super.willDestroy();
|
|
405
|
+
this.rangeSliderRef = null;
|
|
406
|
+
}
|
|
403
407
|
static {
|
|
404
408
|
setComponentTemplate(precompileTemplate("\n {{#let (and (argOrDefault @isPrependProvided true) (has-block \"prepend\")) (and (argOrDefault @isAppendProvided true) (has-block \"append\")) (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\")) (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\")) as |hasPrepend hasAppend hasMaxBlock hasMinBlock|}}\n {{#if this.showInputOnly}}\n <EuiInputPopover class=\"euiRange__popover\" @fullWidth={{this.fullWidth}} @isOpen={{this.isPopoverOpen}} @closePopover={{this.closePopover}} @disableFocusTrap={{true}} @onPanelResize={{this.onResize}}>\n <:input>\n <EuiFormControlLayoutDelimited @fullWidth={{this.fullWidth}} @compressed={{this.compressed}} @readOnly={{@readOnly}} @disabled={{@disabled}} @useGroup={{or hasPrepend hasAppend}}>\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:startControl as |classes|>\n <EuiRangeInput class={{classes}} @digitTolerance={{this.digitTolerance}} @side=\"min\" @min={{this.min}} {{!--@glint-expect-error--}} @max={{castTo this.upperValue to=\"number\"}} @step={{this.step}} @value={{this.lowerValue}} @disabled={{@disabled}} @compressed={{this.compressed}} @onChange={{this.handleLowerInputChange}} @name=\"{{@name}}-minValue\" @readOnly={{@readOnly}} @autoSize={{false}} @fullWidth={{this.fullWidth}} @isInvalid={{@isInvalid}} @isPrependProvided={{hasAppend}} @isAppendProvided={{hasPrepend}} @controlOnly={{true}} @disable={{@disable}} ...attributes {{on \"mousedown\" (fn this.setPreventPopoverClose true)}} {{onKey \"_all\" this.handleInputKeyDown}} {{on \"focus\" (if this.canShowDropdown this.onInputFocus (optional @onFocus))}} {{on \"blur\" (if this.canShowDropdown this.onInputBlur (optional @onBlur))}} {{on \"input\" this.handleLowerInputChange}}>\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 class={{classes}} @digitTolerance={{this.digitTolerance}} @side=\"max\" {{!--@glint-expect-error--}} @min={{castTo this.lowerValue to=\"number\"}} @max={{this.max}} @step={{this.step}} @value={{this.upperValue}} @disabled={{@disabled}} @compressed={{this.compressed}} @name=\"{{@name}}-maxValue\" @readOnly={{@readOnly}} @autoSize={{false}} @fullWidth={{this.fullWidth}} @isInvalid={{@isInvalid}} @isPrependProvided={{hasAppend}} @isAppendProvided={{hasPrepend}} @controlOnly={{true}} @disable={{@disable}} ...attributes {{on \"mousedown\" (fn this.setPreventPopoverClose true)}} {{onKey \"_all\" this.handleInputKeyDown}} {{on \"focus\" (if this.canShowDropdown this.onInputFocus (optional @onFocus))}} {{on \"blur\" (if this.canShowDropdown this.onInputBlur (optional @onBlur))}} {{on \"input\" this.handleUpperInputChange}}>\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 class=\"euiDualRange\" @fullWidth={{this.fullWidth}} @compressed={{this.compressed}}>\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 aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}} @compressed={{this.compressed}} @disabled={{@disabled}} @max={{this.max}} @min={{this.min}} @step={{this.step}} @showTicks={{this.showTicks}} @tickInterval={{@tickInterval}} @ticks={{@ticks}} @levels={{this.levels}} @onChange={{this.handleSliderChange}} @value={{@value}}>\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight @compressed={{this.compressed}} @hasFocus={{this.hasFocus}} @showTicks={{this.showTicks}} {{!--@glint-expect-error--}} @min={{castTo this.min to=\"number\"}} {{!--@glint-expect-error--}} @max={{castTo this.max to=\"number\"}} {{!--@glint-expect-error--}} @lowerValue={{castTo this.lowerValue to=\"number\"}} {{!--@glint-expect-error--}} @upperValue={{castTo this.upperValue to=\"number\"}} />\n {{/if}}\n <EuiRangeSlider class=\"euiDualRange__slider\" aria-hidden=\"true\" @id={{this.id}} @name={{@name}} @min={{this.min}} @max={{this.max}} @step={{this.step}} @disabled={{@disabled}} @compressed={{this.compressed}} @onChange={{this.handleSliderChange}} @showTicks={{this.showTicks}} @hasFocus={{this.hasFocus}} tabindex=\"-1\" @showRange={{this.showRange}} ...attributes {{didInsert this.didInsertRangeSlider}} {{on \"mousedown\" (fn this.setPreventPopoverClose true)}} {{on \"focus\" (optional @onFocus)}} {{on \"blur\" (optional @onBlur)}} {{on \"input\" this.handleSliderChange}} />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb @min={{this.min}} {{!--@glint-expect-error--}} @max={{castTo this.upperValue to=\"number\"}} {{!--@glint-expect-error--}} @value={{this.lowerValue}} @disabled={{@disabled}} @showTicks={{this.showTicks}} @showInput={{not this.showInput}} aria-describedby={{@ariaDescribedby}} aria-label={{@ariaLabel}} {{simpleStyle this.calculateLowerValueThumbPositionStyle}} {{on \"focus\" this.onThumbFocus}} {{on \"blur\" this.onThumbBlur}} {{onKey \"_all\" this.handleLowerKeyDown}} />\n <EuiRangeThumb {{!--@glint-expect-error--}} @min={{castTo this.lowerValue to=\"number\"}} @max={{this.max}} {{!--@glint-expect-error--}} @value={{this.upperValue}} @disabled={{@disabled}} @showTicks={{this.showTicks}} @showInput={{not this.showInput}} aria-describedby={{@ariaDescribedby}} aria-label={{@ariaLabel}} {{simpleStyle this.calculateUpperValueThumbPositionStyle}} {{on \"focus\" this.onThumbFocus}} {{on \"blur\" this.onThumbBlur}} {{onKey \"_all\" this.handleUpperKeyDown}} />\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 class=\"euiDualRange\" @fullWidth={{this.fullWidth}} @compressed={{this.compressed}}>\n {{#if this.showInput}}\n <EuiRangeInput @digitTolerance={{this.digitTolerance}} @side=\"min\" @min={{this.min}} {{!--@glint-expect-error--}} @max={{castTo this.upperValue to=\"number\"}} @step={{this.step}} @value={{this.lowerValue}} @disabled={{@disabled}} @compressed={{this.compressed}} @onChange={{this.handleLowerInputChange}} @name=\"{{@name}}-minValue\" @readOnly={{@readOnly}} @fullWidth={{this.fullWidth}} @isInvalid={{@isInvalid}} @isPrependProvided={{false}} @isAppendProvided={{false}} @controlOnly={{true}} @disable={{@disable}} ...attributes {{onKey \"_all\" this.handleInputKeyDown}} {{on \"focus\" (optional @onFocus)}} {{on \"blur\" (optional @onBlur)}} {{on \"input\" this.handleLowerInputChange}} />\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 aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}} @compressed={{this.compressed}} @disabled={{@disabled}} @max={{this.max}} @min={{this.min}} @step={{this.step}} @showTicks={{this.showTicks}} @tickInterval={{@tickInterval}} @ticks={{@ticks}} @levels={{this.levels}} @onChange={{this.handleSliderChange}} @value={{@value}}>\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight @compressed={{this.compressed}} @hasFocus={{this.hasFocus}} @showTicks={{this.showTicks}} {{!--@glint-expect-error--}} @min={{castTo this.min to=\"number\"}} {{!--@glint-expect-error--}} @max={{castTo this.max to=\"number\"}} {{!--@glint-expect-error--}} @lowerValue={{castTo this.lowerValue to=\"number\"}} {{!--@glint-expect-error--}} @upperValue={{castTo this.upperValue to=\"number\"}} />\n {{/if}}\n <EuiRangeSlider class=\"euiDualRange__slider\" aria-hidden=\"true\" @id={{this.id}} @name={{@name}} @min={{this.min}} @max={{this.max}} @step={{this.step}} @disabled={{@disabled}} @compressed={{this.compressed}} @onChange={{this.handleSliderChange}} @showTicks={{this.showTicks}} @hasFocus={{this.hasFocus}} tabindex=\"-1\" @showRange={{this.showRange}} ...attributes {{didInsert this.didInsertRangeSlider}} {{on \"mousedown\" (fn this.setPreventPopoverClose true)}} {{on \"focus\" (optional @onFocus)}} {{on \"blur\" (optional @onBlur)}} {{on \"input\" this.handleSliderChange}} />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb @min={{this.min}} {{!--@glint-expect-error--}} @max={{castTo this.upperValue to=\"number\"}} {{!--@glint-expect-error--}} @value={{this.lowerValue}} @disabled={{@disabled}} @showTicks={{this.showTicks}} @showInput={{not this.showInput}} aria-describedby={{@ariaDescribedby}} aria-label={{@ariaLabel}} {{simpleStyle this.calculateLowerValueThumbPositionStyle}} {{on \"focus\" this.onThumbFocus}} {{on \"blur\" this.onThumbBlur}} {{!--@glint-expect-error--}} {{on \"click\" this.handleLowerKeyDown}} />\n <EuiRangeThumb {{!--@glint-expect-error--}} @min={{castTo this.lowerValue to=\"number\"}} @max={{this.max}} {{!--@glint-expect-error--}} @value={{this.upperValue}} @disabled={{@disabled}} @showTicks={{this.showTicks}} @showInput={{not this.showInput}} aria-describedby={{@ariaDescribedby}} aria-label={{@ariaLabel}} {{simpleStyle this.calculateUpperValueThumbPositionStyle}} {{on \"focus\" this.onThumbFocus}} {{on \"blur\" this.onThumbBlur}} {{on \"keydown\" this.handleUpperKeyDown}} />\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 @digitTolerance={{this.digitTolerance}} @side=\"max\" {{!--@glint-expect-error--}} @min={{castTo this.lowerValue to=\"number\"}} @max={{this.max}} @step={{this.step}} @value={{this.upperValue}} @disabled={{@disabled}} @compressed={{this.compressed}} @name=\"{{@name}}-maxValue\" @readOnly={{@readOnly}} @fullWidth={{this.fullWidth}} @isInvalid={{@isInvalid}} @controlOnly={{this.showInputOnly}} @isPrependProvided={{false}} @isAppendProvided={{false}} @disable={{@disable}} ...attributes {{onKey \"_all\" this.handleInputKeyDown}} {{on \"focus\" (optional @onFocus)}} {{on \"blur\" (optional @onBlur)}} {{on \"input\" this.handleUpperInputChange}} />\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n ", {
|
|
405
409
|
strictMode: true,
|