@ticatec/uniface-element 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion/README.md +169 -0
- package/dist/accordion/README_CN.md +176 -0
- package/dist/action-bar/README.md +275 -0
- package/dist/action-bar/README_CN.md +285 -0
- package/dist/app-layout/README.md +374 -0
- package/dist/app-layout/README_CN.md +381 -0
- package/dist/app-top-bar/README.md +357 -0
- package/dist/app-top-bar/README_CN.md +365 -0
- package/dist/attachment-files/AttachmentFilesField.svelte +67 -1
- package/dist/attachment-files/AttachmentFilesField.svelte.d.ts +8 -1
- package/dist/base-calendar/CalendarBase.svelte +0 -3
- package/dist/box/README.md +385 -0
- package/dist/box/README_CN.md +393 -0
- package/dist/breadcrumbs/README.md +442 -0
- package/dist/breadcrumbs/README_CN.md +442 -0
- package/dist/button/Button.svelte +27 -7
- package/dist/button/Button.svelte.d.ts +3 -1
- package/dist/button/IconButton.svelte +26 -6
- package/dist/button/IconButton.svelte.d.ts +3 -1
- package/dist/button/IconButton_README.md +513 -0
- package/dist/button/IconButton_README_CN.md +513 -0
- package/dist/button/README.md +428 -0
- package/dist/button/README_CN.md +428 -0
- package/dist/button/TextButton.svelte +26 -6
- package/dist/button/TextButton.svelte.d.ts +3 -1
- package/dist/button/TextButton_README.md +571 -0
- package/dist/button/TextButton_README_CN.md +571 -0
- package/dist/card/README.md +666 -0
- package/dist/card/README_CN.md +666 -0
- package/dist/cascade-options-select/CascadeOptionSelect.svelte +43 -7
- package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +3 -4
- package/dist/cascade-options-select/README.md +663 -2
- package/dist/cascade-options-select/README_CN.md +664 -0
- package/dist/checkbox/CheckBox.svelte +20 -6
- package/dist/checkbox/CheckBox.svelte.d.ts +4 -2
- package/dist/checkbox/README.md +562 -0
- package/dist/checkbox/README_CN.md +727 -0
- package/dist/common-editor/NumberInput.svelte +39 -26
- package/dist/common-editor/NumberInput.svelte.d.ts +5 -1
- package/dist/concise-data-table/ConciseListTable.svelte +133 -36
- package/dist/concise-data-table/ConciseListTable.svelte.d.ts +8 -1
- package/dist/concise-data-table/DataCell.svelte +5 -6
- package/dist/concise-data-table/DataRow.svelte +22 -2
- package/dist/concise-data-table/DataRow.svelte.d.ts +1 -0
- package/dist/concise-data-table/README.md +606 -0
- package/dist/concise-data-table/README_CN.md +611 -0
- package/dist/context-menu/ContextMenu.svelte +138 -21
- package/dist/context-menu/ContextMenu.svelte.d.ts +5 -0
- package/dist/context-menu/ContextMenuItem.d.ts +20 -4
- package/dist/context-menu/README.md +551 -0
- package/dist/context-menu/README_CN.md +551 -0
- package/dist/criteria-field/CriteriaField.svelte +3 -5
- package/dist/criteria-field/README.md +532 -0
- package/dist/criteria-field/README_CN.md +532 -0
- package/dist/data-table/README.md +712 -0
- package/dist/data-table/README_CN.md +712 -0
- package/dist/date-picker/DatePicker.svelte +44 -7
- package/dist/date-picker/DatePicker.svelte.d.ts +3 -4
- package/dist/date-picker/DateTimePicker.svelte +32 -8
- package/dist/date-picker/DateTimePicker.svelte.d.ts +3 -4
- package/dist/date-picker/README.md +326 -0
- package/dist/date-picker/README_CN.md +316 -0
- package/dist/date-picker/ScrollBar.svelte +18 -8
- package/dist/date-picker/ScrollBar.svelte.d.ts +1 -1
- package/dist/date-picker/TimePanel.svelte +5 -5
- package/dist/date-picker/TimePanel.svelte.d.ts +1 -1
- package/dist/date-range/README.md +374 -0
- package/dist/date-range/README_CN.md +374 -0
- package/dist/dialog/DialogBoard.svelte +1 -1
- package/dist/dialog/README.md +596 -0
- package/dist/dialog/README_CN.md +596 -0
- package/dist/drawer/README.md +679 -1
- package/dist/drawer/README_CN.md +679 -0
- package/dist/group-box/group-check-box/GroupCheckBox.svelte +62 -5
- package/dist/group-box/group-check-box/GroupCheckBox.svelte.d.ts +7 -2
- package/dist/group-box/group-check-box/README.md +749 -0
- package/dist/group-box/group-check-box/README_CN.md +750 -0
- package/dist/group-box/group-radio-box/GroupRadioBox.svelte +69 -4
- package/dist/group-box/group-radio-box/GroupRadioBox.svelte.d.ts +8 -2
- package/dist/group-box/group-radio-box/README.md +920 -0
- package/dist/group-box/group-radio-box/README_CN.md +920 -0
- package/dist/image-files/README.md +1346 -0
- package/dist/image-files/README_CN.md +1346 -0
- package/dist/input-options-select/InputOptionsSelect.svelte +161 -65
- package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +4 -1
- package/dist/lib/forwardAllEvents.d.ts +3 -0
- package/dist/lib/forwardAllEvents.js +24 -0
- package/dist/list-box/README.md +579 -0
- package/dist/list-box/README_CN.md +682 -0
- package/dist/lookup-editor/LookupEditor.svelte +15 -3
- package/dist/lookup-editor/LookupEditor.svelte.d.ts +3 -4
- package/dist/lookup-editor/README.md +684 -0
- package/dist/lookup-editor/README_CN.md +684 -0
- package/dist/memo-editor/MemoEditor.svelte +77 -27
- package/dist/memo-editor/MemoEditor.svelte.d.ts +6 -3
- package/dist/memo-editor/README.md +819 -0
- package/dist/memo-editor/README_CN.md +819 -0
- package/dist/message-box/README.md +398 -0
- package/dist/message-box/README_CN.md +398 -0
- package/dist/number-editor/NumberEditor.svelte +2 -2
- package/dist/number-editor/NumberEditor.svelte.d.ts +1 -1
- package/dist/number-editor/README.md +353 -22
- package/dist/number-editor/README_CN.md +357 -0
- package/dist/number-range/README.md +443 -0
- package/dist/number-range/README_CN.md +443 -0
- package/dist/options-multi-select/OptionsMultiSelect.svelte +87 -12
- package/dist/options-multi-select/OptionsMultiSelect.svelte.d.ts +3 -1
- package/dist/options-multi-select/README.md +480 -0
- package/dist/options-multi-select/README_CN.md +480 -0
- package/dist/options-select/OptionsSelect.svelte +36 -5
- package/dist/options-select/OptionsSelect.svelte.d.ts +3 -4
- package/dist/options-select/README.md +632 -0
- package/dist/options-select/README_CN.md +632 -0
- package/dist/page/README.md +605 -0
- package/dist/page/README_CN.md +605 -0
- package/dist/pagination/README.md +946 -0
- package/dist/pagination/README_CN.md +946 -0
- package/dist/pagination-panel/README.md +1075 -0
- package/dist/pagination-panel/README_CN.md +1075 -0
- package/dist/popup-hint/README.md +841 -0
- package/dist/popup-hint/README_CN.md +840 -0
- package/dist/progress-bar/README.md +242 -0
- package/dist/progress-bar/README_CN.md +242 -0
- package/dist/progress-step-bar/README.md +316 -0
- package/dist/progress-step-bar/README_CN.md +316 -0
- package/dist/prompts-text-editor/PromptsTextEditor.svelte +6 -3
- package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +3 -1
- package/dist/prompts-text-editor/README.md +329 -0
- package/dist/prompts-text-editor/README_CN.md +329 -0
- package/dist/property-editor/README.md +969 -0
- package/dist/property-editor/README_CN.md +969 -0
- package/dist/radio-button/README.md +372 -0
- package/dist/radio-button/README_CN.md +372 -0
- package/dist/radio-button/RadioButton.svelte +32 -3
- package/dist/radio-button/RadioButton.svelte.d.ts +12 -1
- package/dist/search-box/README.md +425 -0
- package/dist/search-box/README_CN.md +424 -0
- package/dist/search-box/SearchBox.svelte +22 -6
- package/dist/search-box/SearchBox.svelte.d.ts +4 -1
- package/dist/tabs/README.md +919 -0
- package/dist/tabs/README_CN.md +920 -0
- package/dist/tag/README.md +922 -0
- package/dist/tag/README_CN.md +922 -0
- package/dist/text-editor/PasswordEditor.svelte +17 -2
- package/dist/text-editor/PasswordEditor.svelte.d.ts +3 -3
- package/dist/text-editor/PasswordEditor_README.md +551 -0
- package/dist/text-editor/PasswordEditor_README_CN.md +551 -0
- package/dist/text-editor/README.md +466 -0
- package/dist/text-editor/README_CN.md +466 -0
- package/dist/text-editor/TextEditor.svelte +51 -19
- package/dist/text-editor/TextEditor.svelte.d.ts +0 -1
- package/dist/ticatec-uniface-web.css +1 -0
- package/dist/time-editor/README.md +498 -24
- package/dist/time-editor/README_CN.md +498 -0
- package/dist/time-editor/TimeEditor.svelte +7 -3
- package/dist/time-editor/TimeEditor.svelte.d.ts +3 -1
- package/dist/toast/README.md +667 -0
- package/dist/toast/README_CN.md +667 -0
- package/dist/transfer/README.md +795 -0
- package/dist/transfer/Transfer.svelte +6 -4
- package/dist/transfer/Transfer.svelte.d.ts +3 -1
- package/dist/tree-view/README.md +761 -0
- package/dist/tree-view/README_CN.md +761 -0
- package/dist/tree-view/TreeView.svelte +5 -3
- package/dist/tree-view/TreeView.svelte.d.ts +3 -1
- package/dist/unit-number-editor/README.md +546 -20
- package/dist/unit-number-editor/README_CN.md +525 -0
- package/dist/unit-number-editor/UnitNumberEditor.svelte +62 -8
- package/dist/unit-number-editor/UnitNumberEditor.svelte.d.ts +5 -1
- package/docs/form-field/cn/README_CN.md +364 -0
- package/docs/form-field/en/README.md +364 -0
- package/docs/form-panel/flex-form/cn/README_CN.md +586 -0
- package/docs/form-panel/flex-form/en/README.md +586 -0
- package/docs/form-panel/flex-row-form/cn/README_CN.md +787 -0
- package/docs/form-panel/flex-row-form/en/README.md +787 -0
- package/docs/form-panel/grid-form/en/README.md +744 -0
- package/package.json +1 -1
- package/dist/drawer/README-CN.md +0 -1
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
# 日期选择器 & 日期时间选择器组件
|
|
2
|
+
|
|
3
|
+
一个基于 Svelte 构建的全面日期和时间选择组件库,提供灵活的日期和日期时间选择功能,支持多种显示模式和配置。
|
|
4
|
+
|
|
5
|
+
## 功能
|
|
6
|
+
|
|
7
|
+
- **日期选择器**:带日历弹窗的简单日期选择
|
|
8
|
+
- **日期时间选择器**:包含日历和时间面板的日期时间选择
|
|
9
|
+
- 多种视觉变体(普通、轮廓、填充)
|
|
10
|
+
- 支持键盘导航
|
|
11
|
+
- 最小/最大日期限制
|
|
12
|
+
- 支持必填字段
|
|
13
|
+
- 只读和禁用状态
|
|
14
|
+
- 仅显示模式,用于只读展示
|
|
15
|
+
- 国际化日期格式
|
|
16
|
+
- 支持 ARIA 的可访问性设计
|
|
17
|
+
|
|
18
|
+
## 安装
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import DatePicker from '@ticatec/uniface-element/DatePicker';
|
|
22
|
+
import DateTimePicker from '@ticatec/uniface-element/DateTimePicker';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 日期选择器
|
|
26
|
+
|
|
27
|
+
### 基本用法
|
|
28
|
+
|
|
29
|
+
```svelte
|
|
30
|
+
<script>
|
|
31
|
+
import DatePicker from '@ticatec/uniface-element/DatePicker;
|
|
32
|
+
|
|
33
|
+
let selectedDate = null;
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<DatePicker bind:value={selectedDate} placeholder="选择日期" />
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 属性
|
|
40
|
+
|
|
41
|
+
| 属性 | 类型 | 默认值 | 描述 |
|
|
42
|
+
|------|------|---------|-------------|
|
|
43
|
+
| `value` | `Date \| null` | `null` | 选中的日期值 |
|
|
44
|
+
| `variant` | `'' \| 'plain' \| 'outlined' \| 'filled'` | `''` | 视觉样式变体 |
|
|
45
|
+
| `disabled` | `boolean` | `false` | 禁用选择器 |
|
|
46
|
+
| `readonly` | `boolean` | `false` | 使选择器只读 |
|
|
47
|
+
| `compact` | `boolean` | `false` | 紧凑显示模式 |
|
|
48
|
+
| `mandatory` | `boolean` | `false` | 必填字段(隐藏清除按钮) |
|
|
49
|
+
| `style` | `string` | `''` | 自定义 CSS 样式 |
|
|
50
|
+
| `placeholder` | `string` | `""` | 输入占位符文本 |
|
|
51
|
+
| `displayMode` | `DisplayMode` | `DisplayMode.Edit` | 显示模式(编辑/查看) |
|
|
52
|
+
| `min` | `UniDate` | `null` | 可选择的最小日期 |
|
|
53
|
+
| `max` | `UniDate` | `null` | 可选择的最大日期 |
|
|
54
|
+
| `onchange` | `OnChangeHandler<Date>` | `null` | 更改事件处理程序 |
|
|
55
|
+
| `onfocus` | `() => void` | `null` | 聚焦事件处理程序 |
|
|
56
|
+
| `onblur` | `() => void` | `null` | 失焦事件处理程序 |
|
|
57
|
+
|
|
58
|
+
### 方法
|
|
59
|
+
|
|
60
|
+
| 方法 | 描述 |
|
|
61
|
+
|--------|-------------|
|
|
62
|
+
| `setFocus()` | 以编程方式聚焦选择器 |
|
|
63
|
+
|
|
64
|
+
### 示例
|
|
65
|
+
|
|
66
|
+
#### 基本日期选择器
|
|
67
|
+
```svelte
|
|
68
|
+
<DatePicker bind:value={enrolmentDate} placeholder="选择注册日期" />
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
#### 轮廓必填日期选择器
|
|
72
|
+
```svelte
|
|
73
|
+
<DatePicker
|
|
74
|
+
variant="outlined"
|
|
75
|
+
mandatory
|
|
76
|
+
bind:value={birthday}
|
|
77
|
+
placeholder="出生日期(必填)"
|
|
78
|
+
/>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### 填充日期选择器
|
|
82
|
+
```svelte
|
|
83
|
+
<DatePicker
|
|
84
|
+
variant="filled"
|
|
85
|
+
bind:value={admissionDate}
|
|
86
|
+
placeholder="入学日期"
|
|
87
|
+
/>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### 带最小/最大日期限制的日期选择器
|
|
91
|
+
```svelte
|
|
92
|
+
<!-- 仅允许选择截至今天的日期 -->
|
|
93
|
+
<DatePicker
|
|
94
|
+
variant="filled"
|
|
95
|
+
max={new Date()}
|
|
96
|
+
bind:value={completedDate}
|
|
97
|
+
placeholder="完成日期"
|
|
98
|
+
/>
|
|
99
|
+
|
|
100
|
+
<!-- 仅允许选择明天及以后的日期 -->
|
|
101
|
+
<DatePicker
|
|
102
|
+
variant="filled"
|
|
103
|
+
min={new Date()}
|
|
104
|
+
bind:value={bookFrom}
|
|
105
|
+
placeholder="预订开始日期"
|
|
106
|
+
/>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### 禁用和只读状态
|
|
110
|
+
```svelte
|
|
111
|
+
<!-- 禁用 -->
|
|
112
|
+
<DatePicker variant="filled" disabled bind:value={admissionDate} />
|
|
113
|
+
|
|
114
|
+
<!-- 只读 -->
|
|
115
|
+
<DatePicker variant="filled" readonly bind:value={admissionDate} />
|
|
116
|
+
|
|
117
|
+
<!-- 仅显示模式 -->
|
|
118
|
+
<DatePicker
|
|
119
|
+
displayMode={DisplayMode.View}
|
|
120
|
+
variant="filled"
|
|
121
|
+
readonly
|
|
122
|
+
bind:value={admissionDate}
|
|
123
|
+
/>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 日期时间选择器
|
|
127
|
+
|
|
128
|
+
### 基本用法
|
|
129
|
+
|
|
130
|
+
```svelte
|
|
131
|
+
<script>
|
|
132
|
+
import DateTimePicker from '@ticatec/uniface-element/DateTimePicker';
|
|
133
|
+
|
|
134
|
+
let selectedDateTime = null;
|
|
135
|
+
</script>
|
|
136
|
+
|
|
137
|
+
<DateTimePicker bind:value={selectedDateTime} placeholder="选择日期和时间" />
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 属性
|
|
141
|
+
|
|
142
|
+
| 属性 | 类型 | 默认值 | 描述 |
|
|
143
|
+
|------|------|---------|-------------|
|
|
144
|
+
| `value` | `UniDate` | `null` | 选中的日期时间值 |
|
|
145
|
+
| `variant` | `'' \| 'plain' \| 'outlined' \| 'filled'` | `''` | 视觉样式变体 |
|
|
146
|
+
| `disabled` | `boolean` | `false` | 禁用选择器 |
|
|
147
|
+
| `readonly` | `boolean` | `false` | 使选择器只读 |
|
|
148
|
+
| `compact` | `boolean` | `false` | 紧凑显示模式 |
|
|
149
|
+
| `mandatory` | `boolean` | `false` | 必填字段(隐藏清除按钮) |
|
|
150
|
+
| `style` | `string` | `''` | 自定义 CSS 样式 |
|
|
151
|
+
| `placeholder` | `string` | `""` | 输入占位符文本 |
|
|
152
|
+
| `displayMode` | `DisplayMode` | `DisplayMode.Edit` | 显示模式(编辑/查看) |
|
|
153
|
+
| `min` | `UniDate` | `null` | 可选择的最小日期 |
|
|
154
|
+
| `max` | `UniDate` | `null` | 可选择的最大日期 |
|
|
155
|
+
| `precision` | `"H" \| "M" \| "S"` | `"M"` | 时间精度(小时/分钟/秒) |
|
|
156
|
+
| `onchange` | `OnChangeHandler<Date>` | `null` | 更改事件处理程序 |
|
|
157
|
+
| `onfocus` | `() => void` | `null` | 聚焦事件处理程序 |
|
|
158
|
+
| `onblur` | `() => void` | `null` | 失焦事件处理程序 |
|
|
159
|
+
|
|
160
|
+
### 方法
|
|
161
|
+
|
|
162
|
+
| 方法 | 描述 |
|
|
163
|
+
|--------|-------------|
|
|
164
|
+
| `setFocus()` | 以编程方式聚焦选择器 |
|
|
165
|
+
|
|
166
|
+
### 示例
|
|
167
|
+
|
|
168
|
+
#### 基本日期时间选择器
|
|
169
|
+
```svelte
|
|
170
|
+
<DateTimePicker bind:value={cutoffTime} placeholder="选择截止时间" />
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
#### 秒精度日期时间选择器
|
|
174
|
+
```svelte
|
|
175
|
+
<DateTimePicker
|
|
176
|
+
variant="outlined"
|
|
177
|
+
precision="S"
|
|
178
|
+
mandatory
|
|
179
|
+
bind:value={releaseDate}
|
|
180
|
+
placeholder="发布日期时间(精确到秒)"
|
|
181
|
+
/>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
#### 小时精度日期时间选择器
|
|
185
|
+
```svelte
|
|
186
|
+
<DateTimePicker
|
|
187
|
+
variant="filled"
|
|
188
|
+
precision="H"
|
|
189
|
+
bind:value={appointmentTime}
|
|
190
|
+
placeholder="预约时间(小时精度)"
|
|
191
|
+
/>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## 时间精度
|
|
195
|
+
|
|
196
|
+
`DateTimePicker` 的 `precision` 属性控制时间粒度:
|
|
197
|
+
|
|
198
|
+
- **"H"**:小时精度(YYYY-MM-DD HH:00)
|
|
199
|
+
- **"M"**:分钟精度(YYYY-MM-DD HH:mm) - 默认
|
|
200
|
+
- **"S"**:秒精度(YYYY-MM-DD HH:mm:ss)
|
|
201
|
+
|
|
202
|
+
## 显示模式
|
|
203
|
+
|
|
204
|
+
两种组件均通过 `displayMode` 属性支持不同的显示模式:
|
|
205
|
+
|
|
206
|
+
- **`DisplayMode.Edit`**:完整编辑功能(默认)
|
|
207
|
+
- **`DisplayMode.View`**:只读显示模式
|
|
208
|
+
|
|
209
|
+
## 视觉变体
|
|
210
|
+
|
|
211
|
+
两种组件支持多种视觉样式:
|
|
212
|
+
|
|
213
|
+
- **默认**(`''`):基本样式
|
|
214
|
+
- **`plain`**:极简样式
|
|
215
|
+
- **`outlined`**:轮廓边框样式
|
|
216
|
+
- **`filled`**:填充背景样式
|
|
217
|
+
|
|
218
|
+
## 键盘导航
|
|
219
|
+
|
|
220
|
+
两种组件均支持键盘导航:
|
|
221
|
+
|
|
222
|
+
- **Backspace/Delete**:清除选中的日期/时间
|
|
223
|
+
- **Escape**:关闭弹窗
|
|
224
|
+
- **Tab**:在界面中导航
|
|
225
|
+
- **Enter**:确认选择(在日期时间选择器中)
|
|
226
|
+
|
|
227
|
+
## 可访问性
|
|
228
|
+
|
|
229
|
+
- 全面支持屏幕阅读器的 ARIA
|
|
230
|
+
- 键盘导航
|
|
231
|
+
- 焦点管理
|
|
232
|
+
- 适当的标签和描述
|
|
233
|
+
|
|
234
|
+
## 日期格式
|
|
235
|
+
|
|
236
|
+
- **日期选择器**:YYYY-MM-DD
|
|
237
|
+
- **日期时间选择器**:
|
|
238
|
+
- 小时精度:YYYY-MM-DD HH:mm
|
|
239
|
+
- 分钟精度:YYYY-MM-DD HH:mm
|
|
240
|
+
- 秒精度:YYYY-MM-DD HH:mm:ss
|
|
241
|
+
|
|
242
|
+
## 事件处理
|
|
243
|
+
|
|
244
|
+
```svelte
|
|
245
|
+
<script>
|
|
246
|
+
function handleDateChange(date) {
|
|
247
|
+
console.log('选择日期:', date);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
function handleFocus() {
|
|
251
|
+
console.log('选择器聚焦');
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function handleBlur() {
|
|
255
|
+
console.log('选择器失焦');
|
|
256
|
+
}
|
|
257
|
+
</script>
|
|
258
|
+
|
|
259
|
+
<DatePicker
|
|
260
|
+
bind:value={selectedDate}
|
|
261
|
+
onchange={handleDateChange}
|
|
262
|
+
onfocus={handleFocus}
|
|
263
|
+
onblur={handleBlur}
|
|
264
|
+
/>
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## 样式
|
|
268
|
+
|
|
269
|
+
两种组件继承自 Uniface 设计系统的样式,并可通过 CSS 变量自定义:
|
|
270
|
+
|
|
271
|
+
```css
|
|
272
|
+
.uniface-date-time-editor {
|
|
273
|
+
--uniface-inside-border-color: #f0f0f0;
|
|
274
|
+
/* 添加自定义样式 */
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## 表单集成
|
|
279
|
+
|
|
280
|
+
两种组件与 FormField 无缝协作:
|
|
281
|
+
|
|
282
|
+
```svelte
|
|
283
|
+
<script>
|
|
284
|
+
import FormField from '$lib/form-field';
|
|
285
|
+
import DatePicker, { DateTimePicker } from '$lib/date-picker';
|
|
286
|
+
</script>
|
|
287
|
+
|
|
288
|
+
<FormField label="出生日期">
|
|
289
|
+
<DatePicker variant="outlined" mandatory bind:value={dateOfBirth} />
|
|
290
|
+
</FormField>
|
|
291
|
+
|
|
292
|
+
<FormField label="预约时间">
|
|
293
|
+
<DateTimePicker variant="filled" precision="M" bind:value={appointmentTime} />
|
|
294
|
+
</FormField>
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## 类型定义
|
|
298
|
+
|
|
299
|
+
```typescript
|
|
300
|
+
type UniDate = Date | dayjs.Dayjs | string | null;
|
|
301
|
+
type OnChangeHandler<T> = (value: T | null) => void;
|
|
302
|
+
|
|
303
|
+
enum DisplayMode {
|
|
304
|
+
Edit = 'edit',
|
|
305
|
+
View = 'view'
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## 注意事项
|
|
310
|
+
|
|
311
|
+
- 组件内部使用 Day.js 进行日期操作
|
|
312
|
+
- 值始终以原生 JavaScript Date 对象返回
|
|
313
|
+
- 日历弹窗在选择日期后自动关闭
|
|
314
|
+
- 日期时间选择器在应用选择前需要确认
|
|
315
|
+
- 最小/最大日期限制在日历视图中强制执行
|
|
316
|
+
- 当 `mandatory` 为 true 时,清除按钮被隐藏
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
export let value: number;
|
|
6
6
|
export let mode: 24 | 60 = 60;
|
|
7
7
|
export let enable: boolean = true;
|
|
8
|
-
export let
|
|
8
|
+
export let onchange: OnChangeHandler<number> = null as unknown as OnChangeHandler<number>;
|
|
9
9
|
|
|
10
10
|
let list: Array<any> = [];
|
|
11
11
|
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
const resetList = () => {
|
|
27
27
|
list = [];
|
|
28
|
-
|
|
28
|
+
onchange?.(value);
|
|
29
29
|
for (let i=0; i<7; i++) {
|
|
30
30
|
list.push((value + i - 3 + mode) % mode);
|
|
31
31
|
}
|
|
@@ -66,25 +66,35 @@
|
|
|
66
66
|
resetList();
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
const handleKeyDown = (handler: () => void) => (e: KeyboardEvent) => {
|
|
70
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
71
|
+
e.preventDefault();
|
|
72
|
+
handler();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
69
76
|
let timer: any;
|
|
70
77
|
|
|
71
78
|
$:resetList();
|
|
72
79
|
|
|
73
80
|
</script>
|
|
74
|
-
<div class="scroll-bar"
|
|
81
|
+
<div class="scroll-bar" on:wheel={handleMouseWheel}>
|
|
75
82
|
<div class="action-bar">
|
|
76
83
|
<div class="arrow-up" class:disabled={!enable}>
|
|
77
|
-
<i class="icon_google_keyboard_arrow_up"
|
|
78
|
-
on:mousedown={handleMouseDown(-1)} on:mouseup={handleMouseUp} on:mouseleave={handleMouseUp}
|
|
84
|
+
<i class="icon_google_keyboard_arrow_up" on:click={decValue} on:keydown={handleKeyDown(decValue)} on:dragstart={(e)=>{e.preventDefault()}}
|
|
85
|
+
on:mousedown={handleMouseDown(-1)} on:mouseup={handleMouseUp} on:mouseleave={handleMouseUp}
|
|
86
|
+
role="button" tabindex="0" aria-label="Decrease value"></i>
|
|
79
87
|
</div>
|
|
80
88
|
</div>
|
|
81
89
|
{#each list as v}
|
|
82
|
-
<div style={!enable && v!= value ? "visibility: hidden; " : ""} class="digital-block"
|
|
90
|
+
<div style={!enable && v!= value ? "visibility: hidden; " : ""} class="digital-block" on:click={()=>{handleDigitalClick(v)}} on:keydown={handleKeyDown(() => handleDigitalClick(v))} class:inactive={v!=value}
|
|
91
|
+
role="button" tabindex="0" aria-label="Select {v}"><span>{v}</span></div>
|
|
83
92
|
{/each}
|
|
84
93
|
<div class="action-bar">
|
|
85
94
|
<div class="arrow-down" class:disabled={!enable}>
|
|
86
|
-
<i class="icon_google_keyboard_arrow_downn"
|
|
87
|
-
on:mousedown={handleMouseDown(1)} on:mouseup={handleMouseUp} on:mouseleave={handleMouseUp}
|
|
95
|
+
<i class="icon_google_keyboard_arrow_downn" on:click={incValue} on:keydown={handleKeyDown(incValue)} on:dragstart={(e)=>{e.preventDefault()}}
|
|
96
|
+
on:mousedown={handleMouseDown(1)} on:mouseup={handleMouseUp} on:mouseleave={handleMouseUp}
|
|
97
|
+
role="button" tabindex="0" aria-label="Increase value"></i>
|
|
88
98
|
</div>
|
|
89
99
|
</div>
|
|
90
100
|
</div>
|
|
@@ -16,7 +16,7 @@ declare const ScrollBar: $$__sveltets_2_IsomorphicComponent<{
|
|
|
16
16
|
value: number;
|
|
17
17
|
mode?: 24 | 60;
|
|
18
18
|
enable?: boolean;
|
|
19
|
-
|
|
19
|
+
onchange?: OnChangeHandler<number>;
|
|
20
20
|
}, {
|
|
21
21
|
[evt: string]: CustomEvent<any>;
|
|
22
22
|
}, {}, {}, string>;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
export let value: UniDate;
|
|
10
10
|
export let style: string = '';
|
|
11
11
|
export let precision: "H" | "M" | "S" = "M";
|
|
12
|
-
export let
|
|
12
|
+
export let onchange: OnChangeHandler<dayjs.Dayjs> = null as unknown as OnChangeHandler<dayjs.Dayjs>;
|
|
13
13
|
|
|
14
14
|
let hour: number, minute: number, second: number;
|
|
15
15
|
let time: dayjs.Dayjs = dateUtils.toDayjs(value);
|
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
|
|
23
23
|
const resetTime = (unit: dayjs.UnitType) => (v: number) => {
|
|
24
24
|
time = time.set(unit, v);
|
|
25
|
-
|
|
25
|
+
onchange(time);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
</script>
|
|
29
29
|
<div class="time-picker-panel" {style}>
|
|
30
30
|
<div class="scroll-panel" style="flex: 1 1 auto">
|
|
31
|
-
<ScrollBar bind:value={hour} mode={24}
|
|
31
|
+
<ScrollBar bind:value={hour} mode={24} onchange={resetTime('hour')}/>
|
|
32
32
|
{#if precision === "M" || precision === "S"}
|
|
33
|
-
<ScrollBar bind:value={minute}
|
|
33
|
+
<ScrollBar bind:value={minute} onchange={resetTime('minute')}/>
|
|
34
34
|
{#if precision === "S"}
|
|
35
|
-
<ScrollBar bind:value={second}
|
|
35
|
+
<ScrollBar bind:value={second} onchange={resetTime('second')}/>
|
|
36
36
|
{/if}
|
|
37
37
|
{/if}
|
|
38
38
|
</div>
|
|
@@ -18,7 +18,7 @@ declare const TimePanel: $$__sveltets_2_IsomorphicComponent<{
|
|
|
18
18
|
value: UniDate;
|
|
19
19
|
style?: string;
|
|
20
20
|
precision?: "H" | "M" | "S";
|
|
21
|
-
|
|
21
|
+
onchange?: OnChangeHandler<dayjs.Dayjs>;
|
|
22
22
|
}, {
|
|
23
23
|
[evt: string]: CustomEvent<any>;
|
|
24
24
|
}, {}, {}, string>;
|