@jari-ace/element-plus-component 0.2.0 → 0.2.2

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 (149) hide show
  1. package/README.md +1 -18
  2. package/dist/components/form/JaForm.vue.d.ts +3 -0
  3. package/dist/components/form/JaForm.vue.d.ts.map +1 -1
  4. package/dist/components/form/JaForm.vue.js +22 -68
  5. package/dist/components/form/JaForm.vue.js.map +1 -1
  6. package/dist/components/formItem/JaFormItem.vue.d.ts +4 -0
  7. package/dist/components/formItem/JaFormItem.vue.d.ts.map +1 -1
  8. package/dist/components/formItem/JaFormItem.vue.js +26 -8
  9. package/dist/components/formItem/JaFormItem.vue.js.map +1 -1
  10. package/dist/components/userPicker/src/JaUserList.vue.d.ts.map +1 -1
  11. package/dist/components/userPicker/src/JaUserList.vue.js +41 -7
  12. package/dist/components/userPicker/src/JaUserList.vue.js.map +1 -1
  13. package/dist/components/userPicker/src/JaUserPicker.vue.d.ts +9 -2
  14. package/dist/components/userPicker/src/JaUserPicker.vue.d.ts.map +1 -1
  15. package/dist/components/userPicker/src/JaUserPicker.vue.js +7 -2
  16. package/dist/components/userPicker/src/JaUserPicker.vue.js.map +1 -1
  17. package/dist/components/userPicker/src/UserPicker.vue.d.ts +33 -112
  18. package/dist/components/userPicker/src/UserPicker.vue.d.ts.map +1 -1
  19. package/dist/components/userPicker/src/UserPicker.vue.js +262 -288
  20. package/dist/components/userPicker/src/UserPicker.vue.js.map +1 -1
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +3 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/utils/formUtils.d.ts +7 -0
  26. package/dist/utils/formUtils.d.ts.map +1 -0
  27. package/dist/utils/formUtils.js +54 -0
  28. package/dist/utils/formUtils.js.map +1 -0
  29. package/lib/index.css +1 -1
  30. package/lib/index.js +1904 -1830
  31. package/lib/index.umd.cjs +2 -2
  32. package/package.json +61 -61
  33. package/packages/components/autoComplete/JaAutoComplete.vue +47 -47
  34. package/packages/components/autoComplete/index.ts +5 -5
  35. package/packages/components/avatar/JaAvatar.vue +126 -126
  36. package/packages/components/avatar/avatarToken.ts +11 -11
  37. package/packages/components/avatar/defaultImg.ts +14 -14
  38. package/packages/components/avatar/index.ts +7 -7
  39. package/packages/components/button/JaButton.vue +51 -51
  40. package/packages/components/button/index.ts +4 -4
  41. package/packages/components/channelPicker/index.ts +7 -7
  42. package/packages/components/channelPicker/src/ChannelPicker.vue +43 -43
  43. package/packages/components/channelPicker/src/JaChannelPicker.vue +42 -42
  44. package/packages/components/checkbox/JaCheckbox.vue +73 -73
  45. package/packages/components/checkbox/index.ts +4 -4
  46. package/packages/components/checkboxGroup/JaCheckboxGroup.vue +45 -45
  47. package/packages/components/checkboxGroup/index.ts +4 -4
  48. package/packages/components/customGroupTree/index.ts +10 -10
  49. package/packages/components/customGroupTree/src/customGroupTree.vue +91 -91
  50. package/packages/components/datePicker/JaDatePicker.vue +52 -52
  51. package/packages/components/datePicker/index.ts +4 -4
  52. package/packages/components/departmentPicker/index.ts +4 -4
  53. package/packages/components/departmentPicker/src/DepartmentPicker.vue +107 -107
  54. package/packages/components/departmentPicker/src/consts.ts +2 -2
  55. package/packages/components/departmentTree/index.ts +10 -10
  56. package/packages/components/departmentTree/src/departmentTree.vue +135 -135
  57. package/packages/components/dropdownButton/JaDropdownButton.vue +59 -59
  58. package/packages/components/dropdownButton/index.ts +4 -4
  59. package/packages/components/enumList/EnumListInput.vue +107 -107
  60. package/packages/components/enumList/JaEnumList.vue +39 -39
  61. package/packages/components/enumList/index.ts +7 -7
  62. package/packages/components/enumPicker/index.ts +5 -5
  63. package/packages/components/enumPicker/src/EnumPicker.vue +103 -103
  64. package/packages/components/form/JaForm.vue +146 -186
  65. package/packages/components/form/index.ts +5 -5
  66. package/packages/components/form/types.ts +4 -4
  67. package/packages/components/formItem/JaFormItem.vue +87 -68
  68. package/packages/components/formItem/index.ts +4 -4
  69. package/packages/components/index.ts +34 -34
  70. package/packages/components/input/JaInput.vue +143 -143
  71. package/packages/components/input/index.ts +4 -4
  72. package/packages/components/inputI18n/I18nBundleEditor.vue +76 -76
  73. package/packages/components/inputI18n/InputI18n.vue +146 -146
  74. package/packages/components/inputI18n/JaInputI18n.vue +50 -50
  75. package/packages/components/inputI18n/index.ts +8 -8
  76. package/packages/components/inputNumber/JaInputNumber.vue +98 -98
  77. package/packages/components/inputNumber/index.ts +4 -4
  78. package/packages/components/mapItemList/JaMapItemList.vue +35 -35
  79. package/packages/components/mapItemList/MapItemListInput.vue +191 -191
  80. package/packages/components/mapItemList/index.ts +7 -7
  81. package/packages/components/numberList/JaNumberList.vue +36 -36
  82. package/packages/components/numberList/NumberListInput.vue +111 -111
  83. package/packages/components/numberList/index.ts +7 -7
  84. package/packages/components/properyPicker/JaPropertyPicker.vue +38 -38
  85. package/packages/components/properyPicker/PropertyPicker.vue +314 -314
  86. package/packages/components/properyPicker/index.ts +7 -7
  87. package/packages/components/radioGroup/JaRadioGroup.vue +50 -50
  88. package/packages/components/radioGroup/index.ts +4 -4
  89. package/packages/components/rolePicker/RoleEditor.vue +129 -129
  90. package/packages/components/rolePicker/RolePicker.vue +44 -44
  91. package/packages/components/rolePicker/RolePickerRaw.vue +56 -56
  92. package/packages/components/rolePicker/baseRolePicker.vue +87 -87
  93. package/packages/components/rolePicker/index.ts +10 -10
  94. package/packages/components/scrollbar/Scrollbar.vue +89 -89
  95. package/packages/components/scrollbar/index.ts +5 -5
  96. package/packages/components/scrollbar/utils.ts +17 -17
  97. package/packages/components/select/JaSelect.vue +48 -48
  98. package/packages/components/select/index.ts +4 -4
  99. package/packages/components/stringList/JaStringList.vue +36 -36
  100. package/packages/components/stringList/StringListInput.vue +96 -96
  101. package/packages/components/stringList/index.ts +7 -7
  102. package/packages/components/switch/JaSwitch.vue +50 -50
  103. package/packages/components/switch/index.ts +4 -4
  104. package/packages/components/timePicker/JaTimePicker.vue +52 -52
  105. package/packages/components/timePicker/index.ts +5 -5
  106. package/packages/components/tip/index.ts +4 -4
  107. package/packages/components/tip/src/AceTip.vue +43 -43
  108. package/packages/components/upload/index.ts +6 -6
  109. package/packages/components/upload/src/Upload.vue +25 -25
  110. package/packages/components/upload/src/type.ts +3 -3
  111. package/packages/components/userGroupPicker/index.ts +4 -4
  112. package/packages/components/userGroupPicker/src/UserGroupPicker.vue +94 -94
  113. package/packages/components/userGroupTree/index.ts +10 -10
  114. package/packages/components/userGroupTree/src/userGroupTree.vue +149 -149
  115. package/packages/components/userPicker/index.ts +10 -10
  116. package/packages/components/userPicker/src/CustomGroupManager.vue +189 -189
  117. package/packages/components/userPicker/src/JaUserList.vue +317 -283
  118. package/packages/components/userPicker/src/JaUserPicker.vue +40 -37
  119. package/packages/components/userPicker/src/UserPicker.vue +472 -376
  120. package/packages/components/userSelectDialog/index.ts +6 -6
  121. package/packages/components/userSelectDialog/src/userSelectDialog.vue +462 -462
  122. package/packages/components/userTag/UserInfoTag.vue +397 -397
  123. package/packages/components/userTag/index.ts +6 -6
  124. package/packages/components/userTag/sharedAxios.ts +8 -8
  125. package/packages/directives/auth/index.ts +41 -41
  126. package/packages/directives/autofocus/index.ts +29 -29
  127. package/packages/directives/index.ts +10 -10
  128. package/packages/directives/shortcut/index.ts +192 -192
  129. package/packages/hooks/useAppInstances.ts +34 -34
  130. package/packages/hooks/useBackendValidations.ts +81 -81
  131. package/packages/hooks/useBridage.ts +157 -157
  132. package/packages/hooks/useClassificationLevels.ts +62 -62
  133. package/packages/hooks/useDateTimeShortCuts.ts +65 -65
  134. package/packages/hooks/useRealms.ts +28 -28
  135. package/packages/hooks/useTreeData.ts +45 -45
  136. package/packages/hooks/useUserRefQuery.ts +232 -232
  137. package/packages/index.ts +24 -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/formUtils.ts +57 -0
  142. package/packages/utils/install.ts +43 -43
  143. package/packages/utils/objectUtils.ts +31 -31
  144. package/theme-style/fonts/iconfont.json +5196 -5196
  145. package/theme-style/index.scss +10 -10
  146. package/theme-style/styles/element-plus-var.scss +1419 -1419
  147. package/theme-style/styles/iconfont.css +2979 -2979
  148. package/theme-style/styles/theme-var.scss +72 -72
  149. package/theme-style/styles/transition.scss +122 -122
