Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/color picker #408

Merged
merged 49 commits into from
Mar 23, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
0c726bd
feat(color-picker): color-picker component
S-mohan Mar 4, 2022
a828e40
feat(color-picker): color-picker component
S-mohan Mar 4, 2022
2fe517c
feat(color-picker): color-picker component
S-mohan Mar 4, 2022
993fa72
feat(color-picker): color-picker component
S-mohan Mar 4, 2022
627a9c3
test(add test for color-picker): add test for color-picker
S-mohan Mar 7, 2022
b053b75
test(add tests for color-picker): 新增color-picker测试文件
S-mohan Mar 7, 2022
ba885d5
feat(color-picker): color-picker component
S-mohan Mar 8, 2022
68af92f
feat(color-picker): color-picker
S-mohan Mar 8, 2022
184fe45
Merge branch 'develop' into feature/color-picker
S-mohan Mar 8, 2022
29ec712
feat(color-picker): color-picker
S-mohan Mar 8, 2022
95b2f46
feat: color-picker, 去掉package.json dev --host 配置
S-mohan Mar 8, 2022
35dab73
feat(color-picker): color-picker
S-mohan Mar 8, 2022
574e9cc
feat(color-picker): color-picker
S-mohan Mar 8, 2022
b358127
feat(color-picker): color-picker
S-mohan Mar 8, 2022
412f3bb
Merge branch 'develop' into S-mohan-sync
uyarn Mar 10, 2022
a7d5d40
chore: fix test
uyarn Mar 10, 2022
da688d0
test(color-picker): test for color-picker
S-mohan Mar 11, 2022
63c68b8
Merge remote-tracking branch 'upstream/develop' into feature/color-pi…
S-mohan Mar 11, 2022
1230163
test(color-picker): test for color-picker
S-mohan Mar 11, 2022
d101363
feat(color-picker): color-picker
S-mohan Mar 11, 2022
86287c2
test(color-picker test): test for color-picker
S-mohan Mar 11, 2022
4276746
Merge remote-tracking branch 'upstream/develop' into feature/color-pi…
S-mohan Mar 12, 2022
6e69e47
style(处理prefix问题, 统一export的interface): 处理prefix问题, 统一export的interface
S-mohan Mar 12, 2022
1f71573
fix(color-picker): 使用props.change替代emit
S-mohan Mar 14, 2022
f17a8b6
Merge remote-tracking branch 'upstream/develop' into feature/color-pi…
S-mohan Mar 14, 2022
a7999d3
fix(color-picker): 优化代码,去掉emit事件等
S-mohan Mar 15, 2022
12fc92f
Merge remote-tracking branch 'upstream/develop' into feature/color-pi…
S-mohan Mar 15, 2022
43f799e
fix(color-picker): 使用useCommonClassName的部分状态样式
S-mohan Mar 15, 2022
5dd062d
feat(color-picker): color-picker 多语言提出
S-mohan Mar 16, 2022
9ddbe6c
feat(color-picker): color-picker
S-mohan Mar 16, 2022
02ad796
feat(color-picker): color-picker 提出多语言
S-mohan Mar 16, 2022
060fc43
fix(color-picker): 修改CR中的一些问题
S-mohan Mar 16, 2022
cfc6078
fix(color-picker): 增加最近使用色描边, 透明度使用百分比展示
S-mohan Mar 18, 2022
089f981
Merge remote-tracking branch 'upstream/develop' into feature/color-pi…
S-mohan Mar 18, 2022
42e60d4
test(color-picker): 测试文件更新
S-mohan Mar 18, 2022
555d075
Merge branch 'develop' of github.com:Tencent/tdesign-vue-next into S-…
uyarn Mar 18, 2022
3da5fc5
chore: update common
uyarn Mar 18, 2022
0cce807
test(color-picker): color-picker 测试文件更新
S-mohan Mar 18, 2022
135f386
fix(修复代码中的短路径问题): 修复代码中的短路径问题
S-mohan Mar 18, 2022
dd19fef
feat(color-picker): 去掉provide相关代码, 优化最近使用颜色交互
S-mohan Mar 20, 2022
7987a10
Merge remote-tracking branch 'upstream/develop' into feature/color-pi…
S-mohan Mar 20, 2022
e59fae0
feat(color-picker): common merge develop
S-mohan Mar 20, 2022
0c78fa1
test(color-picker): 更新color-picker snap文件
S-mohan Mar 20, 2022
1130f91
feat(color-picker): 优化color-picker代码
S-mohan Mar 20, 2022
401978e
feat(color-picker): 增加trigger类型, 增加最近使用色变更change事件, popconfirm 改为使用html
S-mohan Mar 21, 2022
eac2683
Merge remote-tracking branch 'upstream/develop' into feature/color-pi…
S-mohan Mar 21, 2022
b4f439a
test(color-picker): 更新测试文件
S-mohan Mar 21, 2022
315db87
test(color-picker): 更新 color-picker 测试文件
S-mohan Mar 21, 2022
5542986
feat(color-picker): 暂时去掉confirm, 待交互讨论后再定
S-mohan Mar 21, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions src/config-provider/config-provider.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
import { defineComponent, PropType, provide } from 'vue';
import { GlobalConfigProvider } from './type';
import { renderTNodeJSX } from '../utils/render-tnode';
import { prefix } from '../config';

