Skip to content

แผงด้านข้างแบบซ้อน

คอมโพเนนต์ StackingSidepanel ให้วิธีการที่มีประสิทธิภาพในการแสดงแผงด้านข้างหลายแผงที่ซ้อนกันในแนวนอนข้างๆ กัน สิ่งนี้สร้างลำดับชั้นภาพและการไหลของการนำทางที่สมบูรณ์แบบสำหรับกระบวนการหลายขั้นตอน อินเทอร์เฟซแบบเจาะลึก หรือมุมมองหลัก-รายละเอียด

ภาพรวม

แผงด้านข้างแบบซ้อนเหมาะสำหรับ:

  • เวิร์กโฟลว์หลายขั้นตอน: นำผู้ใช้ผ่านขั้นตอนตามลำดับโดยไม่สูญเสียบริบท
  • มุมมองหลัก-รายละเอียด: แสดงรายการในแผงหนึ่งและรายละเอียดในอีกแผงหนึ่ง
  • การนำทางที่ซ้อนกัน: อนุญาตให้ผู้ใช้เจาะลึกไปยังระดับเนื้อหาที่ลึกขึ้น
  • ข้อมูลที่เกี่ยวข้อง: แสดงเนื้อหาเสริมในขณะที่รักษาเนื้อหาหลักให้มองเห็นได้

คุณลักษณะสำคัญ

  • การเปิดเผยแบบก้าวหน้า: แสดงข้อมูลในความก้าวหน้าทางตรรกะ
  • รักษาบริบท: ผู้ใช้สามารถเห็นแผงก่อนหน้าได้ในขณะที่ทำงานในแผงปัจจุบัน
  • การกำหนดค่าที่ยืดหยุ่น: ปรับแต่งความกว้าง แอนิเมชัน และการเปลี่ยน
  • การออกแบบที่ตอบสนอง: ทำงานได้ดีบนขนาดหน้าจอต่างๆ
  • การเข้าถึง: ออกแบบด้วยการนำทางด้วยแป้นพิมพ์และโปรแกรมอ่านหน้าจอ

สำคัญ

คอมโพเนนต์ StackingSidepanel ออกแบบมาเพื่อทำงานกับแผงด้านข้างที่วางตำแหน่งด้านขวาเท่านั้น ตรวจสอบให้แน่ใจว่าแผงด้านข้างทั้งหมดภายในแผงด้านข้างแบบซ้อนถูกวางตำแหน่งด้านขวาและมีพร็อพส์ is-stacking ตั้งค่าเป็น true

การใช้งานพื้นฐาน

แผงที่ใช้งานอยู่: ไม่มี

vue
<template>
  <spr-button @click="stackingSidepanel?.showPanel('sidepanel-1')">แสดงแผง 1</spr-button>
  <span class="spr-body-md">แผงที่ใช้งานอยู่: {{ activePanelText }}</span>

  <spr-stacking-sidepanel ref="stacking-sidepanel" v-model:stack="activePanel" @update:stack="activePanelsHandler">
    <template #sidepanel-1> <!-- แผงด้านข้างแบบซ้อนใช้สล็อตที่มีชื่อที่กำหนดเอง ตรวจสอบให้แน่ใจว่าชื่อสล็อตไม่ซ้ำกัน -->
      <!-- แผงด้านข้างแบบซ้อนรองรับเฉพาะแผงด้านข้างที่วางตำแหน่งด้านขวาเท่านั้น นอกจากนี้ ให้ตั้งค่า `is-stacking` เป็น true -->
      <spr-sidepanel
        size="sm"
        position="right"
        :is-stacking="true"
        header-title="แผงด้านข้าง 1"
        @close="stackingSidepanel?.hidePanel('sidepanel-1')"
      >
        <div class="spr-p-size-spacing-2xs">
          <spr-button @click="stackingSidepanel?.showPanel('sidepanel-2')">แสดงแผง 2</spr-button>
        </div>
      </spr-sidepanel>
    </template>
    <template #sidepanel-2>
      <spr-sidepanel
        size="md"
        position="right"
        :is-stacking="true"
        header-title="แผงด้านข้าง 2"
        @close="stackingSidepanel?.hidePanel('sidepanel-2')"
      >
        <div class="spr-p-size-spacing-2xs">
          <spr-button @click="stackingSidepanel?.showPanel('sidepanel-3')">แสดงแผง 3</spr-button>
        </div>
      </spr-sidepanel>
    </template>
    <template #sidepanel-3>
      <spr-sidepanel
        size="lg"
        position="right"
        :is-stacking="true"
        header-title="แผงด้านข้าง 3"
        @close="stackingSidepanel?.hidePanel('sidepanel-3')"
      >
        <div class="spr-p-size-spacing-2xs">
          <spr-button @click="stackingSidepanel?.hidePanel('sidepanel-3')">ปิดแผง 3</spr-button>
        </div>
      </spr-sidepanel>
    </template>
  </spr-stacking-sidepanel>
