Timezone Select 时区选择
基于 虚拟化选择器 USelectV2 的时区选择组件。时区标识列表与 UTC 偏移均来自 moment-timezone:列表为 moment.tz.names();偏移由 moment.utc(...).tz(iana) 在当前时刻计算。展示格式为 (UTC±HH:MM) + IANA,例如 (UTC+08:00) Asia/Shanghai:前半段为固定 UTC 与 moment 算出的 ±HH:MM,右括号与 IANA 之间一个半角空格;选项文案不再做 Intl 本地化。绑定值仍为 IANA 字符串(与展示后缀一致)。
单选
绑定值为 IANA 时区标识字符串(如 Asia/Shanghai)。
Select
当前值:(未选择)
多选
设置 multiple 即可多选;选项较多时可配合 collapse-tags 折叠已选标签。
Select
当前值:(未选择)
API
属性
除下列说明外,其余常用能力(如 size、clearable、filterable、loading、collapse-tags、popper-class 等)与 Virtualized Select 虚拟化选择器 中 USelectV2 的同名属性一致,并透传给底层组件。
| 名称 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| model-value / v-model | 绑定值;单选为 string,多选为 string[] | string / array | — |
| multiple | 是否多选 | boolean | false |
| disabled | 是否禁用(未设置时遵循表单禁用注入) | boolean | — |
| clearable | 是否可清空 | boolean | true |
| filterable | 是否可搜索(建议保持开启,选项量较大) | boolean | true |
| placeholder | 占位文本 | string | 取 uniboot.select.placeholder |
| fit-input-width | 下拉宽度是否与输入框一致;为 false 时按选项文案自动加宽,便于阅读长标签 | boolean / number | false |
| height | 下拉面板高度 | number | 274 |
| item-height | 每项高度 | number | 34 |
| empty-values | 空值判定,参见 config-provider | array | — |
| value-on-clear | 清空时的返回值 | string / number / boolean / Function 等 | — |
事件
| 名称 | 说明 | 类型 |
|---|---|---|
| update:model-value | 选中值变化时触发 | Function |
| change | 值变化且已确认时触发 | 同上 |
| remove-tag | 多选移除标签时触发 | Function |
| visible-change | 下拉展开/收起 | Function |
| focus | 聚焦 | Function |
| blur | 失焦 | Function |
| clear | 点击清空时触发 | Function |
暴露
| 名称 | 说明 |
|---|---|
| selectRef | 内部 USelectV2 实例 |
| focus | 聚焦内部输入 |
| blur | 失焦内部输入 |
工具方法
若需自行拼装展示文案,可引用包内导出:
| 名称 | 说明 |
|---|---|
formatUtcOffsetPart | 将 moment utcOffset 分钟数格式化为 ±HH:MM |
formatUtcOffsetBracket | 格式化为 (UTC±HH:MM) |
getIanaTimeZoneIds | 返回 IANA 时区标识列表(moment.tz.names()) |
getUtcOffsetMinutes | 用 moment 计算某时区在指定时刻相对 UTC 的偏移(分钟) |
buildTimezoneOptionLabel | 生成 (UTC±HH:MM) IANA 完整选项文案 |