初始化项目, 添加TDesign等包

This commit is contained in:
zhengw
2025-11-28 16:49:36 +08:00
commit 3e53beb7bb
980 changed files with 39201 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
import { TdSwitchProps } from './type';
declare const props: TdSwitchProps;
export default props;

View File

@@ -0,0 +1 @@
const props={customValue:{type:Array,value:[!0,!1]},disabled:{type:null,value:void 0},icon:{type:Array,value:[]},label:{type:Array,value:[]},loading:{type:Boolean,value:!1},size:{type:String,value:"medium"},value:{type:null,value:null},defaultValue:{type:null,value:null}};export default props;

View File

@@ -0,0 +1,21 @@
import { SuperComponent } from '../common/src/index';
export default class Switch extends SuperComponent {
externalClasses: string[];
behaviors: string[];
properties: import("./type").TdSwitchProps<import("./type").SwitchValue>;
data: {
prefix: string;
classPrefix: string;
checked: boolean;
};
controlledProps: {
key: string;
event: string;
}[];
observers: {
value(val: any): void;
};
methods: {
handleSwitch(): void;
};
}

View File

@@ -0,0 +1 @@
import{__decorate}from"tslib";import{wxComponent,SuperComponent}from"../common/src/index";import config from"../common/config";import props from"./props";const{prefix:prefix}=config,name=`${prefix}-switch`;let Switch=class extends SuperComponent{constructor(){super(...arguments),this.externalClasses=[`${prefix}-class`,`${prefix}-class-label`,`${prefix}-class-body`,`${prefix}-class-dot`],this.behaviors=["wx://form-field"],this.properties=props,this.data={prefix:prefix,classPrefix:name,checked:!1},this.controlledProps=[{key:"value",event:"change"}],this.observers={value(e){const[t]=this.data.customValue;this.setData({checked:e===t})}},this.methods={handleSwitch(){const{loading:e,disabled:t,value:s,customValue:o}=this.data,[i,r]=o;e||t||this._trigger("change",{value:s===i?r:i})}}}};Switch=__decorate([wxComponent()],Switch);export default Switch;

View File

@@ -0,0 +1 @@
{"component":true,"styleIsolation":"apply-shared","usingComponents":{"t-icon":"../icon/icon","t-loading":"../loading/loading"}}

View File

@@ -0,0 +1 @@
<wxs src="../common/utils.wxs" module="_"/><view style="{{_._style([style, customStyle])}}" class="class {{ prefix }}-class {{classPrefix}}" bind:tap="handleSwitch" aria-checked="{{checked}}" aria-disabled="{{disabled}}" aria-role="switch"><view class="{{_.cls(classPrefix + '__body', [['checked', checked], ['disabled', disabled || loading], size])}} {{prefix}}-class-body"><view class="{{_.cls(classPrefix + '__dot', [['checked', checked], ['disabled', disabled || loading], ['plain', label.length != 2 && icon.length != 2 && !loading], size])}} {{prefix}}-class-dot" aria-hidden="{{true}}"><view wx:if="{{label}}" class="{{_.cls(classPrefix + '__label', [['checked', checked], ['disabled', disabled], size])}} {{prefix}}-class-label"><t-loading wx:if="{{loading}}" class="{{classPrefix}}__loading" size="32rpx"/><text wx:elif="{{label.length == 2}}">{{checked ? label[0] : label[1]}}</text><t-icon wx:elif="{{icon.length == 2}}" name="{{checked ? icon[0] : icon[1]}}" t-class="{{_.cls(classPrefix + '__icon', [['checked', checked], size])}}"/></view></view></view></view>

View File

