tmp
This commit is contained in:
50
miniprogram_npm/tdesign-miniprogram/form-item/form-item.d.ts
vendored
Normal file
50
miniprogram_npm/tdesign-miniprogram/form-item/form-item.d.ts
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
import { SuperComponent, RelationsOptions } from '../common/src/index';
|
||||
export default class FormItem extends SuperComponent {
|
||||
externalClasses: string[];
|
||||
behaviors: string[];
|
||||
properties: import("./type").TdFormItemProps;
|
||||
data: {
|
||||
prefix: string;
|
||||
classPrefix: string;
|
||||
formClass: string;
|
||||
formItemClass: string;
|
||||
labelClass: string;
|
||||
errorClasses: string;
|
||||
errorList: any[];
|
||||
successList: any[];
|
||||
verifyStatus: number;
|
||||
needResetField: boolean;
|
||||
resetValidating: boolean;
|
||||
formRules: any[];
|
||||
form: {};
|
||||
colon: boolean;
|
||||
innerShowErrorMessage: boolean;
|
||||
};
|
||||
relations: RelationsOptions;
|
||||
lifetimes: {
|
||||
ready(): void;
|
||||
detached(): void;
|
||||
};
|
||||
methods: {
|
||||
calcErrorClasses(errorList?: any): string;
|
||||
scrollIntoView(type: string, distanceTop?: number): void;
|
||||
initFormItem(): void;
|
||||
setInitialValue(): void;
|
||||
getFormData(): any;
|
||||
getValue(): any;
|
||||
getRules(): any;
|
||||
validate(data: any, trigger: any, showErrorMessage: any): Promise<{
|
||||
[x: number]: boolean;
|
||||
}>;
|
||||
validateOnly(trigger: any): Promise<any>;
|
||||
analysisValidateResult(results: any): {
|
||||
errorList: any;
|
||||
successList: any;
|
||||
resultList: any;
|
||||
};
|
||||
updateValidateStatus(analysis: any): void;
|
||||
clearValidate(): void;
|
||||
resetField(): void;
|
||||
setValidateMessage(validateMessage: any): void;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
import{__awaiter,__decorate}from"tslib";import props from"./props";import{validateRules,ValidateStatus}from"./form-model";import config from"../common/config";import{SuperComponent,wxComponent}from"../common/src/index";import usingConfig from"../mixins/using-config";const{prefix:prefix}=config,parentComponentName="form",componentName="form-item";let FormItem=class extends SuperComponent{constructor(){super(...arguments),this.externalClasses=[`${prefix}-class`,`${prefix}-class-label`,`${prefix}-class-controls`,`${prefix}-class-help`,`${prefix}-class-extra`],this.behaviors=[usingConfig({componentName:"form"})],this.properties=props,this.data={prefix:prefix,classPrefix:`${prefix}-form-item`,formClass:`${prefix}-form`,formItemClass:`${prefix}-form__item`,labelClass:`${prefix}-form__label`,errorClasses:"",errorList:[],successList:[],verifyStatus:ValidateStatus.TO_BE_VALIDATED,needResetField:!1,resetValidating:!1,formRules:[],form:{},colon:!1,innerShowErrorMessage:!0},this.relations={"../form/form":{type:"parent",linked(e){var t;e.registerChild(this),this.form=e;const{globalConfig:r}=this.data,{requiredMark:s,labelAlign:i,labelWidth:a,showErrorMessage:o}=this.properties,l=null===(t=e.data.rules[this.properties.name])||void 0===t?void 0:t.some(e=>e.required);this.setData({formRules:e.data.rules[this.properties.name],colon:e.data.colon,labelAlign:i||e.data.labelAlign||"right",labelWidth:a||e.data.labelWidth,innerRequiredMark:s||e.data.requiredMark||r.requiredMark||l,innerShowErrorMessage:"boolean"==typeof o?o:e.properties.showErrorMessage,requiredMarkPosition:e.data.requiredMarkPosition||r.requiredMarkPosition})},unlinked(){this.form&&this.form.unregisterChild(this.properties.name)}}},this.lifetimes={ready(){this.initFormItem()},detached(){this.form&&this.form.unregisterChild(this.properties.name)}},this.methods={calcErrorClasses(e=this.data.errorList){if(!this.data.innerShowErrorMessage)return"";if(!e||0===e.length)return"";return"error"===(e[0].type||"error")?`${this.data.formItemClass}--error`:`${this.data.formItemClass}--warning`},scrollIntoView(e,t=0){this.createSelectorQuery().select(`.${this.data.classPrefix}`).boundingClientRect().selectViewport().scrollOffset().exec(r=>{r[0]&&r[1]&&wx.pageScrollTo({scrollTop:r[0].top+r[1].scrollTop-t,duration:"smooth"===e?300:0})})},initFormItem(){this.setInitialValue()},setInitialValue(){const{name:e}=this.properties;if(e&&this.form){const t=this.form.properties.data||{};this.initialValue=t[e]}},getFormData(){return this.form&&this.form.properties.data||{}},getValue(){const{name:e}=this.properties;if(e&&this.form){return(this.form.properties.data||{})[e]}},getRules(){const{rules:e}=this.properties;return e&&e.length>0?e:this.data.formRules||[]},validate(e,t,r){return __awaiter(this,void 0,void 0,function*(){const s=this.getRules();if(0===s.length)return{[this.properties.name]:!0};const i="all"===t?s:s.filter(e=>(e.trigger||"change")===t);if(0===i.length)return{[this.properties.name]:!0};const a=e[this.properties.name],o={formData:e,name:this.properties.name},l=yield validateRules(a,i,o),n=this.analysisValidateResult(l);this.updateValidateStatus(n,r);const m={};return m[this.properties.name]=!(n.errorList.length>0)||n.errorList,m})},validateOnly(e){return __awaiter(this,void 0,void 0,function*(){return this.validate(this.getFormData(),e,!1)})},analysisValidateResult(e){const{globalConfig:t}=this.data,r=this.form&&this.form.properties.errorMessage||t.errorMessage,s=this.properties.label||this.properties.name;return{errorList:e.filter(e=>!0!==e.result).map(e=>(e.message||Object.keys(e).forEach(t=>{if(!e.message&&r[t]){const i=r[t];e.message=i.replace(/\$\{name\}/g,s||"").replace(/\$\{validate\}/g,String(!0===e[t]?"":e[t]))}}),e)),successList:e.filter(e=>!0===e.result&&e.message&&"success"===e.type),resultList:e}},updateValidateStatus(e){const{errorList:t,successList:r}=e;this.setData({errorClasses:this.calcErrorClasses(t),errorList:t,successList:r,verifyStatus:t.length>0?ValidateStatus.FAIL:ValidateStatus.SUCCESS})},clearValidate(){this.setData({errorClasses:"",errorList:[],successList:[],verifyStatus:ValidateStatus.TO_BE_VALIDATED})},resetField(){this.clearValidate()},setValidateMessage(e){const t=e.filter(e=>"success"!==e.type),r=e.filter(e=>"success"===e.type);let s=ValidateStatus.SUCCESS;e.length>0&&(s=t.length>0?ValidateStatus.FAIL:ValidateStatus.SUCCESS),this.setData({errorClasses:this.calcErrorClasses(t),errorList:t,successList:r,verifyStatus:s})}}}};FormItem=__decorate([wxComponent()],FormItem);export default FormItem;
|
||||
@@ -0,0 +1 @@
|
||||
{"component":true,"styleIsolation":"apply-shared","usingComponents":{"t-icon":"tdesign-miniprogram/icon/icon","t-button":"tdesign-miniprogram/button/button"}}
|
||||
@@ -0,0 +1 @@
|
||||
<wxs src="../common/utils.wxs" module="_"/><view class="{{classPrefix}} {{formItemClass}} {{formClass}}--{{labelAlign}} {{formClass}}-item__{{name}} {{prefix}}-class" style="{{_._style([style, customStyle])}}"><view class="{{formItemClass}}-wrap {{formItemClass}}--{{labelAlign}} {{prefix}}-class-wrap"><view wx:if="{{label}}" class="{{_.cls(labelClass, [labelAlign, ['required', innerRequiredMark], ['required-right', innerRequiredMark && requiredMarkPosition === 'right']])}} {{prefix}}-class-label" style="width: {{labelWidth}}"><label for="{{for}}">{{label}}</label><block wx:if="{{colon}}">{{globalConfig.colonText}}</block></view><view class="{{formClass}}__controls {{errorClasses}} {{prefix}}-class-controls"><view class="{{formClass}}__controls-content {{formClass}}__controls--{{contentAlign}}" style="{{contentStyle}}"><slot/></view><view wx:if="{{help}}" class="{{formItemClass}}-help {{formClass}}__controls--{{contentAlign}} {{prefix}}-class-help">{{ help }}</view><view wx:if="{{(errorList.length > 0 && innerShowErrorMessage) || successList.length > 0}}" class="{{formItemClass}}-extra {{formClass}}__controls--{{contentAlign}} {{prefix}}-class-extra">{{errorList.length > 0 && innerShowErrorMessage ? errorList[0].message : successList[0].message}}</view></view></view><t-icon wx:if="{{arrow}}" name="chevron-right" size="24" color="rgba(0, 0, 0, 0.4)"/></view>
|
||||
19
miniprogram_npm/tdesign-miniprogram/form-item/form-item.wxss
Normal file
19
miniprogram_npm/tdesign-miniprogram/form-item/form-item.wxss
Normal file
@@ -0,0 +1,19 @@
|
||||
@import '../common/style/index.wxss';.t-form__item{display:flex;box-sizing:border-box;padding:var(--td-form-item-vertical-padding,32rpx) var(--td-form-item-horizontal-padding,32rpx);position:relative;--td-cell-vertical-padding:0;--td-cell-horizontal-padding:0;--td-input-vertical-padding:0;--td-textarea-padding:0;}
|
||||
.t-form__item:not(:last-child)::after{position:absolute;box-sizing:border-box;content:' ';pointer-events:none;right:0;left:0;bottom:0;border-bottom:1px solid var(--td-form-item-border-color,var(--td-component-stroke,var(--td-gray-color-3,#e7e7e7)));transform:scaleY(.5);left:var(--td-form-item-border-left-space,var(--td-form-item-vertical-padding,32rpx));right:var(--td-form-item-border-right-space,0);}
|
||||
.t-form__item-extra,.t-form__item-help{display:flex;font-size:var(--td-font-size-s,24rpx);margin:0;width:100%;height:auto;min-height:40rpx;margin-top:8rpx;}
|
||||
.t-form__item-help{color:var(--td-text-color-disabled,var(--td-font-gray-4,rgba(0,0,0,.26)));}
|
||||
.t-form__item--error{color:var(--td-error-color-6,#d54941);}
|
||||
.t-form__item--warning{color:var(--td-warning-color-5,#e37318);}
|
||||
.t-form__item-wrap{width:100%;display:flex;}
|
||||
.t-form__item--top{display:flex;flex-direction:column;}
|
||||
.t-form--top{align-items:center;}
|
||||
.t-form__label{padding-right:32rpx;vertical-align:middle;line-height:48rpx;color:var(--td-text-color-primary,var(--td-font-gray-1,rgba(0,0,0,.9)));box-sizing:border-box;word-break:break-all;}
|
||||
.t-form__label--top{padding-bottom:16rpx;}
|
||||
.t-form__label--left{text-align:left;}
|
||||
.t-form__label--right{text-align:right;}
|
||||
.t-form__label--required:not(.t-form__label--required-right) label::before{display:inline;margin-right:calc(var(--td-spacer,16rpx)/ 2);color:var(--td-error-color-6,#d54941);content:'*';}
|
||||
.t-form__label--required-right label::after{display:inline;margin-left:calc(var(--td-spacer,16rpx)/ 2);color:var(--td-error-color-6,#d54941);content:'*';}
|
||||
.t-form__controls{flex:1;position:relative;}
|
||||
.t-form__controls-content{display:flex;align-items:center;min-height:48rpx;}
|
||||
.t-form__controls--left{justify-content:flex-start;}
|
||||
.t-form__controls--right{justify-content:flex-end;}
|
||||
39
miniprogram_npm/tdesign-miniprogram/form-item/form-model.d.ts
vendored
Normal file
39
miniprogram_npm/tdesign-miniprogram/form-item/form-model.d.ts
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
import { isDate, isEmail, isURL } from '../common/validator';
|
||||
import { CustomValidator, ValueType, FormRule, AllValidateResult, Data } from '../form/type';
|
||||
export declare const ValidateStatus: {
|
||||
TO_BE_VALIDATED: number;
|
||||
SUCCESS: number;
|
||||
FAIL: number;
|
||||
};
|
||||
export declare function isValueEmpty(val: any): boolean;
|
||||
declare const VALIDATE_MAP: {
|
||||
date: typeof isDate;
|
||||
url: typeof isURL;
|
||||
email: typeof isEmail;
|
||||
required: (val: ValueType) => boolean;
|
||||
whitespace: (val: ValueType) => boolean;
|
||||
boolean: (val: ValueType) => boolean;
|
||||
max: (val: ValueType, num: number) => boolean;
|
||||
min: (val: ValueType, num: number) => boolean;
|
||||
len: (val: ValueType, num: number) => boolean;
|
||||
number: (val: ValueType) => boolean;
|
||||
enum: (val: ValueType, strs: Array<string>) => boolean;
|
||||
idcard: (val: ValueType) => boolean;
|
||||
telnumber: (val: ValueType) => boolean;
|
||||
pattern: (val: ValueType, regexp: RegExp | string) => boolean;
|
||||
validator: (val: ValueType, validate: CustomValidator, context?: {
|
||||
formData: Data;
|
||||
name: string;
|
||||
}) => ReturnType<CustomValidator>;
|
||||
};
|
||||
export declare type ValidateFuncType = (typeof VALIDATE_MAP)[keyof typeof VALIDATE_MAP];
|
||||
export declare function validateOneRule(value: ValueType, rule: FormRule, context?: {
|
||||
formData: Data;
|
||||
name: string;
|
||||
}): Promise<AllValidateResult>;
|
||||
export declare function validate(value: any, rules: any[], context?: {
|
||||
formData: Data;
|
||||
name: string;
|
||||
}): Promise<any[]>;
|
||||
export declare const validateRules: typeof validate;
|
||||
export {};
|
||||
@@ -0,0 +1 @@
|
||||
import{__awaiter}from"tslib";import{isNumber,isBoolean,isObject,isEmpty,isDate,isEmail,isURL}from"../common/validator";export const ValidateStatus={TO_BE_VALIDATED:0,SUCCESS:1,FAIL:2};function getCharacterLength(t,e){const i=isNumber(e);if(!t||0===t.length)return i?{length:0,characters:t}:0;let r=0;for(let a=0;a<t.length;a+=1){let n=0;if(n=t.charCodeAt(a)>127||94===t.charCodeAt(a)?2:1,i&&r+n>e)return{length:r,characters:t.slice(0,a)};r+=n}return i?{length:r,characters:t}:r}export function isValueEmpty(t){return"[object Date]"!==Object.prototype.toString.call(t)&&(isObject(t)?isEmpty(t):["",void 0,null].includes(t))}const VALIDATE_MAP={date:isDate,url:isURL,email:isEmail,required:t=>!isValueEmpty(t),whitespace:t=>!(/^\s+$/.test(t)||""===t),boolean:t=>isBoolean(t),max:(t,e)=>isNumber(t)?t<=e:getCharacterLength(t)<=e,min:(t,e)=>isNumber(t)?t>=e:getCharacterLength(t)>=e,len:(t,e)=>getCharacterLength(t)===e,number:t=>isNumber(t),enum:(t,e)=>e.includes(t),idcard:t=>/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/i.test(t),telnumber:t=>/^1[3-9]\d{9}$/.test(t),pattern:(t,e)=>("string"==typeof e?new RegExp(e):e).test(t),validator:(t,e,i)=>e(t,i)};export function validateOneRule(t,e,i){return __awaiter(this,void 0,void 0,function*(){let r={result:!0};const a=Object.keys(e);let n,s,l=!1;for(let i=0;i<a.length;i+=1){const o=a[i];if(!e.required&&isValueEmpty(t)&&!e.validator)return r;const c=VALIDATE_MAP[o],u=e[o];if(c&&(u||0===u)){n=!0===u?void 0:u,s=c,l="validator"===o;break}}if(s){if(r=l?yield s(t,n,i):yield s(t,n),isBoolean(r))return Object.assign(Object.assign({},e),{result:r});if(isObject(r))return r}return r})}export function validate(t,e,i){return __awaiter(this,void 0,void 0,function*(){const r=e.map(e=>validateOneRule(t,e,i));return yield Promise.all(r)})}export const validateRules=validate;
|
||||
3
miniprogram_npm/tdesign-miniprogram/form-item/props.d.ts
vendored
Normal file
3
miniprogram_npm/tdesign-miniprogram/form-item/props.d.ts
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import { TdFormItemProps } from './type';
|
||||
declare const props: TdFormItemProps;
|
||||
export default props;
|
||||
1
miniprogram_npm/tdesign-miniprogram/form-item/props.js
Normal file
1
miniprogram_npm/tdesign-miniprogram/form-item/props.js
Normal file
@@ -0,0 +1 @@
|
||||
const props={arrow:{type:Boolean,value:!1},help:{type:String},label:{type:String,value:""},labelAlign:{type:String},labelWidth:{type:null},name:{type:String,value:""},requiredMark:{type:null,value:void 0},rules:{type:Array},showErrorMessage:{type:null,value:void 0}};export default props;
|
||||
39
miniprogram_npm/tdesign-miniprogram/form-item/type.d.ts
vendored
Normal file
39
miniprogram_npm/tdesign-miniprogram/form-item/type.d.ts
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
import { FormRule } from '../form/index';
|
||||
export interface TdFormItemProps {
|
||||
arrow?: {
|
||||
type: BooleanConstructor;
|
||||
value?: boolean;
|
||||
};
|
||||
help?: {
|
||||
type: StringConstructor;
|
||||
value?: string;
|
||||
};
|
||||
label?: {
|
||||
type: StringConstructor;
|
||||
value?: string;
|
||||
};
|
||||
labelAlign?: {
|
||||
type: StringConstructor;
|
||||
value?: 'left' | 'right' | 'top';
|
||||
};
|
||||
labelWidth?: {
|
||||
type: null;
|
||||
value?: string | number;
|
||||
};
|
||||
name?: {
|
||||
type: StringConstructor;
|
||||
value?: string;
|
||||
};
|
||||
requiredMark?: {
|
||||
type: BooleanConstructor;
|
||||
value?: boolean;
|
||||
};
|
||||
rules?: {
|
||||
type: ArrayConstructor;
|
||||
value?: Array<FormRule>;
|
||||
};
|
||||
showErrorMessage?: {
|
||||
type: BooleanConstructor;
|
||||
value?: boolean;
|
||||
};
|
||||
}
|
||||
1
miniprogram_npm/tdesign-miniprogram/form-item/type.js
Normal file
1
miniprogram_npm/tdesign-miniprogram/form-item/type.js
Normal file
@@ -0,0 +1 @@
|
||||
export{};
|
||||
Reference in New Issue
Block a user