flame-plus 0.1.7 → 0.1.10

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 (153) hide show
  1. package/package.json +4 -4
  2. package/packages/components/base/flmButton/flmButton.vue +29 -0
  3. package/packages/components/base/flmCascader/flmCascader.vue +39 -0
  4. package/packages/components/base/flmCheckbox/flmCheckbox.vue +34 -0
  5. package/packages/components/base/flmCheckbox/flmCheckboxGroup.vue +71 -0
  6. package/packages/components/base/flmColorPicker/flmColorPicker.vue +34 -0
  7. package/packages/components/base/flmDatePicker/flmDatePicker.vue +47 -0
  8. package/packages/components/base/flmDialog/flmDialog.vue +39 -0
  9. package/packages/components/base/flmInput/flmInput.vue +38 -0
  10. package/packages/components/base/flmInputNumber/flmInputNumber.vue +36 -0
  11. package/packages/components/base/flmPagination/flmPagination.vue +37 -0
  12. package/packages/components/base/flmRadio/flmRadio.vue +64 -0
  13. package/packages/components/base/flmRate/flmRate.vue +34 -0
  14. package/packages/components/base/flmRead/flmRead.vue +18 -0
  15. package/packages/components/base/flmSelect/flmSelect.vue +74 -0
  16. package/packages/components/base/flmSlider/flmSlider.vue +35 -0
  17. package/packages/components/base/flmSwitch/flmSwitch.vue +29 -0
  18. package/packages/components/base/flmTimePicker/flmTimePicker.vue +37 -0
  19. package/packages/components/base/flmTimeSelect/flmTimeSelect.vue +36 -0
  20. package/packages/components/base/flmTransfer/flmTransfer.vue +42 -0
  21. package/packages/components/complex/flmForm/flmForm.vue +223 -0
  22. package/packages/components/complex/flmSearch/flmSearch.vue +148 -0
  23. package/packages/components/complex/flmTable/flmTable.vue +90 -0
  24. package/packages/components/complex/flmToolbar/flmToolbar.vue +55 -0
  25. package/{dist/components/index.js → packages/components/index.ts} +26 -25
  26. package/packages/components/page/flmReportPage/flmReportPage.vue +690 -0
  27. package/packages/index.ts +8 -0
  28. package/packages/model/flmComponentConfig/base/flmButton.ts +50 -0
  29. package/packages/model/flmComponentConfig/base/flmCascader.ts +77 -0
  30. package/packages/model/flmComponentConfig/base/flmCheckbox.ts +51 -0
  31. package/packages/model/flmComponentConfig/base/flmColorPicker.ts +30 -0
  32. package/packages/model/flmComponentConfig/base/flmDatePicker.ts +73 -0
  33. package/packages/model/flmComponentConfig/base/flmDialog.ts +49 -0
  34. package/packages/model/flmComponentConfig/base/flmInput.ts +57 -0
  35. package/packages/model/flmComponentConfig/base/flmInputNumber.ts +37 -0
  36. package/packages/model/flmComponentConfig/base/flmPagination.ts +38 -0
  37. package/packages/model/flmComponentConfig/base/flmRadio.ts +42 -0
  38. package/packages/model/flmComponentConfig/base/flmRate.ts +49 -0
  39. package/packages/model/flmComponentConfig/base/flmRead.ts +6 -0
  40. package/packages/model/flmComponentConfig/base/flmSelect.ts +104 -0
  41. package/packages/model/flmComponentConfig/base/flmSlider.ts +51 -0
  42. package/packages/model/flmComponentConfig/base/flmSwitch.ts +37 -0
  43. package/packages/model/flmComponentConfig/base/flmTimePicker.ts +61 -0
  44. package/packages/model/flmComponentConfig/base/flmTimeSelect.ts +44 -0
  45. package/packages/model/flmComponentConfig/index.ts +30 -0
  46. package/packages/model/flmComponentConfig/public.ts +293 -0
  47. package/packages/utils/filterConfig.ts +39 -0
  48. package/packages/utils/index.ts +2 -0
  49. package/{dist/utils/isValidKey.js → packages/utils/isValidKey.ts} +6 -4
  50. package/tsconfig.json +4 -5
  51. package/dist/components/base/flmButton/index.d.ts +0 -3
  52. package/dist/components/base/flmButton/index.js +0 -8
  53. package/dist/components/base/flmCascader/index.d.ts +0 -3
  54. package/dist/components/base/flmCascader/index.js +0 -8
  55. package/dist/components/base/flmCheckbox/index.d.ts +0 -3
  56. package/dist/components/base/flmCheckbox/index.js +0 -8
  57. package/dist/components/base/flmColorPicker/index.d.ts +0 -3
  58. package/dist/components/base/flmColorPicker/index.js +0 -8
  59. package/dist/components/base/flmDatePicker/index.d.ts +0 -3
  60. package/dist/components/base/flmDatePicker/index.js +0 -8
  61. package/dist/components/base/flmDialog/index.d.ts +0 -3
  62. package/dist/components/base/flmDialog/index.js +0 -8
  63. package/dist/components/base/flmInput/index.d.ts +0 -3
  64. package/dist/components/base/flmInput/index.js +0 -8
  65. package/dist/components/base/flmInputNumber/index.d.ts +0 -3
  66. package/dist/components/base/flmInputNumber/index.js +0 -8
  67. package/dist/components/base/flmPagination/index.d.ts +0 -3
  68. package/dist/components/base/flmPagination/index.js +0 -8
  69. package/dist/components/base/flmRadio/index.d.ts +0 -3
  70. package/dist/components/base/flmRadio/index.js +0 -8
  71. package/dist/components/base/flmRate/index.d.ts +0 -3
  72. package/dist/components/base/flmRate/index.js +0 -8
  73. package/dist/components/base/flmRead/index.d.ts +0 -3
  74. package/dist/components/base/flmRead/index.js +0 -8
  75. package/dist/components/base/flmSelect/index.d.ts +0 -3
  76. package/dist/components/base/flmSelect/index.js +0 -8
  77. package/dist/components/base/flmSlider/index.d.ts +0 -3
  78. package/dist/components/base/flmSlider/index.js +0 -8
  79. package/dist/components/base/flmSwitch/index.d.ts +0 -3
  80. package/dist/components/base/flmSwitch/index.js +0 -8
  81. package/dist/components/base/flmTimePicker/index.d.ts +0 -3
  82. package/dist/components/base/flmTimePicker/index.js +0 -8
  83. package/dist/components/base/flmTimeSelect/index.d.ts +0 -3
  84. package/dist/components/base/flmTimeSelect/index.js +0 -8
  85. package/dist/components/base/flmTransfer/index.d.ts +0 -3
  86. package/dist/components/base/flmTransfer/index.js +0 -8
  87. package/dist/components/complex/flmForm/index.d.ts +0 -3
  88. package/dist/components/complex/flmForm/index.js +0 -8
  89. package/dist/components/complex/flmSearch/index.d.ts +0 -3
  90. package/dist/components/complex/flmSearch/index.js +0 -8
  91. package/dist/components/complex/flmTable/index.d.ts +0 -3
  92. package/dist/components/complex/flmTable/index.js +0 -8
  93. package/dist/components/complex/flmToolbar/index.d.ts +0 -3
  94. package/dist/components/complex/flmToolbar/index.js +0 -8
  95. package/dist/components/index.d.ts +0 -25
  96. package/dist/components/page/flmReportPage/index.d.ts +0 -3
  97. package/dist/components/page/flmReportPage/index.js +0 -8
  98. package/dist/index.d.ts +0 -33
  99. package/dist/index.js +0 -90
  100. package/dist/model/flmComponentConfig/base/flmButton.d.ts +0 -32
  101. package/dist/model/flmComponentConfig/base/flmButton.js +0 -30
  102. package/dist/model/flmComponentConfig/base/flmCascader.d.ts +0 -55
  103. package/dist/model/flmComponentConfig/base/flmCascader.js +0 -29
  104. package/dist/model/flmComponentConfig/base/flmCheckbox.d.ts +0 -32
  105. package/dist/model/flmComponentConfig/base/flmCheckbox.js +0 -15
  106. package/dist/model/flmComponentConfig/base/flmColorPicker.d.ts +0 -22
  107. package/dist/model/flmComponentConfig/base/flmColorPicker.js +0 -15
  108. package/dist/model/flmComponentConfig/base/flmDatePicker.d.ts +0 -54
  109. package/dist/model/flmComponentConfig/base/flmDatePicker.js +0 -32
  110. package/dist/model/flmComponentConfig/base/flmDialog.d.ts +0 -31
  111. package/dist/model/flmComponentConfig/base/flmDialog.js +0 -18
  112. package/dist/model/flmComponentConfig/base/flmInput.d.ts +0 -43
  113. package/dist/model/flmComponentConfig/base/flmInput.js +0 -16
  114. package/dist/model/flmComponentConfig/base/flmInputNumber.d.ts +0 -25
  115. package/dist/model/flmComponentConfig/base/flmInputNumber.js +0 -12
  116. package/dist/model/flmComponentConfig/base/flmPagination.d.ts +0 -27
  117. package/dist/model/flmComponentConfig/base/flmPagination.js +0 -12
  118. package/dist/model/flmComponentConfig/base/flmRadio.d.ts +0 -25
  119. package/dist/model/flmComponentConfig/base/flmRadio.js +0 -15
  120. package/dist/model/flmComponentConfig/base/flmRate.d.ts +0 -27
  121. package/dist/model/flmComponentConfig/base/flmRate.js +0 -22
  122. package/dist/model/flmComponentConfig/base/flmRead.d.ts +0 -7
  123. package/dist/model/flmComponentConfig/base/flmRead.js +0 -2
  124. package/dist/model/flmComponentConfig/base/flmSelect.d.ts +0 -66
  125. package/dist/model/flmComponentConfig/base/flmSelect.js +0 -42
  126. package/dist/model/flmComponentConfig/base/flmSlider.d.ts +0 -32
  127. package/dist/model/flmComponentConfig/base/flmSlider.js +0 -19
  128. package/dist/model/flmComponentConfig/base/flmSwitch.d.ts +0 -24
  129. package/dist/model/flmComponentConfig/base/flmSwitch.js +0 -15
  130. package/dist/model/flmComponentConfig/base/flmTimePicker.d.ts +0 -41
  131. package/dist/model/flmComponentConfig/base/flmTimePicker.js +0 -24
  132. package/dist/model/flmComponentConfig/base/flmTimeSelect.d.ts +0 -27
  133. package/dist/model/flmComponentConfig/base/flmTimeSelect.js +0 -17
  134. package/dist/model/flmComponentConfig/base/flmTransfer.d.ts +0 -36
  135. package/dist/model/flmComponentConfig/base/flmTransfer.js +0 -21
  136. package/dist/model/flmComponentConfig/complex/flmForm.d.ts +0 -77
  137. package/dist/model/flmComponentConfig/complex/flmForm.js +0 -42
  138. package/dist/model/flmComponentConfig/complex/flmTable.d.ts +0 -83
  139. package/dist/model/flmComponentConfig/complex/flmTable.js +0 -29
  140. package/dist/model/flmComponentConfig/complex/flmToolbar.d.ts +0 -10
  141. package/dist/model/flmComponentConfig/complex/flmToolbar.js +0 -2
  142. package/dist/model/flmComponentConfig/index.d.ts +0 -28
  143. package/dist/model/flmComponentConfig/index.js +0 -28
  144. package/dist/model/flmComponentConfig/page/flmReportPage.d.ts +0 -15
  145. package/dist/model/flmComponentConfig/page/flmReportPage.js +0 -2
  146. package/dist/model/flmComponentConfig/public.d.ts +0 -291
  147. package/dist/model/flmComponentConfig/public.js +0 -295
  148. package/dist/utils/filterConfig.d.ts +0 -10
  149. package/dist/utils/filterConfig.js +0 -40
  150. package/dist/utils/index.d.ts +0 -3
  151. package/dist/utils/index.js +0 -3
  152. package/dist/utils/isValidKey.d.ts +0 -9
  153. package/global.d.ts +0 -54
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "flame-plus",
3
- "version": "0.1.7",
3
+ "version": "0.1.10",
4
4
  "private": false,
