diff --git a/packages/ui-vue/components/button-edit/src/components/tag-edit.component.tsx b/packages/ui-vue/components/button-edit/src/components/tag-edit.component.tsx index fca1fd86e012e6d4212fba86e610750018d0b901..e6f7966952f6cda52a5950ca33bcae597bfabe40 100644 --- a/packages/ui-vue/components/button-edit/src/components/tag-edit.component.tsx +++ b/packages/ui-vue/components/button-edit/src/components/tag-edit.component.tsx @@ -1,4 +1,4 @@ -import { Ref, computed, ref } from 'vue'; +import { Ref, computed, ref, watch } from 'vue'; import FTags from '@farris/ui-vue/components/tags'; import { ButtonEditProps } from '../button-edit.props'; import { UseTextBox } from '../composition/types'; @@ -20,8 +20,18 @@ export default function ( changeTextBoxValue(tags.map((tag: any) => tag.name).join(separator.value), true); } + watch(() => props.separator, (newValue) => { + separator.value = newValue; + }); + + const canDeleteTag = ref(!props.disable && !props.readonly); + + watch([() => props.disable, () => props.readonly], ([newDisabled, newReadonly],[oldDisabled, oldReadonly]) => { + canDeleteTag.value = !newDisabled && !newReadonly; + }); + return () => { - return ; }; } diff --git a/packages/ui-vue/components/common/text-box/composition/use-text-box.ts b/packages/ui-vue/components/common/text-box/composition/use-text-box.ts index 66ffbc5e569a60b3eeeaed563ba46cdc2b3e6053..b7b2546f922abce4a4c6d1c423c4517070219a79 100644 --- a/packages/ui-vue/components/common/text-box/composition/use-text-box.ts +++ b/packages/ui-vue/components/common/text-box/composition/use-text-box.ts @@ -126,7 +126,7 @@ export function useTextBox( } function onFocus(payload: FocusEvent) { - if (props.disabled) { + if (disabled.value || readonly.value) { return; } if (showBorder.value) { diff --git a/packages/ui-vue/components/input-group/src/components/extend.component.tsx b/packages/ui-vue/components/input-group/src/components/extend.component.tsx index 0bbeeb6e2451d185c16db3fabe0ca708147bd596..0943e45a47180cba212b9d9a9997daca5802dd89 100644 --- a/packages/ui-vue/components/input-group/src/components/extend.component.tsx +++ b/packages/ui-vue/components/input-group/src/components/extend.component.tsx @@ -1,13 +1,20 @@ -import { SetupContext, computed, reactive } from 'vue'; +import { SetupContext, computed, reactive, ref, watch } from 'vue'; import { InputGroupProps } from '../input-group.props'; export default function ( props: InputGroupProps, context: SetupContext ) { + + const extendInfo = ref(props.extendInfo); + const showExtend = computed(() => props.useExtendInfo && !!props.extendInfo); - const tooltipOption = reactive({ - content: props.extendInfo + const tooltipOption = computed(() => { + return { content: extendInfo.value }; + }); + + watch(() => props.extendInfo, (value) => { + extendInfo.value = value; }); function onMouseOverInExtentInfo() { @@ -15,7 +22,7 @@ export default function ( } return () => showExtend.value && ( - + ); diff --git a/packages/ui-vue/components/input-group/src/composition/use-appended-button.ts b/packages/ui-vue/components/input-group/src/composition/use-appended-button.ts index 008f6ec4c8a2150f62f867356f58b1a06807ea71..7998801e35fb5b7f7a5120c3af5c4b965846dc3d 100644 --- a/packages/ui-vue/components/input-group/src/composition/use-appended-button.ts +++ b/packages/ui-vue/components/input-group/src/composition/use-appended-button.ts @@ -10,7 +10,7 @@ export function useAppendedButton( const forcedToShowAppendedButton = computed(() => props.showButtonWhenDisabled && (props.readonly || props.disabled)); - const shouldShowAppendedButton = computed(() => props.enableClear || !!props.groupText); + const shouldShowAppendedButton = computed(() => props.type === 'password' || props.enableClear || !!props.groupText || forcedToShowAppendedButton.value); const appendedButtonClass = computed(() => { const classObject = { diff --git a/packages/ui-vue/components/input-group/src/composition/use-text-box.ts b/packages/ui-vue/components/input-group/src/composition/use-text-box.ts index 033bbf16b6c7952c60aa1ba2c15957ee8f881fbc..c7196ed74af9d179a89ce4aa9041621bdfdcdc5f 100644 --- a/packages/ui-vue/components/input-group/src/composition/use-text-box.ts +++ b/packages/ui-vue/components/input-group/src/composition/use-text-box.ts @@ -78,7 +78,7 @@ export function useTextBox( } function onInputFocus($event: FocusEvent) { - if (!props.disabled) { + if (!props.disabled && !props.readonly) { if (showBorder.value) { document.documentElement.classList.add(focusCls); } diff --git a/packages/ui-vue/components/tags/src/tags.component.tsx b/packages/ui-vue/components/tags/src/tags.component.tsx index 3a19033dc44cd90d66ce72b9c5ec47b217cd634c..a43614228bb8b9a898fce98e069df2ded6b411e0 100644 --- a/packages/ui-vue/components/tags/src/tags.component.tsx +++ b/packages/ui-vue/components/tags/src/tags.component.tsx @@ -71,6 +71,11 @@ export default defineComponent({ activeTag.value = newValue; }); + watch(() => props.showClose, (newValue) => { + showClose.value = newValue; + }); + + /** * 监听是否显示添加文本框 */ diff --git a/packages/ui-vue/demos/button-edit/clear.vue b/packages/ui-vue/demos/button-edit/clear.vue index a6be71a6cca87b6519c42937a13a1f99011dcbe7..c8cbdf268bcf6d131be95a30102c61aa1e98b916 100644 --- a/packages/ui-vue/demos/button-edit/clear.vue +++ b/packages/ui-vue/demos/button-edit/clear.vue @@ -9,6 +9,7 @@ const enableClear = ref(true); 显示清空按钮: + 只读状态: diff --git a/packages/ui-vue/demos/button-edit/inputType.vue b/packages/ui-vue/demos/button-edit/inputType.vue index df37902455cd847f51d71098ea685e7f10fecc6d..f50833de74afceb17d135f725ead6334fa07f57d 100644 --- a/packages/ui-vue/demos/button-edit/inputType.vue +++ b/packages/ui-vue/demos/button-edit/inputType.vue @@ -3,6 +3,7 @@ import { ref } from 'vue'; const text = ref('aaa,bbb,ccc'); const text2 = ref('aaa,bbb,ccc'); +const disabled = ref(false); 文本模式 @@ -16,5 +17,6 @@ const text2 = ref('aaa,bbb,ccc'); 输入框文本: {{ text2 }} - + + diff --git a/packages/ui-vue/demos/input-group/basic.vue b/packages/ui-vue/demos/input-group/basic.vue index 1f97df66c503c0fb13b79e33cab247bcab215fba..0dfa61d55a191b2ec5cd6a5521716219ecb2237a 100644 --- a/packages/ui-vue/demos/input-group/basic.vue +++ b/packages/ui-vue/demos/input-group/basic.vue @@ -35,7 +35,7 @@ const textareaValue = ref('我是一个多行文本框,内容比较多,可 - + diff --git a/packages/ui-vue/demos/input-group/extend.vue b/packages/ui-vue/demos/input-group/extend.vue index 3b4b86116a77652fb5ddc3ed3f25ae9e8084dea9..305a4615e4d154a9b1b51bc2388dc90c7a9e4ffd 100644 --- a/packages/ui-vue/demos/input-group/extend.vue +++ b/packages/ui-vue/demos/input-group/extend.vue @@ -5,6 +5,8 @@ const groupIcon = '' const groupText = '查询' const bindValue = ref('文本内容') const extendInfo = ref('这是扩展') + +const useExtendInfo = ref(true); function onClickGroupText() { alert('click group text') } @@ -60,12 +62,30 @@ function onUpdateExtendInfo() { + 前置扩展 + + + + + + + + + 前置扩展 + + diff --git a/packages/ui-vue/demos/input-group/placeholder.vue b/packages/ui-vue/demos/input-group/placeholder.vue index 51fda953ae737cc4f5ff0eb03d650dc444d33839..b056c1ba28d2494b62e53a706135bcb7db9229c9 100644 --- a/packages/ui-vue/demos/input-group/placeholder.vue +++ b/packages/ui-vue/demos/input-group/placeholder.vue @@ -22,7 +22,7 @@ const bindDisableValue = ref(''); 默认禁用 - + @@ -32,7 +32,7 @@ const bindDisableValue = ref(''); 禁用显示占位符 - + diff --git a/packages/ui-vue/demos/input-group/state.vue b/packages/ui-vue/demos/input-group/state.vue index a43258c1f4f529669b401bc28f0ff60b9b45a87b..7786556e44455261f57cbc04b0d9b8ef94d271e7 100644 --- a/packages/ui-vue/demos/input-group/state.vue +++ b/packages/ui-vue/demos/input-group/state.vue @@ -3,7 +3,7 @@ import { ref } from 'vue'; /** 绑定值 */ const bindValue = ref('文本'); -const groupIcon = ''; +const groupIcon = ''; @@ -32,7 +32,7 @@ const groupIcon = ''; 禁用 - + @@ -42,7 +42,7 @@ const groupIcon = ''; 禁用时显示按钮 - + diff --git a/packages/ui-vue/docs/components/button-edit/index.md b/packages/ui-vue/docs/components/button-edit/index.md index a523e963abee8533836036ddb7ca7e084e0438d1..9288d14e3d23dc7b041f5f03610a07d419300db0 100644 --- a/packages/ui-vue/docs/components/button-edit/index.md +++ b/packages/ui-vue/docs/components/button-edit/index.md @@ -73,7 +73,7 @@ Button Edit 是允许在其编辑器内部嵌入按钮的文本输入框。开 ## 提示信息 -:::vdemo 使用清空按钮可以快速置空文本框。 +:::vdemo ```vue {demos/button-edit/placeholder.vue} @@ -114,10 +114,10 @@ type TextAlignment = 'left' | 'center' | 'right'; | buttonContent | `string` | -- | 按钮内容,缺省为点击按钮图标 | | customClass | `string` | -- | 组件自定义样式 | | disable | `boolean` | false | 将组件设置为禁用状态 | -| editable | `boolean` | true | 是否允许在输入框编辑文本 | +| editable | `boolean` | true | 是否允许在输入框编辑文本;inputType为tag时,此属性无效 | | enableClear | `boolean` | false | 是否启用清空按钮 | | readonly | `boolean` | false | 将组件输入框设置为只读 | -| textAlign | `string as TextAlignment` | 'left' | 设置输入框对齐方式,缺省状况为左对齐,可选择的值包括:'left','center','right' | +| textAlign | `string as TextAlignment` | 'left' | 设置输入框对齐方式,缺省状况为左对齐,可选择的值包括:'left','center','right'; inputType为tag时,此属性无效 | | showButtonWhenDisabled | `boolean` | false | 是否允许在禁用组件时仍然显示组件按钮 | | enableTitle | `boolean` | false | 是否启用输入框的的提示文本 | | inputType | `'text' \| 'tag'` | 'text' | 设置输入框类型,缺省为文本输入框,可以选择设为标签输入框 | @@ -128,13 +128,10 @@ type TextAlignment = 'left' | 'center' | 'right'; | tabIndex | `number` | -- | 设置组件 Tab 键索引 | | multiSelect | `boolean` | false | 是否支持多选 | | separator | `string` | , | 多选分隔符 | -| popupHost | `Object as PropType` | , | popover组件所依附的元素 | -| popupRightBoundary | `Object as PropType` | , | | -| popupOffsetX | `Object as PropType` | , | | -| popupOnInput | `boolean` | false |开启后,输入时自动弹出选择面板,点击回车时收起面板 | -| popupOnFocus | `boolean` | false |开启后,点击输入框自动弹出选择面板,点击回车时收起面板 | -| popupMinWidth | `number` | 320 | 弹出面板最小宽度 | -| wrapText | `boolean` | false | | +| popupOnInput | `boolean` | false |开启后,输入时自动弹出选择面板;inputType为tag时,此属性无效 | +| popupOnFocus | `boolean` | false |开启后,点击输入框自动弹出选择面板;inputType为tag时,此属性无效 | +| popupMinWidth | `number` | 320 | 弹出面板最小宽度 | | +| buttonBehavior | `Modal \| Popup` | -- | 按钮行为,可选值:`Modal`、`Popup` | ## 事件 @@ -146,14 +143,14 @@ type ClickButtonEvent = {origin: PointerEvent, value:string}; | 事件名 | 类型 | 说明 | | :------------- | :------------------ | :------------------- | | clear | `EventEmitter<[]>` | 点击清空按钮事件 | -| click | `EventEmitter>` | 点击输入框事件 | +| click | `EventEmitter>` | 点击输入框事件,`inputType`为 `tag` 时,此事件不会触发;参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | | clickButton | `EventEmitter>` | 点击按钮事件 | -| blur | `EventEmitter>` | 输入框失去焦点事件 | -| focus | `EventEmitter>` | 输入框获得焦点事件 | -| mouseEnterIcon | `EventEmitter>` | 鼠标移入按钮事件 | -| mouseLeaveIcon | `EventEmitter>` | 数据移出按钮事件 | -| keyup | `EventEmitter>` | 抬起键盘按键事件 | -| keydown | `EventEmitter>` | 按下键盘按键事件 | +| blur | `EventEmitter>` | 输入框失去焦点事件,`inputType`为 `tag` 时,此事件不会触发, 参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/FocusEvent) | +| focus | `EventEmitter>` | 输入框获得焦点事件, `inputType`为 `tag` 时,此事件不会触发, 参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/FocusEvent) | +| mouseEnterIcon | `EventEmitter>` | 鼠标移入按钮事件. 参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | +| mouseLeaveIcon | `EventEmitter>` | 鼠标移出按钮事件. 参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | +| keyup | `EventEmitter>` | 抬起键盘按键事件. 参数类型详见 [`KeyboardEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/KeyboardEvent) | +| keydown | `EventEmitter>` | 按下键盘按键事件. 参数类型详见 [`KeyboardEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/KeyboardEvent) | | input | `EventEmitter>` | 在输入框录入字符事件 | ## 插槽 diff --git a/packages/ui-vue/docs/components/input-group/index.md b/packages/ui-vue/docs/components/input-group/index.md index 0b26e4a2266ded3423e7a0e64a9064bf3bce20ed..cff92ba19155bc2cfe32fb250158cabffcc2c623 100644 --- a/packages/ui-vue/docs/components/input-group/index.md +++ b/packages/ui-vue/docs/components/input-group/index.md @@ -67,7 +67,7 @@ | 属性名 | 类型 | 默认值 | 说明 | | :--------------------- | :---------------- | :---------- | :-------------------------------------------------------------------------- | -| autocomplete | `off,on` | off | 针对 txt 类型的输入框,是否启用自动完成.off 不启用自动完成,on 启用自动完成 | +| autocomplete | `off \| on` | off | 针对 txt 类型的输入框,是否启用自动完成.off 不启用自动完成,on 启用自动完成 | | customClass | `string` | -- | 自定义样式 | | disable | `boolean` | false | 禁用输入功能,true 是禁用。 | | readonly | `boolean` | false | 只读 | @@ -80,16 +80,16 @@ | groupTextTemplate | `templateRef` | -- | 扩展按钮的模版 | | isPassword | `boolean` | false | 是否启用密码模式 | | maxLength | `number` | -- | 设置文本最大长度 | -| minLength | `number` | -- | 设置文本最小宽度 | -| modelValue | `string,boolean` | -- | 组件值 | -| noborder | `boolean` | false | 是否隐藏边线,false 显示边线 | +| modelValue | `string` | -- | 组件绑定值 | | placeholder | `string` | -- | 启用提示信息文本 | | showButtonWhenDisabled | `boolean` | false | 当组件禁用或只读时显示后边的按钮 | -| tabIndex | `number` | 0 | tab 索引 | -| textAlign | `string` | left 左对齐 | 文本在输入框中的对齐方式 | -| useExtendInfo | `boolean` | false | 是否启用前置扩展信息;鼠标滑过后在输入框前面 显示 ① 图标 | +| tabIndex | `number` | 0 | tab键索引,默认从0开始,-1表示不可通过Tab键获得焦点 | +| textAlign | `string` | left | 文本在输入框中的对齐方式,可选: left 左对齐、center 居中对齐、right 右对齐 | +| useExtendInfo | `boolean` | false | 是否启用前置扩展信息;设置为true后,鼠标悬停时显示 `extendInfo`配置的文本 | | extendInfo | `string` | -- | 前置扩展信息文本 | | value | `string` | -- | 输入值 | +| showBorder | `boolean` | true | 是否显示边线,默认 true显示边线 | +| type | `string` | text | 输入框类型,可选:text 文本输入框、number 数字输入框、password 密码输入框、textarea 多行文本输入框 | ## 事件 @@ -97,15 +97,15 @@ | :---------------- | :--------------------- | :-------------------- | | clear | -- | 点击清空按钮事件 | | change | 新值 | 值变化事件 | -| blur | MouseEvent | 失去焦点事件 | -| click | MouseEvent | 输入框点击事件 | +| blur | MouseEvent | 失去焦点事件,参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | +| click | MouseEvent | 输入框点击事件,参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | | clickHandle | {originalEvent:原事件} | 点击图标触发的事件 | -| focus | MouseEvent | 得到焦点事件 | +| focus | MouseEvent | 得到焦点事件,参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | | input | 新值 | 值变化事件--- | -| keydown | MouseEvent | 键盘按下事件 | -| keyup | MouseEvent | 键盘弹起事件 | -| iconMouseEnter | MouseEvent | 进入图标区域事件 | -| iconMouseLeave | MouseEvent | 离开图标区域事件 | +| keydown | MouseEvent | 键盘按下事件,参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | +| keyup | MouseEvent | 键盘弹起事件,参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | +| iconMouseEnter | MouseEvent | 进入图标区域事件,参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | +| iconMouseLeave | MouseEvent | 离开图标区域事件,参数类型详见 [`MouseEvent`](https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent) | | update:modelValue | -- | modelValue 值更新事件 | | update:value | -- | value 值更新事件 | | updateExtendInfo | -- | 展示前置扩展信息事件 |