UNPKG

3.25 kBJavaScriptView Raw
1import { createVNode as _createVNode } from "vue";
2
3function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
4
5function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
7function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
9function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
10
11import { defineComponent } from 'vue';
12/**
13 * Wrap of sub component which need use as Button capacity (like Icon component).
14 * This helps accessibility reader to tread as a interactive button to operation.
15 */
16
17import KeyCode from './KeyCode';
18import PropTypes from './vue-types';
19var inlineStyle = {
20 border: 0,
21 background: 'transparent',
22 padding: 0,
23 lineHeight: 'inherit',
24 display: 'inline-block'
25};
26var TransButton = defineComponent({
27 name: 'TransButton',
28 inheritAttrs: false,
29 props: {
30 noStyle: PropTypes.looseBool,
31 onClick: PropTypes.func
32 },
33 methods: {
34 onKeyDown: function onKeyDown(event) {
35 var keyCode = event.keyCode;
36
37 if (keyCode === KeyCode.ENTER) {
38 event.preventDefault();
39 }
40 },
41 onKeyUp: function onKeyUp(event) {
42 var keyCode = event.keyCode;
43
44 if (keyCode === KeyCode.ENTER) {
45 this.$emit('click', event);
46 }
47 },
48 setRef: function setRef(btn) {
49 this.$refs.div = btn;
50 },
51 focus: function focus() {
52 if (this.$refs.div) {
53 this.$refs.div.focus();
54 }
55 },
56 blur: function blur() {
57 if (this.$refs.div) {
58 this.$refs.div.blur();
59 }
60 }
61 },
62 render: function render() {
63 var _a, _b;
64
65 var _this$$props = this.$props,
66 noStyle = _this$$props.noStyle,
67 onClick = _this$$props.onClick;
68 return _createVNode("div", _objectSpread(_objectSpread({
69 "role": "button",
70 "tabindex": 0,
71 "ref": "div"
72 }, this.$attrs), {}, {
73 "onClick": onClick,
74 "onKeydown": this.onKeyDown,
75 "onKeyup": this.onKeyUp,
76 "style": _extends({}, !noStyle ? inlineStyle : null)
77 }), [(_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a)]);
78 }
79});
80export default TransButton;
\No newline at end of file