@jari-ace/element-plus-component 0.5.7 → 0.6.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.
Files changed (49) hide show
  1. package/dist/components/autoComplete/JaAutoComplete.vue.d.ts +856 -1163
  2. package/dist/components/autoComplete/JaAutoComplete.vue.d.ts.map +1 -1
  3. package/dist/components/avatar/JaAvatar.vue.d.ts +3 -4
  4. package/dist/components/avatar/JaAvatar.vue.d.ts.map +1 -1
  5. package/dist/components/avatar/JaAvatar.vue.js +2 -10
  6. package/dist/components/avatar/JaAvatar.vue.js.map +1 -1
  7. package/dist/components/button/JaButton.vue.d.ts +354 -246
  8. package/dist/components/button/JaButton.vue.d.ts.map +1 -1
  9. package/dist/components/checkbox/JaCheckbox.vue.d.ts +212 -176
  10. package/dist/components/checkbox/JaCheckbox.vue.d.ts.map +1 -1
  11. package/dist/components/checkboxGroup/JaCheckboxGroup.vue.d.ts +262 -222
  12. package/dist/components/checkboxGroup/JaCheckboxGroup.vue.d.ts.map +1 -1
  13. package/dist/components/departmentPicker/src/DepartmentPicker.vue.js +2 -2
  14. package/dist/components/departmentPicker/src/DepartmentPicker.vue.js.map +1 -1
  15. package/dist/components/dropdownButton/JaDropdownButton.vue.d.ts +400 -268
  16. package/dist/components/dropdownButton/JaDropdownButton.vue.d.ts.map +1 -1
  17. package/dist/components/flowShell/FlowFormShell.vue.d.ts +339 -0
  18. package/dist/components/flowShell/FlowFormShell.vue.d.ts.map +1 -1
  19. package/dist/components/flowShell/FlowFormShell.vue.js +137 -50
  20. package/dist/components/flowShell/FlowFormShell.vue.js.map +1 -1
  21. package/dist/components/formItem/JaFormItem.vue.d.ts +228 -186
  22. package/dist/components/formItem/JaFormItem.vue.d.ts.map +1 -1
  23. package/dist/components/input/JaInput.vue.d.ts +595 -581
  24. package/dist/components/input/JaInput.vue.d.ts.map +1 -1
  25. package/dist/components/input/JaInput.vue.js +4 -2
  26. package/dist/components/input/JaInput.vue.js.map +1 -1
  27. package/dist/components/inputNumber/JaInputNumber.vue.d.ts +428 -276
  28. package/dist/components/inputNumber/JaInputNumber.vue.d.ts.map +1 -1
  29. package/dist/components/radioGroup/JaRadioGroup.vue.d.ts +246 -155
  30. package/dist/components/radioGroup/JaRadioGroup.vue.d.ts.map +1 -1
  31. package/dist/components/rolePicker/baseRolePicker.vue.d.ts +984 -12
  32. package/dist/components/rolePicker/baseRolePicker.vue.d.ts.map +1 -1
  33. package/dist/components/scrollbar/Scrollbar.vue.d.ts +332 -194
  34. package/dist/components/scrollbar/Scrollbar.vue.d.ts.map +1 -1
  35. package/dist/components/switch/JaSwitch.vue.d.ts +378 -317
  36. package/dist/components/switch/JaSwitch.vue.d.ts.map +1 -1
  37. package/dist/components/userGroupPicker/src/UserGroupPicker.vue.js +2 -2
  38. package/dist/components/userGroupPicker/src/UserGroupPicker.vue.js.map +1 -1
  39. package/dist/components/userGroupTree/src/userGroupTree.vue.d.ts +416 -324
  40. package/dist/components/userGroupTree/src/userGroupTree.vue.d.ts.map +1 -1
  41. package/lib/index.css +1 -1
  42. package/lib/index.js +8907 -8683
  43. package/lib/index.umd.cjs +34 -34
  44. package/package.json +2 -2
  45. package/packages/components/avatar/JaAvatar.vue +7 -16
  46. package/packages/components/departmentPicker/src/DepartmentPicker.vue +1 -1
  47. package/packages/components/flowShell/FlowFormShell.vue +97 -7
  48. package/packages/components/input/JaInput.vue +2 -1
  49. package/packages/components/userGroupPicker/src/UserGroupPicker.vue +1 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jari-ace/element-plus-component",