5
5
  "description": "基于 element-plus 的组件库",
6
- "main": "lib/flame-plus.umd.min.js",
6
+ "main": "packages/index.ts",
7
7
  "types": [
8
- "lib/packages/index.d.ts"
8
+ "lib/flame-plus.umd.min.d.ts"
9
9
  ],
10
10
  "scripts": {
11
11
  "serve": "vue-cli-service serve",
12
- "build": "rm -rf dist/ && tsc",
12
+ "build": "vue-cli-service build",
13
13
  "lint": "vue-cli-service lint",
14
14
  "lib": "vue-cli-service build --target lib --name flame-plus --dest lib packages/index.ts"
15
15
  },
@@ -0,0 +1,29 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, computed } from 'vue'
3
+ import { ButtonConfig, buttonDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['buttonClick'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<ButtonConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 按钮设置
17
+ const buttonConfig = computed((): ButtonConfig => {
18
+ return filterConfig(buttonDefaultConfig, props.config)
19
+ })
20
+
21
+ return () => (
22
+ <el-button
23
+ {...buttonConfig.value}
24
+ onClick={() => ctx.emit('buttonClick')}
25
+ >{buttonConfig.value.text || '点击'}</el-button>
26
+ )
27
+ },
28
+ })
29
+ </script>
@@ -0,0 +1,39 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, computed, reactive } from 'vue'
3
+ import { CascaderConfig, CascaderDefaultEvent, cascaderDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['change', 'expand-change', 'blur', 'focus', 'visible-change', 'remove-tag'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<CascaderConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 级联选择器设置
17
+ const cascaderConfig = computed((): CascaderConfig => {
18
+ return filterConfig(cascaderDefaultConfig, props.config)
19
+ })
20
+
21
+ // 级联选择器事件
22
+ const cascaderDefaultEvent: CascaderDefaultEvent = reactive({
23
+ onChange: (value: CascaderConfig['model-value']) => ctx.emit('change', value),
24
+ onExpandChange: (event: any) => ctx.emit('expand-change', event),
25
+ onBlur: (event: any) => ctx.emit('blur', event),
26
+ onFocus: (event: any) => ctx.emit('focus', event),
27
+ onVisibleChange: (event: boolean) => ctx.emit('visible-change', event),
28
+ onRemoveTag: (event: any) => ctx.emit('remove-tag', event)
29
+ })
30
+
31
+ return () => (
32
+ <el-cascader
33
+ {...cascaderConfig.value}
34
+ {...cascaderDefaultEvent}
35
+ />
36
+ )
37
+ },
38
+ })
39
+ </script>
@@ -0,0 +1,34 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, reactive, computed } from 'vue'
3
+ import { CheckboxConfig, CheckboxDefaultEvent, checkboxDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['change'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<CheckboxConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 多选框设置
17
+ const checkboxConfig = computed((): CheckboxConfig => {
18
+ return filterConfig(checkboxDefaultConfig, props.config)
19
+ })
20
+
21
+ // 多选框事件
22
+ const checkboxDefaultEvent: CheckboxDefaultEvent = reactive({
23
+ onChange: (value: CheckboxConfig['model-value']) => ctx.emit('change', value)
24
+ })
25
+
26
+ return () => (
27
+ <el-checkbox
28
+ {...checkboxConfig.value}
29
+ {...checkboxDefaultEvent}
30
+ ></el-checkbox>
31
+ )
32
+ },
33
+ })
34
+ </script>
@@ -0,0 +1,71 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, ref, Ref, computed } from 'vue'
3
+ import { flmCheckbox } from '@/components'
4
+ import {
5
+ CheckboxConfig,
6
+ CheckboxGroupConfig,
7
+ checkboxGroupDefaultConfig
8
+ } from '@/model/flmComponentConfig'
9
+ import { filterConfig } from '@/utils'
10
+
11
+ export default defineComponent({
12
+ components: { flmCheckbox },
13
+ emits: ['change'],
14
+ props: {
15
+ // 默认设置
16
+ config: {
17
+ type: Object as PropType<CheckboxGroupConfig>,
18
+ default: {}
19
+ },
20
+ },
21
+ setup(props, ctx) {
22
+ // 多选框组设置
23
+ const checkboxGroupConfig = computed((): CheckboxGroupConfig => {
24
+ return filterConfig(checkboxGroupDefaultConfig, props.config)
25
+ })
26
+
27
+ const isCheckAll: Ref<boolean> = ref(false) // 全选
28
+ const isIndeterminate: Ref<boolean> = ref(false) // 半选
29
+ // 全选值变化
30
+ const checkAllChange = (value: boolean) => {
31
+ isCheckAll.value = value
32
+ isIndeterminate.value = false
33
+ ctx.emit('change', value
34
+ ? checkboxGroupConfig.value.items?.map(({ label }) => label)
35
+ : []
36
+ )
37
+ }
38
+ // 多选框组值变化
39
+ const checkboxGroupChange = (value: CheckboxGroupConfig['model-value']) => {
40
+ const checkedCount = value?.length ?? 0,
41
+ itemsCount = checkboxGroupConfig.value.items?.length ?? 0
42
+ isCheckAll.value = checkedCount === itemsCount
43
+ isIndeterminate.value = checkedCount > 0 && checkedCount < itemsCount
44
+ ctx.emit('change', value)
45
+ }
46
+ // 多选框组元素
47
+ const checkboxGroupDom = ({ hasCheckAll, checkAllConfig, ...defaultConfig }: CheckboxGroupConfig) => {
48
+ return (
49
+ <div>
50
+ {
51
+ hasCheckAll && <flmCheckbox
52
+ config={{
53
+ 'label': '全选',
54
+ ...checkAllConfig,
55
+ 'model-value': isCheckAll.value,
56
+ 'indeterminate': isIndeterminate.value
57
+ }}
58
+ onChange={checkAllChange}
59
+ />
60
+ }
61
+ <el-checkbox-group {...defaultConfig} onChange={checkboxGroupChange}>
62
+ {defaultConfig.items?.map((item: CheckboxConfig) => <flmCheckbox config={item} />)}
63
+ </el-checkbox-group>
64
+ </div>
65
+ )
66
+ }
67
+
68
+ return () => (checkboxGroupDom(checkboxGroupConfig.value))
69
+ },
70
+ })
71
+ </script>
@@ -0,0 +1,34 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, reactive, computed } from 'vue'
3
+ import { ColorPickerConfig, ColorPickerDefaultEvent, colorPickerDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['change'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<ColorPickerConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 颜色选择器设置
17
+ const colorPickerConfig = computed((): ColorPickerConfig => {
18
+ return filterConfig(colorPickerDefaultConfig, props.config)
19
+ })
20
+
21
+ // 颜色选择器事件
22
+ const colorPickerDefaultEvent: ColorPickerDefaultEvent = reactive({
23
+ onChange: (value: ColorPickerConfig['model-value']) => ctx.emit('change', value)
24
+ })
25
+
26
+ return () => (
27
+ <el-colorPicker
28
+ {...colorPickerConfig.value}
29
+ {...colorPickerDefaultEvent}
30
+ />
31
+ )
32
+ },
33
+ })
34
+ </script>
@@ -0,0 +1,47 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, computed, reactive } from 'vue'
3
+ import { DatePickerConfig, DatePickerDefaultEvent, datePickerDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: [
8
+ 'change',
9
+ 'blur',
10
+ 'focus',
11
+ 'calendar-change',
12
+ 'panel-change',
13
+ 'visible-change',
14
+ ],
15
+ props: {
16
+ // 默认设置
17
+ config: {
18
+ type: Object as PropType<DatePickerConfig>,
19
+ default: {}
20
+ },
21
+ },
22
+ setup(props, ctx) {
23
+ // 日期选择器设置
24
+ const datePickerConfig = computed((): DatePickerConfig => {
25
+ return filterConfig(datePickerDefaultConfig, props.config)
26
+ })
27
+
28
+ // 日期选择器事件
29
+ const datePickerDefaultEvent: DatePickerDefaultEvent = reactive({
30
+ 'onUpdate:modelValue': (value: DatePickerConfig['model-value']) => ctx.emit('change', value), // v-model 不用改不了值
31
+ // onChange: (value: DatePickerConfig['model-value']) => {},
32
+ onBlur: (event: any) => ctx.emit('blur', event),
33
+ onFocus: (event: any) => ctx.emit('focus', event),
34
+ onCalendarChange: (event: Array<Date>) => ctx.emit('calendar-change', event),
35
+ onPanelChange: (date: any, mode: any, view: any) => ctx.emit('panel-change', { date, mode, view }),
36
+ onVisibleChange: (event: boolean) => ctx.emit('visible-change', event),
37
+ })
38
+
39
+ return () => (
40
+ <el-date-picker
41
+ {...datePickerConfig.value}
42
+ {...datePickerDefaultEvent}
43
+ />
44
+ )
45
+ },
46
+ })
47
+ </script>
@@ -0,0 +1,39 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, reactive, computed } from 'vue'
3
+ import { DialogConfig, DialogDefaultEvent, dialogDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['open', 'opened', 'close', 'closed', 'open-auto-focus', 'close-auto-focus'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<DialogConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 弹窗设置
17
+ const dialogConfig = computed((): DialogConfig => {
18
+ return filterConfig(dialogDefaultConfig, props.config)
19
+ })
20
+
21
+ // 弹窗事件
22
+ const dialogDefaultEvent: DialogDefaultEvent = reactive({
23
+ onOpen: () => ctx.emit('open'),
24
+ onOpened: () => ctx.emit('opened'),
25
+ onClose: () => ctx.emit('close'),
26
+ onClosed: () => ctx.emit('closed'),
27
+ onOpenAutoFocus: () => ctx.emit('open-auto-focus'),
28
+ onCloseAutoFocus: () => ctx.emit('close-auto-focus'),
29
+ })
30
+
31
+ return () => (
32
+ <el-dialog
33
+ {...dialogConfig.value}
34
+ {...dialogDefaultEvent}
35
+ >{{ default: () => ctx.slots['default']?.() }}</el-dialog>
36
+ )
37
+ },
38
+ })
39
+ </script>
@@ -0,0 +1,38 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, reactive, computed } from 'vue'
3
+ import { InputConfig, InputDefaultEvent, inputDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['blur', 'focus', 'change', 'input', 'clear'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<InputConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 输入框设置
17
+ const inputConfig = computed((): InputConfig => {
18
+ return filterConfig(inputDefaultConfig, props.config)
19
+ })
20
+
21
+ // 输入框事件
22
+ const inputDefaultEvent: InputDefaultEvent = reactive({
23
+ onBlur: () => ctx.emit('blur'),
24
+ onFocus: () => ctx.emit('focus'),
25
+ onChange: (value: InputConfig['modelValue']) => ctx.emit('change', value),
26
+ onInput: (value: InputConfig['modelValue']) => ctx.emit('input', value),
27
+ onClear: () => ctx.emit('clear'),
28
+ })
29
+
30
+ return () => (
31
+ <el-input
32
+ {...inputConfig.value}
33
+ {...inputDefaultEvent}
34
+ ></el-input>
35
+ )
36
+ },
37
+ })
38
+ </script>
@@ -0,0 +1,36 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, computed, reactive } from 'vue'
3
+ import { InputNumberConfig, InputNumberDefaultEvent, inputNumberDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['change', 'blur', 'focus'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<InputNumberConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 数字输入框设置
17
+ const inputNumberConfig = computed((): InputNumberConfig => {
18
+ return filterConfig(inputNumberDefaultConfig, props.config)
19
+ })
20
+
21
+ // 数字输入框默认事件
22
+ const inputNumberDefaultEvent: InputNumberDefaultEvent = reactive({
23
+ onChange: (value: InputNumberConfig['model-value']) => ctx.emit('change', value),
24
+ onBlur: () => ctx.emit('blur'),
25
+ onFocus: () => ctx.emit('focus'),
26
+ })
27
+
28
+ return () => (
29
+ <el-input-number
30
+ {...inputNumberConfig.value}
31
+ {...inputNumberDefaultEvent}
32
+ ></el-input-number>
33
+ )
34
+ },
35
+ })
36
+ </script>
@@ -0,0 +1,37 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, reactive, computed } from 'vue'
3
+ import { PaginationConfig, PaginationDefaultEvent, paginationDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['size-change', 'current-change', 'prev-click', 'next-click'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<PaginationConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 按钮设置
17
+ const paginationConfig = computed((): PaginationConfig => {
18
+ return filterConfig(paginationDefaultConfig, props.config)
19
+ })
20
+
21
+ // 数字输入框默认事件
22
+ const paginationDefaultEvent: PaginationDefaultEvent = reactive({
23
+ onSizeChange: (pageSize: number) => ctx.emit('size-change', pageSize),
24
+ onCurrentChange: (current: number) => ctx.emit('current-change', current),
25
+ onPrevClick: (current: number) => ctx.emit('prev-click', current),
26
+ onNextClick: (current: number) => ctx.emit('next-click', current)
27
+ })
28
+
29
+ return () => (
30
+ <el-pagination
31
+ {...paginationConfig.value}
32
+ {...paginationDefaultEvent}
33
+ />
34
+ )
35
+ },
36
+ })
37
+ </script>
@@ -0,0 +1,64 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, h, PropType, computed, reactive } from 'vue'
3
+ import {
4
+ RadioConfig,
5
+ RadioGroupConfig,
6
+ RadioGroupDefaultEvent,
7
+ radioDefaultConfig,
8
+ radioGroupDefaultConfig
9
+ } from '@/model/flmComponentConfig'
10
+ import { filterConfig } from '@/utils'
11
+
12
+ export default defineComponent({
13
+ emits: ['change'],
14
+ props: {
15
+ // 默认设置
16
+ config: {
17
+ type: Object as PropType<RadioGroupConfig>,
18
+ default: {}
19
+ },
20
+ },
21
+ setup(props, ctx) {
22
+ // 单选框组设置
23
+ const radioGroupConfig = computed((): RadioGroupConfig => {
24
+ return filterConfig(radioGroupDefaultConfig, props.config)
25
+ })
26
+
27
+ // 计算属性传入参需要优化
28
+ // 单选框设置
29
+ // const radioConfig = computed((): (config: RadioConfig) => RadioConfig => (config: RadioConfig) => {
30
+ // return filterConfig(radioDefaultConfig, config)
31
+ // }
32
+ // )
33
+
34
+ // 单选框默认事件
35
+ const radioDefaultEvent: RadioGroupDefaultEvent = reactive({
36
+ onChange: (value: RadioGroupConfig['model-value']) => ctx.emit('change', value)
37
+ })
38
+
39
+ const radioGroupDom = () => {
40
+ const { useButton = false, radios = [], ...radioGroup } = radioGroupConfig.value
41
+ const radioDom = (radios: RadioGroupConfig['radios']) => {
42
+ return radios?.map((radio: RadioConfig) => {
43
+ // 动态组件名方式需要优化
44
+ return (useButton
45
+ ? <el-radio-button {...filterConfig(radioDefaultConfig, radio)} />
46
+ : <el-radio {...filterConfig(radioDefaultConfig, radio)} />
47
+ )
48
+
49
+ })
50
+ }
51
+ return (
52
+ <el-radio-group
53
+ {...radioGroup}
54
+ {...radioDefaultEvent}
55
+ >
56
+ {radioDom(radios)}
57
+ </el-radio-group>
58
+ )
59
+ }
60
+
61
+ return () => (radioGroupDom())
62
+ },
63
+ })
64
+ </script>
@@ -0,0 +1,34 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, computed, reactive } from 'vue'
3
+ import { RateConfig, RateDefaultEvent, rateDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['change'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<RateConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 评分设置
17
+ const rateConfig = computed((): RateConfig => {
18
+ return filterConfig(rateDefaultConfig, props.config)
19
+ })
20
+
21
+ // 评分默认事件
22
+ const rateDefaultEvent: RateDefaultEvent = reactive({
23
+ onChange: (value: RateConfig['model-value']) => ctx.emit('change', value),
24
+ })
25
+
26
+ return () => (
27
+ <el-rate
28
+ {...rateConfig.value}
29
+ {...rateDefaultEvent}
30
+ ></el-rate>
31
+ )
32
+ },
33
+ })
34
+ </script>
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <div :class="config.class" :style="config.style">
3
+ {{ config['model-value'] }}
4
+ </div>
5
+ </template>
6
+
7
+ <script lang="ts" setup>
8
+ import { defineProps, PropType } from 'vue'
9
+ import { ReadConfig } from '@/model/flmComponentConfig'
10
+
11
+ const props = defineProps({
12
+ // 默认设置
13
+ config: {
14
+ type: Object as PropType<ReadConfig>,
15
+ default: {}
16
+ },
17
+ })
18
+ </script>
@@ -0,0 +1,74 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, reactive, computed } from 'vue'
3
+ import {
4
+ SelectConfig,
5
+ SelectDefaultEvent,
6
+ OptionGroupConfig,
7
+ OptionConfig,
8
+ selectDefaultConfig
9
+ } from '@/model/flmComponentConfig'
10
+ import { filterConfig } from '@/utils'
11
+
12
+ export default defineComponent({
13
+ emits: ['change', 'visible-change', 'remove-tag', 'clear', 'blur', 'focus'],
14
+ props: {
15
+ // 默认设置
16
+ config: {
17
+ type: Object as PropType<SelectConfig>,
18
+ default: {}
19
+ },
20
+ },
21
+ setup(props, ctx) {
22
+ // 选择器设置
23
+ const selectConfig = computed((): SelectConfig => {
24
+ return filterConfig(selectDefaultConfig, props.config)
25
+ })
26
+
27
+ // 选择器默认事件
28
+ const selectDefaultEvent: SelectDefaultEvent = reactive({
29
+ onChange: (value: SelectConfig['model-value']) => ctx.emit('change', value),
30
+ onVisibleChange: (showOption: boolean) => ctx.emit('visible-change', showOption),
31
+ onRemoveTag: (tagValue: SelectConfig['model-value']) => ctx.emit('remove-tag', tagValue),
32
+ onClear: () => ctx.emit('clear'),
33
+ onBlur: () => ctx.emit('blur'),
34
+ onFocus: () => ctx.emit('focus'),
35
+ })
36
+
37
+ /**
38
+ * 选择器的子元素
39
+ * @date 2022-04-12
40
+ * @param {object} props
41
+ * @param {boolean} props.hasGroup 是否为分组选项
42
+ * @param {array} props.group 分组选项
43
+ * @param {array} props.options 普通选项
44
+ * @returns {tsx} 选择器子元素tsx
45
+ */
46
+ const childrenDom = ({ hasGroup, groups = [], options = [] }: SelectConfig) => {
47
+ const groupsDom = (groups: Array<OptionGroupConfig>) => {
48
+ return groups.map(({ options, ...group }: OptionGroupConfig) => {
49
+ return (
50
+ <el-option-group key={group.label} {...group}>
51
+ {options && optionsDom(options)}
52
+ </el-option-group>
53
+ )
54
+ })
55
+ }
56
+ const optionsDom = (options: Array<OptionConfig>) => {
57
+ return options.map((option: OptionConfig) => (
58
+ <el-option key={option.value} {...option} />
59
+ ))
60
+ }
61
+ return hasGroup ? groupsDom(groups) : optionsDom(options)
62
+ }
63
+
64
+ return () => (
65
+ <el-select
66
+ {...selectConfig.value}
67
+ {...selectDefaultEvent}
68
+ >
69
+ {childrenDom(selectConfig.value)}
70
+ </el-select>
71
+ )
72
+ },
73
+ })
74
+ </script>
@@ -0,0 +1,35 @@
1
+ <script lang="tsx">
2
+ import { defineComponent, PropType, computed, reactive } from 'vue'
3
+ import { SliderConfig, SliderDefaultEvent, sliderDefaultConfig } from '@/model/flmComponentConfig'
4
+ import { filterConfig } from '@/utils'
5
+
6
+ export default defineComponent({
7
+ emits: ['change', 'input'],
8
+ props: {
9
+ // 默认设置
10
+ config: {
11
+ type: Object as PropType<SliderConfig>,
12
+ default: {}
13
+ },
14
+ },
15
+ setup(props, ctx) {
16
+ // 滑块设置
17
+ const sliderConfig = computed((): SliderConfig => {
18
+ return filterConfig(sliderDefaultConfig, props.config)
19
+ })
20
+
21
+ // 滑块默认事件
22
+ const sliderDefaultEvent: SliderDefaultEvent = reactive({
23
+ onChange: (value: SliderConfig['model-value']) => ctx.emit('change', value),
24
+ onInput: (value: SliderConfig['model-value']) => ctx.emit('input', value),
25
+ })
26
+
27
+ return () => (
28
+ <el-slider
29
+ {...sliderConfig.value}
30
+ {...sliderDefaultEvent}
31
+ ></el-slider>
32
+ )
33
+ },
34
+ })
35
+ </script>