</template>

<script lang="ts" setup>
import { ref, useTemplateRef } from 'vue';

const activePanel = ref<string[]>([]);
const stackingSidepanel = useTemplateRef("stacking-sidepanel"); // ใช้การอ้างอิงคอมโพเนนต์เพื่อเข้าถึงเมธอดที่เปิดเผย

const activePanelText = ref("ไม่มี");
const activePanelsHandler = (panel: string[]) => {
  activePanelText.value = panel.length > 0 ? panel.join(', ') : 'ไม่มี';
}
</script>

ข้อมูลอ้างอิง API

พร็อพส์

ชื่อคำอธิบายประเภทค่าเริ่มต้น
stackอาร์เรย์ของชื่อแผงที่ใช้งานอยู่ ใช้กับ v-model:stack สำหรับการผูกสองทางstring[][]

อีเวนต์

ชื่อคำอธิบายพารามิเตอร์
update:stackปล่อยออกมาทุกครั้งที่กองแผงเปลี่ยนแปลง(panels: string[])

เมธอดที่เปิดเผย

ชื่อคำอธิบายพารามิเตอร์
showPanelแสดงแผงตามชื่อสล็อต(name: string)
hidePanelซ่อนแผงตามชื่อสล็อต(name: string)

สล็อต

ชื่อคำอธิบาย
สล็อตที่มีชื่อแต่ละแผงจะแสดงในสล็อตที่มีชื่อ ใช้ไวยากรณ์ <template #panelName> เพื่อกำหนดเนื้อหาสำหรับแต่ละแผง ตรวจสอบให้แน่ใจว่าชื่อสล็อตไม่ซ้ำกันเพื่อหลีกเลี่ยงความขัดแย้ง

แนวทางปฏิบัติที่ดีที่สุด

แนวทางคำอธิบาย
รักษาลำดับชั้นบริบทออกแบบแผงเพื่อแสดงลำดับชั้นข้อมูลที่ชัดเจน โดยแต่ละแผงใหม่จะเปิดเผยเนื้อหาที่ละเอียดหรือเฉพาะเจาะจงมากขึ้น
ขนาดแผงที่สอดคล้องกันพิจารณาใช้ขนาดแผงที่สอดคล้องกันหรือความก้าวหน้าทางตรรกะของขนาด (เช่น แคบไปกว้าง) เพื่อรักษาความกลมกลืนทางภาพ
เส้นทางการนำทางที่ชัดเจนให้วิธีที่ชัดเจนในการนำทางระหว่างแผง เช่น ปุ่ม "กลับ" หรือ breadcrumb
จำกัดความลึกของกองเพื่อป้องกันการเลื่อนแนวนอนที่มากเกินไป จำกัดจำนวนแผงที่เปิดพร้อมกันไว้ที่ 3-4 แผงสูงสุด
การพึ่งพาผลแผงเมื่อแผงหลักถูกปิด พิจารณาว่าผลแผงย่อยควรปิดโดยอัตโนมัติหรือไม่เพื่อรักษาความสัมพันธ์ทางตรรกะ
การพิจารณาประสิทธิภาพสำหรับเนื้อหาแผงที่ซับซ้อน ใช้การโหลดแบบ lazy หรือการแสดงผลแบบมีเงื่อนไขเพื่อปรับปรุงประสิทธิภาพ
การออกแบบที่ตอบสนองตรวจสอบให้แน่ใจว่าพฤติกรรมการซ้อนทำงานได้ดีบนขนาดหน้าจอที่แตกต่างกัน โดยอาจยุบเป็นมุมมองแผงเดียวบนอุปกรณ์มือถือ