@@ -0,0 +1,28 @@
@import '../common/style/index.wxss';.t-switch{display:flex;align-items:center;overflow:hidden;}
.t-switch__label{position:absolute;top:0;left:0;bottom:0;width:100%;display:flex;align-items:center;justify-content:center;flex-wrap:nowrap;font-size:var(--td-switch-label-font-size,28rpx);color:var(--td-switch-label-color,var(--td-bg-color-secondarycontainer-active,var(--td-gray-color-4,#dcdcdc)));overflow:hidden;}
.t-switch__label--checked{color:var(--td-switch-label-checked-color,var(--td-switch-checked-color,var(--td-brand-color,var(--td-primary-color-7,#0052d9))));}
.t-switch__label--disabled{color:var(--td-switch-unchecked-disabled-color,var(--td-bg-color-component-disabled,var(--td-gray-color-2,#eee)));}
.t-switch__label--checked.t-switch__label--disabled{color:var(--td-switch-checked-disabled-color,var(--td-brand-color-disabled,var(--td-primary-color-3,#b5c7ff)));}
.t-switch__label--large{font-size:var(--td-switch-label-large-font-size,32rpx);}
.t-switch__label--small{font-size:var(--td-switch-label-small-font-size,24rpx);}
.t-switch__label:empty{display:none;}
.t-switch__icon{font-size:var(--td-switch-icon-size,40rpx);}
.t-switch__icon--large{font-size:var(--td-switch-icon-large-size,48rpx);}
.t-switch__icon--small{font-size:var(--td-switch-icon-small-size,32rpx);}
.t-switch__loading{--td-loading-color:var(--td-switch-loading-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));}
.t-switch__body{vertical-align:middle;width:var(--td-switch-width,90rpx);height:var(--td-switch-height,56rpx);border-radius:var(--td-switch-radius,calc(var(--td-switch-height,56rpx)/ 2));background-color:var(--td-switch-unchecked-color,var(--td-bg-color-secondarycontainer-active,var(--td-gray-color-4,#dcdcdc)));position:relative;transition:all .3s ease;overflow:hidden;}
.t-switch__body--checked{background-color:var(--td-switch-checked-color,var(--td-brand-color,var(--td-primary-color-7,#0052d9)));}
.t-switch__body--disabled{background-color:var(--td-switch-unchecked-disabled-color,var(--td-bg-color-component-disabled,var(--td-gray-color-2,#eee)));}
.t-switch__body--checked.t-switch__body--disabled{background-color:var(--td-switch-checked-disabled-color,var(--td-brand-color-disabled,var(--td-primary-color-3,#b5c7ff)));}
.t-switch__body--large{width:var(--td-switch-large-width,104rpx);height:var(--td-switch-large-height,64rpx);border-radius:var(--td-switch-large-radius,calc(var(--td-switch-large-height,64rpx)/ 2));}
.t-switch__body--small{width:var(--td-switch-small-width,78rpx);height:var(--td-switch-small-height,48rpx);border-radius:var(--td-switch-small-radius,calc(var(--td-switch-small-height,48rpx)/ 2));}
.t-switch__dot{position:absolute;left:var(--td-switch-dot-horizontal-margin,6rpx);top:50%;width:var(--td-switch-dot-size,44rpx);height:var(--td-switch-dot-size,44rpx);border-radius:50%;background-color:var(--td-text-color-anti,var(--td-font-white-1,#fff));transition:all .3s;transform:translateY(-50%);box-shadow:var(--td-switch-dot-shadow,var(--td-shadow-1,0 1px 10px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.08),0 2px 4px -1px rgba(0,0,0,.12)));}
.t-switch__dot--disabled{background-color:var(--td-switch-dot-disabled-color,var(--td-font-white-1,#fff));}
.t-switch__dot--large{width:var(--td-switch-dot-large-size,52rpx);height:var(--td-switch-dot-large-size,52rpx);}
.t-switch__dot--small{width:var(--td-switch-dot-small-size,36rpx);height:var(--td-switch-dot-small-size,36rpx);}
.t-switch__dot--checked{left:calc(var(--td-switch-width,90rpx) - var(--td-switch-dot-size,44rpx) - var(--td-switch-dot-horizontal-margin,6rpx));}
.t-switch__dot--large.t-switch__dot--checked{left:calc(var(--td-switch-large-width,104rpx) - var(--td-switch-dot-large-size,52rpx) - var(--td-switch-dot-horizontal-margin,6rpx));}
.t-switch__dot--small.t-switch__dot--checked{left:calc(var(--td-switch-small-width,78rpx) - var(--td-switch-dot-small-size,36rpx) - var(--td-switch-dot-horizontal-margin,6rpx));}
.t-switch__dot--plain:not(.t-switch__dot--checked){width:var(--td-switch-dot-plain-size,36rpx);height:var(--td-switch-dot-plain-size,36rpx);left:var(--td-switch-dot-plain-horizontal-margin,10rpx);}
.t-switch__dot--large.t-switch__dot--plain:not(.t-switch__dot--checked){width:var(--td-switch-dot-plain-large-size,44rpx);height:var(--td-switch-dot-plain-large-size,44rpx);}
.t-switch__dot--small.t-switch__dot--plain:not(.t-switch__dot--checked){width:var(--td-switch-dot-plain-small-size,28rpx);height:var(--td-switch-dot-plain-small-size,28rpx);}

View File

@@ -0,0 +1,35 @@
export interface TdSwitchProps<T = SwitchValue> {
customValue?: {
type: ArrayConstructor;
value?: Array<SwitchValue>;
};
disabled?: {
type: BooleanConstructor;
value?: boolean;
};
icon?: {
type: ArrayConstructor;
value?: string[];
};
label?: {
type: ArrayConstructor;
value?: string[];
};
loading?: {
type: BooleanConstructor;
value?: boolean;
};
size?: {
type: StringConstructor;
value?: 'small' | 'medium' | 'large';
};
value?: {
type: null;
value?: SwitchValue;
};
defaultValue?: {
type: null;
value?: SwitchValue;
};
}
export declare type SwitchValue = string | number | boolean;

View File

@@ -0,0 +1 @@
export{};