Skip to content

Commit

Permalink
[Timeline] tests & features & bugs (Tencent#2395)
Browse files Browse the repository at this point in the history
* feat(timeline): tests & bugs & features

* refactor(timeline): rename file name

* fix(timeline): dot center

* fix(dialog): ssr need string to telport

* fix(dialog): teleport
  • Loading branch information
chaishi authored and sinbadmaster committed Jun 2, 2023
1 parent b3f44ef commit 532e107
Show file tree
Hide file tree
Showing 22 changed files with 485 additions and 202 deletions.
1 change: 1 addition & 0 deletions src/dialog/_example/base.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
v-model:visible="visible"
header="对话框标题"
body="对话框内容"
attach="body"
:confirm-on-enter="true"
:on-cancel="onCancel"
:on-esc-keydown="onEscKeydown"
Expand Down
4 changes: 2 additions & 2 deletions src/dialog/dialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { useAction, useSameTarget } from './hooks';
import { useTNodeJSX, useContent } from '../hooks/tnode';
import useDestroyOnClose from '../hooks/useDestroyOnClose';
import { stack } from './stack';
import { getAttach, getScrollbarWidth } from '../utils/dom';
import { getAttach, getScrollbarWidth, getSSRAttach } from '../utils/dom';

import type { TdDialogProps } from './type';
import isUndefined from 'lodash/isUndefined';
Expand Down Expand Up @@ -449,7 +449,7 @@ export default defineComponent({
},
];
return (
<Teleport disabled={!this.attach} to={getAttach(this.attach)}>
<Teleport disabled={!this.attach} to={getSSRAttach() || getAttach(this.attach)}>
<Transition
duration={300}
name={`${COMPONENT_NAME}-zoom__vue`}
Expand Down
4 changes: 2 additions & 2 deletions src/drawer/drawer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { onBeforeUnmount, onMounted, computed, defineComponent, nextTick, onUpda
import { CloseIcon as TdCloseIcon } from 'tdesign-icons-vue-next';
import { useConfig, usePrefixClass } from '../hooks/useConfig';
import { useGlobalIcon } from '../hooks/useGlobalIcon';
import { isServer, getScrollbarWidth, getAttach } from '../utils/dom';
import { isServer, getScrollbarWidth, getAttach, getSSRAttach } from '../utils/dom';
import props from './props';
import { DrawerCloseContext } from './type';
import { useAction } from '../dialog/hooks';
Expand Down Expand Up @@ -244,7 +244,7 @@ export default defineComponent({
const headerContent = renderTNodeJSX('header');
const defaultFooter = getDefaultFooter();
return (
<Teleport disabled={!props.attach} to={getAttach(props.attach)}>
<Teleport disabled={!props.attach} to={getSSRAttach() || getAttach(props.attach)}>
<div
ref={drawerEle}
class={drawerClasses.value}
Expand Down
4 changes: 2 additions & 2 deletions src/form/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import _Form from './form';
import _FormItem from './form-item';
import withInstall from '../utils/withInstall';
import { TdFormProps, TdFormItemProps } from './type';
import { TdFormProps, TdFormItemProps, Data } from './type';

import './style';

export * from './type';
export type FormProps = TdFormProps;
export type FormProps<FormData extends Data = Data> = TdFormProps<FormData>;
export type FormItemProps = TdFormItemProps;

export const Form = withInstall(_Form);
Expand Down
6 changes: 3 additions & 3 deletions src/loading/loading.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { defineComponent, ref, computed, watch, onMounted, toRefs, CSSProperties, Teleport } from 'vue';
import GradientIcon from './icon/gradient';
import { addClass, removeClass, getAttach } from '../utils/dom';
import { addClass, removeClass, getAttach, getSSRAttach } from '../utils/dom';
import { renderTNodeJSX, renderContent } from '../utils/render-tnode';
import props from './props';

Expand Down Expand Up @@ -125,7 +125,7 @@ export default defineComponent({
if (this.fullscreen) {
if (!this.showFullScreenLoading || !this.loading) return null;
return (
<Teleport disabled={!this.attach} to={getAttach(this.attach)}>
<Teleport disabled={!this.attach} to={getSSRAttach() || getAttach(this.attach)}>
<div class={fullScreenClasses} style={this.styles}>
<div class={baseClasses}>
{indicator}
Expand Down Expand Up @@ -155,7 +155,7 @@ export default defineComponent({
if (this.attach) {
if (!this.showAttachedLoading || !this.loading) return null;
return (
<Teleport disabled={!this.attach} to={getAttach(this.attach)}>
<Teleport disabled={!this.attach} to={getSSRAttach() || getAttach(this.attach)}>
<div class={attachClasses} style={this.styles}>
{indicator}
{text}
Expand Down
4 changes: 2 additions & 2 deletions src/popup/container.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
onUpdated,
ComponentInternalInstance,
} from 'vue';
import { getAttach } from '../utils/dom';
import { getAttach, getSSRAttach } from '../utils/dom';
import props from './props';
import useResizeObserver from '../hooks/useResizeObserver';
import isUndefined from 'lodash/isUndefined';
Expand Down Expand Up @@ -184,7 +184,7 @@ export default defineComponent({
{this.$slots.default()}
</Trigger>
{this.mountContent && (
<Teleport to={getAttach(this.attach, this.triggerEl)}>
<Teleport to={getSSRAttach() || getAttach(this.attach, this.triggerEl)}>
<Content onResize={this.emitResize} onVnodeMounted={this.emitContentMounted}>
{this.$slots.content && this.$slots.content()}
</Content>
Expand Down
137 changes: 137 additions & 0 deletions src/timeline/__tests__/__snapshots__/vitest-timeline.test.jsx.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
// Vitest Snapshot v1

exports[`TimelineItem Component > props.content works fine 1`] = `
<li
class="t-timeline-item t-timeline-item-top"
>
<!---->
<div
class="t-timeline-item__wrapper"
>
<div
class="t-timeline-item__dot t-timeline-item__dot--default"
>
<!---->
<!---->
</div>
<div
class="t-timeline-item__tail t-timeline-item__tail--theme-default"
/>
</div>
<div
class="t-timeline-item__content"
>
<span
class="custom-node"
>
TNode
</span>
<!---->
</div>
</li>
`;

exports[`TimelineItem Component > props.label works fine 1`] = `
<li
class="t-timeline-item t-timeline-item-top"
>
<div
class="t-timeline-item__label t-timeline-item__label--alternate"
>
<span
class="custom-node"
>
TNode
</span>
</div>
<div
class="t-timeline-item__wrapper"
>
<div
class="t-timeline-item__dot t-timeline-item__dot--default"
>
<!---->
<!---->
</div>
<div
class="t-timeline-item__tail t-timeline-item__tail--theme-default"
/>
</div>
<div
class="t-timeline-item__content"
>
<!---->
<!---->
</div>
</li>
`;

exports[`TimelineItem Component > slots.content works fine 1`] = `
<li
class="t-timeline-item t-timeline-item-top"
>
<!---->
<div
class="t-timeline-item__wrapper"
>
<div
class="t-timeline-item__dot t-timeline-item__dot--default"
>
<!---->
<!---->
</div>
<div
class="t-timeline-item__tail t-timeline-item__tail--theme-default"
/>
</div>
<div
class="t-timeline-item__content"
>
<span
class="custom-node"
>
TNode
</span>
<!---->
</div>
</li>
`;

exports[`TimelineItem Component > slots.label works fine 1`] = `
<li
class="t-timeline-item t-timeline-item-top"
>
<div
class="t-timeline-item__label t-timeline-item__label--alternate"
>
<span
class="custom-node"
>
TNode
</span>
</div>
<div
class="t-timeline-item__wrapper"
>
<div
class="t-timeline-item__dot t-timeline-item__dot--default"
>
<!---->
<!---->
</div>
<div
class="t-timeline-item__tail t-timeline-item__tail--theme-default"
/>
</div>
<div
class="t-timeline-item__content"
>
<!---->
<!---->
</div>
</li>
`;
31 changes: 31 additions & 0 deletions src/timeline/__tests__/mount.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { mount } from '@vue/test-utils';
import { Timeline, TimelineItem } from '../../timeline';

export function getTimelineDefaultMount(Timeline, props, events) {
return mount(
<Timeline {...props} {...events}>
<TimelineItem label="2022-01-01">Event1</TimelineItem>
<TimelineItem label="2022-02-01">Event2</TimelineItem>
<TimelineItem label="2022-03-01">Event3</TimelineItem>
<TimelineItem label="2022-04-01" dotColor="yellowgreen">
Event4
</TimelineItem>
</Timeline>,
);
}

// labelAlign 优先级比较
export function getTimelineItemMount(TimelineItem, props) {
return mount(
<Timeline labelAlign="right">
<TimelineItem {...props} label="2022-01-01">
Event1
</TimelineItem>
<TimelineItem label="2022-02-01">Event2</TimelineItem>
<TimelineItem label="2022-03-01">Event3</TimelineItem>
<TimelineItem label="2022-04-01">Event4</TimelineItem>
</Timeline>,
);
}

export default getTimelineDefaultMount;
Loading

0 comments on commit 532e107

Please sign in to comment.