From 2dfc76ff8b985bc255a6e5cde8e332f63e2396a6 Mon Sep 17 00:00:00 2001 From: James-9696 Date: Mon, 9 Dec 2024 17:47:05 -0800 Subject: [PATCH 1/3] fix: modify form error --- .../components/form-item/src/mobile.vue | 4 +-- .../form-item/src/renderless/index.ts | 9 +++-- .../form-item/src/renderless/vue.ts | 4 +-- packages/mobile/components/input/src/input.ts | 35 +++++++++++-------- .../theme-mobile/src/form-item/index.less | 22 ++++++------ packages/theme-mobile/src/form-item/vars.less | 16 ++++----- packages/theme-mobile/src/form/index.less | 2 +- 7 files changed, 48 insertions(+), 44 deletions(-) diff --git a/packages/mobile/components/form-item/src/mobile.vue b/packages/mobile/components/form-item/src/mobile.vue index 2a3006df23..e7fecfe783 100644 --- a/packages/mobile/components/form-item/src/mobile.vue +++ b/packages/mobile/components/form-item/src/mobile.vue @@ -227,7 +227,7 @@ export default defineComponent({ { props: { isAutoWidth: state.labelStyle && state.labelStyle.width === 'auto', - updateAll: state.form.labelWidth === 'auto', + updateAll: state.form?.labelWidth === 'auto', isMobile: state.mode === 'mobile' } }, @@ -249,7 +249,7 @@ export default defineComponent({ mouseleave: handleMouseleave } }, - labelSlot || label + state.form.labelSuffix + labelSlot || label + (state.form?.labelSuffix || '') ) : null ] diff --git a/packages/mobile/components/form-item/src/renderless/index.ts b/packages/mobile/components/form-item/src/renderless/index.ts index a5b87488d7..5a98837db3 100644 --- a/packages/mobile/components/form-item/src/renderless/index.ts +++ b/packages/mobile/components/form-item/src/renderless/index.ts @@ -84,7 +84,7 @@ export const computedLabelStyle = return result } - const labelWidth = props.labelWidth || state.form.state.labelWidth + const labelWidth = props.labelWidth || state.form?.state?.labelWidth if (labelWidth) { result.width = labelWidth @@ -103,7 +103,7 @@ export const computedValueStyle = return result } - const labelWidth = props.labelWidth || state.form.state.labelWidth + const labelWidth = props.labelWidth || state.form?.state?.labelWidth if (labelWidth) { if (labelWidth === 'auto') { @@ -231,7 +231,7 @@ export const getPropByPath = (obj: object, path: string, strict?: boolean) => { export const computedFieldValue = ({ props, state }: Pick) => () => { - const model = state.form.model + const model = state.form?.model if (!model || !props.prop) { return @@ -287,7 +287,6 @@ export const validate = state.validateState = VALIDATE_STATE.Validating const descriptor = {} - if (rules && rules.length > 0) { rules.forEach((rule) => { delete rule.trigger @@ -531,7 +530,7 @@ export const handleMouseenter = export const handleLabelMouseenter = ({ props, state, slots }) => (e) => { - if (!state.form.overflowTitle || !state.form || slots.label) return + if (!state.form?.overflowTitle || !state.form || slots.label) return const label = e.target if (label && label.scrollWidth > label.offsetWidth) { state.form.showTooltip(label, props.label + state.form.labelSuffix) diff --git a/packages/mobile/components/form-item/src/renderless/vue.ts b/packages/mobile/components/form-item/src/renderless/vue.ts index ab6a608498..ccae14a7ab 100644 --- a/packages/mobile/components/form-item/src/renderless/vue.ts +++ b/packages/mobile/components/form-item/src/renderless/vue.ts @@ -110,7 +110,7 @@ const initState = ({ formItemSize: computed(() => props.size || state.formSize), isDisplayOnly: computed(() => state.formInstance.displayOnly), labelPosition: computed(() => state.formInstance.labelPosition), - hideRequiredAsterisk: computed(() => state.formInstance.state.hideRequiredAsterisk), + hideRequiredAsterisk: computed(() => state.formInstance?.state?.hideRequiredAsterisk), labelSuffix: computed(() => state.formInstance.labelSuffix), labelWidth: computed(() => state.formInstance.labelWidth), showMessage: computed(() => state.formInstance.showMessage), @@ -120,7 +120,7 @@ const initState = ({ isErrorInline: computed(() => api.computedIsErrorInline()), isErrorBlock: computed(() => api.computedIsErrorBlock()), disabled: computed(() => state.formInstance.disabled), - tooltipType: computed(() => state.formInstance.state.tooltipType) + tooltipType: computed(() => state.formInstance?.state?.tooltipType) }) return state diff --git a/packages/mobile/components/input/src/input.ts b/packages/mobile/components/input/src/input.ts index 883a052c5a..ff37b4883b 100644 --- a/packages/mobile/components/input/src/input.ts +++ b/packages/mobile/components/input/src/input.ts @@ -12,6 +12,22 @@ import type { PropType } from '../../../vue-common' import type { ExtractPropTypes, ComputedRef } from 'vue' import type { ISharedRenderlessFunctionParams, ISharedRenderlessParamUtils } from '../../../types/shared.type' + +import type { + calculateNodeStyling, + calcTextareaHeight, + getInput, + handleInput, + calcIconOffset, + focus, + watchFormSelect, + setNativeInputValue, + resizeTextarea, + updateIconOffset, + hiddenPassword, + inputStyle +} from './renderless' + export type { ISharedRenderlessParamHooks } from '../../../types/shared.type' export const $constants = { @@ -109,6 +125,10 @@ export const inputProps = { type: Boolean, default: false }, + title: { + type: String, + default: '' + }, showTitle: { type: Boolean, default: false @@ -151,21 +171,6 @@ export const inputProps = { } } -import type { - calculateNodeStyling, - calcTextareaHeight, - getInput, - handleInput, - calcIconOffset, - focus, - watchFormSelect, - setNativeInputValue, - resizeTextarea, - updateIconOffset, - hiddenPassword, - inputStyle -} from './renderless' - export interface IInputState { mode: string focused: boolean diff --git a/packages/theme-mobile/src/form-item/index.less b/packages/theme-mobile/src/form-item/index.less index ff0ee8f06d..b410eb6780 100644 --- a/packages/theme-mobile/src/form-item/index.less +++ b/packages/theme-mobile/src/form-item/index.less @@ -38,12 +38,12 @@ &--medium &__content, &--medium &__label { - line-height: var(--ti-form-item-medium-line-height, 36px); + line-height: 36px; } &--small &__content, &--small &__label { - line-height: var(--ti-form-item-small-line-height, 28px); + line-height: 28px; } &--small &__error { @@ -52,7 +52,7 @@ &--mini &__content, &--mini &__label { - line-height: var(--ti-form-item-mini-line-height, 24px); + line-height: 24px; } &--mini &__error { @@ -73,7 +73,7 @@ vertical-align: middle; float: left; font-size: 16px; - color: var(--ti-form-item-label-color, #333); + color: var(--ti-mobile-form-item-label-color); line-height: 48px; padding-right: 8px; box-sizing: border-box; @@ -90,7 +90,7 @@ &__content { line-height: 48px; position: relative; - font-size: var(--ti-form-item-label-font-size, 14px); + font-size: 14px; .clearfix(); .@{input-group-prefix-cls} { @@ -118,8 +118,8 @@ } &__error { - color: var(--ti-form-item-error-color, #f5222d); - font-size: var(--ti-form-item-error-font-size, 12px); + color: var(--ti-mobile-form-item-error-color); + font-size: 12px; line-height: 1; padding-top: 4px; position: absolute; @@ -139,7 +139,7 @@ .@{form-item-prefix-cls}__label-wrap > .@{form-item-prefix-cls}__label:before, .@{form-item-prefix-cls}__label:before { content: '*'; - color: var(--ti-form-item-error-color, #f5222d); + color: var(--ti-mobile-form-item-error-color); margin-right: 4px; } } @@ -149,7 +149,7 @@ .@{input-prefix-cls}__inner:focus, .@{textarea-prefix-cls}__inner, .@{textarea-prefix-cls}__inner:focus { - border-color: var(--ti-form-item-error-color, #f5222d); + border-color: var(--ti-mobile-form-item-error-color); } .@{input-group-prefix-cls}__append, @@ -160,13 +160,13 @@ } .@{input-prefix-cls}__validateIcon { - color: var(--ti-form-item-error-color, #f5222d); + color: var(--ti-mobile-form-item-error-color); } .@{numeric-prefix-cls}__input-inner { &, &:focus { - border-color: var(--ti-form-item-error-color, #f5222d); + border-color: var(--ti-mobile-form-item-error-color); } } } diff --git a/packages/theme-mobile/src/form-item/vars.less b/packages/theme-mobile/src/form-item/vars.less index 716675c065..86967db1ff 100644 --- a/packages/theme-mobile/src/form-item/vars.less +++ b/packages/theme-mobile/src/form-item/vars.less @@ -1,10 +1,10 @@ .component-css-vars-form-item() { - --ti-form-item-small-line-height: 28px; - --ti-form-item-medium-line-height: 36px; - --ti-form-item-mini-line-height: 24px; - --ti-form-item-label-line-height: var(--ti-mobile-base-size-height-minor, 30px); - --ti-form-item-label-font-size: 14px; - --ti-form-item-label-color: var(--ti-mobile-base-color-info-normal, #333); - --ti-form-item-error-color: var(--ti-mobile-base-color-danger-normal, #f5222d); - --ti-form-item-error-font-size: var(--ti-mobile-base-font-size, 12px); + // --ti-form-item-small-line-height: 28px; + // --ti-form-item-medium-line-height: 36px; + // --ti-form-item-mini-line-height: 24px; + // --ti-form-item-label-line-height: var(--ti-mobile-base-size-height-minor, 30px); + // --ti-form-item-label-font-size: 14px; + --ti-mobile-form-item-label-color: #333; + --ti-mobile-form-item-error-color: #f5222d; + // --ti-form-item-error-font-size: var(--ti-mobile-base-font-size, 12px); } diff --git a/packages/theme-mobile/src/form/index.less b/packages/theme-mobile/src/form/index.less index 8cd0acaca0..25e31cd633 100644 --- a/packages/theme-mobile/src/form/index.less +++ b/packages/theme-mobile/src/form/index.less @@ -52,7 +52,7 @@ } .@{form-item-prefix-cls} { - margin-right: var(--ti-form-item-margin-right, 10px); + margin-right: 10px; } .@{form-item-prefix-cls}__label { From 806938bf116944257f33b963a88e32bb7ee5dc07 Mon Sep 17 00:00:00 2001 From: Gimmy <975402925@qq.com> Date: Tue, 10 Dec 2024 15:50:37 +0800 Subject: [PATCH 2/3] fix: fix mobile form-item error --- .../components/form-item/src/mobile.vue | 123 +++--------------- .../form-item/src/renderless/index.ts | 50 +++---- .../form-item/src/renderless/vue.ts | 3 - .../components/form/src/renderless/vue.ts | 2 +- 4 files changed, 34 insertions(+), 144 deletions(-) diff --git a/packages/mobile/components/form-item/src/mobile.vue b/packages/mobile/components/form-item/src/mobile.vue index e7fecfe783..4222b1b760 100644 --- a/packages/mobile/components/form-item/src/mobile.vue +++ b/packages/mobile/components/form-item/src/mobile.vue @@ -10,7 +10,7 @@ * -->