PluginProbe
Elementor Website Builder – more than just a page builder / 3.8.0-beta1
Elementor Website Builder – more than just a page builder v3.8.0-beta1
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 All 457 releases
elementor / app / assets / js / ui / molecules / inline-link.js

inline-link.js in Elementor Website Builder – more than just a page builder 3.8.0-beta1, at app/assets/js/ui/molecules/inline-link.js

75 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { Link, LocationProvider } from '@reach/router';
2 import router from '@elementor/router';
3
4 import { arrayToClassName } from 'elementor-app/utils/utils.js';
5
6 import './inline-link.scss';
7
8 export default function InlineLink( props ) {
9 const baseClassName = 'eps-inline-link',
10 colorClassName = `${ baseClassName }--color-${ props.color }`,
11 underlineClassName = 'none' !== props.underline ? `${ baseClassName }--underline-${ props.underline }` : '',
12 italicClassName = props.italic ? `${ baseClassName }--italic` : '',
13 classes = [
14 baseClassName,
15 colorClassName,
16 underlineClassName,
17 italicClassName,
18 props.className,
19 ],
20 className = arrayToClassName( classes ),
21 getRouterLink = () => (
22 <LocationProvider history={ router.appHistory }>
23 <Link
24 to={ props.url }
25 className={ className }
26 >
27 { props.children }
28 </Link>
29 </LocationProvider>
30 ),
31 getExternalLink = () => (
32 <a
33 href={ props.url }
34 target={ props.target }
35 rel={ props.rel }
36 className={ className }
37 onClick={ props.onClick }
38 >
39 { props.children }
40 </a>
41 ),
42 getActionLink = () => (
43 <button className={ className } onClick={ props.onClick }>
44 { props.children }
45 </button>
46 );
47
48 if ( ! props.url ) {
49 return getActionLink();
50 }
51
52 return props.url.includes( 'http' ) ? getExternalLink() : getRouterLink();
53 }
54
55 InlineLink.propTypes = {
56 className: PropTypes.string,
57 children: PropTypes.any,
58 url: PropTypes.string,
59 target: PropTypes.string,
60 rel: PropTypes.string,
61 text: PropTypes.string,
62 color: PropTypes.oneOf( [ 'primary', 'secondary', 'cta', 'link', 'disabled' ] ),
63 underline: PropTypes.oneOf( [ 'none', 'hover', 'always' ] ),
64 italic: PropTypes.bool,
65 onClick: PropTypes.func,
66 };
67
68 InlineLink.defaultProps = {
69 className: '',
70 color: 'link',
71 underline: 'always',
72 target: '_blank',
73 rel: 'noopener noreferrer',
74 };
75