refactor(empty): less to cssinjs (#6230)
* refactor(empty): less to cssinjs * chore: remove unuse code * fix: reactivity losepull/6236/head
parent
a205615af9
commit
fc0f0d8a96
|
@ -1,44 +1,73 @@
|
||||||
import useConfigInject from '../config-provider/hooks/useConfigInject';
|
import { useToken } from '../theme/internal';
|
||||||
|
import { TinyColor } from '@ctrl/tinycolor';
|
||||||
|
import type { CSSProperties } from 'vue';
|
||||||
|
import { defineComponent, computed } from 'vue';
|
||||||
|
|
||||||
const Empty = () => {
|
const Empty = defineComponent({
|
||||||
const { getPrefixCls } = useConfigInject('empty', {});
|
setup() {
|
||||||
const prefixCls = getPrefixCls('empty-img-default');
|
const [, token] = useToken();
|
||||||
|
|
||||||
return (
|
const themeStyle = computed<CSSProperties>(() => {
|
||||||
<svg class={prefixCls} width="184" height="152" viewBox="0 0 184 152">
|
const bgColor = new TinyColor(token.value.colorBgBase);
|
||||||
<g fill="none" fill-rule="evenodd">
|
|
||||||
<g transform="translate(24 31.67)">
|
// Dark Theme need more dark of this
|
||||||
<ellipse class={`${prefixCls}-ellipse`} cx="67.797" cy="106.89" rx="67.797" ry="12.668" />
|
if (bgColor.toHsl().l < 0.5) {
|
||||||
|
return {
|
||||||
|
opacity: 0.65,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => (
|
||||||
|
<svg
|
||||||
|
style={themeStyle.value}
|
||||||
|
width="184"
|
||||||
|
height="152"
|
||||||
|
viewBox="0 0 184 152"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
<g fill="none" fill-rule="evenodd">
|
||||||
|
<g transform="translate(24 31.67)">
|
||||||
|
<ellipse
|
||||||
|
fill-opacity=".8"
|
||||||
|
fill="#F5F5F7"
|
||||||
|
cx="67.797"
|
||||||
|
cy="106.89"
|
||||||
|
rx="67.797"
|
||||||
|
ry="12.668"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"
|
||||||
|
fill="#AEB8C2"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z"
|
||||||
|
fill="url(#linearGradient-1)"
|
||||||
|
transform="translate(13.56)"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"
|
||||||
|
fill="#F5F5F7"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"
|
||||||
|
fill="#DCE0E6"
|
||||||
|
/>
|
||||||
|
</g>
|
||||||
<path
|
<path
|
||||||
class={`${prefixCls}-path-1`}
|
d="M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"
|
||||||
d="M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"
|
fill="#DCE0E6"
|
||||||
/>
|
|
||||||
<path
|
|
||||||
class={`${prefixCls}-path-2`}
|
|
||||||
d="M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z"
|
|
||||||
transform="translate(13.56)"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
class={`${prefixCls}-path-3`}
|
|
||||||
d="M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
class={`${prefixCls}-path-4`}
|
|
||||||
d="M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"
|
|
||||||
/>
|
/>
|
||||||
|
<g transform="translate(149.65 15.383)" fill="#FFF">
|
||||||
|
<ellipse cx="20.654" cy="3.167" rx="2.849" ry="2.815" />
|
||||||
|
<path d="M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z" />
|
||||||
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<path
|
</svg>
|
||||||
class={`${prefixCls}-path-5`}
|
);
|
||||||
d="M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"
|
},
|
||||||
/>
|
});
|
||||||
<g class={`${prefixCls}-g`} transform="translate(149.65 15.383)">
|
|
||||||
<ellipse cx="20.654" cy="3.167" rx="2.849" ry="2.815" />
|
|
||||||
<path d="M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
Empty.PRESENTED_IMAGE_DEFAULT = true;
|
Empty.PRESENTED_IMAGE_DEFAULT = true;
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
import type { CSSProperties, FunctionalComponent, PropType } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
|
import type { CSSProperties, PropType, ExtractPropTypes } from 'vue';
|
||||||
import classNames from '../_util/classNames';
|
import classNames from '../_util/classNames';
|
||||||
import LocaleReceiver from '../locale-provider/LocaleReceiver';
|
import LocaleReceiver from '../locale-provider/LocaleReceiver';
|
||||||
import DefaultEmptyImg from './empty';
|
import DefaultEmptyImg from './empty';
|
||||||
import SimpleEmptyImg from './simple';
|
import SimpleEmptyImg from './simple';
|
||||||
import { filterEmpty } from '../_util/props-util';
|
import { filterEmpty } from '../_util/props-util';
|
||||||
import PropTypes from '../_util/vue-types';
|
import PropTypes from '../_util/vue-types';
|
||||||
import type { VueNode } from '../_util/type';
|
|
||||||
import { withInstall } from '../_util/type';
|
import { withInstall } from '../_util/type';
|
||||||
import useConfigInject from '../config-provider/hooks/useConfigInject';
|
import useConfigInject from '../config-provider/hooks/useConfigInject';
|
||||||
|
|
||||||
|
import useStyle from './style';
|
||||||
|
|
||||||
const defaultEmptyImg = <DefaultEmptyImg />;
|
const defaultEmptyImg = <DefaultEmptyImg />;
|
||||||
const simpleEmptyImg = <SimpleEmptyImg />;
|
const simpleEmptyImg = <SimpleEmptyImg />;
|
||||||
|
|
||||||
|
@ -16,70 +18,73 @@ interface Locale {
|
||||||
description?: string;
|
description?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EmptyProps {
|
export const emptyProps = () => ({
|
||||||
prefixCls?: string;
|
prefixCls: String,
|
||||||
class?: any;
|
class: PropTypes.any,
|
||||||
style?: string | CSSProperties;
|
style: [String, Object] as PropType<string | CSSProperties>,
|
||||||
imageStyle?: CSSProperties;
|
imageStyle: Object as PropType<CSSProperties>,
|
||||||
image?: VueNode | null;
|
image: PropTypes.any,
|
||||||
description?: VueNode;
|
description: PropTypes.any,
|
||||||
}
|
});
|
||||||
|
|
||||||
interface EmptyType extends FunctionalComponent<EmptyProps> {
|
export type EmptyProps = Partial<ExtractPropTypes<ReturnType<typeof emptyProps>>>;
|
||||||
displayName: string;
|
|
||||||
PRESENTED_IMAGE_DEFAULT: VueNode;
|
|
||||||
PRESENTED_IMAGE_SIMPLE: VueNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Empty: EmptyType = (props, { slots = {}, attrs }) => {
|
const Empty = defineComponent({
|
||||||
const { direction, prefixCls: prefixClsRef } = useConfigInject('empty', props);
|
name: 'AEmpty',
|
||||||
const prefixCls = prefixClsRef.value;
|
inheritAttrs: false,
|
||||||
|
props: emptyProps(),
|
||||||
|
setup(props, { slots = {}, attrs }) {
|
||||||
|
const { direction, prefixCls: prefixClsRef } = useConfigInject('empty', props);
|
||||||
|
|
||||||
const {
|
const [wrapSSR, hashId] = useStyle(prefixClsRef);
|
||||||
image = defaultEmptyImg,
|
|
||||||
description = slots.description?.() || undefined,
|
|
||||||
imageStyle,
|
|
||||||
class: className = '',
|
|
||||||
...restProps
|
|
||||||
} = { ...props, ...attrs };
|
|
||||||
|
|
||||||
return (
|
return () => {
|
||||||
<LocaleReceiver
|
const prefixCls = prefixClsRef.value;
|
||||||
componentName="Empty"
|
const {
|
||||||
children={(locale: Locale) => {
|
image = defaultEmptyImg,
|
||||||
const des = typeof description !== 'undefined' ? description : locale.description;
|
description = slots.description?.() || undefined,
|
||||||
const alt = typeof des === 'string' ? des : 'empty';
|
imageStyle,
|
||||||
let imageNode: EmptyProps['image'] = null;
|
class: className = '',
|
||||||
|
...restProps
|
||||||
|
} = { ...props, ...attrs };
|
||||||
|
|
||||||
if (typeof image === 'string') {
|
return wrapSSR(
|
||||||
imageNode = <img alt={alt} src={image} />;
|
<LocaleReceiver
|
||||||
} else {
|
componentName="Empty"
|
||||||
imageNode = image;
|
children={(locale: Locale) => {
|
||||||
}
|
const des = typeof description !== 'undefined' ? description : locale.description;
|
||||||
|
const alt = typeof des === 'string' ? des : 'empty';
|
||||||
|
let imageNode: EmptyProps['image'] = null;
|
||||||
|
|
||||||
return (
|
if (typeof image === 'string') {
|
||||||
<div
|
imageNode = <img alt={alt} src={image} />;
|
||||||
class={classNames(prefixCls, className, {
|
} else {
|
||||||
[`${prefixCls}-normal`]: image === simpleEmptyImg,
|
imageNode = image;
|
||||||
[`${prefixCls}-rtl`]: direction.value === 'rtl',
|
}
|
||||||
})}
|
|
||||||
{...restProps}
|
|
||||||
>
|
|
||||||
<div class={`${prefixCls}-image`} style={imageStyle}>
|
|
||||||
{imageNode}
|
|
||||||
</div>
|
|
||||||
{des && <p class={`${prefixCls}-description`}>{des}</p>}
|
|
||||||
{slots.default && (
|
|
||||||
<div class={`${prefixCls}-footer`}>{filterEmpty(slots.default())}</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
Empty.displayName = 'AEmpty';
|
return (
|
||||||
|
<div
|
||||||
|
class={classNames(prefixCls, className, hashId.value, {
|
||||||
|
[`${prefixCls}-normal`]: image === simpleEmptyImg,
|
||||||
|
[`${prefixCls}-rtl`]: direction.value === 'rtl',
|
||||||
|
})}
|
||||||
|
{...restProps}
|
||||||
|
>
|
||||||
|
<div class={`${prefixCls}-image`} style={imageStyle}>
|
||||||
|
{imageNode}
|
||||||
|
</div>
|
||||||
|
{des && <p class={`${prefixCls}-description`}>{des}</p>}
|
||||||
|
{slots.default && (
|
||||||
|
<div class={`${prefixCls}-footer`}>{filterEmpty(slots.default())}</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
/>,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
Empty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;
|
Empty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;
|
||||||
Empty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;
|
Empty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;
|
||||||
|
|
|
@ -1,25 +1,39 @@
|
||||||
import useConfigInject from '../config-provider/hooks/useConfigInject';
|
import { TinyColor } from '@ctrl/tinycolor';
|
||||||
|
import { computed, defineComponent } from 'vue';
|
||||||
|
import { useToken } from '../theme/internal';
|
||||||
|
|
||||||
const Simple = () => {
|
const Simple = defineComponent({
|
||||||
const { getPrefixCls } = useConfigInject('empty', {});
|
setup() {
|
||||||
const prefixCls = getPrefixCls('empty-img-simple');
|
const [, token] = useToken();
|
||||||
|
|
||||||
return (
|
const color = computed(() => {
|
||||||
<svg class={prefixCls} width="64" height="41" viewBox="0 0 64 41">
|
const { colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer } = token.value;
|
||||||
<g transform="translate(0 1)" fill="none" fill-rule="evenodd">
|
|
||||||
<ellipse class={`${prefixCls}-ellipse`} fill="#F5F5F5" cx="32" cy="33" rx="32" ry="7" />
|
return {
|
||||||
<g class={`${prefixCls}-g`} fill-rule="nonzero" stroke="#D9D9D9">
|
borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexString(),
|
||||||
<path d="M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z" />
|
shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexString(),
|
||||||
<path
|
contentColor: new TinyColor(colorFillQuaternary)
|
||||||
d="M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z"
|
.onBackground(colorBgContainer)
|
||||||
fill="#FAFAFA"
|
.toHexString(),
|
||||||
class={`${prefixCls}-path`}
|
};
|
||||||
/>
|
});
|
||||||
|
|
||||||
|
return () => (
|
||||||
|
<svg width="64" height="41" viewBox="0 0 64 41" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g transform="translate(0 1)" fill="none" fill-rule="evenodd">
|
||||||
|
<ellipse fill={color.value.shadowColor} cx="32" cy="33" rx="32" ry="7" />
|
||||||
|
<g fill-rule="nonzero" stroke={color.value.borderColor}>
|
||||||
|
<path d="M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z" />
|
||||||
|
<path
|
||||||
|
d="M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z"
|
||||||
|
fill={color.value.contentColor}
|
||||||
|
/>
|
||||||
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</svg>
|
||||||
</svg>
|
);
|
||||||
);
|
},
|
||||||
};
|
});
|
||||||
|
|
||||||
Simple.PRESENTED_IMAGE_SIMPLE = true;
|
Simple.PRESENTED_IMAGE_SIMPLE = true;
|
||||||
export default Simple;
|
export default Simple;
|
||||||
|
|
|
@ -1,151 +0,0 @@
|
||||||
@import '../../style/themes/index';
|
|
||||||
@import '../../style/mixins/index';
|
|
||||||
|
|
||||||
@empty-prefix-cls: ~'@{ant-prefix}-empty';
|
|
||||||
@empty-img-prefix-cls: ~'@{ant-prefix}-empty-img';
|
|
||||||
|
|
||||||
.@{empty-prefix-cls} {
|
|
||||||
margin: 0 8px;
|
|
||||||
font-size: @empty-font-size;
|
|
||||||
line-height: @line-height-base;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
&-image {
|
|
||||||
height: 100px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
|
|
||||||
img {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
svg {
|
|
||||||
height: 100%;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&-footer {
|
|
||||||
margin-top: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// antd internal empty style
|
|
||||||
&-normal {
|
|
||||||
margin: 32px 0;
|
|
||||||
color: @disabled-color;
|
|
||||||
|
|
||||||
.@{empty-prefix-cls}-image {
|
|
||||||
height: 40px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&-small {
|
|
||||||
margin: 8px 0;
|
|
||||||
color: @disabled-color;
|
|
||||||
|
|
||||||
.@{empty-prefix-cls}-image {
|
|
||||||
height: 35px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.@{empty-img-prefix-cls}-default {
|
|
||||||
// not support the definition because the less variables have no meaning
|
|
||||||
& when (@theme = dark) {
|
|
||||||
&-ellipse {
|
|
||||||
fill: @white;
|
|
||||||
fill-opacity: 0.08;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-path {
|
|
||||||
&-1 {
|
|
||||||
fill: #262626;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-2 {
|
|
||||||
fill: url('#linearGradient-1');
|
|
||||||
}
|
|
||||||
|
|
||||||
&-3 {
|
|
||||||
fill: #595959;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-4 {
|
|
||||||
fill: #434343;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-5 {
|
|
||||||
fill: #595959;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&-g {
|
|
||||||
fill: #434343;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
& when not (@theme = dark) {
|
|
||||||
&-ellipse {
|
|
||||||
fill: #f5f5f5;
|
|
||||||
fill-opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-path {
|
|
||||||
&-1 {
|
|
||||||
fill: #aeb8c2;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-2 {
|
|
||||||
fill: url('#linearGradient-1');
|
|
||||||
}
|
|
||||||
|
|
||||||
&-3 {
|
|
||||||
fill: #f5f5f7;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-4 {
|
|
||||||
fill: #dce0e6;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-5 {
|
|
||||||
fill: #dce0e6;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&-g {
|
|
||||||
fill: @white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.@{empty-img-prefix-cls}-simple {
|
|
||||||
// not support the definition because the less variables have no meaning
|
|
||||||
& when (@theme = dark) {
|
|
||||||
&-ellipse {
|
|
||||||
fill: @white;
|
|
||||||
fill-opacity: 0.08;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-g {
|
|
||||||
stroke: #434343;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-path {
|
|
||||||
fill: #262626;
|
|
||||||
stroke: #434343;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
& when not (@theme = dark) {
|
|
||||||
&-ellipse {
|
|
||||||
fill: #f5f5f5;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-g {
|
|
||||||
stroke: #d9d9d9;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-path {
|
|
||||||
fill: #fafafa;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@import './rtl';
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
import type { CSSObject } from '../../_util/cssinjs';
|
||||||
|
import type { FullToken, GenerateStyle } from '../../theme/internal';
|
||||||
|
import { genComponentStyleHook, mergeToken } from '../../theme/internal';
|
||||||
|
|
||||||
|
/** Component only token. Which will handle additional calculation of alias token */
|
||||||
|
export interface ComponentToken {}
|
||||||
|
|
||||||
|
interface EmptyToken extends FullToken<'Empty'> {
|
||||||
|
emptyImgCls: string;
|
||||||
|
emptyImgHeight: number;
|
||||||
|
emptyImgHeightSM: number;
|
||||||
|
emptyImgHeightMD: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================== Shared ==============================
|
||||||
|
const genSharedEmptyStyle: GenerateStyle<EmptyToken> = (token): CSSObject => {
|
||||||
|
const { componentCls, margin, marginXS, marginXL, fontSize, lineHeight } = token;
|
||||||
|
|
||||||
|
return {
|
||||||
|
[componentCls]: {
|
||||||
|
marginInline: marginXS,
|
||||||
|
fontSize,
|
||||||
|
lineHeight,
|
||||||
|
textAlign: 'center',
|
||||||
|
|
||||||
|
// 原来 &-image 没有父子结构,现在为了外层承担我们的hashId,改成父子结果
|
||||||
|
[`${componentCls}-image`]: {
|
||||||
|
height: token.emptyImgHeight,
|
||||||
|
marginBottom: marginXS,
|
||||||
|
opacity: token.opacityImage,
|
||||||
|
|
||||||
|
img: {
|
||||||
|
height: '100%',
|
||||||
|
},
|
||||||
|
|
||||||
|
svg: {
|
||||||
|
height: '100%',
|
||||||
|
margin: 'auto',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
// 原来 &-footer 没有父子结构,现在为了外层承担我们的hashId,改成父子结果
|
||||||
|
[`${componentCls}-footer`]: {
|
||||||
|
marginTop: margin,
|
||||||
|
},
|
||||||
|
|
||||||
|
'&-normal': {
|
||||||
|
marginBlock: marginXL,
|
||||||
|
color: token.colorTextDisabled,
|
||||||
|
|
||||||
|
[`${componentCls}-image`]: {
|
||||||
|
height: token.emptyImgHeightMD,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
'&-small': {
|
||||||
|
marginBlock: marginXS,
|
||||||
|
color: token.colorTextDisabled,
|
||||||
|
|
||||||
|
[`${componentCls}-image`]: {
|
||||||
|
height: token.emptyImgHeightSM,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// ============================== Export ==============================
|
||||||
|
export default genComponentStyleHook('Empty', token => {
|
||||||
|
const { componentCls, controlHeightLG } = token;
|
||||||
|
|
||||||
|
const emptyToken: EmptyToken = mergeToken<EmptyToken>(token, {
|
||||||
|
emptyImgCls: `${componentCls}-img`,
|
||||||
|
emptyImgHeight: controlHeightLG * 2.5,
|
||||||
|
emptyImgHeightMD: controlHeightLG,
|
||||||
|
emptyImgHeightSM: controlHeightLG * 0.875,
|
||||||
|
});
|
||||||
|
|
||||||
|
return [genSharedEmptyStyle(emptyToken)];
|
||||||
|
});
|
|
@ -1,2 +0,0 @@
|
||||||
import '../../style/index.less';
|
|
||||||
import './index.less';
|
|
|
@ -1,10 +0,0 @@
|
||||||
@import '../../style/themes/index';
|
|
||||||
@import '../../style/mixins/index';
|
|
||||||
|
|
||||||
@empty-prefix-cls: ~'@{ant-prefix}-empty';
|
|
||||||
|
|
||||||
.@{empty-prefix-cls} {
|
|
||||||
&-rtl {
|
|
||||||
direction: rtl;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -14,7 +14,7 @@ import type { ComponentToken as ButtonComponentToken } from '../../button/style'
|
||||||
import type { ComponentToken as DividerComponentToken } from '../../divider/style';
|
import type { ComponentToken as DividerComponentToken } from '../../divider/style';
|
||||||
import type { ComponentToken as DropdownComponentToken } from '../../dropdown/style';
|
import type { ComponentToken as DropdownComponentToken } from '../../dropdown/style';
|
||||||
// import type { ComponentToken as DrawerComponentToken } from '../../drawer/style';
|
// import type { ComponentToken as DrawerComponentToken } from '../../drawer/style';
|
||||||
// import type { ComponentToken as EmptyComponentToken } from '../../empty/style';
|
import type { ComponentToken as EmptyComponentToken } from '../../empty/style';
|
||||||
// import type { ComponentToken as ImageComponentToken } from '../../image/style';
|
// import type { ComponentToken as ImageComponentToken } from '../../image/style';
|
||||||
// import type { ComponentToken as InputNumberComponentToken } from '../../input-number/style';
|
// import type { ComponentToken as InputNumberComponentToken } from '../../input-number/style';
|
||||||
// import type { ComponentToken as LayoutComponentToken } from '../../layout/style';
|
// import type { ComponentToken as LayoutComponentToken } from '../../layout/style';
|
||||||
|
@ -69,7 +69,7 @@ export interface ComponentTokenMap {
|
||||||
Divider?: DividerComponentToken;
|
Divider?: DividerComponentToken;
|
||||||
// Drawer?: DrawerComponentToken;
|
// Drawer?: DrawerComponentToken;
|
||||||
Dropdown?: DropdownComponentToken;
|
Dropdown?: DropdownComponentToken;
|
||||||
// Empty?: EmptyComponentToken;
|
Empty?: EmptyComponentToken;
|
||||||
// FloatButton?: FloatButtonComponentToken;
|
// FloatButton?: FloatButtonComponentToken;
|
||||||
Form?: {};
|
Form?: {};
|
||||||
Grid?: {};
|
Grid?: {};
|
||||||
|
|
Loading…
Reference in New Issue