-
Notifications
You must be signed in to change notification settings - Fork 187
feat(MentionSender, Sender): add openHeader prop for controlling head… #340
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -47,3 +47,4 @@ yarn-error.log* | |
| .oxlintrc.json.bak | ||
| */**/auto-imports.d.ts | ||
| */**/components.d.ts | ||
| .cunzhi* | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -5,39 +5,36 @@ title: 头部插槽 | |||||||||||||||
|
|
||||||||||||||||
| 通过 `#header` 插槽用于自定义输入框的头部内容。 | ||||||||||||||||
|
|
||||||||||||||||
| ::: info | ||||||||||||||||
| 通过组件实例控制 头部容器 展开收起 | ||||||||||||||||
| ::: warning 废弃警告 | ||||||||||||||||
| 以下方法将在下个大版本中移除,推荐使用 `v-model:openHeader` 进行双向绑定控制: | ||||||||||||||||
|
|
||||||||||||||||
| - `senderRef.value.openHeader()` 打开头部容器 | ||||||||||||||||
| - `senderRef.value.closeHeader()` 关闭头部容器 | ||||||||||||||||
| - `senderRef.value.openHeader()` 打开头部容器 (已废弃) | ||||||||||||||||
| - `senderRef.value.closeHeader()` 关闭头部容器 (已废弃) | ||||||||||||||||
| ::: | ||||||||||||||||
|
|
||||||||||||||||
| ::: tip 推荐用法 | ||||||||||||||||
| 使用 `v-model:openHeader` 进行双向绑定控制头部显示状态: | ||||||||||||||||
|
|
||||||||||||||||
| ```vue | ||||||||||||||||
| <Sender v-model:openHeader="openHeader"> | ||||||||||||||||
| <template #header>头部内容</template> | ||||||||||||||||
| </Sender> | ||||||||||||||||
| ``` | ||||||||||||||||
|
Comment on lines
+19
to
+22
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix component tag and use kebab-case v-model arg in the snippet This demo is for MentionSender but the snippet shows Sender and camelCase argument. Align with actual usage below. Apply: -<Sender v-model:openHeader="openHeader">
- <template #header>头部内容</template>
-</Sender>
+<MentionSender v-model:open-header="openHeader">
+ <template #header>头部内容</template>
+</MentionSender>📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||
| ::: | ||||||||||||||||
| </docs> | ||||||||||||||||
|
|
||||||||||||||||
| <script setup lang="ts"> | ||||||||||||||||
| import { CircleClose } from '@element-plus/icons-vue'; | ||||||||||||||||
|
|
||||||||||||||||
| const senderRef = ref(); | ||||||||||||||||
| const senderValue = ref(''); | ||||||||||||||||
| const showHeaderFlog = ref(false); | ||||||||||||||||
|
|
||||||||||||||||
| onMounted(() => { | ||||||||||||||||
| showHeaderFlog.value = true; | ||||||||||||||||
| senderRef.value.openHeader(); | ||||||||||||||||
| }); | ||||||||||||||||
| const openHeader = ref(true); // 使用 v-model:openHeader 控制头部显示状态 | ||||||||||||||||
|
|
||||||||||||||||
| function openCloseHeader() { | ||||||||||||||||
| if (!showHeaderFlog.value) { | ||||||||||||||||
| senderRef.value.openHeader(); | ||||||||||||||||
| } | ||||||||||||||||
| else { | ||||||||||||||||
| senderRef.value.closeHeader(); | ||||||||||||||||
| } | ||||||||||||||||
| showHeaderFlog.value = !showHeaderFlog.value; | ||||||||||||||||
| function toggleHeader() { | ||||||||||||||||
| openHeader.value = !openHeader.value; | ||||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
| function closeHeader() { | ||||||||||||||||
| showHeaderFlog.value = false; | ||||||||||||||||
| senderRef.value.closeHeader(); | ||||||||||||||||
| openHeader.value = false; | ||||||||||||||||
| } | ||||||||||||||||
| </script> | ||||||||||||||||
|
|
||||||||||||||||
|
|
@@ -51,26 +48,22 @@ function closeHeader() { | |||||||||||||||
| justify-content: space-between; | ||||||||||||||||
| " | ||||||||||||||||
| > | ||||||||||||||||
| <el-button style="width: fit-content" @click="openCloseHeader"> | ||||||||||||||||
| {{ showHeaderFlog ? '关闭头部' : '打开头部' }} | ||||||||||||||||
| <el-button style="width: fit-content" @click="toggleHeader"> | ||||||||||||||||
| {{ openHeader ? '关闭头部' : '打开头部' }} | ||||||||||||||||
| </el-button> | ||||||||||||||||
| <MentionSender ref="senderRef" v-model="senderValue"> | ||||||||||||||||
| <MentionSender v-model="senderValue" v-model:open-header="openHeader"> | ||||||||||||||||
| <template #header> | ||||||||||||||||
| <div class="header-self-wrap"> | ||||||||||||||||
| <div class="header-self-title"> | ||||||||||||||||
| <div class="header-left"> | ||||||||||||||||
| 💯 欢迎使用 Element Plus X | ||||||||||||||||
| </div> | ||||||||||||||||
| <div class="header-left">💯 欢迎使用 Element Plus X</div> | ||||||||||||||||
| <div class="header-right"> | ||||||||||||||||
| <el-button @click.stop="closeHeader"> | ||||||||||||||||
| <el-icon><CircleClose /></el-icon> | ||||||||||||||||
| <span>关闭头部</span> | ||||||||||||||||
| </el-button> | ||||||||||||||||
| </div> | ||||||||||||||||
| </div> | ||||||||||||||||
| <div class="header-self-content"> | ||||||||||||||||
| 🦜 自定义头部内容 | ||||||||||||||||
| </div> | ||||||||||||||||
| <div class="header-self-content">🦜 自定义头部内容</div> | ||||||||||||||||
| </div> | ||||||||||||||||
| </template> | ||||||||||||||||
| </MentionSender> | ||||||||||||||||
|
|
||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix sample: use kebab-case argument in DOM templates.
In SFC/DOM templates, the v-model argument must be kebab-cased. Update the snippet.
In apps/docs/en/components/sender/demos/header.vue around lines 15 to 22, the
example uses a camelCase v-model argument (v-model:openHeader) which is invalid
in SFC/DOM templates; update the snippet to use kebab-case for the v-model
argument (v-model:open-header="openHeader") in the template example so it
follows Vue's DOM/SFC template requirements.