1 | import { __assign, __extends, __rest } from "tslib";
|
2 | import * as React from 'react';
|
3 | import { classNamesFunction, initializeComponentRef } from '../../Utilities';
|
4 | import { KeytipData } from '../../KeytipData';
|
5 | var getClassNames = classNamesFunction();
|
6 | var LinkBase = (function (_super) {
|
7 | __extends(LinkBase, _super);
|
8 | function LinkBase(props) {
|
9 | var _this = _super.call(this, props) || this;
|
10 | _this._link = React.createRef();
|
11 | _this._renderContent = function (keytipAttributes) {
|
12 | if (keytipAttributes === void 0) { keytipAttributes = {}; }
|
13 | var _a = _this.props, disabled = _a.disabled, children = _a.children, className = _a.className, href = _a.href, underline = _a.underline, theme = _a.theme, styles = _a.styles;
|
14 | var classNames = getClassNames(styles, {
|
15 | className: className,
|
16 | isButton: !href,
|
17 | isDisabled: disabled,
|
18 | isUnderlined: underline,
|
19 | theme: theme,
|
20 | });
|
21 | var RootType = _this._getRootType(_this.props);
|
22 | return (React.createElement(RootType, __assign({}, keytipAttributes, _this._adjustPropsForRootType(RootType, _this.props), { className: classNames.root, onClick: _this._onClick, ref: _this._link, "aria-disabled": disabled }), children));
|
23 | };
|
24 | _this._onClick = function (ev) {
|
25 | var _a = _this.props, onClick = _a.onClick, disabled = _a.disabled;
|
26 | if (disabled) {
|
27 | ev.preventDefault();
|
28 | }
|
29 | else if (onClick) {
|
30 | onClick(ev);
|
31 | }
|
32 | };
|
33 | initializeComponentRef(_this);
|
34 | return _this;
|
35 | }
|
36 | LinkBase.prototype.render = function () {
|
37 | var _this = this;
|
38 | var _a = this.props, disabled = _a.disabled, keytipProps = _a.keytipProps;
|
39 | if (keytipProps) {
|
40 | return (React.createElement(KeytipData, { keytipProps: keytipProps, ariaDescribedBy: this.props['aria-describedby'], disabled: disabled }, function (keytipAttributes) { return _this._renderContent(keytipAttributes); }));
|
41 | }
|
42 | return this._renderContent();
|
43 | };
|
44 | LinkBase.prototype.focus = function () {
|
45 | var current = this._link.current;
|
46 | if (current && current.focus) {
|
47 | current.focus();
|
48 | }
|
49 | };
|
50 | LinkBase.prototype._adjustPropsForRootType = function (RootType, props) {
|
51 |
|
52 |
|
53 |
|
54 | var children = props.children, as = props.as, disabled = props.disabled, target = props.target, href = props.href, theme = props.theme, getStyles = props.getStyles, styles = props.styles, componentRef = props.componentRef, keytipProps = props.keytipProps, underline = props.underline, restProps = __rest(props, ["children", "as", "disabled", "target", "href", "theme", "getStyles", "styles", "componentRef", "keytipProps", "underline"]);
|
55 |
|
56 | if (typeof RootType === 'string') {
|
57 |
|
58 | if (RootType === 'a') {
|
59 | return __assign({ target: target, href: disabled ? undefined : href }, restProps);
|
60 | }
|
61 |
|
62 | if (RootType === 'button') {
|
63 | return __assign({ type: 'button', disabled: disabled }, restProps);
|
64 | }
|
65 |
|
66 | return __assign(__assign({}, restProps), { disabled: disabled });
|
67 | }
|
68 |
|
69 | return __assign({ target: target, href: href, disabled: disabled }, restProps);
|
70 | };
|
71 | LinkBase.prototype._getRootType = function (props) {
|
72 | if (props.as) {
|
73 | return props.as;
|
74 | }
|
75 | if (props.href) {
|
76 | return 'a';
|
77 | }
|
78 | return 'button';
|
79 | };
|
80 | return LinkBase;
|
81 | }(React.Component));
|
82 | export { LinkBase };
|
83 |
|
\ | No newline at end of file |