feat: update vc-tabs
parent
7661eafe9c
commit
132a1e58bf
|
@ -4,24 +4,19 @@ import TabBarRootNode from './TabBarRootNode';
|
||||||
import SaveRef from './SaveRef';
|
import SaveRef from './SaveRef';
|
||||||
function noop() {}
|
function noop() {}
|
||||||
|
|
||||||
export default {
|
const InkTabBar = (_, { attrs }) => {
|
||||||
name: 'InkTabBar',
|
const { onTabClick = noop, ...props } = attrs;
|
||||||
functional: true,
|
|
||||||
render(h, context) {
|
|
||||||
const { props, listeners = {} } = context;
|
|
||||||
return (
|
return (
|
||||||
<SaveRef
|
<SaveRef
|
||||||
children={(saveRef, getRef) => (
|
children={(saveRef, getRef) => (
|
||||||
<TabBarRootNode saveRef={saveRef} {...props}>
|
<TabBarRootNode saveRef={saveRef} {...props}>
|
||||||
<TabBarTabsNode
|
<TabBarTabsNode onTabClick={onTabClick} saveRef={saveRef} {...props} />
|
||||||
onTabClick={listeners.tabClick || noop}
|
<InkTabBarNode saveRef={saveRef} getRef={getRef} {...props} />
|
||||||
saveRef={saveRef}
|
|
||||||
{...{ props }}
|
|
||||||
/>
|
|
||||||
<InkTabBarNode saveRef={saveRef} getRef={getRef} {...{ props }} />
|
|
||||||
</TabBarRootNode>
|
</TabBarRootNode>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
InkTabBar.inheritAttrs = false;
|
||||||
|
export default InkTabBar;
|
||||||
|
|
|
@ -8,6 +8,7 @@ import {
|
||||||
getActiveIndex,
|
getActiveIndex,
|
||||||
} from './utils';
|
} from './utils';
|
||||||
import BaseMixin from '../../_util/BaseMixin';
|
import BaseMixin from '../../_util/BaseMixin';
|
||||||
|
import createRefHooks from '../../_util/createRefHooks';
|
||||||
|
|
||||||
function componentDidUpdate(component, init) {
|
function componentDidUpdate(component, init) {
|
||||||
const { styles = {}, panels, activeKey, direction } = component.$props;
|
const { styles = {}, panels, activeKey, direction } = component.$props;
|
||||||
|
@ -120,14 +121,7 @@ export default {
|
||||||
style={styles.inkBar}
|
style={styles.inkBar}
|
||||||
class={classes}
|
class={classes}
|
||||||
key="inkBar"
|
key="inkBar"
|
||||||
{...{
|
{...createRefHooks(this.saveRef('inkBar'))}
|
||||||
directives: [
|
|
||||||
{
|
|
||||||
name: 'ant-ref',
|
|
||||||
value: this.saveRef('inkBar'),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,7 +3,6 @@ import TabBarTabsNode from './TabBarTabsNode';
|
||||||
import TabBarRootNode from './TabBarRootNode';
|
import TabBarRootNode from './TabBarRootNode';
|
||||||
import ScrollableTabBarNode from './ScrollableTabBarNode';
|
import ScrollableTabBarNode from './ScrollableTabBarNode';
|
||||||
import SaveRef from './SaveRef';
|
import SaveRef from './SaveRef';
|
||||||
import { getListeners } from '../../_util/props-util';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ScrollableInkTabBar',
|
name: 'ScrollableInkTabBar',
|
||||||
|
@ -21,19 +20,14 @@ export default {
|
||||||
'nextIcon',
|
'nextIcon',
|
||||||
],
|
],
|
||||||
render() {
|
render() {
|
||||||
const props = { ...this.$props };
|
const { default: renderTabBarNode } = this.$slots;
|
||||||
const listeners = getListeners(this);
|
|
||||||
const { default: renderTabBarNode } = this.$scopedSlots;
|
|
||||||
return (
|
return (
|
||||||
<SaveRef
|
<SaveRef
|
||||||
children={(saveRef, getRef) => (
|
children={(saveRef, getRef) => (
|
||||||
<TabBarRootNode saveRef={saveRef} {...{ props, on: listeners }}>
|
<TabBarRootNode saveRef={saveRef} {...this.$attrs}>
|
||||||
<ScrollableTabBarNode saveRef={saveRef} getRef={getRef} {...{ props, on: listeners }}>
|
<ScrollableTabBarNode saveRef={saveRef} getRef={getRef} {...this.$attrs}>
|
||||||
<TabBarTabsNode
|
<TabBarTabsNode saveRef={saveRef} {...{ ...this.$attrs, renderTabBarNode }} />
|
||||||
saveRef={saveRef}
|
<InkTabBarNode saveRef={saveRef} getRef={getRef} {...this.$attrs} />
|
||||||
{...{ props: { ...props, renderTabBarNode }, on: listeners }}
|
|
||||||
/>
|
|
||||||
<InkTabBarNode saveRef={saveRef} getRef={getRef} {...{ props, on: listeners }} />
|
|
||||||
</ScrollableTabBarNode>
|
</ScrollableTabBarNode>
|
||||||
</TabBarRootNode>
|
</TabBarRootNode>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -3,21 +3,18 @@ import TabBarRootNode from './TabBarRootNode';
|
||||||
import TabBarTabsNode from './TabBarTabsNode';
|
import TabBarTabsNode from './TabBarTabsNode';
|
||||||
import SaveRef from './SaveRef';
|
import SaveRef from './SaveRef';
|
||||||
|
|
||||||
export default {
|
const ScrollableTabBar = (_, { attrs }) => {
|
||||||
name: 'ScrollableTabBar',
|
|
||||||
functional: true,
|
|
||||||
render(h, context) {
|
|
||||||
const { props, listeners = {} } = context;
|
|
||||||
return (
|
return (
|
||||||
<SaveRef
|
<SaveRef
|
||||||
children={(saveRef, getRef) => (
|
children={(saveRef, getRef) => (
|
||||||
<TabBarRootNode saveRef={saveRef} {...{ props, on: listeners }}>
|
<TabBarRootNode saveRef={saveRef} {...attrs}>
|
||||||
<ScrollableTabBarNode saveRef={saveRef} getRef={getRef} {...{ props, on: listeners }}>
|
<ScrollableTabBarNode saveRef={saveRef} getRef={getRef} {...attrs}>
|
||||||
<TabBarTabsNode saveRef={saveRef} {...{ props, on: listeners }} />
|
<TabBarTabsNode saveRef={saveRef} {...attrs} />
|
||||||
</ScrollableTabBarNode>
|
</ScrollableTabBarNode>
|
||||||
</TabBarRootNode>
|
</TabBarRootNode>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
ScrollableTabBar.inheritAttrs = false;
|
||||||
|
export default ScrollableTabBar;
|
||||||
|
|
|
@ -2,8 +2,9 @@ import debounce from 'lodash/debounce';
|
||||||
import ResizeObserver from 'resize-observer-polyfill';
|
import ResizeObserver from 'resize-observer-polyfill';
|
||||||
import PropTypes from '../../_util/vue-types';
|
import PropTypes from '../../_util/vue-types';
|
||||||
import BaseMixin from '../../_util/BaseMixin';
|
import BaseMixin from '../../_util/BaseMixin';
|
||||||
import { getComponentFromProp } from '../../_util/props-util';
|
import { getComponent, getSlot } from '../../_util/props-util';
|
||||||
import { setTransform, isTransform3dSupported } from './utils';
|
import { setTransform, isTransform3dSupported } from './utils';
|
||||||
|
import createRefHooks from '../../_util/createRefHooks';
|
||||||
|
|
||||||
function noop() {}
|
function noop() {}
|
||||||
export default {
|
export default {
|
||||||
|
@ -202,9 +203,6 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
setNext(v) {
|
setNext(v) {
|
||||||
if (!v) {
|
|
||||||
// debugger
|
|
||||||
}
|
|
||||||
if (this.next !== v) {
|
if (this.next !== v) {
|
||||||
this.next = v;
|
this.next = v;
|
||||||
}
|
}
|
||||||
|
@ -275,8 +273,8 @@ export default {
|
||||||
render() {
|
render() {
|
||||||
const { next, prev } = this;
|
const { next, prev } = this;
|
||||||
const { prefixCls, scrollAnimated, navWrapper } = this.$props;
|
const { prefixCls, scrollAnimated, navWrapper } = this.$props;
|
||||||
const prevIcon = getComponentFromProp(this, 'prevIcon');
|
const prevIcon = getComponent(this, 'prevIcon');
|
||||||
const nextIcon = getComponentFromProp(this, 'nextIcon');
|
const nextIcon = getComponent(this, 'nextIcon');
|
||||||
const showNextPrev = prev || next;
|
const showNextPrev = prev || next;
|
||||||
|
|
||||||
const prevButton = (
|
const prevButton = (
|
||||||
|
@ -321,41 +319,14 @@ export default {
|
||||||
[`${prefixCls}-nav-container-scrolling`]: showNextPrev,
|
[`${prefixCls}-nav-container-scrolling`]: showNextPrev,
|
||||||
}}
|
}}
|
||||||
key="container"
|
key="container"
|
||||||
{...{
|
{...createRefHooks(this.saveRef('container'))}
|
||||||
directives: [
|
|
||||||
{
|
|
||||||
name: 'ant-ref',
|
|
||||||
value: this.saveRef('container'),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
{prevButton}
|
{prevButton}
|
||||||
{nextButton}
|
{nextButton}
|
||||||
<div
|
<div class={`${prefixCls}-nav-wrap`} {...createRefHooks(this.saveRef('navWrap'))}>
|
||||||
class={`${prefixCls}-nav-wrap`}
|
|
||||||
{...{
|
|
||||||
directives: [
|
|
||||||
{
|
|
||||||
name: 'ant-ref',
|
|
||||||
value: this.saveRef('navWrap'),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div class={`${prefixCls}-nav-scroll`}>
|
<div class={`${prefixCls}-nav-scroll`}>
|
||||||
<div
|
<div class={navClasses} {...createRefHooks(this.saveRef('nav'))}>
|
||||||
class={navClasses}
|
{navWrapper(getSlot(this))}
|
||||||
{...{
|
|
||||||
directives: [
|
|
||||||
{
|
|
||||||
name: 'ant-ref',
|
|
||||||
value: this.saveRef('nav'),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{navWrapper(this.$slots.default)}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import PropTypes from '../../_util/vue-types';
|
import PropTypes from '../../_util/vue-types';
|
||||||
import KeyCode from '../../_util/KeyCode';
|
import KeyCode from '../../_util/KeyCode';
|
||||||
|
import createRefHooks from '../../_util/createRefHooks';
|
||||||
|
import { getSlot } from '../../_util/props-util';
|
||||||
|
|
||||||
const sentinelStyle = { width: 0, height: 0, overflow: 'hidden', position: 'absolute' };
|
const sentinelStyle = { width: 0, height: 0, overflow: 'hidden', position: 'absolute' };
|
||||||
export default {
|
export default {
|
||||||
|
@ -31,19 +33,12 @@ export default {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
{...{
|
{...createRefHooks(setRef)}
|
||||||
directives: [
|
|
||||||
{
|
|
||||||
name: 'ant-ref',
|
|
||||||
value: setRef,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
style={sentinelStyle}
|
style={sentinelStyle}
|
||||||
onKeydown={this.onKeyDown}
|
onKeydown={this.onKeyDown}
|
||||||
role="presentation"
|
role="presentation"
|
||||||
>
|
>
|
||||||
{this.$slots.default}
|
{getSlot(this)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,19 +1,16 @@
|
||||||
import TabBarRootNode from './TabBarRootNode';
|
import TabBarRootNode from './TabBarRootNode';
|
||||||
import TabBarTabsNode from './TabBarTabsNode';
|
import TabBarTabsNode from './TabBarTabsNode';
|
||||||
import SaveRef from './SaveRef';
|
import SaveRef from './SaveRef';
|
||||||
import { getAttrs, getListeners } from '../../_util/props-util';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TabBar',
|
name: 'TabBar',
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
render() {
|
render() {
|
||||||
const props = getAttrs(this);
|
|
||||||
const listeners = getListeners(this);
|
|
||||||
return (
|
return (
|
||||||
<SaveRef
|
<SaveRef
|
||||||
children={saveRef => (
|
children={saveRef => (
|
||||||
<TabBarRootNode saveRef={saveRef} {...{ props, on: listeners }}>
|
<TabBarRootNode saveRef={saveRef} {...this.$attrs}>
|
||||||
<TabBarTabsNode saveRef={saveRef} {...{ props, on: listeners }} />
|
<TabBarTabsNode saveRef={saveRef} {...this.$attrs} />
|
||||||
</TabBarRootNode>
|
</TabBarRootNode>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { cloneElement } from '../../_util/vnode';
|
import { cloneElement } from '../../_util/vnode';
|
||||||
import PropTypes from '../../_util/vue-types';
|
import PropTypes from '../../_util/vue-types';
|
||||||
import BaseMixin from '../../_util/BaseMixin';
|
import BaseMixin from '../../_util/BaseMixin';
|
||||||
|
import createRefHooks from '../../_util/createRefHooks';
|
||||||
function noop() {}
|
function noop() {}
|
||||||
export default {
|
export default {
|
||||||
name: 'TabBarRootNode',
|
name: 'TabBarRootNode',
|
||||||
|
@ -11,6 +12,7 @@ export default {
|
||||||
prefixCls: PropTypes.string.def(''),
|
prefixCls: PropTypes.string.def(''),
|
||||||
tabBarPosition: PropTypes.string.def('top'),
|
tabBarPosition: PropTypes.string.def('top'),
|
||||||
extraContent: PropTypes.any,
|
extraContent: PropTypes.any,
|
||||||
|
onKeydown: PropTypes.func,
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onKeyDown(e) {
|
onKeyDown(e) {
|
||||||
|
@ -45,14 +47,7 @@ export default {
|
||||||
class={cls}
|
class={cls}
|
||||||
tabIndex="0"
|
tabIndex="0"
|
||||||
onKeydown={onKeyDown}
|
onKeydown={onKeyDown}
|
||||||
{...{
|
{...createRefHooks(this.saveRef('root'))}
|
||||||
directives: [
|
|
||||||
{
|
|
||||||
name: 'ant-ref',
|
|
||||||
value: this.saveRef('root'),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
{newChildren}
|
{newChildren}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
// based on rc-tabs 9.7.0
|
// based on rc-tabs 9.7.0
|
||||||
import ref from 'vue-ref';
|
|
||||||
import Vue from 'vue';
|
|
||||||
import Tabs from './Tabs';
|
import Tabs from './Tabs';
|
||||||
import TabPane from './TabPane';
|
import TabPane from './TabPane';
|
||||||
import TabContent from './TabContent';
|
import TabContent from './TabContent';
|
||||||
|
|
||||||
Vue.use(ref, { name: 'ant-ref' });
|
|
||||||
|
|
||||||
export default Tabs;
|
export default Tabs;
|
||||||
export { TabPane, TabContent };
|
export { TabPane, TabContent };
|
||||||
|
|
Loading…
Reference in New Issue