@jari-ace/element-plus-component 0.1.0 → 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 (148) hide show
  1. package/README.md +18 -18
  2. package/dist/components/enumPicker/index.d.ts +4 -0
  3. package/dist/components/enumPicker/index.d.ts.map +1 -0
  4. package/dist/components/enumPicker/index.js +4 -0
  5. package/dist/components/enumPicker/index.js.map +1 -0
  6. package/dist/components/enumPicker/src/EnumPicker.vue.d.ts +29 -0
  7. package/dist/components/enumPicker/src/EnumPicker.vue.d.ts.map +1 -0
  8. package/dist/components/enumPicker/src/EnumPicker.vue.js +140 -0
  9. package/dist/components/enumPicker/src/EnumPicker.vue.js.map +1 -0
  10. package/dist/components/form/JaForm.vue.d.ts +23 -126
  11. package/dist/components/form/JaForm.vue.d.ts.map +1 -1
  12. package/dist/components/form/JaForm.vue.js +127 -192
  13. package/dist/components/form/JaForm.vue.js.map +1 -1
  14. package/dist/components/formItem/JaFormItem.vue.d.ts +12 -12
  15. package/dist/components/index.d.ts +1 -0
  16. package/dist/components/index.d.ts.map +1 -1
  17. package/dist/components/index.js +1 -0
  18. package/dist/components/index.js.map +1 -1
  19. package/dist/components/rolePicker/baseRolePicker.vue.d.ts.map +1 -1
  20. package/dist/components/rolePicker/baseRolePicker.vue.js +1 -0
  21. package/dist/components/rolePicker/baseRolePicker.vue.js.map +1 -1
  22. package/dist/components/userTag/UserInfoTag.vue.d.ts +1 -1
  23. package/dist/hooks/useBackendValidations.d.ts +7 -1
  24. package/dist/hooks/useBackendValidations.d.ts.map +1 -1
  25. package/dist/hooks/useBackendValidations.js +21 -2
  26. package/dist/hooks/useBackendValidations.js.map +1 -1
  27. package/dist/hooks/useBridage.d.ts +3 -3
  28. package/dist/hooks/useBridage.d.ts.map +1 -1
  29. package/dist/hooks/useBridage.js +29 -22
  30. package/dist/hooks/useBridage.js.map +1 -1
  31. package/lib/index.css +1 -1
  32. package/lib/index.js +1437 -1283
  33. package/lib/index.umd.cjs +2 -2
  34. package/package.json +61 -61
  35. package/packages/components/autoComplete/JaAutoComplete.vue +47 -47
  36. package/packages/components/autoComplete/index.ts +5 -5
  37. package/packages/components/avatar/JaAvatar.vue +126 -126
  38. package/packages/components/avatar/avatarToken.ts +11 -11
  39. package/packages/components/avatar/defaultImg.ts +14 -14
  40. package/packages/components/avatar/index.ts +7 -7
  41. package/packages/components/button/JaButton.vue +51 -51
  42. package/packages/components/button/index.ts +4 -4
  43. package/packages/components/channelPicker/index.ts +7 -7
  44. package/packages/components/channelPicker/src/ChannelPicker.vue +43 -43
  45. package/packages/components/channelPicker/src/JaChannelPicker.vue +42 -42
  46. package/packages/components/checkbox/JaCheckbox.vue +73 -73
  47. package/packages/components/checkbox/index.ts +4 -4
  48. package/packages/components/checkboxGroup/JaCheckboxGroup.vue +45 -45
  49. package/packages/components/checkboxGroup/index.ts +4 -4
  50. package/packages/components/customGroupTree/index.ts +10 -10
  51. package/packages/components/customGroupTree/src/customGroupTree.vue +91 -91
  52. package/packages/components/datePicker/JaDatePicker.vue +52 -52
  53. package/packages/components/datePicker/index.ts +4 -4
  54. package/packages/components/departmentPicker/index.ts +4 -4
  55. package/packages/components/departmentPicker/src/DepartmentPicker.vue +107 -107
  56. package/packages/components/departmentPicker/src/consts.ts +2 -2
  57. package/packages/components/departmentTree/index.ts +10 -10
  58. package/packages/components/departmentTree/src/departmentTree.vue +135 -135
  59. package/packages/components/dropdownButton/JaDropdownButton.vue +59 -59
  60. package/packages/components/dropdownButton/index.ts +4 -4
  61. package/packages/components/enumList/EnumListInput.vue +107 -107
  62. package/packages/components/enumList/JaEnumList.vue +39 -39
  63. package/packages/components/enumList/index.ts +7 -7
  64. package/packages/components/enumPicker/index.ts +5 -0
  65. package/packages/components/enumPicker/src/EnumPicker.vue +103 -0
  66. package/packages/components/form/JaForm.vue +186 -126
  67. package/packages/components/form/index.ts +5 -5
  68. package/packages/components/form/types.ts +4 -4
  69. package/packages/components/formItem/JaFormItem.vue +68 -68
  70. package/packages/components/formItem/index.ts +4 -4
  71. package/packages/components/index.ts +34 -33
  72. package/packages/components/input/JaInput.vue +143 -143
  73. package/packages/components/input/index.ts +4 -4
  74. package/packages/components/inputI18n/I18nBundleEditor.vue +76 -76
  75. package/packages/components/inputI18n/InputI18n.vue +142 -142
  76. package/packages/components/inputI18n/JaInputI18n.vue +50 -50
  77. package/packages/components/inputI18n/index.ts +8 -8
  78. package/packages/components/inputNumber/JaInputNumber.vue +98 -98
  79. package/packages/components/inputNumber/index.ts +4 -4
  80. package/packages/components/mapItemList/JaMapItemList.vue +35 -35
  81. package/packages/components/mapItemList/MapItemListInput.vue +191 -191
  82. package/packages/components/mapItemList/index.ts +7 -7
  83. package/packages/components/numberList/JaNumberList.vue +36 -36
  84. package/packages/components/numberList/NumberListInput.vue +111 -111
  85. package/packages/components/numberList/index.ts +7 -7
  86. package/packages/components/properyPicker/JaPropertyPicker.vue +38 -38
  87. package/packages/components/properyPicker/PropertyPicker.vue +314 -314
  88. package/packages/components/properyPicker/index.ts +7 -7
  89. package/packages/components/radioGroup/JaRadioGroup.vue +50 -50
  90. package/packages/components/radioGroup/index.ts +4 -4
  91. package/packages/components/rolePicker/RoleEditor.vue +129 -129
  92. package/packages/components/rolePicker/RolePicker.vue +44 -44
  93. package/packages/components/rolePicker/RolePickerRaw.vue +56 -56
  94. package/packages/components/rolePicker/baseRolePicker.vue +87 -86
  95. package/packages/components/rolePicker/index.ts +10 -10
  96. package/packages/components/scrollbar/Scrollbar.vue +89 -89
  97. package/packages/components/scrollbar/index.ts +5 -5
  98. package/packages/components/scrollbar/utils.ts +17 -17
  99. package/packages/components/select/JaSelect.vue +48 -48
  100. package/packages/components/select/index.ts +4 -4
  101. package/packages/components/stringList/JaStringList.vue +36 -36
  102. package/packages/components/stringList/StringListInput.vue +96 -96
  103. package/packages/components/stringList/index.ts +7 -7
  104. package/packages/components/switch/JaSwitch.vue +50 -50
  105. package/packages/components/switch/index.ts +4 -4
  106. package/packages/components/timePicker/JaTimePicker.vue +52 -52
  107. package/packages/components/timePicker/index.ts +5 -5
  108. package/packages/components/tip/index.ts +4 -4
  109. package/packages/components/tip/src/AceTip.vue +43 -43
  110. package/packages/components/upload/index.ts +6 -6
  111. package/packages/components/upload/src/Upload.vue +25 -25
  112. package/packages/components/upload/src/type.ts +3 -3
  113. package/packages/components/userGroupPicker/index.ts +4 -4
  114. package/packages/components/userGroupPicker/src/UserGroupPicker.vue +94 -94
  115. package/packages/components/userGroupTree/index.ts +10 -10
  116. package/packages/components/userGroupTree/src/userGroupTree.vue +149 -149
  117. package/packages/components/userPicker/index.ts +10 -10
  118. package/packages/components/userPicker/src/CustomGroupManager.vue +189 -189
  119. package/packages/components/userPicker/src/JaUserList.vue +283 -283
  120. package/packages/components/userPicker/src/JaUserPicker.vue +37 -37
  121. package/packages/components/userPicker/src/UserPicker.vue +366 -366
  122. package/packages/components/userSelectDialog/index.ts +6 -6
  123. package/packages/components/userSelectDialog/src/userSelectDialog.vue +447 -447
  124. package/packages/components/userTag/UserInfoTag.vue +397 -397
  125. package/packages/components/userTag/index.ts +6 -6
  126. package/packages/components/userTag/sharedAxios.ts +8 -8
  127. package/packages/directives/auth/index.ts +41 -41
  128. package/packages/directives/autofocus/index.ts +29 -29
  129. package/packages/directives/index.ts +10 -10
  130. package/packages/directives/shortcut/index.ts +192 -192
  131. package/packages/hooks/useAppInstances.ts +34 -34
  132. package/packages/hooks/useBackendValidations.ts +34 -8
  133. package/packages/hooks/useBridage.ts +157 -148
  134. package/packages/hooks/useDateTimeShortCuts.ts +65 -65
  135. package/packages/hooks/useTreeData.ts +45 -45
  136. package/packages/hooks/useUserRefQuery.ts +222 -222
  137. package/packages/index.ts +21 -21
  138. package/packages/list.json +7 -7
  139. package/packages/types/custom.d.ts +13 -13
  140. package/packages/types/window.d.ts +16 -16
  141. package/packages/utils/install.ts +43 -43
  142. package/packages/utils/objectUtils.ts +31 -31
  143. package/theme-style/fonts/iconfont.json +5196 -5196
  144. package/theme-style/index.scss +10 -10
  145. package/theme-style/styles/element-plus-var.scss +1419 -1419
  146. package/theme-style/styles/iconfont.css +2979 -2979
  147. package/theme-style/styles/theme-var.scss +72 -72
  148. package/theme-style/styles/transition.scss +122 -122