const name = `${prefix}-config-provider`;

export default defineComponent({
name,
name: 'TConfigProvider',

props: {
globalConfig: Object as PropType<GlobalConfigProvider>,
Expand Down
5 changes: 1 addition & 4 deletions src/config-provider/config-receiver.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { defineComponent } from 'vue';
import defaultConfig from './zh_CN_config';
import { GlobalConfigProvider } from './type';
import { prefix } from '../config';

export type ValueOf<T> = T[keyof T];

Expand All @@ -14,11 +13,9 @@ export interface Placement {
[propName: string]: string | number;
}

const name = `${prefix}-locale-receiver`;

export default function getConfigReceiverMixins<C extends ComponentConfigType>(componentName: string) {
return defineComponent({
name,
name: 'TLocalReceiver',
inject: {
globalConfig: {
default: undefined,
Expand Down
11 changes: 7 additions & 4 deletions src/dialog/dialog.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { computed, defineComponent, nextTick, onBeforeUnmount, onMounted, ref, Transition, watch } from 'vue';
import { CloseIcon, InfoCircleFilledIcon, CheckCircleFilledIcon, ErrorCircleFilledIcon } from 'tdesign-icons-vue-next';
import { prefix } from '../config';
import TButton from '../button';
import { DialogCloseContext, TdDialogProps } from './type';
import props from './props';
Expand Down Expand Up @@ -86,6 +85,7 @@ export default defineComponent({
setup(props: TdDialogProps, context) {
const COMPONENT_NAME = usePrefixClass('dialog');
const LOCK_CLASS = usePrefixClass('dialog--lock');
const classPrefix = usePrefixClass();
const renderContent = useContent();
const renderTNodeJSX = useTNodeJSX();
const dialogEle = ref<HTMLElement | null>(null);
Expand All @@ -106,7 +106,10 @@ export default defineComponent({
const isModal = computed(() => props.mode === 'modal');
// 是否非模态对话框
const isModeless = computed(() => props.mode === 'modeless');
const maskClass = computed(() => [`${COMPONENT_NAME.value}__mask`, !props.showOverlay && `${prefix}-is-hidden`]);
const maskClass = computed(() => [
`${COMPONENT_NAME.value}__mask`,
!props.showOverlay && `${classPrefix.value}-is-hidden`,
]);
const dialogClass = computed(() => {
const dialogClass = [
`${COMPONENT_NAME.value}`,
Expand Down Expand Up @@ -242,14 +245,14 @@ export default defineComponent({
{getCancelBtn({
cancelBtn: props.cancelBtn,
globalCancel: global.value.cancel,
className: `${prefix}-dialog__cancel`,
className: `${COMPONENT_NAME.value}__cancel`,
})}
{getConfirmBtn({
theme: props.theme,
confirmBtn: props.confirmBtn,
globalConfirm: global.value.confirm,
globalConfirmBtnTheme: global.value.confirmBtnTheme,
className: `${prefix}-dialog__confirm`,
className: `${COMPONENT_NAME.value}__confirm`,
})}
</div>
);
Expand Down
10 changes: 5 additions & 5 deletions src/drawer/drawer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { CloseIcon } from 'tdesign-icons-vue-next';
import { useConfig, usePrefixClass } from '../config-provider';
import { addClass, removeClass } from '../utils/dom';
import { ClassName, Styles } from '../common';
import { prefix } from '../config';
import { Button as TButton } from '../button';
import props from './props';
import { FooterButton, DrawerCloseContext } from './type';
Expand All @@ -13,8 +12,6 @@ import { useAction } from '../dialog/hooks';

type FooterButtonType = 'confirm' | 'cancel';

const lockClass = `${prefix}-drawer--lock`;

export default defineComponent({
name: 'TDrawer',

Expand All @@ -32,6 +29,9 @@ export default defineComponent({
setup(props, context) {
const { global } = useConfig('drawer');
const COMPONENT_NAME = usePrefixClass('drawer');

const LOCK_CLASS = usePrefixClass('drawer--lock');

const confirmBtnAction = (e: MouseEvent) => {
props.onConfirm?.({ e });
};
Expand Down Expand Up @@ -166,9 +166,9 @@ export default defineComponent({
() => props.visible,
(value: boolean) => {
if (value && !props.showInAttachedElement) {
props.preventScrollThrough && addClass(document.body, lockClass);
props.preventScrollThrough && addClass(document.body, LOCK_CLASS.value);
} else {
props.preventScrollThrough && removeClass(document.body, lockClass);
props.preventScrollThrough && removeClass(document.body, LOCK_CLASS.value);
}
},
{ immediate: true },
Expand Down
1 change: 0 additions & 1 deletion src/dropdown/dropdown.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { defineComponent, VNode } from 'vue';
import { prefix } from '../config';
import Popup from '../popup/index';
import DropdownMenu from './dropdown-menu';
import { DropdownOption, TdDropdownProps } from './type';
Expand Down
57 changes: 31 additions & 26 deletions src/form/const.ts
Original file line number Diff line number Diff line change
@@ -1,29 +1,5 @@
import { prefix } from '../config';

export const FORM_ITEM_CLASS_PREFIX = 't-form-item__';

const form = `${prefix}-form`;
const input = `${prefix}-input`;
const is = `${prefix}-is`;

export const CLASS_NAMES = {
form,
label: `${form}__label`,
labelTop: `${form}__label--top`,
inline: `${form}-inline`,
formItem: `${form}__item`,
formItemWithHelp: `${form}__item-with-help`,
formItemWithExtra: `${form}__item-with-extra`,
controls: `${form}__controls`,
controlsContent: `${form}__controls-content`,
status: `${form}__status`,
help: `${form}__help`,
extra: `${input}__extra`,
success: `${is}-success`,
successBorder: `${form}--success-border`,
error: `${is}-error`,
warning: `${is}-warning`,
};
import { computed } from 'vue';
import { usePrefixClass } from '../config-provider';

// 允许 Form 统一控制的表单
export const FORM_CONTROL_COMPONENTS = [
Expand All @@ -45,3 +21,32 @@ export const FORM_CONTROL_COMPONENTS = [
'TTransfer',
'TSlider',
];

export const useCLASSNAMES = () => {
const classPrefix = usePrefixClass();

return computed(() => {
const form = `${classPrefix.value}-form`;
const input = `${classPrefix.value}-input`;
const is = `${classPrefix.value}-is`;

return {
form,
label: `${form}__label`,
labelTop: `${form}__label--top`,
inline: `${form}-inline`,
formItem: `${form}__item`,
formItemWithHelp: `${form}__item-with-help`,
formItemWithExtra: `${form}__item-with-extra`,
controls: `${form}__controls`,
controlsContent: `${form}__controls-content`,
status: `${form}__status`,
help: `${form}__help`,
extra: `${input}__extra`,
success: `${is}-success`,
successBorder: `${form}--success-border`,
error: `${is}-error`,
warning: `${is}-warning`,
};
});
};
40 changes: 24 additions & 16 deletions src/form/form-item.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { defineComponent, VNode, nextTick, h, ComponentPublicInstance, Slot } from 'vue';
import { defineComponent, VNode, nextTick, h, Slot } from 'vue';
import { CheckCircleFilledIcon, ErrorCircleFilledIcon, CloseCircleFilledIcon } from 'tdesign-icons-vue-next';
import cloneDeep from 'lodash/cloneDeep';
import lodashGet from 'lodash/get';
Expand All @@ -17,7 +17,7 @@ import {
FormErrorMessage,
} from './type';
import props from './form-item-props';
import { CLASS_NAMES, FORM_ITEM_CLASS_PREFIX } from './const';
import { useCLASSNAMES } from './const';
import Form, { FormItemInstance } from './form';
import { ClassName, TNodeReturnValue, Styles } from '../common';
import mixins from '../utils/mixins';
Expand Down Expand Up @@ -47,8 +47,12 @@ export default defineComponent({
props: { ...props },
setup() {
const FROM_LABEL = usePrefixClass('form__label');
const CLASS_NAMES = useCLASSNAMES();
const FORM_ITEM_CLASS_PREFIX = usePrefixClass('form-item__');
return {
CLASS_NAMES,
FROM_LABEL,
FORM_ITEM_CLASS_PREFIX,
};
},

Expand All @@ -69,11 +73,11 @@ export default defineComponent({
computed: {
classes(): ClassName {
return [
CLASS_NAMES.formItem,
FORM_ITEM_CLASS_PREFIX + this.name,
this.CLASS_NAMES.formItem,
this.FORM_ITEM_CLASS_PREFIX + this.name,
{
[CLASS_NAMES.formItemWithHelp]: this.help,
[CLASS_NAMES.formItemWithExtra]: this.renderTipsInfo(),
[this.CLASS_NAMES.formItemWithHelp]: this.help,
[this.CLASS_NAMES.formItemWithExtra]: this.renderTipsInfo(),
},
];
},
Expand All @@ -84,7 +88,7 @@ export default defineComponent({
const labelWidth = isNil(this.labelWidth) ? parent?.labelWidth : this.labelWidth;

return [
CLASS_NAMES.label,
this.CLASS_NAMES.label,
{
[`${FROM_LABEL}--required`]: this.needRequiredMark,
[`${FROM_LABEL}--colon`]: this.hasColon,
Expand All @@ -98,11 +102,13 @@ export default defineComponent({
const parent = this.form as FormInstance;
if (!parent.showErrorMessage) return '';
if (this.verifyStatus === ValidateStatus.SUCCESS) {
return this.successBorder ? [CLASS_NAMES.success, CLASS_NAMES.successBorder].join(' ') : CLASS_NAMES.success;
return this.successBorder
? [this.CLASS_NAMES.success, this.CLASS_NAMES.successBorder].join(' ')
: this.CLASS_NAMES.success;
}
if (!this.errorList.length) return;
const type = this.errorList[0].type || 'error';
return type === 'error' ? CLASS_NAMES.error : CLASS_NAMES.warning;
return type === 'error' ? this.CLASS_NAMES.error : this.CLASS_NAMES.warning;
},

disabled(): boolean {
Expand All @@ -111,7 +117,7 @@ export default defineComponent({

contentClasses() {
const getErrorClass: string = this.errorClasses;
return [CLASS_NAMES.controls, getErrorClass];
return [this.CLASS_NAMES.controls, getErrorClass];
},
contentStyle(): Styles {
const parent = this.form;
Expand Down Expand Up @@ -247,20 +253,20 @@ export default defineComponent({
const parent = this.form;
let helpVNode: VNode;
if (this.help) {
helpVNode = <div class={CLASS_NAMES.help}>{this.help}</div>;
helpVNode = <div class={this.CLASS_NAMES.help}>{this.help}</div>;
}
const list = this.errorList;
if (parent.showErrorMessage && list && list[0] && list[0].message) {
return <p class={CLASS_NAMES.extra}>{list[0].message}</p>;
return <p class={this.CLASS_NAMES.extra}>{list[0].message}</p>;
}
if (this.successList.length) {
return <p class={CLASS_NAMES.extra}>{this.successList[0].message}</p>;
return <p class={this.CLASS_NAMES.extra}>{this.successList[0].message}</p>;
}
return helpVNode;
},
getDefaultIcon(): TNodeReturnValue {
const resultIcon = (Icon: IconConstructor) => (
<span class={CLASS_NAMES.status}>
<span class={this.CLASS_NAMES.status}>
<Icon />
</span>
);
Expand All @@ -284,7 +290,9 @@ export default defineComponent({
slotStatusIcon: Slot,
props?: TdFormItemProps,
): TNodeReturnValue {
const resultIcon = (otherContent?: TNodeReturnValue) => <span class={CLASS_NAMES.status}>{otherContent}</span>;
const resultIcon = (otherContent?: TNodeReturnValue) => (
<span class={this.CLASS_NAMES.status}>{otherContent}</span>
);
if (statusIcon === true) {
return this.getDefaultIcon();
}
Expand Down Expand Up @@ -353,7 +361,7 @@ export default defineComponent({
<div class={this.classes}>
{this.getLabel()}
<div class={this.contentClasses} style={this.contentStyle}>
<div class={CLASS_NAMES.controlsContent}>
<div class={this.CLASS_NAMES.controlsContent}>
{this.$slots.default ? this.$slots.default() : null}
{this.getSuffixIcon()}
</div>
Expand Down
11 changes: 8 additions & 3 deletions src/form/form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import isBoolean from 'lodash/isBoolean';
import isArray from 'lodash/isArray';
import { FormValidateResult, TdFormProps, FormValidateParams, ValidateResultList } from './type';
import props from './props';
import { FORM_ITEM_CLASS_PREFIX, CLASS_NAMES, FORM_CONTROL_COMPONENTS } from './const';
import { useCLASSNAMES, FORM_CONTROL_COMPONENTS } from './const';
import FormItem from './form-item';
import { FormResetEvent, FormSubmitEvent, ClassName } from '../common';
import { emitEvent } from '../utils/event';
Expand Down Expand Up @@ -35,8 +35,13 @@ export default defineComponent({
provide<FormDisabledProvider>('formDisabled', {
disabled,
});
const CLASS_NAMES = useCLASSNAMES();
const FORM_ITEM_CLASS_PREFIX = usePrefixClass('form-item__');

return {
CLASS_NAMES,
COMPONENT_NAME,
FORM_ITEM_CLASS_PREFIX,
};
},

Expand All @@ -49,7 +54,7 @@ export default defineComponent({
computed: {
formClass(): ClassName {
return [
CLASS_NAMES.form,
this.CLASS_NAMES.form,
{
[`${this.COMPONENT_NAME}-inline`]: this.layout === 'inline',
},
Expand All @@ -69,7 +74,7 @@ export default defineComponent({
if (isBoolean(result)) return '';
const [firstKey] = Object.keys(result);
if (this.scrollToFirstError) {
this.scrollTo(`.${FORM_ITEM_CLASS_PREFIX + firstKey}`);
this.scrollTo(`.${this.FORM_ITEM_CLASS_PREFIX + firstKey}`);
}
const resArr = result[firstKey] as ValidateResultList;
if (!isArray(resArr)) return '';
Expand Down
1 change: 0 additions & 1 deletion src/menu/menu-group.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { defineComponent } from 'vue';
import { prefix } from '../config';
import props from './menu-group-props';
import { renderTNodeJSX } from '../utils/render-tnode';
import { usePrefixClass } from '../config-provider';
Expand Down
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.