3
3
  "private": false,
4
- "version": "0.5.7",
4
+ "version": "0.6.0",
5
5
  "main": "lib/index.umd.cjs",
6
6
  "module": "lib/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -35,7 +35,7 @@
35
35
  "@vitejs/plugin-vue-jsx": "^4.1.1",
36
36
  "@vue/tsconfig": "^0.5.1",
37
37
  "@vueuse/core": "^11.1.0",
38
- "element-plus": "2.11.7",
38
+ "element-plus": "2.13.2",
39
39
  "gulp": "^4.0.2",
40
40
  "gulp-autoprefixer": "^8.0.0",
41
41
  "gulp-clean-css": "^4.3.0",
@@ -1,18 +1,18 @@
1
1
  <script setup lang="ts">
2
- import { getAvatarToken } from "./avatarToken";
3
- import { ElAvatar, ElImage } from "element-plus";
4
- import type { AvatarProps } from "element-plus";
2
+ import {getAvatarToken} from "./avatarToken";
3
+ import {ElAvatar, ElImage} from "element-plus";
5
4
  import {
6
5
  computed,
6
+ defineProps,
7
7
  nextTick,
8
8
  onMounted, onUnmounted,
9
9
  ref,
10
10
  watch,
11
11
  withDefaults
12
12
  } from "vue";
13
- import { defaultImg } from "./defaultImg";
13
+ import {defaultImg} from "./defaultImg";
14
14
 
