初始化项目, 添加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 { TdRadioProps } from './type';
declare const props: TdRadioProps;
export default props;

View File

@@ -0,0 +1 @@
const props={allowUncheck:{type:Boolean,value:!1},block:{type:Boolean,value:!0},checked:{type:Boolean,value:null},defaultChecked:{type:Boolean,value:!1},content:{type:String},contentDisabled:{type:Boolean,value:!1},disabled:{type:null,value:void 0},icon:{type:null,value:"circle"},label:{type:String},maxContentRow:{type:Number,value:5},maxLabelRow:{type:Number,value:3},name:{type:String,value:""},placement:{type:String},readonly:{type:null,value:void 0},value:{type:null,value:!1}};export default props;

View File

@@ -0,0 +1,107 @@
import { SuperComponent, RelationsOptions } from '../common/src/index';
export default class Radio extends SuperComponent {
externalClasses: string[];
behaviors: string[];
relations: RelationsOptions;
options: {
multipleSlots: boolean;
};
lifetimes: {
attached(): void;
};
properties: {
borderless: {
type: BooleanConstructor;
value: boolean;
};
tId: {
type: StringConstructor;
};
allowUncheck?: {
type: BooleanConstructor;
value?: boolean;
};
block?: {
type: BooleanConstructor;
value?: boolean;
};
checked?: {
type: BooleanConstructor;
value?: boolean;
};
defaultChecked?: {
type: BooleanConstructor;
value?: boolean;
};
content?: {
type: StringConstructor;
value?: string;
};
contentDisabled?: {
type: BooleanConstructor;
value?: boolean;
};
disabled?: {
type: BooleanConstructor;
value?: boolean;
};
icon?: {
type: null;
value?: string[] | "circle" | "line" | "dot";
};
label?: {
type: StringConstructor;
value?: string;
};
maxContentRow?: {
type: NumberConstructor;
value?: number;
};
maxLabelRow?: {
type: NumberConstructor;
value?: number;
};
name?: {
type: StringConstructor;
value?: string;
};
placement?: {
type: StringConstructor;
value?: "left" | "right";
};
readonly?: {
type: BooleanConstructor;
value?: boolean;
};
value?: {
type: null;
value?: import("./type").RadioValue;
};
};
controlledProps: {
key: string;
event: string;
}[];
data: {
prefix: string;
classPrefix: string;
customIcon: boolean;
slotIcon: boolean;
optionLinked: boolean;
iconVal: any[];
_placement: string;
_disabled: boolean;
_readonly: boolean;
};
observers: {
disabled(v: any): void;
readonly(v: any): void;
};
methods: {
handleTap(e: any): void;
doChange(): void;
init(): void;
setDisabled(disabled: Boolean): void;
setReadonly(readonly: Boolean): void;
};
}

View File

@@ -0,0 +1 @@
import{__decorate}from"tslib";import config from"../common/config";import{SuperComponent,wxComponent}from"../common/src/index";import Props from"./props";const{prefix:prefix}=config,name=`${prefix}-radio`;let Radio=class extends SuperComponent{constructor(){super(...arguments),this.externalClasses=[`${prefix}-class`,`${prefix}-class-label`,`${prefix}-class-icon`,`${prefix}-class-content`,`${prefix}-class-border`],this.behaviors=["wx://form-field"],this.relations={"../radio-group/radio-group":{type:"ancestor",linked(e){e.data.borderless&&this.setData({borderless:!0})}}},this.options={multipleSlots:!0},this.lifetimes={attached(){this.init()}},this.properties=Object.assign(Object.assign({},Props),{borderless:{type:Boolean,value:!1},tId:{type:String}}),this.controlledProps=[{key:"checked",event:"change"}],this.data={prefix:prefix,classPrefix:name,customIcon:!1,slotIcon:!1,optionLinked:!1,iconVal:[],_placement:"",_disabled:!1,_readonly:!1},this.observers={disabled(e){this.setData({_disabled:e})},readonly(e){this.setData({_readonly:e})}},this.methods={handleTap(e){const{_disabled:t,_readonly:a,contentDisabled:o}=this.data,{target:s}=e.currentTarget.dataset;t||a||"text"===s&&o||this.doChange()},doChange(){var e;const{value:t,checked:a,allowUncheck:o}=this.data,s=Boolean(o||(null===(e=this.$parent)||void 0===e?void 0:e.data.allowUncheck));this.$parent?this.$parent.updateValue(a&&s?null:t):this._trigger("change",{checked:!s||!a})},init(){var e,t,a,o;const{icon:s}=this.data,i=Array.isArray((null===(e=this.$parent)||void 0===e?void 0:e.icon)||s);this.setData({customIcon:i,slotIcon:"slot"===s,iconVal:i?(null===(t=this.$parent)||void 0===t?void 0:t.icon)||s:[],_placement:this.data.placement||(null===(o=null===(a=this.$parent)||void 0===a?void 0:a.data)||void 0===o?void 0:o.placement)||"left"})},setDisabled(e){this.setData({_disabled:this.data.disabled||e})},setReadonly(e){this.setData({_readonly:this.data.readonly||e})}}}};Radio=__decorate([wxComponent()],Radio);export default Radio;

