Skip to content

Commit bada77d

Browse files
committed
fix(select): avoid naming variable declared with useTemplateRef the same as a template ref
See vuejs/core#11795
1 parent dc224ed commit bada77d

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

Diff for: src/Indicators.vue

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ const emit = defineEmits<{
1717
(e: "toggle"): void;
1818
}>();
1919
20-
const container = useTemplateRef("container");
21-
const clearButton = useTemplateRef("clearButton");
22-
const dropdownButton = useTemplateRef("dropdownButton");
20+
const containerRef = useTemplateRef("container");
21+
const clearButtonRef = useTemplateRef("clearButton");
22+
const dropdownButtonRef = useTemplateRef("dropdownButton");
2323
24-
defineExpose({ container, clearButton, dropdownButton });
24+
defineExpose({ containerRef, clearButtonRef, dropdownButtonRef });
2525
</script>
2626

2727
<template>

Diff for: src/Select.vue

+16-16
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ const selected = defineModel<OptionValue | OptionValue[]>({
4646
validator: (value, _props) => _props.isMulti ? Array.isArray(value) : !Array.isArray(value),
4747
});
4848
49-
const container = useTemplateRef("container");
50-
const input = useTemplateRef("input");
51-
const menu = useTemplateRef("menu");
52-
const indicators = useTemplateRef("indicators");
49+
const containerRef = useTemplateRef("container");
50+
const inputRef = useTemplateRef("input");
51+
const menuRef = useTemplateRef("menu");
52+
const indicatorsRef = useTemplateRef("indicators");
5353
5454
const search = ref("");
5555
const menuOpen = ref(false);
@@ -109,8 +109,8 @@ function openMenu() {
109109
focusedOption.value = props.options.findIndex((option) => !option.disabled);
110110
}
111111
112-
if (input.value) {
113-
input.value.focus();
112+
if (inputRef.value) {
113+
inputRef.value.focus();
114114
}
115115
116116
emit("menuOpened");
@@ -132,7 +132,7 @@ function toggleMenu() {
132132
};
133133
134134
function handleControlClick(event: MouseEvent) {
135-
if (indicators.value?.container && !indicators.value.container.contains(event.target as Node)) {
135+
if (indicatorsRef.value?.containerRef && !indicatorsRef.value.containerRef.contains(event.target as Node)) {
136136
openMenu();
137137
}
138138
};
@@ -157,8 +157,8 @@ const setOption = (option: GenericOption) => {
157157
closeMenu();
158158
}
159159
160-
if (input.value) {
161-
input.value.blur();
160+
if (inputRef.value) {
161+
inputRef.value.blur();
162162
}
163163
};
164164
@@ -181,8 +181,8 @@ const clear = () => {
181181
182182
closeMenu();
183183
184-
if (input.value) {
185-
input.value.blur();
184+
if (inputRef.value) {
185+
inputRef.value.blur();
186186
}
187187
};
188188
@@ -278,14 +278,14 @@ const handleInputKeydown = (e: KeyboardEvent) => {
278278
};
279279
280280
const handleClickOutside = (event: MouseEvent) => {
281-
if (container.value && !container.value.contains(event.target as Node)) {
281+
if (containerRef.value && !containerRef.value.contains(event.target as Node)) {
282282
closeMenu();
283283
}
284284
};
285285
286286
const calculateMenuPosition = () => {
287-
if (container.value) {
288-
const rect = container.value.getBoundingClientRect();
287+
if (containerRef.value) {
288+
const rect = containerRef.value.getBoundingClientRect();
289289
290290
return {
291291
left: `${rect.x}px`,
@@ -455,7 +455,7 @@ onBeforeUnmount(() => {
455455
:aria-label="aria?.labelledby"
456456
:aria-multiselectable="isMulti"
457457
:style="{
458-
width: props.teleport ? `${container?.getBoundingClientRect().width}px` : '100%',
458+
width: props.teleport ? `${containerRef?.getBoundingClientRect().width}px` : '100%',
459459
top: props.teleport ? calculateMenuPosition().top : 'unset',
460460
left: props.teleport ? calculateMenuPosition().left : 'unset',
461461
}"
@@ -466,7 +466,7 @@ onBeforeUnmount(() => {
466466
v-for="(option, i) in availableOptions"
467467
:key="i"
468468
type="button"
469-
:menu="menu"
469+
:menu="menuRef"
470470
:index="i"
471471
:is-focused="focusedOption === i"
472472
:is-selected="option.value === selected"

0 commit comments

Comments
 (0)