@@ -1,76 +1,76 @@
1
- <script setup lang="ts">
2
- import {
3
- createAxiosWithoutCache,
4
- type CreateAppMessageBundleCommand, useAppMessageApi, type AppInstance
5
- } from "@jari-ace/app-bolts";
6
- import {ref, watch} from 'vue'
7
- import {useAppInstances} from "../../hooks/useAppInstances";
8
- import {ElDrawer, ElForm, ElFormItem, ElInput, ElButton} from "element-plus";
9
- import {JaButton} from "../button";
10
-
11
- const visible = defineModel<boolean>({
12
- default: false,
13
- required: true
14
- });
15
- const props = defineProps<{
16
- appId: string,
17
- preKey?: string
18
- }>();
19
- const axios = createAxiosWithoutCache();
20
- const api = useAppMessageApi(axios);
21
- const app = ref<AppInstance>();
22
- const key = ref("");
23
- const messages = ref<Record<string, string>>({})
24
- const emits = defineEmits(["success"])
25
- const appInstances = await useAppInstances();
26
-
27
- function onOpen() {
28
- loadApp();
29
- key.value = props.preKey ?? "";
30
- messages.value = {};
31
- }
32
-
33
- async function onSubmit() {
34
- const cmd = {
35
- key: key.value,
36
- messages: messages.value,
37
- appInstance: {
38
- id: props.appId
39
- }
40
- } as CreateAppMessageBundleCommand;
41
- await api.createBundle(cmd);
42
- visible.value = false;
43
- emits('success', key.value);
44
- }
45
-
46
- async function loadApp() {
47
- app.value = await appInstances.getById(props.appId)
48
- }
49
-
50
- watch(() => props.appId, async () => {
51
- await loadApp();
52
- })
53
- </script>
54
-
55
- <template>
56
- <el-drawer destroy-on-close append-to-body v-model="visible"
57
- title="创建国际化文本" @open="onOpen">
58
- <el-form label-position="top" size="default">
59
- <el-form-item label="文本键" required>
60
- <el-input v-model="key" v-focus></el-input>
61
- </el-form-item>
62
- <el-form-item v-for="l in app?.supportedLocales" :key="l" :label="l">
63
- <el-input type="textarea" :rows="4" v-model="messages[l]"></el-input>
64
- </el-form-item>
65
- </el-form>
66
- <template #footer>
67
- <ja-button size="default" shortcut="Alt+Enter" type="primary" @click="onSubmit">确定
68
- </ja-button>
69
- <el-button size="default" plain @click="visible = false">取消</el-button>
70
- </template>
71
- </el-drawer>
72
- </template>
73
-
74
- <style scoped lang="scss">
75
-
76
- </style>
1
+ <script setup lang="ts">
2
+ import {
3
+ createAxiosWithoutCache,
4
+ type CreateAppMessageBundleCommand, useAppMessageApi, type AppInstance
5
+ } from "@jari-ace/app-bolts";
6
+ import {ref, watch} from 'vue'
7
+ import {useAppInstances} from "../../hooks/useAppInstances";
8
+ import {ElDrawer, ElForm, ElFormItem, ElInput, ElButton} from "element-plus";
9
+ import {JaButton} from "../button";
10
+
11
+ const visible = defineModel<boolean>({
12
+ default: false,
13
+ required: true
14
+ });
15
+ const props = defineProps<{
16
+ appId: string,
17
+ preKey?: string
18
+ }>();
19
+ const axios = createAxiosWithoutCache();
20
+ const api = useAppMessageApi(axios);
21
+ const app = ref<AppInstance>();
22
+ const key = ref("");
23
+ const messages = ref<Record<string, string>>({})
24
+ const emits = defineEmits(["success"])
25
+ const appInstances = await useAppInstances();
26
+
27
+ function onOpen() {
28
+ loadApp();
29
+ key.value = props.preKey ?? "";
30
+ messages.value = {};
31
+ }
32
+
33
+ async function onSubmit() {
34
+ const cmd = {
35
+ key: key.value,
36
+ messages: messages.value,
37
+ appInstance: {
38
+ id: props.appId
39
+ }
40
+ } as CreateAppMessageBundleCommand;
41
+ await api.createBundle(cmd);
42
+ visible.value = false;
43
+ emits('success', key.value);
44
+ }
45
+
46
+ async function loadApp() {
47
+ app.value = await appInstances.getById(props.appId)
48
+ }
49
+
50
+ watch(() => props.appId, async () => {
51
+ await loadApp();
52
+ })
53
+ </script>
54
+
55
+ <template>
56
+ <el-drawer destroy-on-close append-to-body v-model="visible"
57
+ title="创建国际化文本" @open="onOpen">
58
+ <el-form label-position="top" size="default">
59
+ <el-form-item label="文本键" required>
60
+ <el-input v-model="key" v-focus></el-input>
61
+ </el-form-item>
62
+ <el-form-item v-for="l in app?.supportedLocales" :key="l" :label="l">
63
+ <el-input type="textarea" :rows="4" v-model="messages[l]"></el-input>
64
+ </el-form-item>
65
+ </el-form>
66
+ <template #footer>
67
+ <ja-button size="default" shortcut="Alt+Enter" type="primary" @click="onSubmit">确定
68
+ </ja-button>
69
+ <el-button size="default" plain @click="visible = false">取消</el-button>
70
+ </template>
71
+ </el-drawer>
72
+ </template>
73
+
74
+ <style scoped lang="scss">
75
+
76
+ </style>
@@ -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);