View File

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

View File

@@ -0,0 +1 @@
<wxs src="../common/utils.wxs" module="_"/><view id="{{tId}}" style="{{_._style([style, customStyle])}}" class="{{_.cls(classPrefix, [_placement, ['block', block], ['disabled', _disabled]])}} class {{prefix}}-class" disabled="{{_disabled}}" aria-role="radio" aria-checked="{{checked}}" aria-label="{{label + content}}" aria-disabled="{{_disabled}}" tabindex="{{tabindex}}" mut-bind:tap="handleTap"><view class="{{_.cls(classPrefix + '__icon', [_placement, ['checked', checked], ['disabled', _disabled]])}} {{prefix}}-class-icon"><slot name="icon" wx:if="{{slotIcon}}"/><view wx:elif="{{customIcon}}" class="{{classPrefix}}__image"><image src="{{checked ? iconVal[0] : iconVal[1]}}" class="{{classPrefix}}-icon__image" webp/></view><block wx:else><t-icon wx:if="{{checked && (icon == 'circle' || icon == 'line')}}" name="{{icon == 'circle' ? 'check-circle-filled' : 'check'}}" class="{{classPrefix}}__icon-wrap"/><view wx:if="{{checked && icon == 'dot'}}" class="{{_.cls(classPrefix + '__icon-' + icon, [['disabled', _disabled]])}}"/><view wx:if="{{!checked && (icon == 'circle' || icon == 'dot')}}" class="{{_.cls(classPrefix + '__icon-circle', [['disabled', _disabled]])}}"/><view wx:if="{{!checked && icon == 'line'}}" class="placeholder"></view></block></view><view class="{{classPrefix}}__content" data-target="text" mut-bind:tap="handleTap"><view class="{{_.cls(classPrefix + '__title', [['disabled', _disabled], ['checked', checked]])}} {{prefix}}-class-label" style="-webkit-line-clamp:{{maxLabelRow}}"><block wx:if="{{label}}">{{label}}</block><slot/><slot name="label"/></view><view class="{{_.cls(classPrefix + '__description', [['disabled', _disabled], ['checked', checked]])}} {{prefix}}-class-content" style="-webkit-line-clamp:{{maxContentRow}}"><block wx:if="{{content}}">{{content}}</block><slot name="content"/></view></view><view wx:if="{{!borderless}}" class="{{_.cls(classPrefix + '__border', [_placement])}} {{prefix}}-class-border"/></view>

View File

