@flyanra/vue-core 1.2.1 → 1.3.1
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/dist/types/components/general/fly-icon-v2/index.d.ts +1 -1
- package/dist/types/composables/index.d.ts +4 -3
- package/dist/types/composables/useFeatureGate/index.d.ts +1 -0
- package/dist/types/composables/useFeatureGate/useFeatureGate.d.ts +6 -0
- package/dist/types/composables/useFormHider/index.d.ts +1 -0
- package/dist/types/composables/useFormHider/useFormHider.d.ts +8 -0
- package/dist/types/composables/useLocaleInjector/index.d.ts +2 -0
- package/dist/types/composables/useSidebarActiveIndex/index.d.ts +1 -0
- package/dist/types/composables/{useSidebarActiveIndex.d.ts → useSidebarActiveIndex/useSidebarActiveIndex.d.ts} +1 -1
- package/package.json +4 -3
- package/src/components/basic/fly-button/FlyButton.types.ts +28 -28
- package/src/components/basic/fly-button/FlyButton.vue +178 -178
- package/src/components/basic/typography/FlyCollapseTitleRenderer.vue +46 -46
- package/src/components/feedback/tooltip/FlyInfoTooltip.vue +49 -49
- package/src/components/feedback/tooltip/FlyTooltip.element.scss +4 -4
- package/src/components/feedback/tooltip/FlyTooltip.vue +60 -60
- package/src/components/form/form.utils.ts +72 -72
- package/src/components/form/index.ts +6 -6
- package/src/components/form/input-renderers/boolean/FlyBoolean.vue +48 -48
- package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue +48 -48
- package/src/components/form/input-renderers/form-item-renderer/index.ts +4 -4
- package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.ts +3 -3
- package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.ts +221 -221
- package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue +75 -75
- package/src/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.ts +97 -97
- package/src/components/form/input-renderers/input-renderer/FlyInputRenderer.vue +49 -49
- package/src/components/form/input-renderers/input-renderer/index.ts +4 -4
- package/src/components/form/input-renderers/input-renderer.utils.ts +18 -18
- package/src/components/form/input-renderers/number/FlyNumber.vue +64 -64
- package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.ts +15 -15
- package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue +99 -99
- package/src/components/form/input-renderers/select/FlySelect.scss +1 -1
- package/src/components/form/input-renderers/select/FlySelect.utils.ts +37 -37
- package/src/components/form/input-renderers/text/FlyText.vue +70 -70
- package/src/components/form/input-renderers/value-unit/FlyValueUnit.vue +102 -102
- package/src/components/form/input-validators.ts +99 -99
- package/src/components/general/fly-icon-v2/FlyIconV2.types.ts +6 -6
- package/src/components/general/fly-icon-v2/FlyIconV2.vue +17 -17
- package/src/components/general/fly-icon-v2/index.ts +6 -6
- package/src/components/general/index.ts +5 -5
- package/src/components/index.ts +7 -7
- package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.ts +8 -8
- package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue +55 -55
- package/src/components/navigation/menu/fly-sidebar/FlySidebar.types.ts +49 -49
- package/src/components/navigation/menu/fly-sidebar/FlySidebar.vue +146 -146
- package/src/components/navigation/menu/fly-sidebar/FlySidebarNode.vue +47 -47
- package/src/composables/index.ts +4 -4
- package/src/composables/useFeatureGate/index.ts +1 -0
- package/src/composables/useFeatureGate/useFeatureGate.ts +19 -0
- package/src/composables/useFormHider/index.ts +1 -0
- package/src/composables/useFormHider/useFormHider.ts +37 -0
- package/src/composables/{UseLocaleInjector.ts → useLocaleInjector/UseLocaleInjector.ts} +37 -37
- package/src/composables/useLocaleInjector/index.ts +2 -0
- package/src/composables/useSidebarActiveIndex/index.ts +1 -0
- package/src/composables/{useSidebarActiveIndex.ts → useSidebarActiveIndex/useSidebarActiveIndex.ts} +103 -103
- package/src/styles/element/mixins/collapse.scss +61 -61
- package/src/styles/element/overrides/form.scss +121 -121
- package/src/styles/element/overrides/message-box.scss +2 -2
- package/src/styles/element/overrides/radio.scss +2 -2
- package/src/styles/element/overrides/select.scss +9 -9
- package/src/utils/index.ts +2 -2
- package/src/utils/pure-functions.ts +15 -15
- package/src/utils/validators.ts +81 -81
- /package/dist/types/composables/{UseLocaleInjector.d.ts → useLocaleInjector/UseLocaleInjector.d.ts} +0 -0
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<span class="fly-info-tooltip">
|
|
3
|
-
<FlyTooltip
|
|
4
|
-
v-if="content"
|
|
5
|
-
:tooltip="{
|
|
6
|
-
content: DOMPurify.sanitize(content)
|
|
7
|
-
}"
|
|
8
|
-
>
|
|
9
|
-
<slot name="trigger">
|
|
10
|
-
<FlyIcon class="tw-cursor-pointer" :icon="mdiInformationSlabBoxOutline" />
|
|
11
|
-
</slot>
|
|
12
|
-
<template #content>
|
|
13
|
-
<!-- eslint-disable-next-line vue/no-v-html -->
|
|
14
|
-
<div v-if="html" v-html="DOMPurify.sanitize(content)"></div>
|
|
15
|
-
<slot v-else></slot>
|
|
16
|
-
</template>
|
|
17
|
-
</FlyTooltip>
|
|
18
|
-
</span>
|
|
19
|
-
</template>
|
|
20
|
-
|
|
21
|
-
<script setup lang="ts">
|
|
22
|
-
import { mdiInformationSlabBoxOutline } from '@mdi/js'
|
|
23
|
-
import DOMPurify from 'dompurify'
|
|
24
|
-
|
|
25
|
-
import FlyIcon from '../../general/fly-icon/FlyIcon.vue'
|
|
26
|
-
|
|
27
|
-
import FlyTooltip from './FlyTooltip.vue'
|
|
28
|
-
|
|
29
|
-
defineProps({
|
|
30
|
-
content: {
|
|
31
|
-
type: String,
|
|
32
|
-
default: ''
|
|
33
|
-
},
|
|
34
|
-
html: {
|
|
35
|
-
type: Boolean,
|
|
36
|
-
default: false
|
|
37
|
-
}
|
|
38
|
-
})
|
|
39
|
-
</script>
|
|
40
|
-
|
|
41
|
-
<style lang="scss" scoped>
|
|
42
|
-
.fly-info-tooltip {
|
|
43
|
-
:deep(.app-icon) {
|
|
44
|
-
svg {
|
|
45
|
-
display: inline;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<span class="fly-info-tooltip">
|
|
3
|
+
<FlyTooltip
|
|
4
|
+
v-if="content"
|
|
5
|
+
:tooltip="{
|
|
6
|
+
content: DOMPurify.sanitize(content)
|
|
7
|
+
}"
|
|
8
|
+
>
|
|
9
|
+
<slot name="trigger">
|
|
10
|
+
<FlyIcon class="tw-cursor-pointer" :icon="mdiInformationSlabBoxOutline" />
|
|
11
|
+
</slot>
|
|
12
|
+
<template #content>
|
|
13
|
+
<!-- eslint-disable-next-line vue/no-v-html -->
|
|
14
|
+
<div v-if="html" v-html="DOMPurify.sanitize(content)"></div>
|
|
15
|
+
<slot v-else></slot>
|
|
16
|
+
</template>
|
|
17
|
+
</FlyTooltip>
|
|
18
|
+
</span>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script setup lang="ts">
|
|
22
|
+
import { mdiInformationSlabBoxOutline } from '@mdi/js'
|
|
23
|
+
import DOMPurify from 'dompurify'
|
|
24
|
+
|
|
25
|
+
import FlyIcon from '../../general/fly-icon/FlyIcon.vue'
|
|
26
|
+
|
|
27
|
+
import FlyTooltip from './FlyTooltip.vue'
|
|
28
|
+
|
|
29
|
+
defineProps({
|
|
30
|
+
content: {
|
|
31
|
+
type: String,
|
|
32
|
+
default: ''
|
|
33
|
+
},
|
|
34
|
+
html: {
|
|
35
|
+
type: Boolean,
|
|
36
|
+
default: false
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<style lang="scss" scoped>
|
|
42
|
+
.fly-info-tooltip {
|
|
43
|
+
:deep(.app-icon) {
|
|
44
|
+
svg {
|
|
45
|
+
display: inline;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@use '../../../styles//element/common.scss' as *;
|
|
2
|
-
|
|
3
|
-
@use 'element-plus/theme-chalk/src/popper.scss' as *;
|
|
4
|
-
@use 'element-plus/theme-chalk/src/tooltip.scss' as *;
|
|
1
|
+
@use '../../../styles//element/common.scss' as *;
|
|
2
|
+
|
|
3
|
+
@use 'element-plus/theme-chalk/src/popper.scss' as *;
|
|
4
|
+
@use 'element-plus/theme-chalk/src/tooltip.scss' as *;
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-tooltip
|
|
3
|
-
v-bind="mergedElProps"
|
|
4
|
-
:popper-class="`fly-tooltip-popper ${popperClasses}`"
|
|
5
|
-
class="fly-tooltip"
|
|
6
|
-
>
|
|
7
|
-
<template v-if="$slots.default">
|
|
8
|
-
<slot></slot>
|
|
9
|
-
</template>
|
|
10
|
-
|
|
11
|
-
<template v-if="$slots.content" #content>
|
|
12
|
-
<slot name="content"></slot>
|
|
13
|
-
</template>
|
|
14
|
-
</el-tooltip>
|
|
15
|
-
</template>
|
|
16
|
-
|
|
17
|
-
<script lang="ts" setup>
|
|
18
|
-
import { computed } from 'vue'
|
|
19
|
-
|
|
20
|
-
import { ElTooltip, type UseTooltipProps } from 'element-plus'
|
|
21
|
-
|
|
22
|
-
import './FlyTooltip.element.scss'
|
|
23
|
-
import type { T_FlyTooltipProps } from './FlyTooltip.types'
|
|
24
|
-
|
|
25
|
-
const props = defineProps<T_FlyTooltipProps>()
|
|
26
|
-
|
|
27
|
-
const mergedElProps = computed<UseTooltipProps>(() => {
|
|
28
|
-
return {
|
|
29
|
-
enterable: false,
|
|
30
|
-
showAfter: 1000,
|
|
31
|
-
...props.tooltip
|
|
32
|
-
}
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
const popperClasses = computed(() => {
|
|
36
|
-
const classes = []
|
|
37
|
-
|
|
38
|
-
if (!mergedElProps.value.enterable) {
|
|
39
|
-
classes.push('fly-tooltip-popper__no-enter')
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return classes.join(' ')
|
|
43
|
-
})
|
|
44
|
-
</script>
|
|
45
|
-
|
|
46
|
-
<style lang="scss">
|
|
47
|
-
@use '../../../styles/mixins/shadows.scss' as shadow;
|
|
48
|
-
|
|
49
|
-
.fly-tooltip-popper {
|
|
50
|
-
@include shadow.shadow-lg;
|
|
51
|
-
max-width: 400px;
|
|
52
|
-
|
|
53
|
-
&__no-enter {
|
|
54
|
-
.fly-tooltip {
|
|
55
|
-
pointer-events: none;
|
|
56
|
-
max-width: 400px;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<el-tooltip
|
|
3
|
+
v-bind="mergedElProps"
|
|
4
|
+
:popper-class="`fly-tooltip-popper ${popperClasses}`"
|
|
5
|
+
class="fly-tooltip"
|
|
6
|
+
>
|
|
7
|
+
<template v-if="$slots.default">
|
|
8
|
+
<slot></slot>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<template v-if="$slots.content" #content>
|
|
12
|
+
<slot name="content"></slot>
|
|
13
|
+
</template>
|
|
14
|
+
</el-tooltip>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script lang="ts" setup>
|
|
18
|
+
import { computed } from 'vue'
|
|
19
|
+
|
|
20
|
+
import { ElTooltip, type UseTooltipProps } from 'element-plus'
|
|
21
|
+
|
|
22
|
+
import './FlyTooltip.element.scss'
|
|
23
|
+
import type { T_FlyTooltipProps } from './FlyTooltip.types'
|
|
24
|
+
|
|
25
|
+
const props = defineProps<T_FlyTooltipProps>()
|
|
26
|
+
|
|
27
|
+
const mergedElProps = computed<UseTooltipProps>(() => {
|
|
28
|
+
return {
|
|
29
|
+
enterable: false,
|
|
30
|
+
showAfter: 1000,
|
|
31
|
+
...props.tooltip
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
const popperClasses = computed(() => {
|
|
36
|
+
const classes = []
|
|
37
|
+
|
|
38
|
+
if (!mergedElProps.value.enterable) {
|
|
39
|
+
classes.push('fly-tooltip-popper__no-enter')
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return classes.join(' ')
|
|
43
|
+
})
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<style lang="scss">
|
|
47
|
+
@use '../../../styles/mixins/shadows.scss' as shadow;
|
|
48
|
+
|
|
49
|
+
.fly-tooltip-popper {
|
|
50
|
+
@include shadow.shadow-lg;
|
|
51
|
+
max-width: 400px;
|
|
52
|
+
|
|
53
|
+
&__no-enter {
|
|
54
|
+
.fly-tooltip {
|
|
55
|
+
pointer-events: none;
|
|
56
|
+
max-width: 400px;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
</style>
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import type { FormInstance } from 'element-plus'
|
|
2
|
-
|
|
3
|
-
import { UseLocaleInjector } from '../../composables/UseLocaleInjector'
|
|
4
|
-
|
|
5
|
-
export type ValidateFieldsError = { [K: string]: { message?: string }[] }
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @returns Translated error message based on active locale
|
|
9
|
-
*/
|
|
10
|
-
export function formFieldErrorMessageFormatter(errors: ValidateFieldsError) {
|
|
11
|
-
const { t, locale } = UseLocaleInjector()
|
|
12
|
-
const keys = Object.keys(errors)
|
|
13
|
-
|
|
14
|
-
if (keys.length) {
|
|
15
|
-
const requiredFieldNames: (string | undefined)[] = []
|
|
16
|
-
const otherErrors: (string | undefined)[] = []
|
|
17
|
-
let formFieldErrorMessage = ''
|
|
18
|
-
|
|
19
|
-
keys.forEach((k) => {
|
|
20
|
-
const msg = errors[k][0].message
|
|
21
|
-
const index = msg?.indexOf(t ? t('validation.isRequired') : 'validation.isRequired')
|
|
22
|
-
|
|
23
|
-
if (index && index >= 0) {
|
|
24
|
-
requiredFieldNames.push(msg?.slice(0, index)?.trim())
|
|
25
|
-
} else {
|
|
26
|
-
otherErrors.push(msg)
|
|
27
|
-
}
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
const requiredFieldsLength = requiredFieldNames.length
|
|
31
|
-
const otherErrorsLength = otherErrors.length
|
|
32
|
-
|
|
33
|
-
if (requiredFieldsLength >= 1) {
|
|
34
|
-
const joinedList = new Intl.ListFormat(locale, {
|
|
35
|
-
style: 'long',
|
|
36
|
-
type: 'conjunction'
|
|
37
|
-
}).format(requiredFieldNames.filter((item): item is string => Boolean(item)))
|
|
38
|
-
|
|
39
|
-
formFieldErrorMessage = t
|
|
40
|
-
? t('validation.requiredFields', {
|
|
41
|
-
field: joinedList,
|
|
42
|
-
count: requiredFieldNames.length
|
|
43
|
-
})
|
|
44
|
-
: joinedList
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (otherErrorsLength) {
|
|
48
|
-
if (formFieldErrorMessage) formFieldErrorMessage += ' || ' // temporary
|
|
49
|
-
otherErrors.forEach((e, i) => {
|
|
50
|
-
formFieldErrorMessage += e + `${i === otherErrorsLength - 1 ? '' : ' || '}` // temporary
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return formFieldErrorMessage
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return t ? t('validation.someInputsInvalid') : 'validation.someInputsInvalid'
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export async function genericFormValidator(formRef: FormInstance): Promise<true> {
|
|
61
|
-
return new Promise((resolve, reject) => {
|
|
62
|
-
formRef.validate((valid, errors) => {
|
|
63
|
-
if (!valid) {
|
|
64
|
-
if (errors) {
|
|
65
|
-
return reject(formFieldErrorMessageFormatter(errors))
|
|
66
|
-
}
|
|
67
|
-
} else {
|
|
68
|
-
return resolve(true)
|
|
69
|
-
}
|
|
70
|
-
})
|
|
71
|
-
})
|
|
72
|
-
}
|
|
1
|
+
import type { FormInstance } from 'element-plus'
|
|
2
|
+
|
|
3
|
+
import { UseLocaleInjector } from '../../composables/useLocaleInjector/UseLocaleInjector'
|
|
4
|
+
|
|
5
|
+
export type ValidateFieldsError = { [K: string]: { message?: string }[] }
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @returns Translated error message based on active locale
|
|
9
|
+
*/
|
|
10
|
+
export function formFieldErrorMessageFormatter(errors: ValidateFieldsError) {
|
|
11
|
+
const { t, locale } = UseLocaleInjector()
|
|
12
|
+
const keys = Object.keys(errors)
|
|
13
|
+
|
|
14
|
+
if (keys.length) {
|
|
15
|
+
const requiredFieldNames: (string | undefined)[] = []
|
|
16
|
+
const otherErrors: (string | undefined)[] = []
|
|
17
|
+
let formFieldErrorMessage = ''
|
|
18
|
+
|
|
19
|
+
keys.forEach((k) => {
|
|
20
|
+
const msg = errors[k][0].message
|
|
21
|
+
const index = msg?.indexOf(t ? t('validation.isRequired') : 'validation.isRequired')
|
|
22
|
+
|
|
23
|
+
if (index && index >= 0) {
|
|
24
|
+
requiredFieldNames.push(msg?.slice(0, index)?.trim())
|
|
25
|
+
} else {
|
|
26
|
+
otherErrors.push(msg)
|
|
27
|
+
}
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
const requiredFieldsLength = requiredFieldNames.length
|
|
31
|
+
const otherErrorsLength = otherErrors.length
|
|
32
|
+
|
|
33
|
+
if (requiredFieldsLength >= 1) {
|
|
34
|
+
const joinedList = new Intl.ListFormat(locale, {
|
|
35
|
+
style: 'long',
|
|
36
|
+
type: 'conjunction'
|
|
37
|
+
}).format(requiredFieldNames.filter((item): item is string => Boolean(item)))
|
|
38
|
+
|
|
39
|
+
formFieldErrorMessage = t
|
|
40
|
+
? t('validation.requiredFields', {
|
|
41
|
+
field: joinedList,
|
|
42
|
+
count: requiredFieldNames.length
|
|
43
|
+
})
|
|
44
|
+
: joinedList
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (otherErrorsLength) {
|
|
48
|
+
if (formFieldErrorMessage) formFieldErrorMessage += ' || ' // temporary
|
|
49
|
+
otherErrors.forEach((e, i) => {
|
|
50
|
+
formFieldErrorMessage += e + `${i === otherErrorsLength - 1 ? '' : ' || '}` // temporary
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return formFieldErrorMessage
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return t ? t('validation.someInputsInvalid') : 'validation.someInputsInvalid'
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export async function genericFormValidator(formRef: FormInstance): Promise<true> {
|
|
61
|
+
return new Promise((resolve, reject) => {
|
|
62
|
+
formRef.validate((valid, errors) => {
|
|
63
|
+
if (!valid) {
|
|
64
|
+
if (errors) {
|
|
65
|
+
return reject(formFieldErrorMessageFormatter(errors))
|
|
66
|
+
}
|
|
67
|
+
} else {
|
|
68
|
+
return resolve(true)
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './input-renderers/form-item-renderer'
|
|
2
|
-
export * from './input-renderers/input-renderer'
|
|
3
|
-
|
|
4
|
-
export type { T_InputRendererBase } from './input-renderers/input-renderer.types'
|
|
5
|
-
export * from './input-validators'
|
|
6
|
-
export * from './form.utils'
|
|
1
|
+
export * from './input-renderers/form-item-renderer'
|
|
2
|
+
export * from './input-renderers/input-renderer'
|
|
3
|
+
|
|
4
|
+
export type { T_InputRendererBase } from './input-renderers/input-renderer.types'
|
|
5
|
+
export * from './input-validators'
|
|
6
|
+
export * from './form.utils'
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-switch
|
|
3
|
-
v-model="inputProxy"
|
|
4
|
-
v-bind="input?.attrs"
|
|
5
|
-
@change="(v) => emit('change', v)"
|
|
6
|
-
></el-switch>
|
|
7
|
-
</template>
|
|
8
|
-
|
|
9
|
-
<script setup lang="ts">
|
|
10
|
-
import { computed, watch } from 'vue'
|
|
11
|
-
|
|
12
|
-
import { ElSwitch } from 'element-plus'
|
|
13
|
-
|
|
14
|
-
import './FlyBoolean.scss'
|
|
15
|
-
import type { T_InputBoolean, T_InputBooleanValues } from './FlyBoolean.types'
|
|
16
|
-
|
|
17
|
-
const emit = defineEmits<{
|
|
18
|
-
(e: 'update:modelValue', v: T_InputBooleanValues): void
|
|
19
|
-
(e: 'change', v: T_InputBooleanValues): void
|
|
20
|
-
}>()
|
|
21
|
-
|
|
22
|
-
const props = defineProps<{
|
|
23
|
-
modelValue?: T_InputBooleanValues
|
|
24
|
-
input?: T_InputBoolean
|
|
25
|
-
}>()
|
|
26
|
-
|
|
27
|
-
const inputProxy = computed({
|
|
28
|
-
get: () => {
|
|
29
|
-
return Boolean(props.modelValue)
|
|
30
|
-
},
|
|
31
|
-
set: (v) => {
|
|
32
|
-
emit('update:modelValue', Boolean(v))
|
|
33
|
-
}
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
watch(
|
|
37
|
-
() => props.modelValue,
|
|
38
|
-
() => {
|
|
39
|
-
const parsed = Boolean(props.modelValue)
|
|
40
|
-
if (parsed !== props.modelValue) {
|
|
41
|
-
emit('update:modelValue', parsed)
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
immediate: true
|
|
46
|
-
}
|
|
47
|
-
)
|
|
48
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<el-switch
|
|
3
|
+
v-model="inputProxy"
|
|
4
|
+
v-bind="input?.attrs"
|
|
5
|
+
@change="(v) => emit('change', v)"
|
|
6
|
+
></el-switch>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script setup lang="ts">
|
|
10
|
+
import { computed, watch } from 'vue'
|
|
11
|
+
|
|
12
|
+
import { ElSwitch } from 'element-plus'
|
|
13
|
+
|
|
14
|
+
import './FlyBoolean.scss'
|
|
15
|
+
import type { T_InputBoolean, T_InputBooleanValues } from './FlyBoolean.types'
|
|
16
|
+
|
|
17
|
+
const emit = defineEmits<{
|
|
18
|
+
(e: 'update:modelValue', v: T_InputBooleanValues): void
|
|
19
|
+
(e: 'change', v: T_InputBooleanValues): void
|
|
20
|
+
}>()
|
|
21
|
+
|
|
22
|
+
const props = defineProps<{
|
|
23
|
+
modelValue?: T_InputBooleanValues
|
|
24
|
+
input?: T_InputBoolean
|
|
25
|
+
}>()
|
|
26
|
+
|
|
27
|
+
const inputProxy = computed({
|
|
28
|
+
get: () => {
|
|
29
|
+
return Boolean(props.modelValue)
|
|
30
|
+
},
|
|
31
|
+
set: (v) => {
|
|
32
|
+
emit('update:modelValue', Boolean(v))
|
|
33
|
+
}
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
watch(
|
|
37
|
+
() => props.modelValue,
|
|
38
|
+
() => {
|
|
39
|
+
const parsed = Boolean(props.modelValue)
|
|
40
|
+
if (parsed !== props.modelValue) {
|
|
41
|
+
emit('update:modelValue', parsed)
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
immediate: true
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
</script>
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-form-item :prop="input.prop || input.key">
|
|
3
|
-
<template #label>
|
|
4
|
-
<FlyInfoTooltip v-if="input.tooltip" :content="input.tooltip" />
|
|
5
|
-
{{ t(input.label) }}
|
|
6
|
-
</template>
|
|
7
|
-
|
|
8
|
-
<FlyInputRenderer
|
|
9
|
-
v-model="modelProxy"
|
|
10
|
-
:input="input"
|
|
11
|
-
@change="(val: unknown) => emit('change', val)"
|
|
12
|
-
@blur="() => emit('blur')"
|
|
13
|
-
@focus="() => emit('focus')"
|
|
14
|
-
/>
|
|
15
|
-
</el-form-item>
|
|
16
|
-
</template>
|
|
17
|
-
|
|
18
|
-
<script setup lang="ts">
|
|
19
|
-
import { computed } from 'vue'
|
|
20
|
-
|
|
21
|
-
import { ElFormItem } from 'element-plus'
|
|
22
|
-
|
|
23
|
-
import { UseLocaleInjector } from '../../../../composables/UseLocaleInjector'
|
|
24
|
-
import FlyInfoTooltip from '../../../feedback/tooltip/FlyInfoTooltip.vue'
|
|
25
|
-
import type { T_InputRendererBase } from '../input-renderer.types'
|
|
26
|
-
import FlyInputRenderer from '../input-renderer/FlyInputRenderer.vue'
|
|
27
|
-
|
|
28
|
-
import './FlyFormItemRenderer.scss'
|
|
29
|
-
|
|
30
|
-
const props = defineProps<{
|
|
31
|
-
modelValue: unknown
|
|
32
|
-
input: T_InputRendererBase
|
|
33
|
-
}>()
|
|
34
|
-
|
|
35
|
-
const emit = defineEmits<{
|
|
36
|
-
(e: 'update:modelValue', value: unknown): void
|
|
37
|
-
(e: 'change', value: unknown): void
|
|
38
|
-
(e: 'blur'): void
|
|
39
|
-
(e: 'focus'): void
|
|
40
|
-
}>()
|
|
41
|
-
|
|
42
|
-
const { t } = UseLocaleInjector()
|
|
43
|
-
|
|
44
|
-
const modelProxy = computed({
|
|
45
|
-
get: () => props.modelValue,
|
|
46
|
-
set: (val) => emit('update:modelValue', val)
|
|
47
|
-
})
|
|
48
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<el-form-item :prop="input.prop || input.key">
|
|
3
|
+
<template #label>
|
|
4
|
+
<FlyInfoTooltip v-if="input.tooltip" :content="input.tooltip" />
|
|
5
|
+
{{ t(input.label) }}
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<FlyInputRenderer
|
|
9
|
+
v-model="modelProxy"
|
|
10
|
+
:input="input"
|
|
11
|
+
@change="(val: unknown) => emit('change', val)"
|
|
12
|
+
@blur="() => emit('blur')"
|
|
13
|
+
@focus="() => emit('focus')"
|
|
14
|
+
/>
|
|
15
|
+
</el-form-item>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script setup lang="ts">
|
|
19
|
+
import { computed } from 'vue'
|
|
20
|
+
|
|
21
|
+
import { ElFormItem } from 'element-plus'
|
|
22
|
+
|
|
23
|
+
import { UseLocaleInjector } from '../../../../composables/useLocaleInjector/UseLocaleInjector'
|
|
24
|
+
import FlyInfoTooltip from '../../../feedback/tooltip/FlyInfoTooltip.vue'
|
|
25
|
+
import type { T_InputRendererBase } from '../input-renderer.types'
|
|
26
|
+
import FlyInputRenderer from '../input-renderer/FlyInputRenderer.vue'
|
|
27
|
+
|
|
28
|
+
import './FlyFormItemRenderer.scss'
|
|
29
|
+
|
|
30
|
+
const props = defineProps<{
|
|
31
|
+
modelValue: unknown
|
|
32
|
+
input: T_InputRendererBase
|
|
33
|
+
}>()
|
|
34
|
+
|
|
35
|
+
const emit = defineEmits<{
|
|
36
|
+
(e: 'update:modelValue', value: unknown): void
|
|
37
|
+
(e: 'change', value: unknown): void
|
|
38
|
+
(e: 'blur'): void
|
|
39
|
+
(e: 'focus'): void
|
|
40
|
+
}>()
|
|
41
|
+
|
|
42
|
+
const { t } = UseLocaleInjector()
|
|
43
|
+
|
|
44
|
+
const modelProxy = computed({
|
|
45
|
+
get: () => props.modelValue,
|
|
46
|
+
set: (val) => emit('update:modelValue', val)
|
|
47
|
+
})
|
|
48
|
+
</script>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import FlyFormItemRenderer from './FlyFormItemRenderer.vue'
|
|
2
|
-
|
|
3
|
-
export default FlyFormItemRenderer
|
|
4
|
-
export { FlyFormItemRenderer }
|
|
1
|
+
import FlyFormItemRenderer from './FlyFormItemRenderer.vue'
|
|
2
|
+
|
|
3
|
+
export default FlyFormItemRenderer
|
|
4
|
+
export { FlyFormItemRenderer }
|
package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type FlyFormSchemaRenderer from './FlyFormSchemaRenderer.vue'
|
|
2
|
-
|
|
3
|
-
export type T_FlyFormSchemaRendererInstance = InstanceType<typeof FlyFormSchemaRenderer> | null
|
|
1
|
+
import type FlyFormSchemaRenderer from './FlyFormSchemaRenderer.vue'
|
|
2
|
+
|
|
3
|
+
export type T_FlyFormSchemaRendererInstance = InstanceType<typeof FlyFormSchemaRenderer> | null
|