Skip to content

Commit

Permalink
fix(comp:select): input shouldn't trigger when allowInput is false (I…
Browse files Browse the repository at this point in the history
  • Loading branch information
sallerli1 authored Sep 28, 2022
1 parent 648f832 commit 43b0802
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 19 deletions.
1 change: 1 addition & 0 deletions packages/components/_private/selector/src/Selector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ export default defineComponent({
inputRef,
inputValue,
isComposing,
isFocused,
handleCompositionStart,
handleCompositionEnd,
handleInput,
Expand Down
10 changes: 7 additions & 3 deletions packages/components/_private/selector/src/contents/Input.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,21 @@ export default defineComponent({
mirrorRef,
inputRef,
inputValue,
isFocused,
handleCompositionStart,
handleCompositionEnd,
handleInput,
} = inject(selectorToken)!

const inputReadonly = computed(
() => props.readonly || !isFocused.value || !(props.allowInput || mergedSearchable.value),
)
const innerStyle = computed(() => {
return { opacity: props.allowInput || mergedSearchable.value ? undefined : 0 }
return { opacity: inputReadonly.value ? 0 : undefined }
})

return () => {
const { autocomplete, autofocus, disabled, multiple, readonly } = props
const { autocomplete, autofocus, disabled, multiple } = props
const prefixCls = `${mergedPrefixCls.value}-input`
return (
<div class={prefixCls}>
Expand All @@ -39,7 +43,7 @@ export default defineComponent({
autocomplete={autocomplete}
autofocus={autofocus}
disabled={disabled}
readonly={readonly}
readonly={inputReadonly.value}
value={inputValue.value}
onCompositionstart={handleCompositionStart}
onCompositionend={handleCompositionEnd}
Expand Down
1 change: 1 addition & 0 deletions packages/components/_private/selector/src/token.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export interface SelectorContext {
inputRef: Ref<HTMLInputElement | undefined>
inputValue: Ref<string>
isComposing: Ref<boolean>
isFocused: Ref<boolean>
handleCompositionStart: (evt: CompositionEvent) => void
handleCompositionEnd: (evt: CompositionEvent) => void
handleInput: (evt: Event) => void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ exports[`Cascader > multiple work > render work 1`] = `
</div>
<!---->
<div class=\\"ix-overflow-item ix-overflow-suffix\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0; width: 0px;\\" autocomplete=\\"off\\"><span class=\\"ix-selector-input-mirror\\" aria-hidden=\\"true\\"></span></div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0; width: 0px;\\" autocomplete=\\"off\\" readonly=\\"\\"><span class=\\"ix-selector-input-mirror\\" aria-hidden=\\"true\\"></span></div>
</div>
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(180deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -30,7 +30,7 @@ exports[`Cascader > single work > render work 1`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Components/General/Button</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(180deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ exports[`Pagination > render work 3`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">10</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ exports[`Select > multiple work > maxLabel responsive work 1`] = `
</div>
</div>
<div class=\\"ix-overflow-item ix-overflow-suffix\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0; width: 0px;\\" autocomplete=\\"off\\"><span class=\\"ix-selector-input-mirror\\" aria-hidden=\\"true\\"></span></div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0; width: 0px;\\" autocomplete=\\"off\\" readonly=\\"\\"><span class=\\"ix-selector-input-mirror\\" aria-hidden=\\"true\\"></span></div>
</div>
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -55,7 +55,7 @@ exports[`Select > multiple work > maxLabel responsive work 2`] = `
</div>
</div>
<div class=\\"ix-overflow-item ix-overflow-suffix\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0; width: 0px;\\" autocomplete=\\"off\\"><span class=\\"ix-selector-input-mirror\\" aria-hidden=\\"true\\"></span></div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0; width: 0px;\\" autocomplete=\\"off\\" readonly=\\"\\"><span class=\\"ix-selector-input-mirror\\" aria-hidden=\\"true\\"></span></div>
</div>
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -79,7 +79,7 @@ exports[`Select > multiple work > render work 1`] = `
</div>
<!---->
<div class=\\"ix-overflow-item ix-overflow-suffix\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0; width: 0px;\\" autocomplete=\\"off\\"><span class=\\"ix-selector-input-mirror\\" aria-hidden=\\"true\\"></span></div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0; width: 0px;\\" autocomplete=\\"off\\" readonly=\\"\\"><span class=\\"ix-selector-input-mirror\\" aria-hidden=\\"true\\"></span></div>
</div>
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -94,7 +94,7 @@ exports[`Select > single work > render work 1`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Tom</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -109,7 +109,7 @@ exports[`Select > template work > render work 1`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Tom</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ exports[`TreeSelect > multiple work > render work 1`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Node 0</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(180deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -24,7 +24,7 @@ exports[`TreeSelect > single work > custom keys work 1`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Node 0</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(180deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -41,7 +41,7 @@ exports[`TreeSelect > single work > render work 1`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Node 0</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(180deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -58,7 +58,7 @@ exports[`TreeSelect > single work > searchFn work 1`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Node 0</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -73,7 +73,7 @@ exports[`TreeSelect > single work > searchFn work 2`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Node 0</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"><svg viewBox=\\"0 0 1024 1024\\" focusable=\\"false\\" aria-hidden=\\"true\\" data-icon=\\"down\\">
Expand All @@ -90,7 +90,7 @@ exports[`TreeSelect > single work > searchFn work 3`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Node 0</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"><svg viewBox=\\"0 0 1024 1024\\" focusable=\\"false\\" aria-hidden=\\"true\\" data-icon=\\"down\\">
Expand All @@ -107,7 +107,7 @@ exports[`TreeSelect > single work > searchable work 1`] = `
<div class=\\"ix-selector-item\\"><span class=\\"ix-selector-item-label\\">Node 0</span>
<!---->
</div>
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" autocomplete=\\"off\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"down\\"></i></div>
Expand All @@ -121,7 +121,7 @@ exports[`TreeSelect > single work > searchable work 2`] = `
"<div class=\\"ix-tree-select ix-selector ix-selector-opened ix-selector-single ix-selector-md\\">
<!---->
<div class=\\"ix-selector-content\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" autocomplete=\\"off\\" style=\\"opacity: 0;\\">
<div class=\\"ix-selector-input\\"><input class=\\"ix-selector-input-inner\\" style=\\"opacity: 0;\\" autocomplete=\\"off\\" readonly=\\"\\">
<!---->
</div>
<div class=\\"ix-selector-suffix\\"><i class=\\"ix-icon ix-icon-down\\" style=\\"transform: rotate(180deg);\\" role=\\"img\\" aria-label=\\"down\\"><svg viewBox=\\"0 0 1024 1024\\" focusable=\\"false\\" aria-hidden=\\"true\\" data-icon=\\"down\\">
Expand Down

0 comments on commit 43b0802

Please sign in to comment.