@@ -0,0 +1,35 @@
@import '../common/style/index.wxss';.limit-title-row{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}
.t-radio{position:relative;display:inline-flex;vertical-align:middle;font-size:var(--td-radio-font-size,32rpx);background:var(--td-radio-bg-color,var(--td-bg-color-container,var(--td-font-white-1,#fff)));}
.t-radio:focus{outline:0;}
.t-radio--block{display:flex;padding:var(--td-radio-vertical-padding,32rpx);}
.t-radio--right{flex-direction:row-reverse;}
.t-radio__icon{position:relative;margin-top:calc((var(--td-radio-label-line-height,48rpx) - var(--td-radio-icon-size,48rpx))/ 2);width:var(--td-radio-icon-size,48rpx);height:var(--td-radio-icon-size,48rpx);font-size:var(--td-radio-icon-size,48rpx);color:var(--td-radio-icon-color,var(--td-component-border,var(--td-gray-color-4,#dcdcdc)));overflow:hidden;}
.t-radio__icon:empty{display:none;}
.t-radio__icon--left{margin-right:16rpx;}
.t-radio__icon--checked{color:var(--td-radio-icon-checked-color,var(--td-brand-color,var(--td-primary-color-7,#0052d9)));}
.t-radio__icon--disabled{cursor:not-allowed;color:var(--td-radio-icon-disabled-color,var(--td-brand-color-disabled,var(--td-primary-color-3,#b5c7ff)));}
.t-radio__icon-circle{width:var(--td-radio-icon-size,48rpx);height:var(--td-radio-icon-size,48rpx);box-sizing:border-box;}
.t-radio__icon-circle::after{content:'';width:calc(200% - 6rpx);height:calc(200% - 6rpx);border-radius:50%;border:3px solid var(--td-radio-icon-color,var(--td-component-border,var(--td-gray-color-4,#dcdcdc)));position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.5);box-sizing:border-box;}
.t-radio__icon-circle--disabled::after{background:var(--td-radio-icon-disabled-bg-color,var(--td-bg-color-component-disabled,var(--td-gray-color-2,#eee)));}
.t-radio__icon-line::after,.t-radio__icon-line::before{content:'';display:block;position:absolute;width:5rpx;border-radius:2rpx;background:var(--td-radio-icon-checked-color,var(--td-brand-color,var(--td-primary-color-7,#0052d9)));transform-origin:top center;}
.t-radio__icon-line::before{height:16rpx;left:8rpx;top:22rpx;transform:rotate(-45deg);}
.t-radio__icon-line::after{height:26rpx;right:8rpx;top:14rpx;transform:rotate(45deg);}
.t-radio__icon-line--disabled::after,.t-radio__icon-line--disabled::before{background:var(--td-radio-icon-disabled-color,var(--td-brand-color-disabled,var(--td-primary-color-3,#b5c7ff)));}
.t-radio__icon-dot{width:calc((var(--td-radio-icon-size,48rpx) - 6rpx) * 2);height:calc((var(--td-radio-icon-size,48rpx) - 6rpx) * 2);border:6rpx solid var(--td-radio-icon-checked-color,var(--td-brand-color,var(--td-primary-color-7,#0052d9)));border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.5);box-sizing:border-box;display:flex;align-items:center;justify-content:center;}
.t-radio__icon-dot::after{content:'';display:block;width:var(--td-radio-icon-size,48rpx);height:var(--td-radio-icon-size,48rpx);background:var(--td-radio-icon-checked-color,var(--td-brand-color,var(--td-primary-color-7,#0052d9)));border-radius:50%;}
.t-radio__icon-dot--disabled{border-color:var(--td-radio-icon-disabled-color,var(--td-brand-color-disabled,var(--td-primary-color-3,#b5c7ff)));}
.t-radio__icon-dot--disabled::after{background:var(--td-radio-icon-disabled-color,var(--td-brand-color-disabled,var(--td-primary-color-3,#b5c7ff)));}
.t-radio__image{line-height:var(--td-radio-icon-size,48rpx);}
.t-radio-icon__image{height:var(--td-radio-icon-size,48rpx);width:var(--td-radio-icon-size,48rpx);vertical-align:sub;}
.t-radio__content{flex:1;}
.t-radio__content:empty{display:none;}
.t-radio__title{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;color:var(--td-radio-label-color,var(--td-text-color-primary,var(--td-font-gray-1,rgba(0,0,0,.9))));line-height:var(--td-radio-label-line-height,48rpx);}
.t-radio__title--checked{color:var(--td-radio-label-checked-color,var(--td-text-color-primary,var(--td-font-gray-1,rgba(0,0,0,.9))));}
.t-radio__title--disabled{cursor:not-allowed;color:var(--td-radio-label-disabled-color,var(--td-text-color-disabled,var(--td-font-gray-4,rgba(0,0,0,.26))));}
.t-radio__description{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;color:var(--td-radio-content-color,var(--td-text-color-secondary,var(--td-font-gray-2,rgba(0,0,0,.6))));font-size:var(--td-radio-content-font-size,28rpx);line-height:var(--td-radio-content-line-height,44rpx);}
.t-radio__description--checked{color:var(--td-radio-content-checked-color,var(--td-text-color-secondary,var(--td-font-gray-2,rgba(0,0,0,.6))));}
.t-radio__description--disabled{cursor:not-allowed;color:var(--td-radio-content-disabled-color,var(--td-text-color-disabled,var(--td-font-gray-4,rgba(0,0,0,.26))));}
.t-radio__description:empty{display:none;}
.t-radio__title+.t-radio__description{margin-top:8rpx;}
.t-radio__border{position:absolute;bottom:0;height:1px;background:var(--td-radio-border-color,var(--td-component-stroke,var(--td-gray-color-3,#e7e7e7)));left:96rpx;right:0;transform:scaleY(.5);}
.t-radio__border--right{left:32rpx;}

View File

@@ -0,0 +1,63 @@
export interface TdRadioProps<T = RadioValue> {
allowUncheck?: {
type: BooleanConstructor;
value?: boolean;
};
block?: {
type: BooleanConstructor;
value?: boolean;
};
checked?: {
type: BooleanConstructor;
value?: boolean;
};
defaultChecked?: {
type: BooleanConstructor;
value?: boolean;
};
content?: {
type: StringConstructor;
value?: string;
};
contentDisabled?: {
type: BooleanConstructor;
value?: boolean;
};
disabled?: {
type: BooleanConstructor;
value?: boolean;
};
icon?: {
type: null;
value?: 'circle' | 'line' | 'dot' | Array<string>;
};
label?: {
type: StringConstructor;
value?: string;
};
maxContentRow?: {
type: NumberConstructor;
value?: number;
};
maxLabelRow?: {
type: NumberConstructor;
value?: number;
};
name?: {
type: StringConstructor;
value?: string;
};
placement?: {
type: StringConstructor;
value?: 'left' | 'right';
};
readonly?: {
type: BooleanConstructor;
value?: boolean;
};
value?: {
type: null;
value?: T;
};
}
export declare type RadioValue = string | number | boolean;

View File

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