@hbdlzy/ui-core 0.1.4 → 0.1.6

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.
Files changed (85) hide show
  1. package/README.md +7 -0
  2. package/components.manifest.json +32 -35
  3. package/dist/components/BaseCard/BaseCard.types.d.ts +36 -36
  4. package/dist/components/BaseCard/BaseCard.vue.d.ts +122 -122
  5. package/dist/components/BaseCard/index.d.ts +3 -3
  6. package/dist/components/BaseEChart/BaseEChart.types.d.ts +26 -26
  7. package/dist/components/BaseEChart/BaseEChart.vue.d.ts +66 -66
  8. package/dist/components/BaseEChart/index.d.ts +3 -3
  9. package/dist/components/BaseExportButton/BaseExportButton.types.d.ts +21 -21
  10. package/dist/components/BaseExportButton/BaseExportButton.utils.d.ts +4 -4
  11. package/dist/components/BaseExportButton/BaseExportButton.vue.d.ts +128 -128
  12. package/dist/components/BaseExportButton/index.d.ts +5 -5
  13. package/dist/components/BaseTable/BaseTable.types.d.ts +163 -163
  14. package/dist/components/BaseTable/BaseTable.vue.d.ts +157 -157
  15. package/dist/components/BaseTable/index.d.ts +3 -3
  16. package/dist/components/OutlinedCascader/OutlinedCascader.types.d.ts +28 -25
  17. package/dist/components/OutlinedCascader/OutlinedCascader.vue.d.ts +94 -85
  18. package/dist/components/OutlinedCascader/index.d.ts +3 -3
  19. package/dist/components/OutlinedDatePicker/OutlinedDatePicker.types.d.ts +30 -27
  20. package/dist/components/OutlinedDatePicker/OutlinedDatePicker.vue.d.ts +97 -88
  21. package/dist/components/OutlinedDatePicker/index.d.ts +3 -3
  22. package/dist/components/OutlinedDateTimePicker/OutlinedDateTimePicker.types.d.ts +29 -26
  23. package/dist/components/OutlinedDateTimePicker/OutlinedDateTimePicker.vue.d.ts +106 -97
  24. package/dist/components/OutlinedDateTimePicker/index.d.ts +3 -3
  25. package/dist/components/OutlinedInput/OutlinedInput.types.d.ts +32 -29
  26. package/dist/components/OutlinedInput/OutlinedInput.vue.d.ts +106 -97
  27. package/dist/components/OutlinedInput/index.d.ts +3 -3
  28. package/dist/components/OutlinedSelect/OutlinedSelect.types.d.ts +41 -38
  29. package/dist/components/OutlinedSelect/OutlinedSelect.vue.d.ts +125 -116
  30. package/dist/components/OutlinedSelect/index.d.ts +3 -3
  31. package/dist/components/OutlinedTimePicker/OutlinedTimePicker.types.d.ts +31 -28
  32. package/dist/components/OutlinedTimePicker/OutlinedTimePicker.vue.d.ts +103 -94
  33. package/dist/components/OutlinedTimePicker/index.d.ts +3 -3
  34. package/dist/components/OutlinedTreeSelect/OutlinedTreeSelect.types.d.ts +49 -46
  35. package/dist/components/OutlinedTreeSelect/OutlinedTreeSelect.vue.d.ts +146 -137
  36. package/dist/components/OutlinedTreeSelect/index.d.ts +3 -3
  37. package/dist/echarts/index.d.ts +9 -9
  38. package/dist/excel/exportExcel.d.ts +18 -18
  39. package/dist/index.cjs +42 -1
  40. package/dist/index.d.ts +27 -30
  41. package/dist/index.js +643 -644
  42. package/dist/ripple/index.d.ts +2 -0
  43. package/dist/style.css +1 -1
  44. package/package.json +6 -4
  45. package/src/components/BaseExportButton/BaseExportButton.vue +1 -3
  46. package/src/components/BaseTable/BaseTable.types.ts +1 -1
  47. package/src/components/OutlinedCascader/OutlinedCascader.types.ts +3 -0
  48. package/src/components/OutlinedCascader/OutlinedCascader.vue +71 -6
  49. package/src/components/OutlinedCascader/README.md +3 -0
  50. package/src/components/OutlinedDatePicker/OutlinedDatePicker.types.ts +3 -0
  51. package/src/components/OutlinedDatePicker/OutlinedDatePicker.vue +71 -6
  52. package/src/components/OutlinedDatePicker/README.md +3 -0
  53. package/src/components/OutlinedDateTimePicker/OutlinedDateTimePicker.types.ts +3 -0
  54. package/src/components/OutlinedDateTimePicker/OutlinedDateTimePicker.vue +144 -64
  55. package/src/components/OutlinedDateTimePicker/README.md +3 -0
  56. package/src/components/OutlinedInput/OutlinedInput.types.ts +3 -0
  57. package/src/components/OutlinedInput/OutlinedInput.vue +87 -8
  58. package/src/components/OutlinedInput/README.md +3 -0
  59. package/src/components/OutlinedSelect/OutlinedSelect.types.ts +3 -0
  60. package/src/components/OutlinedSelect/OutlinedSelect.vue +72 -6
  61. package/src/components/OutlinedSelect/README.md +3 -0
  62. package/src/components/OutlinedTimePicker/OutlinedTimePicker.types.ts +3 -0
  63. package/src/components/OutlinedTimePicker/OutlinedTimePicker.vue +75 -8
  64. package/src/components/OutlinedTimePicker/README.md +3 -0
  65. package/src/components/OutlinedTreeSelect/OutlinedTreeSelect.types.ts +3 -0
  66. package/src/components/OutlinedTreeSelect/OutlinedTreeSelect.vue +72 -6
  67. package/src/components/OutlinedTreeSelect/README.md +3 -0
  68. package/src/index.ts +5 -4
  69. package/src/ripple/index.ts +213 -0
  70. package/dist/components/BaseDialog/BaseDialog.types.d.ts +0 -25
  71. package/dist/components/BaseDialog/BaseDialog.vue.d.ts +0 -100
  72. package/dist/components/BaseDialog/index.d.ts +0 -3
  73. package/dist/components/BaseSearchForm/BaseSearchForm.types.d.ts +0 -42
  74. package/dist/components/BaseSearchForm/BaseSearchForm.utils.d.ts +0 -5
  75. package/dist/components/BaseSearchForm/BaseSearchForm.vue.d.ts +0 -88
  76. package/dist/components/BaseSearchForm/index.d.ts +0 -4
  77. package/src/components/BaseDialog/BaseDialog.types.ts +0 -28
  78. package/src/components/BaseDialog/BaseDialog.vue +0 -158
  79. package/src/components/BaseDialog/README.md +0 -69
  80. package/src/components/BaseDialog/index.ts +0 -10
  81. package/src/components/BaseSearchForm/BaseSearchForm.types.ts +0 -46
  82. package/src/components/BaseSearchForm/BaseSearchForm.utils.ts +0 -41
  83. package/src/components/BaseSearchForm/BaseSearchForm.vue +0 -267
  84. package/src/components/BaseSearchForm/README.md +0 -66
  85. package/src/components/BaseSearchForm/index.ts +0 -20
