Skip to content

SSelect <s-select> ​

목록에서 옵션 하나를 고르는 드롭다운입니다. SSelect은(는) Shopify Polaris <s-select> web component를 위한 타입이 지정된 Vue 3 wrapper입니다.

ts
import { SSelect } from 'polaris-vue-elements'

모범 사례 ​

  • 정해진 선택지에 사용하세요. select는 판매자가 미리 정의된 목록에서 고를 때 적합합니다. 판매자가 직접 값을 입력하거나 긴 목록을 뒤져야 한다면, 입력하는 동안 일치 항목을 제안하는 텍스트 필드나 검색할 수 있는 드롭다운이 더 잘 맞습니다.
  • 옵션 순서를 의도적으로 정하세요. 관련 옵션을 묶거나, 가장 많이 쓰는 옵션을 먼저 두거나, 자연스러운 순서가 없다면 알파벳순으로 정렬해 판매자가 원하는 항목을 빨리 찾게 합니다.
  • 훑어보기 쉬운 레이블을 작성하세요. 각 옵션에 충분한 맥락을 담아, 판매자가 여러 옵션을 열어 읽어 보지 않고도 구분할 수 있게 합니다.
  • 초기 상태를 의도적으로 고르세요. 명확한 기본값이 있다면 옵션을 미리 선택하고, 판매자가 신중하게 골라야 한다면 placeholder를 사용합니다. 초기 상태를 모호하게 두지 마세요.
  • 검증 문제를 설명하세요. 선택이 필수이거나 유효하지 않을 때 error로 판매자가 무엇을 해야 하는지 구체적으로 알려 줍니다. 상황에 맞는 메시지는 일반적인 메시지보다 폼을 더 빨리 완료하도록 돕습니다.
vue
<SSelect label="Shipping speed" placeholder="Choose a shipping speed" required>
  <SOption value="standard">Standard (5–7 business days)</SOption>
  <SOption value="express">Express (2–3 business days)</SOption>
  <SOption value="overnight">Overnight (next business day)</SOption>
</SSelect>

전체 가이드는 <s-select>에 대한 Shopify 모범 사례(영어)를 참고하세요.

예시 ​

United StatesCanadaFranceGermany

Value: (none)

vue
<script setup>
import { ref } from 'vue'
import { SSelect, SOption, SOptionGroup } from 'polaris-vue-elements'

const value = ref('')
</script>

<template>
  <SSelect label="Shipping region" placeholder="Select a region" v-model="value">
    <SOptionGroup label="North America">
      <SOption value="us">United States</SOption>
      <SOption value="ca">Canada</SOption>
    </SOptionGroup>
    <SOptionGroup label="Europe">
      <SOption value="fr">France</SOption>
      <SOption value="de">Germany</SOption>
    </SOptionGroup>
  </SSelect>
  <p>Value: {{ value }}</p>
</template>

v-model ​

<SSelect>의 v-model은 value property에 바인딩되고 change DOM event를 수신합니다.

template
<SSelect v-model="value" />

다음과 동일합니다:

template
<SSelect :value="value" @change="value = $event.target.value" />

Props ​

Prop타입설명
detailsany필드에 대한 맥락이나 안내를 제공하는 추가 텍스트입니다. 이 텍스트는 필드 및 레이블과 함께 표시되어 사용자에게 더 많은 정보나 지침을 제공합니다. 스크린 리더 사용자에게도 노출됩니다.
disabledboolean필드를 비활성화하여 모든 상호작용을 막습니다.
errorany사용자에게 오류를 표시합니다. 즉시 해결해야 하는 문제를 전달하기 위해 필드에 특정한 스타일이 적용됩니다.
icon"color" | "info" | "adjust" | "affiliate" | "airplane" | "alert-bubble" | "alert-circle" | "alert-diamond" … (553 more)필드에 표시할 아이콘 유형입니다.
idstring요소의 고유 식별자입니다.
labelany필드 레이블로 사용할 콘텐츠입니다.
labelAccessibilityVisibility"visible" | "exclusive"컴포넌트 레이블의 표시 여부를 변경합니다. - visible: 레이블이 모든 사용자에게 표시됩니다. - exclusive: 레이블이 시각적으로는 숨겨지지만 접근성 트리에는 남아 있습니다.
namestring가장 가까운 상위 폼 안에서 고유한 필드 식별자입니다.
placeholderstring필드에 입력할 값을 설명하는 짧은 힌트입니다.
requiredboolean필드에 값이 필요한지 여부입니다. 이 요구 사항은 필드에 시맨틱 의미를 더하지만 자동으로 오류를 표시하지는 않습니다. 이 필드가 비어 있을 때 오류를 표시하려면 error 속성을 사용하면 됩니다.
valuestring

위의 일부 타입 열은 읽기 쉽도록 축약되었습니다. 전체 union은 라이브러리에서 생성된 TypeScript 타입(src/lib/generated/types.ts)에 있습니다.

Events ​

Event타입
blurFocusEvent
changeEvent
focusFocusEvent
inputEvent

<SSelect>에서 @blur 형식의 리스너로 이 events를 수신하세요.

Slots ​

Slot설명
default드롭다운 목록에 표시되는 선택 가능한 옵션입니다. 개별 선택 항목으로 옵션 컴포넌트를, 관련 옵션을 레이블이 있는 논리적 그룹으로 정리하기 위해 옵션 그룹 컴포넌트를 허용합니다.
details
error

MIT 라이선스로 배포됩니다. Vue 로고: Evan You, CC BY-NC-SA 4.0.