15
- export interface JaAvatarProps extends Partial<AvatarProps> {
15
+ const props = withDefaults(defineProps<{
16
16
  /**
17
17
  * 用户id
18
18
  */
@@ -35,9 +35,7 @@ export interface JaAvatarProps extends Partial<AvatarProps> {
35
35
  hasAvatar?: boolean,
36
36
 
37
37
  firstName?: string
38
- }
39
-
40
- const props = withDefaults(defineProps<JaAvatarProps>(), {
38
+ }>(), {
41
39
  doNotLoadAvatar: false
42
40
  })
43
41
 
@@ -53,7 +51,6 @@ if (!scrollbarWrappedItems) {
53
51
  onMounted(async () => {
54
52
  await nextTick();
55
53
  if (scrollbarWrappedItems) {
56
- // @ts-ignore
57
54
  scrollbarWrappedItems.value?.push({
58
55
  childElement: avatar.value?.$el,
59
56
  onInView(isInView: boolean) {
@@ -96,21 +93,15 @@ function adjustFontSize(element?: HTMLElement) {
96
93
 
97
94
  onUnmounted(() => {
98
95
  if (scrollbarWrappedItems) {
99
- // @ts-ignore
100
96
  scrollbarWrappedItems.value = undefined;
101
97
  }
102
98
  })
103
99
 
104
100
  watch(usernameSpan, () => adjustFontSize(usernameSpan.value))
105
-
106
- const elementProps = computed(() => {
107
- const { userId, username, realm, doNotLoadAvatar, hasAvatar, firstName, ...rest } = props
108
- return rest
109
- })
110
101
  </script>
111
102
 
112
103
  <template>
113
- <el-avatar :src="lazyUrl" v-bind="{ ...elementProps, ...$attrs }" ref="avatar" class="ja-avatar">
104
+ <el-avatar :src="lazyUrl" v-bind="$attrs" ref="avatar" class="ja-avatar">
114
105
  <span v-if="props.firstName && props.firstName.length > 0" class="user-name-avatar"
115
106
  ref="usernameSpan">
116
107
  {{ firstName }}
@@ -5,7 +5,7 @@
5
5
  :size="props.size"
6
6
  node-key="id"
7
7
  check-strictly
8
- :current-node-key="id"
8
+ :current-node-key="Array.isArray(id) ? undefined : id"
9
9
  highlight-current
10
10
  v-model="id"
11
11
  :multiple="multiple"
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <div v-if="dialogVisible" class="flow-shell-wrapper">
3
- <div class="flow-shell-container" v-loading="isLoading">
2
+ <div v-if="dialogVisible" class="flow-shell-wrapper" :style="wrapperStyle">
3
+ <div class="flow-shell-container" v-loading="isLoading" :style="containerStyle">
4
4
  <header class="flow-shell-header">
5
5
  <div class="header-content">
6
6
  <div class="header-top">
@@ -62,11 +62,14 @@
62
62
  </section>
63
63
 
64
64
  <!-- 右侧辅助面板 -->
65
- <aside class="side-panel">
65
+ <aside class="side-panel" :class="{ 'collapsed': sidePanelCollapsed }">
66
66
  <div class="side-panel-header">
67
67
  <h3>办理历史</h3>
68
+ <div class="collapse-btn" @click="sidePanelCollapsed = !sidePanelCollapsed" :title="sidePanelCollapsed ? '展开' : '收起'">
69
+ <el-icon><ArrowRight v-if="!sidePanelCollapsed" /><ArrowLeft v-else /></el-icon>
70
+ </div>
68
71
  </div>
69
- <div class="side-panel-content">
72
+ <div class="side-panel-content" v-show="!sidePanelCollapsed">
70
73
  <el-timeline v-if="sortedTasks.length > 0">
71
74
  <el-timeline-item v-for="(task, index) in sortedTasks" :key="index"
72
75
  :timestamp="formatFriendlyTime(task.finishTime)" placement="top">
@@ -105,6 +108,7 @@
105
108
  :tooltip="'保存并' + (flowFormParam?.taskInstance ? '结束当前工作步骤办理' : '发起工作')" :loading="saving"
106
109
  :disabled="saving">{{
107
110
  flowFormParam?.taskInstance ? "办理结束" : "发起工作" }}</ja-button>
111
+ <slot name="footer" :flowParam="flowFormParam"></slot>
108
112
  </footer>
109
113
  </div>
110
114
  </div>
@@ -118,7 +122,7 @@ import { createAxiosWithoutCache, useLoading } from '@jari-ace/app-bolts'
118
122
  import { ElMessage, ElTag, ElCard, ElButton, ElTimeline, ElTimelineItem, ElEmpty, ElIcon, ElResult } from 'element-plus'
119
123
  import { JaButton } from '../button'
120
124
  import { JaUserInfoTag } from '../userTag'
121
- import { ArrowLeft } from '@element-plus/icons-vue'
125
+ import { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'
122
126
  import dayjs from 'dayjs'
123
127
  import relativeTime from 'dayjs/plugin/relativeTime'
124
128
  import 'dayjs/locale/zh-cn'
@@ -153,17 +157,33 @@ const props = withDefaults(defineProps<{
153
157
  * 保存表单数据的方法,保存成功时发起或转交工作
154
158
  */
155
159
  saveAndForward: (formData: FlowProcessRequest<T>) => Promise<any>
160
+ /**
161
+ * 对话框宽度,为空时全屏
162
+ */
163
+ width?: string
164
+ /**
165
+ * 对话框高度,为空时全屏
166
+ */
167
+ height?: string
168
+ /**
169
+ * 侧边栏默认是否收起
170
+ */
171
+ defaultCollapsed?: boolean
156
172
  }>(), {
157
173
  appName: undefined,
158
174
  flowKey: undefined,
159
175
  startNodeKey: undefined,
160
- taskInstanceId: undefined
176
+ taskInstanceId: undefined,
177
+ width: undefined,
178
+ height: undefined,
179
+ defaultCollapsed: false
161
180
  })
162
181
 
163
182
  // 内部状态
164
183
  const dialogVisible = defineModel<boolean>({
165
184
  default: false
166
185
  })
186
+ const sidePanelCollapsed = ref(props.defaultCollapsed)
167
187
  const axios = createAxiosWithoutCache()
168
188
  const loading = useLoading(axios)
169
189
  const localLoading = ref(false)
@@ -178,6 +198,38 @@ const emits = defineEmits<{
178
198
  (e: 'closed'): void
179
199
  }>();
180
200
 
201
+ const isModal = computed(() => !!props.width || !!props.height)
202
+
203
+ const wrapperStyle = computed(() => {
204
+ if (isModal.value) {
205
+ return {
206
+ justifyContent: 'center',
207
+ alignItems: 'center',
208
+ backgroundColor: 'rgba(0, 0, 0, 0.5)'
209
+ }
210
+ }
211
+ return {
212
+ backgroundColor: '#f5f7fa'
213
+ }
214
+ })
215
+
216
+ const containerStyle = computed(() => {
217
+ if (isModal.value) {
218
+ return {
219
+ width: props.width || '100%',
220
+ height: props.height || '100%',
221
+ backgroundColor: '#f5f7fa',
222
+ borderRadius: '4px',
223
+ boxShadow: '0 2px 12px 0 rgba(0, 0, 0, 0.1)',
224
+ overflow: 'hidden'
225
+ }
226
+ }
227
+ return {
228
+ width: '100%',
229
+ height: '100%'
230
+ }
231
+ })
232
+
181
233
  const flowStateTagType = computed(() => {
182
234
  switch (flowFormParam.value?.flowInstance?.state) {
183
235
  case 0:
@@ -517,6 +569,11 @@ const handleForward = async () => {
517
569
  display: flex;
518
570
  flex-direction: column;
519
571
  width: 400px;
572
+ transition: width 0.3s ease;
573
+ }
574
+
575
+ .side-panel.collapsed {
576
+ width: 40px;
520
577
  }
521
578
 
522
579
  .side-panel-header {
@@ -524,8 +581,16 @@ const handleForward = async () => {
524
581
  border-bottom: 1px solid #e0e0e0;
525
582
  display: flex;
526
583
  align-items: center;
527
- padding: 0 20px;
584
+ justify-content: space-between;
585
+ padding: 0 10px 0 20px;
528
586
  background-color: #fafafa;
587
+ overflow: hidden;
588
+ white-space: nowrap;
589
+ }
590
+
591
+ .side-panel.collapsed .side-panel-header {
592
+ padding: 0;
593
+ justify-content: center;
529
594
  }
530
595
 
531
596
  .side-panel-header h3 {
@@ -533,6 +598,31 @@ const handleForward = async () => {
533
598
  font-size: 16px;
534
599
  font-weight: 600;
535
600
  color: #303133;
601
+ transition: opacity 0.3s;
602
+ }
603
+
604
+ .side-panel.collapsed .side-panel-header h3 {
605
+ opacity: 0;
606
+ width: 0;
607
+ margin: 0;
608
+ padding: 0;
609
+ display: none;
610
+ }
611
+
612
+ .collapse-btn {
613
+ cursor: pointer;
614
+ display: flex;
615
+ align-items: center;
616
+ justify-content: center;
617
+ width: 24px;
618
+ height: 24px;
619
+ border-radius: 4px;
620
+ color: #909399;
621
+ }
622
+
623
+ .collapse-btn:hover {
624
+ background-color: #e6e6e6;
625
+ color: #606266;
536
626
  }
537
627
 
538
628
  .side-panel-content {
@@ -23,7 +23,8 @@ const props = withDefaults(defineProps<JaInputProps>(), {
23
23
  autocomplete: 'off',
24
24
  readonly: false,
25
25
  autofocus: false,
26
- validateEvent: true
26
+ validateEvent: true,
27
+ inputStyle: () => ({})
27
28
  })
28
29
 
29
30
  const model = inject('aceFormModel') as Record<string, any>
@@ -5,7 +5,7 @@
5
5
  :size="props.size"
6
6
  node-key="id"
7
7
  check-strictly
8
- :current-node-key="id"
8
+ :current-node-key="Array.isArray(id) ? undefined : id"
9
9
  highlight-current
10
10
  v-model="id"
11
11
  :multiple="multiple"