Skip to content

SDateField <s-date-field> ​

用于输入日期的输入框。 SDateField 是 Shopify Polaris <s-date-field> web component 的带类型 Vue 3 wrapper。

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

最佳实践 ​

  • 从合理的日期开始。 编辑时用现有日期预填 value,给出建议时则用最可能的选项预填。
  • 将日期限制在合理范围内。 使用 allow 和 disallow 缩小商家可选的日期范围,例如将排期字段限制为未来的日期,或将业务字段限制为周一至周五。
  • 在 details 中说明限制条件。 写明“必须是未来的日期”之类的要求,让商家在选择之前就了解规则。
  • 让 error 消息具有可操作性。 当日期无效时,告诉商家如何修正。

参阅 Shopify 关于 <s-date-field> 的最佳实践(英文)以获取完整指南。

示例 ​

Value: (empty)

vue
<script setup>
import { ref } from 'vue'
import { SDateField } from 'polaris-vue-elements'

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

<template>
  <SDateField label="Delivery date" placeholder="YYYY-MM-DD" v-model="value" />
  <p>Value: {{ value }}</p>
</template>

v-model ​

<SDateField> 上的 v-model 绑定到 value property,并监听 input DOM 事件。

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

等价于:

template
<SDateField :value="value" @input="value = $event.target.value" />

Props ​

Prop类型说明
allowstring可以选择的日期。以逗号分隔的日期或日期范围列表。逗号后允许有空白。默认值 '' 允许所有日期。 - YYYY-MM-DD 格式的日期允许单个日期。 - YYYY-MM 格式的日期允许整个月份。 - YYYY 格式的日期允许整年。 - 范围表示为 start--end。 - 范围包含两端。 - 如果省略 start 或 end,则该方向上的范围不受限制。 - 如果 start 省略了日期的部分内容,则假定为可能的最小值。因此 2024-- 等同于 2024-01-01--。 - 如果 end 省略了日期的部分内容,则假定为可能的最大值。因此 --2024 等同于 --2024-12-31。 - -- 两侧都允许有空白。
allowDaysstring可以选择的星期几。它们与 allow 和 disallow 的结果取交集。以逗号分隔的星期列表。逗号后允许有空白。默认值 '' 不会影响 allow 和 disallow 的结果。可用值为 sunday、monday、tuesday、wednesday、thursday、friday、saturday。
autocomplete"bday-day" | "bday-month" | "bday-year" | "bday" | "cc-expiry-month" | "cc-expiry-year" | "cc-expiry"关于字段预期内容的提示。设置为 on(默认值)时,表示该字段应支持自动填充,但没有关于预期内容的更多语义信息。设置为 off 时,表示该字段包含敏感信息或永远不会被保存的内容,例如一次性验证码。此外,也可以提供一个值,描述希望在自动填充时填入该字段的具体数据。
defaultValuestring字段首次渲染时的初始日期值,格式为 YYYY-MM-DD。空字符串表示初始时未选择日期。
defaultViewstring默认显示的月份,格式为 YYYY-MM。在设置 view(直接设置或因用户交互而设置)之前使用此值。默认为用户所在区域的当前月份。
detailsany为字段提供上下文或指引的附加文本。该文本会与字段及其标签一起显示,为用户提供更多信息或说明。它也会提供给屏幕阅读器用户。
disabledboolean禁用字段,不允许任何交互。
disallowstring不可选择的日期。它们会从 allow 中排除。以逗号分隔的日期或日期范围列表。逗号后允许有空白。默认值 '' 不会影响 allow。 - YYYY-MM-DD 格式的日期禁止单个日期。 - YYYY-MM 格式的日期禁止整个月份。 - YYYY 格式的日期禁止整年。 - 范围表示为 start--end。 - 范围包含两端。 - 如果省略 start 或 end,则该方向上的范围不受限制。 - 如果 start 省略了日期的部分内容,则假定为可能的最小值。因此 2024-- 等同于 2024-01-01--。 - 如果 end 省略了日期的部分内容,则假定为可能的最大值。因此 --2024 等同于 --2024-12-31。 - -- 两侧都允许有空白。
disallowDaysstring不可选择的星期几。它们会从 allowDays 中排除,并与 allow 和 disallow 的结果取交集。以逗号分隔的星期列表。逗号后允许有空白。默认值 '' 不会影响 allowDays。可用值为 sunday、monday、tuesday、wednesday、thursday、friday、saturday。
errorany向用户提示错误。字段会采用特定的样式处理,以传达必须立即解决的问题。
idstring元素的唯一标识符。
labelany用作字段标签的内容。
labelAccessibilityVisibility"visible" | "exclusive"更改组件标签的可见性。 - visible:标签对所有用户可见。 - exclusive:标签在视觉上隐藏,但仍保留在无障碍树中。
namestring字段的标识符,在最近的外层表单内唯一。
placeholderstring描述字段预期值的简短提示。
readOnlyboolean该字段不能由用户编辑。它可以获得焦点,并会被屏幕阅读器朗读。
requiredboolean字段是否需要填写值。此要求会为字段添加语义,但不会自动显示错误。如果希望在字段为空时显示错误,可以使用 error 属性。
valuestring当前选中的日期,格式为 YYYY-MM-DD。空字符串表示未选择日期。
viewstring显示的月份,格式为 YYYY-MM。此值变化时会调用 onViewChange。默认为 defaultView。

Events ​

Event类型
blurEvent
changeEvent
focusEvent
inputEvent
invalidCustomEvent
viewchangeCustomEvent

在 <SDateField> 上使用 @blur 形式的监听器来监听这些事件。

Slots ​

Slot说明
details
error

基于 MIT 许可证发布。Vue 标志由 Evan You 设计,采用 CC BY-NC-SA 4.0 许可。