@@ -1,267 +0,0 @@
1
- <template>
2
- <div class="base-search-form">
3
- <el-form
4
- class="base-search-form__form"
5
- :model="innerModel"
6
- :label-width="normalizedLabelWidth"
7
- @submit.prevent="submit"
8
- >
9
- <div
10
- class="base-search-form__grid"
11
- :style="gridStyle"
12
- >
13
- <el-form-item
14
- v-for="field in visibleFields"
15
- :key="field.key"
16
- class="base-search-form__item"
17
- :label="field.label"
18
- :style="getFieldStyle(field)"
19
- >
20
- <slot
21
- v-if="field.type === 'slot'"
22
- :name="field.key"
23
- :field="field"
24
- :model="innerModel"
25
- :value="innerModel[field.key]"
26
- :set-value="(value: unknown) => setFieldValue(field.key, value)"
27
- />
28
-
29
- <el-select
30
- v-else-if="field.type === 'select'"
31
- class="base-search-form__control"
32
- :model-value="innerModel[field.key]"
33
- :placeholder="field.placeholder || field.label"
34
- :clearable="field.clearable !== false"
35
- :disabled="field.disabled"
36
- v-bind="field.props"
37
- @update:model-value="(value: unknown) => handleFieldChange(field.key, value)"
38
- >
39
- <el-option
40
- v-for="option in field.options || []"
41
- :key="String(option.value)"
42
- :label="option.label"
43
- :value="option.value"
44
- :disabled="option.disabled"
45
- />
46
- </el-select>
47
-
48
- <el-date-picker
49
- v-else-if="field.type === 'date' || field.type === 'dateRange'"
50
- class="base-search-form__control"
51
- :model-value="innerModel[field.key]"
52
- :type="field.type === 'dateRange' ? 'daterange' : 'date'"
53
- :placeholder="field.placeholder || field.label"
54
- :start-placeholder="field.props?.startPlaceholder as string || '开始日期'"
55
- :end-placeholder="field.props?.endPlaceholder as string || '结束日期'"
56
- :clearable="field.clearable !== false"
57
- :disabled="field.disabled"
58
- v-bind="field.props"
59
- @update:model-value="(value: unknown) => handleFieldChange(field.key, value)"
60
- />
61
-
62
- <el-input
63
- v-else
64
- class="base-search-form__control"
65
- :model-value="innerModel[field.key]"
66
- :placeholder="field.placeholder || field.label"
67
- :clearable="field.clearable !== false"
68
- :disabled="field.disabled"
69
- v-bind="field.props"
70
- @update:model-value="(value: unknown) => handleFieldChange(field.key, value)"
71
- @keyup.enter="submit"
72
- />
73
- </el-form-item>
74
-
75
- <div class="base-search-form__actions">
76
- <slot
77
- name="actions-before"
78
- :model="innerModel"
79
- />
80
- <el-button
81
- type="primary"
82
- @click="submit"
83
- >
84
- {{ submitText }}
85
- </el-button>
86
- <el-button @click="reset">
87
- {{ resetText }}
88
- </el-button>
89
- <el-button
90
- v-if="showCollapse && hasCollapsedFields"
91
- link
92
- type="primary"
93
- @click="toggleCollapsed"
94
- >
95
- {{ isCollapsed ? expandText : collapseText }}
96
- </el-button>
97
- <slot
98
- name="actions-after"
99
- :model="innerModel"
100
- />
101
- </div>
102
- </div>
103
- </el-form>
104
- </div>
105
- </template>
106
-
107
- <script setup lang="ts">
108
- import { computed, ref, watch } from 'vue'
109
- import type {
110
- BaseSearchFormExpose,
111
- BaseSearchFormField,
112
- BaseSearchFormModel,
113
- BaseSearchFormProps
114
- } from './BaseSearchForm.types'
115
- import {
116
- cloneSearchFormModel,
117
- getVisibleSearchFields,
118
- resetSearchFormModel,
119
- toSearchFormCssValue
120
- } from './BaseSearchForm.utils'
121
-
122
- defineOptions({
123
- name: 'BaseSearchForm'
124
- })
125
-
126
- const props = withDefaults(defineProps<BaseSearchFormProps>(), {
127
- modelValue: () => ({}),
128
- collapsed: true,
129
- showCollapse: true,
130
- columns: 4,
131
- labelWidth: 80,
132
- fieldWidth: undefined,
133
- gutter: 16,
134
- submitText: '查询',
135
- resetText: '重置',
136
- expandText: '展开',
137
- collapseText: '收起'
138
- })
139
-
140
- const emit = defineEmits<{
141
- (event: 'update:modelValue', value: BaseSearchFormModel): void
142
- (event: 'search', value: BaseSearchFormModel): void
143
- (event: 'reset', value: BaseSearchFormModel): void
144
- (event: 'field-change', key: string, value: unknown, model: BaseSearchFormModel): void
145
- }>()
146
-
147
- const innerModel = ref<BaseSearchFormModel>(cloneSearchFormModel(props.modelValue))
148
- const isCollapsed = ref(props.collapsed)
149
-
150
- watch(
151
- () => props.modelValue,
152
- (value) => {
153
- innerModel.value = cloneSearchFormModel(value)
154
- },
155
- { deep: true }
156
- )
157
-
158
- watch(
159
- () => props.collapsed,
160
- (value) => {
161
- isCollapsed.value = value
162
- }
163
- )
164
-
165
- const visibleFields = computed(() => getVisibleSearchFields(props.fields, isCollapsed.value))
166
- const hasCollapsedFields = computed(() => props.fields.some((field) => field.collapsed && !field.hidden))
167
- const normalizedLabelWidth = computed(() => toSearchFormCssValue(props.labelWidth))
168
-
169
- const gridStyle = computed(() => ({
170
- gridTemplateColumns: `repeat(${Math.max(1, props.columns)}, minmax(0, 1fr))`,
171
- gap: `${props.gutter}px`
172
- }))
173
-
174
- function getFieldStyle(field: BaseSearchFormField) {
175
- return {
176
- gridColumn: field.span ? `span ${Math.max(1, field.span)}` : undefined,
177
- '--base-search-form-field-width': toSearchFormCssValue(props.fieldWidth)
178
- }
179
- }
180
-
181
- function emitModelUpdate() {
182
- emit('update:modelValue', cloneSearchFormModel(innerModel.value))
183
- }
184
-
185
- function handleFieldChange(key: string, value: unknown) {
186
- setFieldValue(key, value)
187
- emit('field-change', key, value, cloneSearchFormModel(innerModel.value))
188
- }
189
-
190
- function setFieldValue(key: string, value: unknown) {
191
- innerModel.value = {
192
- ...innerModel.value,
193
- [key]: value
194
- }
195
- emitModelUpdate()
196
- }
197
-
198
- function submit() {
199
- emit('search', cloneSearchFormModel(innerModel.value))
200
- }
201
-
202
- function reset() {
203
- innerModel.value = resetSearchFormModel(props.fields)
204
- emitModelUpdate()
205
- emit('reset', cloneSearchFormModel(innerModel.value))
206
- }
207
-
208
- function toggleCollapsed() {
209
- isCollapsed.value = !isCollapsed.value
210
- }
211
-
212
- function getModel() {
213
- return cloneSearchFormModel(innerModel.value)
214
- }
215
-
216
- defineExpose<BaseSearchFormExpose>({
217
- submit,
218
- reset,
219
- setFieldValue,
220
- getModel
221
- })
222
- </script>
223
-
224
- <style scoped>
225
- .base-search-form {
226
- width: 100%;
227
- }
228
-
229
- .base-search-form__grid {
230
- display: grid;
231
- align-items: start;
232
- }
233
-
234
- .base-search-form__item {
235
- min-width: 0;
236
- margin-bottom: 0;
237
- }
238
-
239
- .base-search-form__control {
240
- width: var(--base-search-form-field-width, 100%);
241
- }
242
-
243
- .base-search-form__actions {
244
- display: flex;
245
- align-items: center;
246
- justify-content: flex-end;
247
- gap: 8px;
248
- min-width: 0;
249
- }
250
-
251
- @media (max-width: 960px) {
252
- .base-search-form__grid {
253
- grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
254
- }
255
- }
256
-
257
- @media (max-width: 640px) {
258
- .base-search-form__grid {
259
- grid-template-columns: minmax(0, 1fr) !important;
260
- }
261
-
262
- .base-search-form__actions {
263
- justify-content: flex-start;
264
- flex-wrap: wrap;
265
- }
266
- }
267
- </style>
@@ -1,66 +0,0 @@
1
- # BaseSearchForm
2
-
3
- `BaseSearchForm` 用于统一列表页查询区,内置输入框、下拉框、日期和日期范围字段,以及查询、重置、展开/收起操作。
4
-
5
- ## 基础用法
6
-
7
- ```vue
8
- <template>
9
- <BaseSearchForm
10
- v-model="query"
11
- :fields="fields"
12
- @search="loadList"
13
- @reset="loadList"
14
- />
15
- </template>
16
-
17
- <script setup lang="ts">
18
- import { reactive } from 'vue'
19
- import { BaseSearchForm, type BaseSearchFormField } from '@hbdlzy/ui-core'
20
-
21
- const query = reactive({})
22
- const fields: BaseSearchFormField[] = [
23
- { key: 'keyword', label: '名称', type: 'input' },
24
- {
25
- key: 'status',
26
- label: '状态',
27
- type: 'select',
28
- options: [
29
- { label: '启用', value: 'enabled' },
30
- { label: '停用', value: 'disabled' }
31
- ]
32
- },
33
- { key: 'createdAt', label: '创建日期', type: 'dateRange', collapsed: true }
34
- ]
35
-
36
- function loadList(value: Record<string, unknown>) {
37
- console.log(value)
38
- }
39
- </script>
40
- ```
41
-
42
- ## Props
43
-
44
- - `modelValue`: 查询模型
45
- - `fields`: 字段配置
46
- - `collapsed`: 是否默认收起带 `collapsed` 标记的字段
47
- - `showCollapse`: 是否显示展开/收起按钮
48
- - `columns`: 每行列数
49
- - `labelWidth`: 表单 label 宽度
50
- - `fieldWidth`: 控件宽度
51
- - `gutter`: 栅格间距
52
- - `submitText`: 查询按钮文案
53
- - `resetText`: 重置按钮文案
54
-
55
- ## Events
56
-
57
- - `update:modelValue`: 字段值变更
58
- - `search`: 点击查询或输入框回车
59
- - `reset`: 点击重置
60
- - `field-change`: 单个字段变更
61
-
62
- ## Slots
63
-
64
- - `[field.key]`: 字段 `type` 为 `slot` 时的自定义字段内容
65
- - `actions-before`: 操作按钮前扩展
66
- - `actions-after`: 操作按钮后扩展
@@ -1,20 +0,0 @@
1
- import BaseSearchForm from './BaseSearchForm.vue'
2
-
3
- export default BaseSearchForm
4
-
5
- export {
6
- cloneSearchFormModel,
7
- getVisibleSearchFields,
8
- resetSearchFormModel,
9
- toSearchFormCssValue
10
- } from './BaseSearchForm.utils'
11
- export type {
12
- BaseSearchFormCssValue,
13
- BaseSearchFormExpose,
14
- BaseSearchFormField,
15
- BaseSearchFormFieldType,
16
- BaseSearchFormModel,
17
- BaseSearchFormOption,
18
- BaseSearchFormOptionValue,
19
- BaseSearchFormProps
20
- } from './BaseSearchForm.types'