UNPKG

@atlaskit/editor-common

Version:

A package that contains common classes and components for editor and renderer

145 lines (140 loc) 5.68 kB
/* eslint-disable @atlaskit/ui-styling-standard/use-compiled -- Pre-existing lint debt surfaced by this mechanical type-import-only PR. */ /** * @jsxRuntime classic * @jsx jsx */ import React, { forwardRef, Fragment, useCallback } from 'react'; // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766 import { css, jsx } from '@emotion/react'; // AFP-2532 TODO: Fix automatic suppressions below // eslint-disable-next-line @atlassian/tangerine/import/entry-points import { injectIntl } from 'react-intl'; import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles'; import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals'; import { getCorrectAltByIconUrl } from './listItemAlts'; import { transformTimeStamp } from './transformTimeStamp'; // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766 export var container = css({ backgroundColor: 'transparent', padding: "var(--ds-space-100, 8px)".concat(" ", "var(--ds-space-150, 12px)"), cursor: 'pointer', display: 'flex', marginTop: 0 }); // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766 export var containerSelected = css({ backgroundColor: "var(--ds-background-neutral-subtle-hovered, #0515240F)" }); var nameWrapper = css({ overflow: 'hidden' }); // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766 export var nameStyle = css({ color: "var(--ds-text, #292A2E)", overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', // eslint-disable-next-line @atlaskit/design-system/use-tokens-typography lineHeight: '20px' }); // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766 export var containerName = css({ color: "var(--ds-text-subtlest, #6B6E76)", // eslint-disable-next-line @atlaskit/design-system/use-tokens-typography lineHeight: '14px', // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766 fontSize: relativeFontSizeToBase16(11) }); var iconStyle = css({ minWidth: '16px', marginTop: "var(--ds-space-050, 4px)", marginRight: "var(--ds-space-150, 12px)", // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766 img: { maxWidth: '16px' } }); var LinkSearchListItem = function LinkSearchListItem(props, ref) { var id = props.id, item = props.item, onBlur = props.onBlur, onFocus = props.onFocus, onKeyDown = props.onKeyDown, onMouseEnter = props.onMouseEnter, onMouseLeave = props.onMouseLeave, onMouseMove = props.onMouseMove, onSelect = props.onSelect, selected = props.selected, intl = props.intl; var handleSelect = useCallback(function (e) { e.preventDefault(); // don't let editor lose focus onSelect(item.url, item.name); }, [onSelect, item.url, item.name]); var handleKeyDown = useCallback(function (event) { if (event.key === 'Enter') { onSelect(item.url, item.name); } onKeyDown === null || onKeyDown === void 0 || onKeyDown(event); }, [onSelect, onKeyDown, item.url, item.name]); var handleMouseMove = useCallback(function () { onMouseMove === null || onMouseMove === void 0 || onMouseMove(item.objectId); }, [onMouseMove, item.objectId]); var handleMouseEnter = useCallback(function () { onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter(item.objectId); }, [onMouseEnter, item.objectId]); var handleMouseLeave = useCallback(function () { onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave(item.objectId); }, [onMouseLeave, item.objectId]); var renderIcon = function renderIcon() { if (item.icon) { return jsx("span", { css: iconStyle }, item.icon); } if (item.iconUrl) { return jsx("span", { css: iconStyle }, jsx("img", { src: item.iconUrl, alt: getCorrectAltByIconUrl(item.iconUrl, intl) })); } return null; }; var renderTimeStamp = function renderTimeStamp() { var date = transformTimeStamp(intl, item.lastViewedDate, item.lastUpdatedDate); return date && jsx(Fragment, null, "\xA0 \u2022", jsx("span", { // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766 className: "link-search-timestamp", "data-testid": "link-search-timestamp" }, "\xA0 ", date.pageAction, " ", date.dateString, " ", date.timeSince || '')); }; return jsx("div", { ref: ref, css: [container, selected && containerSelected], role: 'option', tabIndex: 0, id: id, "aria-selected": selected, "data-testid": "link-search-list-item", onBlur: expValEquals('editor_a11y__enghealth-46814_fy26', 'isEnabled', true) ? onBlur : undefined, onFocus: onFocus, onKeyDown: handleKeyDown, onMouseMove: handleMouseMove, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleSelect }, renderIcon(), jsx("span", { css: nameWrapper }, jsx("div", { css: nameStyle }, item.name), jsx("div", { "data-testid": "link-search-list-item-container", css: containerName }, item.container, renderTimeStamp()))); }; var ForwardedLinkSearchListItem = /*#__PURE__*/forwardRef(LinkSearchListItem); export var ForwardedLinkSearchListItemWithIntl = injectIntl(ForwardedLinkSearchListItem, { forwardRef: true }); export default ForwardedLinkSearchListItemWithIntl;