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