Ошибка: на экране мобильного устройства мне пришлось нажать два раза на кнопку слайдера, чтобы вызвать - PullRequest
0 голосов
/ 11 февраля 2020

У меня была эта ошибка, которая сводила меня с ума со вчерашнего дня. У меня есть слайд с тремя изображениями, у каждого из изображений есть кнопка. На кнопках слайдера изображения только go внешние после двух нажатий. Это происходит в chrome версии.

Любая помощь приветствуется.

У меня была эта ошибка, которая со вчерашнего дня сводила меня с ума. У меня есть слайд с тремя изображениями, у каждого из изображений есть кнопка. На кнопках слайдера изображения только go внешние после двух нажатий. Это происходит в chrome версии.

Любая помощь приветствуется.

function ExternalLink(props) {
  // const track = useTracking();
  const {
    content,
    content: { showArrow, target: contentTarget, window: linkWindow, localMedium },
    className,
    children,
    onClick,
    pure,
    // tracking,
    // socialTrackingName,
    // socialTrackingIcon,
    // trackingCategory,
    onMouseUp,
    onMouseDown,
  } = props;
  if (!contentTarget) return null;

  if (linkWindow === '_popup') {
    return <PopUpLink {...props} />;
  }

  /**
   * renders an internal link which should open in the same window
   */
  const target = linkWindow === '_blank' ? '_blank' : '_self';
  const classes = `${className} ${addArrowClass(className, showArrow)}`;
  let link =
    contentTarget.includes('mailto:') ||
    contentTarget.includes('https://') ||
    contentTarget.includes('http://')
      ? contentTarget
      : `https://${contentTarget}`;

  /* eslint-disable-next-line no-script-url */
  if (contentTarget.includes('javascript:')) {
    link = contentTarget;
  }

  /*
  const trackLink = (e) => {
    if (!tracking) {
      const toLink = e.currentTarget.href;
      const text = e.currentTarget.textContent;
      if (onClick) {
        onClick();
      }

      track.trackEvent(
        externalLink(
          toLink,
          text,
          socialTrackingName,
          socialTrackingIcon,
          trackingCategory,
          localMedium,
        ),
      );
    } else {
      tracking(e);
    }
  };

  */

  const attributes = {
    href: link,
    target,
    className: classes,
    rel: 'noopener noreferrer',
    // onClick: trackLink,
    onMouseDown,
    onMouseUp,
  };

  if (isEmpty(classes)) {
    delete attributes.className;
  }

  if (target !== '_blank') {
    delete attributes.rel;
  }

  const linkText = isEmpty(pure) ? decodingContent(content.text) : content.text;
  return <a {...attributes}>{isEmpty(children) ? linkText : children}</a>;
}

ExternalLink.propTypes = {
  content: PropTypes.oneOfType([
    PropTypes.objectOf(PropTypes.any).isRequired,
    PropTypes.string.isRequired,
  ]).isRequired,
  children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),
  className: PropTypes.string,
  onClick: PropTypes.func,
  pure: PropTypes.bool,
  tracking: PropTypes.func,
  socialTrackingName: PropTypes.string,
  socialTrackingIcon: PropTypes.string,
  trackingCategory: PropTypes.string,
  onMouseDown: PropTypes.func,
  onMouseUp: PropTypes.func,
};

ExternalLink.defaultProps = {
  children: null,
  className: '',
  onClick: null,
  pure: null,
  tracking: null,
  socialTrackingName: '',
  socialTrackingIcon: '',
  trackingCategory: '',
  onMouseDown: null,
  onMouseUp: null,
};

export default ExternalLink;
function getLinkComponent(linkType) {
  switch (linkType) {
    case 'internal_link':
      return InternalLink;
    case 'mail_link':
      return MailLink;
    default:
      return ExternalLink;
  }
}

function CmsLink({ link, children, ...props }) {
  const { className } = props;
  const { target, type } = link || {};
  // return just a div, if there is a missing link
  if (isEmpty(link)) {
    return <div className={className}>{children}</div>;
  }

  let LinkComponent = getLinkComponent(type);
  if (!isEmpty(target) && target.startsWith('http')) {
    LinkComponent = ExternalLink;
  }

  if (!isEmpty(target) && target.startsWith('mailto')) {
    LinkComponent = MailLink;
  }

  return (
    <LinkComponent content={link} {...props}>
      {children}
    </LinkComponent>
  );
}
  renderLink() {
    const {
      slide: { link, textColor },
      sliderOnClickCTA,
    } = this.props;
    return (
      <CmsLink /* onClick={() => sliderOnClickCTA && sliderOnClickCTA(link.text)} */ link={link}>
        <Button
          type={BUTTON_TYPES.DEFAULT}
          color={textColor === 'white' ? BUTTON_COLORS.WHITE : BUTTON_COLORS.BLACK}
        >
          {link.text}
        </Button>
      </CmsLink>
    );
  }
...