@@ -1,142 +1,142 @@
1
- <script setup lang="ts">
2
- import {ElInput, ElOption, ElSelect} from "element-plus";
3
- import {nextTick, onUnmounted, ref, watch} from "vue"
4
- import {createAxios, useAppMessageApi, useLoginUser} from "@jari-ace/app-bolts";
5
- import MessageEditor from "./I18nBundleEditor.vue"
6
- import {trim} from "lodash-es";
7
- import {useAppInstances} from "../../hooks/useAppInstances";
8
- import debounce from "lodash-es/debounce";
9
- import {JaButton} from "../button";
10
-
11
- const props = withDefaults(defineProps<{
12
- appId?: string,
13
- size?: 'default' | 'large' | 'small',
14
- textarea?: boolean,
15
- disabled?: boolean
16
- }>(), {
17
- size: 'default',
18
- textarea: false
19
- })
20
- const model = defineModel<string>({
21
- default: ""
22
- })
23
- const axios = createAxios()
24
- const api = useAppMessageApi(axios)
25
- const locale = useLoginUser().locale
26
- const messageKeys = ref<string[]>()
27
- const focused = ref(false)
28
- const editorVisible = ref(false)
29
- const select = ref<InstanceType<typeof ElSelect>>()
30
- const appName = ref("");
31
- const appInstances = await useAppInstances();
32
- const filterKey = ref("")
33
- const i18nTxt = ref("")
34
- const selectI18n = ref<InstanceType<typeof ElSelect>>();
35
- const emits = defineEmits(["change", "focus", "blur"])
36
- const debounceLoadMessage = debounce(loadMessage, 500)
37
- let timeoutHandle: number | undefined = undefined;
38
-
39
- async function loadMessage(val?: string) {
40
- if (!val) val = model.value;
41
- if (!props.appId) return
42
- const app = await appInstances.getById(props.appId)
43
- appName.value = app.name
44
- if (!val || !appName.value) {
45
- i18nTxt.value = "";
46
- return;
47
- }
48
- i18nTxt.value = val
49
- let key = val;
50
- if (val && val.length > 0) {
51
- key = trim(key);
52
- if (key.startsWith('{') && key.endsWith('}')) {
53
- key = key.substring(1, key.length - 1);
54
- }
55
- }
56
- const messages = await api.getByKey(appName.value, key, {
57
- cancelDuplicatedRequest: false
58
- });
59
- const message = messages.find(m => m.locale === locale)
60
- if (message) {
61
- i18nTxt.value = message.message
62
- }
63
- }
64
-
65
- async function filterMessages(filterName: string) {
66
- filterKey.value = filterName
67
- messageKeys.value = await api.searchKeys(appName.value, filterName)
68
- }
69
-
70
- async function onFocus() {
71
- focused.value = true;
72
- await nextTick()
73
- emits("focus")
74
- select.value?.focus()
75
- }
76
-
77
- function onBlur() {
78
- timeoutHandle = setTimeout(() => {
79
- focused.value = false
80
- }, 200)
81
- emits("blur")
82
- }
83
-
84
- onUnmounted(() => {
85
- debounceLoadMessage.cancel()
86
- if (timeoutHandle) {
87
- clearTimeout(timeoutHandle)
88
- }
89
- })
90
-
91
- watch(model, () => {
92
- debounceLoadMessage();
93
- }, {
94
- deep: true,
95
- immediate: true
96
- })
97
-
98
- function onChange(value: string) {
99
- emits('change', value)
100
- }
101
-
102
- async function onNewI18nCreated(messageKey: string) {
103
- await filterMessages(filterKey.value);
104
- model.value = "{" + messageKey + "}";
105
- selectI18n.value.focus
106
- }
107
-
108
- defineExpose({
109
- focus() {
110
- selectI18n?.value.focus()
111
- },
112
- blur() {
113
- select?.value.blur()
114
- }
115
- })
116
- </script>
117
-
118
- <template>
119
- <el-input ref="selectI18n" @focus="onFocus" v-show="!focused" v-model="i18nTxt" :size="size"
120
- :disabled="disabled"
121
- :type="textarea ? 'textarea': undefined">
122
- </el-input>
123
- <el-select ref="select" filterable remote :remote-method="filterMessages" v-show="focused"
124
- :disabled="disabled" default-first-option
125
- remote-show-suffix @change="onChange" :size="size" allow-create clearable
126
- @blur="onBlur" v-model="model">
127
- <el-option v-for="k in messageKeys" :key="k" :value="'{' + k +'}'"
128
- :label="'{' + k +'}'"></el-option>
129
- <template #footer>
130
- <ja-button link :style="{width: '100%'}" type="primary" @click="editorVisible=true"
131
- shortcut="Alt+I">
132
- 新建国际化文本(Alt+I)
133
- </ja-button>
134
- </template>
135
- </el-select>
136
- <message-editor :app-id="appId" :pre-key="filterKey" v-model="editorVisible"
137
- @success="onNewI18nCreated"></message-editor>
138
- </template>
139
-
140
- <style scoped lang="scss">
141
-
142
- </style>
1
+ <script setup lang="ts">
2
+ import {ElInput, ElOption, ElSelect} from "element-plus";
3
+ import {nextTick, onUnmounted, ref, watch} from "vue"
4
+ import {createAxios, useAppMessageApi, useLoginUser} from "@jari-ace/app-bolts";
5
+ import MessageEditor from "./I18nBundleEditor.vue"
6
+ import {trim} from "lodash-es";
7
+ import {useAppInstances} from "../../hooks/useAppInstances";
8
+ import debounce from "lodash-es/debounce";
9
+ import {JaButton} from "../button";
10
+
11
+ const props = withDefaults(defineProps<{
12
+ appId?: string,
13
+ size?: 'default' | 'large' | 'small',
14
+ textarea?: boolean,
15
+ disabled?: boolean
16
+ }>(), {
17
+ size: 'default',
18
+ textarea: false
19
+ })
20
+ const model = defineModel<string>({
21
+ default: ""
22
+ })
23
+ const axios = createAxios()
24
+ const api = useAppMessageApi(axios)
25
+ const locale = useLoginUser().locale
26
+ const messageKeys = ref<string[]>()
27
+ const focused = ref(false)
28
+ const editorVisible = ref(false)
29
+ const select = ref<InstanceType<typeof ElSelect>>()
30
+ const appName = ref("");
31
+ const appInstances = await useAppInstances();
32
+ const filterKey = ref("")
33
+ const i18nTxt = ref("")
34
+ const selectI18n = ref<InstanceType<typeof ElSelect>>();
35
+ const emits = defineEmits(["change", "focus", "blur"])
36
+ const debounceLoadMessage = debounce(loadMessage, 500)
37
+ let timeoutHandle: number | undefined = undefined;
38
+
39
+ async function loadMessage(val?: string) {
40
+ if (!val) val = model.value;
41
+ if (!props.appId) return
42
+ const app = await appInstances.getById(props.appId)
43
+ appName.value = app.name
44
+ if (!val || !appName.value) {
45
+ i18nTxt.value = "";
46
+ return;
47
+ }
48
+ i18nTxt.value = val
49
+ let key = val;
50
+ if (val && val.length > 0) {
51
+ key = trim(key);
52
+ if (key.startsWith('{') && key.endsWith('}')) {
53
+ key = key.substring(1, key.length - 1);
54
+ }
55
+ }
56
+ const messages = await api.getByKey(appName.value, key, {
57
+ cancelDuplicatedRequest: false
58
+ });
59
+ const message = messages.find(m => m.locale === locale)
60
+ if (message) {
61
+ i18nTxt.value = message.message
62
+ }
63
+ }
64
+
65
+ async function filterMessages(filterName: string) {
66
+ filterKey.value = filterName
67
+ messageKeys.value = await api.searchKeys(appName.value, filterName)
68
+ }
69
+
70
+ async function onFocus() {
71
+ focused.value = true;
72
+ await nextTick()
73
+ emits("focus")
74
+ select.value?.focus()
75
+ }
76
+
77
+ function onBlur() {
78
+ timeoutHandle = setTimeout(() => {
79
+ focused.value = false
80
+ }, 200)
81
+ emits("blur")
82
+ }
83
+
84
+ onUnmounted(() => {
85
+ debounceLoadMessage.cancel()
86
+ if (timeoutHandle) {
87
+ clearTimeout(timeoutHandle)
88
+ }
89
+ })
90
+
91
+ watch(model, () => {
92
+ debounceLoadMessage();
93
+ }, {
94
+ deep: true,
95
+ immediate: true
96
+ })
97
+
98
+ function onChange(value: string) {
99
+ emits('change', value)
100
+ }
101
+
102
+ async function onNewI18nCreated(messageKey: string) {
103
+ await filterMessages(filterKey.value);
104
+ model.value = "{" + messageKey + "}";
105
+ selectI18n.value.focus
106
+ }
107
+
108
+ defineExpose({
109
+ focus() {
110
+ selectI18n?.value.focus()
111
+ },
112
+ blur() {
113
+ select?.value.blur()
114
+ }
115
+ })
116
+ </script>
117
+
118
+ <template>
119
+ <el-input ref="selectI18n" @focus="onFocus" v-show="!focused" v-model="i18nTxt" :size="size"
120
+ :disabled="disabled"
121
+ :type="textarea ? 'textarea': undefined">
122
+ </el-input>
123
+ <el-select ref="select" filterable remote :remote-method="filterMessages" v-show="focused"
124
+ :disabled="disabled" default-first-option
125
+ remote-show-suffix @change="onChange" :size="size" allow-create clearable
126
+ @blur="onBlur" v-model="model">
127
+ <el-option v-for="k in messageKeys" :key="k" :value="'{' + k +'}'"
128
+ :label="'{' + k +'}'"></el-option>
129
+ <template #footer>
130
+ <ja-button link :style="{width: '100%'}" type="primary" @click="editorVisible=true"
131
+ shortcut="Alt+I">
132
+ 新建国际化文本(Alt+I)
133
+ </ja-button>
134
+ </template>
135
+ </el-select>
136
+ <message-editor :app-id="appId" :pre-key="filterKey" v-model="editorVisible"
137
+ @success="onNewI18nCreated"></message-editor>
138
+ </template>
139
+
140
+ <style scoped lang="scss">
141
+
142
+ </style>
@@ -1,50 +1,50 @@
1
- <script setup lang="ts">
2
- import type {ValidationInstance} from '../../hooks/useBackendValidations'
3
- import {inject, ref, watch} from "vue";
4
- import {ElSelect} from "element-plus";
5
- import {getValue, setValue} from "../../utils/objectUtils";
6
- import InputI18n from "./InputI18n.vue";
7
-
8
- const input = ref<typeof ElSelect>({} as typeof ElSelect)
9
- const model = inject('aceFormModel') as Record<string, any>
10
- const prop = inject('aceFormItemProp') as string
11
- const validator = inject('aceFormValidator') as ValidationInstance
12
- const emit = defineEmits<{
13
- change: [value: string]
14
- }>()
15
- const props = defineProps<{
16
- appId: string
17
- }>()
18
-
19
- function onChange(value: string) {
20
- validator.removeFieldError(prop)
21
- setValue(model.formData, prop, value);
22
- emit('change', value)
23
- }
24
-
25
- type modelType = string;
26
-
27
- const mv = ref<modelType>();
28
- watch(() => model.formData, () => {
29
- const v = getValue(model.formData, prop) as modelType
30
- mv.value = v;
31
- }, {
32
- immediate: true,
33
- deep: true
34
- })
35
-
36
- defineExpose({
37
- focus: () => input.value.focus(),
38
- blur: () => input.value.blur(),
39
- elSelect: input
40
- })
41
- </script>
42
-
43
- <template>
44
- <input-i18n
45
- ref="input"
46
- v-model="mv"
47
- @change="onChange"
48
- v-bind="$attrs" :app-id="props.appId">
49
- </input-i18n>
50
- </template>
1
+ <script setup lang="ts">
2
+ import type {ValidationInstance} from '../../hooks/useBackendValidations'
3
+ import {inject, ref, watch} from "vue";
4
+ import {ElSelect} from "element-plus";
5
+ import {getValue, setValue} from "../../utils/objectUtils";
6
+ import InputI18n from "./InputI18n.vue";
7
+
8
+ const input = ref<typeof ElSelect>({} as typeof ElSelect)
9
+ const model = inject('aceFormModel') as Record<string, any>
10
+ const prop = inject('aceFormItemProp') as string
11
+ const validator = inject('aceFormValidator') as ValidationInstance
12
+ const emit = defineEmits<{
13
+ change: [value: string]
14
+ }>()
15
+ const props = defineProps<{
16
+ appId: string
17
+ }>()
18
+
19
+ function onChange(value: string) {
20
+ validator.removeFieldError(prop)
21
+ setValue(model.formData, prop, value);
22
+ emit('change', value)
23
+ }
24
+
25
+ type modelType = string;
26
+
27
+ const mv = ref<modelType>();
28
+ watch(() => model.formData, () => {
29
+ const v = getValue(model.formData, prop) as modelType
30
+ mv.value = v;
31
+ }, {
32
+ immediate: true,
33
+ deep: true
34
+ })
35
+
36
+ defineExpose({
37
+ focus: () => input.value.focus(),
38
+ blur: () => input.value.blur(),
39
+ elSelect: input
40
+ })
41
+ </script>
42
+
43
+ <template>
44
+ <input-i18n
45
+ ref="input"
46
+ v-model="mv"
47
+ @change="onChange"
48
+ v-bind="$attrs" :app-id="props.appId">
49
+ </input-i18n>
50
+ </template>
@@ -1,8 +1,8 @@
1
- import {type SFCWithInstall, withInstall} from "../../utils/install";
2
- import InputI18n from "./InputI18n.vue";
3
- import _JaInputI18n from "./JaInputI18n.vue";
4
-
5
- // 存在绑定的model watch不响应的问题,需用点击第二次watch才响应mv变化,这个问题无法解决
6
- // export const JaInputI18n: SFCWithInstall<typeof _JaInputI18n> = withInstall(_JaInputI18n);
7
-
8
- export const JaInputI18nRaw: SFCWithInstall<typeof InputI18n> = withInstall(InputI18n);
1
+ import {type SFCWithInstall, withInstall} from "../../utils/install";
2
+ import InputI18n from "./InputI18n.vue";
3
+ import _JaInputI18n from "./JaInputI18n.vue";
4
+
5
+ // 存在绑定的model watch不响应的问题,需用点击第二次watch才响应mv变化,这个问题无法解决
6
+ // export const JaInputI18n: SFCWithInstall<typeof _JaInputI18n> = withInstall(_JaInputI18n);
7
+
8
+ export const JaInputI18nRaw: SFCWithInstall<typeof InputI18n> = withInstall(InputI18n);
@@ -1,98 +1,98 @@
1
- <script setup lang="ts">
2
- import {inject, ref, watch, computed} from 'vue'
3
- import {ElInputNumber} from 'element-plus'
4
- import type {ValidationInstance} from '../../hooks/useBackendValidations'
5
- import {getValue, setValue} from "../../utils/objectUtils";
6
-
7
- const props = withDefaults(defineProps<{
8
- min?: number
9
- max?: number
10
- step?: number
11
- stepStrictly?: boolean
12
- precision?: number
13
- size?: 'large' | 'default' | 'small'
14
- readonly?: boolean
15
- disabled?: boolean
16
- controls?: boolean
17
- controlsPosition?: '' | 'right'
18
- name?: string
19
- label?: string
20
- ariaLabel?: string
21
- placeholder?: string
22
- id?: string
23
- valueOnClear?: number | null | 'min' | 'max'
24
- validateEvent?: boolean
25
- }>(), {
26
- min: -Infinity,
27
- max: Infinity,
28
- step: 1,
29
- stepStrictly: false,
30
- size: 'small',
31
- readonly: false,
32
- controls: true,
33
- validateEvent: true
34
- })
35
-
36
- const model = inject('aceFormModel') as Record<string, any>
37
- const prop = inject('aceFormItemProp') as string
38
- const validator = inject('aceFormValidator') as ValidationInstance
39
- const size = computed<'large' | 'default' | 'small' | undefined>(() => {
40
- return props.size ? props.size : inject("aceFormSize");
41
- });
42
- const input = ref<typeof ElInputNumber>()
43
- const emit = defineEmits<{
44
- blur: [evt: Event]
45
- focus: [evt: Event]
46
- change: [value?: number]
47
- }>()
48
- type ModelType = number;
49
-
50
- function onChange(value?: number) {
51
- validator.removeFieldError(prop)
52
- setValue(model.formData, prop, mv.value)
53
- emit('change', value)
54
- }
55
-
56
- const mv = ref(getValue(model.formData, prop) as ModelType);
57
- watch(() => model.formData, () => {
58
- mv.value = getValue(model.formData, prop) as ModelType
59
- }, {
60
- deep: true
61
- })
62
- defineExpose({
63
- focus() {
64
- input?.value?.focus()
65
- },
66
- blur() {
67
- input?.value?.blur()
68
- },
69
- elInputNumber: input
70
- })
71
- </script>
72
-
73
- <template>
74
- <el-input-number :min="min"
75
- :max="max"
76
- :label="label"
77
- :disabled="disabled"
78
- :id="id"
79
- :aria-label="ariaLabel"
80
- :controls="controls"
81
- :controls-position="controlsPosition"
82
- v-model="mv"
83
- :name="name"
84
- :placeholder="placeholder"
85
- :precision="precision"
86
- :readonly="readonly"
87
- :size="size"
88
- :step="step"
89
- :step-strictly="stepStrictly"
90
- :value-on-clear="valueOnClear"
91
- :validate-event="validateEvent"
92
- @change="onChange"
93
- @blur="evt => $emit('blur', evt)"
94
- @focus="evt => $emit('focus', evt)">
95
- <slot name="decrease-icon"></slot>
96
- <slot name="increase-icon"></slot>
97
- </el-input-number>
98
- </template>
1
+ <script setup lang="ts">
2
+ import {inject, ref, watch, computed} from 'vue'
3
+ import {ElInputNumber} from 'element-plus'
4
+ import type {ValidationInstance} from '../../hooks/useBackendValidations'
5
+ import {getValue, setValue} from "../../utils/objectUtils";
6
+
7
+ const props = withDefaults(defineProps<{
8
+ min?: number
9
+ max?: number
10
+ step?: number
11
+ stepStrictly?: boolean
12
+ precision?: number
13
+ size?: 'large' | 'default' | 'small'
14
+ readonly?: boolean
15
+ disabled?: boolean
16
+ controls?: boolean
17
+ controlsPosition?: '' | 'right'
18
+ name?: string
19
+ label?: string
20
+ ariaLabel?: string
21
+ placeholder?: string
22
+ id?: string
23
+ valueOnClear?: number | null | 'min' | 'max'
24
+ validateEvent?: boolean
25
+ }>(), {
26
+ min: -Infinity,
27
+ max: Infinity,
28
+ step: 1,
29
+ stepStrictly: false,
30
+ size: 'small',
31
+ readonly: false,
32
+ controls: true,
33
+ validateEvent: true
34
+ })
35
+
36
+ const model = inject('aceFormModel') as Record<string, any>
37
+ const prop = inject('aceFormItemProp') as string
38
+ const validator = inject('aceFormValidator') as ValidationInstance
39
+ const size = computed<'large' | 'default' | 'small' | undefined>(() => {
40
+ return props.size ? props.size : inject("aceFormSize");
41
+ });
42
+ const input = ref<typeof ElInputNumber>()
43
+ const emit = defineEmits<{
44
+ blur: [evt: Event]
45
+ focus: [evt: Event]
46
+ change: [value?: number]
47
+ }>()
48
+ type ModelType = number;
49
+
50
+ function onChange(value?: number) {
51
+ validator.removeFieldError(prop)
52
+ setValue(model.formData, prop, mv.value)
53
+ emit('change', value)
54
+ }
55
+
56
+ const mv = ref(getValue(model.formData, prop) as ModelType);
57
+ watch(() => model.formData, () => {
58
+ mv.value = getValue(model.formData, prop) as ModelType
59
+ }, {
60
+ deep: true
61
+ })
62
+ defineExpose({
63
+ focus() {
64
+ input?.value?.focus()
65
+ },
66
+ blur() {
67
+ input?.value?.blur()
68
+ },
69
+ elInputNumber: input
70
+ })
71
+ </script>
72
+
73
+ <template>
74
+ <el-input-number :min="min"
75
+ :max="max"
76
+ :label="label"
77
+ :disabled="disabled"
78
+ :id="id"
79
+ :aria-label="ariaLabel"
80
+ :controls="controls"
81
+ :controls-position="controlsPosition"
82
+ v-model="mv"
83
+ :name="name"
84
+ :placeholder="placeholder"
85
+ :precision="precision"
86
+ :readonly="readonly"
87
+ :size="size"
88
+ :step="step"
89
+ :step-strictly="stepStrictly"
90
+ :value-on-clear="valueOnClear"
91
+ :validate-event="validateEvent"
92
+ @change="onChange"
93
+ @blur="evt => $emit('blur', evt)"
94
+ @focus="evt => $emit('focus', evt)">
95
+ <slot name="decrease-icon"></slot>
96
+ <slot name="increase-icon"></slot>
97
+ </el-input-number>
98
+ </template>
@@ -1,4 +1,4 @@
1
- import {type SFCWithInstall, withInstall} from "../../utils/install";
2
- import InputNumber from "./JaInputNumber.vue";
3
- export const JaInputNumber:SFCWithInstall<typeof InputNumber> = withInstall(InputNumber);
4
- export default InputNumber;
1
+ import {type SFCWithInstall, withInstall} from "../../utils/install";
2
+ import InputNumber from "./JaInputNumber.vue";
3
+ export const JaInputNumber:SFCWithInstall<typeof InputNumber> = withInstall(InputNumber);
4
+ export default InputNumber;