@tmagic/form 1.3.0-alpha.23 → 1.3.0-alpha.24

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.0-alpha.23",
2
+ "version": "1.3.0-alpha.24",
3
3
  "name": "@tmagic/form",
4
4
  "type": "module",
5
5
  "sideEffects": [
@@ -36,8 +36,8 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@element-plus/icons-vue": "^2.0.9",
39
- "@tmagic/design": "1.3.0-alpha.23",
40
- "@tmagic/utils": "1.3.0-alpha.23",
39
+ "@tmagic/design": "1.3.0-alpha.24",
40
+ "@tmagic/utils": "1.3.0-alpha.24",
41
41
  "lodash-es": "^4.17.21",
42
42
  "sortablejs": "^1.14.0",
43
43
  "vue": "^3.3.4"
@@ -25,6 +25,8 @@
25
25
  :init-values="values"
26
26
  :parent-values="parentValues"
27
27
  :label-width="labelWidth"
28
+ :label-position="labelPosition"
29
+ :inline="inline"
28
30
  @change="changeHandler"
29
31
  ></Form>
30
32
  <slot></slot>
@@ -78,6 +80,8 @@ const props = withDefaults(
78
80
  fullscreen?: boolean;
79
81
  disabled?: boolean;
80
82
  title?: string;
83
+ inline?: boolean;
84
+ labelPosition?: string;
81
85
  zIndex?: number;
82
86
  size?: 'small' | 'default' | 'large';
83
87
  confirmText?: string;
@@ -21,6 +21,8 @@
21
21
  :init-values="values"
22
22
  :parent-values="parentValues"
23
23
  :label-width="labelWidth"
24
+ :label-position="labelPosition"
25
+ :inline="inline"
24
26
  @change="changeHandler"
25
27
  ></Form>
26
28
  <slot></slot>
@@ -71,6 +73,8 @@ withDefaults(
71
73
  zIndex?: number;
72
74
  size?: 'small' | 'default' | 'large';
73
75
  confirmText?: string;
76
+ inline?: boolean;
77
+ labelPosition?: string;
74
78
  }>(),
75
79
  {
76
80
  closeOnPressEscape: true,
@@ -0,0 +1,76 @@
1
+ <template>
2
+ <TMagicTimePicker
3
+ v-model="value"
4
+ is-range
5
+ range-separator="-"
6
+ start-placeholder="开始时间"
7
+ end-placeholder="结束时间"
8
+ :size="size"
9
+ :unlink-panels="true"
10
+ :disabled="disabled"
11
+ :default-time="config.defaultTime"
12
+ @change="changeHandler"
13
+ ></TMagicTimePicker>
14
+ </template>
15
+
16
+ <script lang="ts" setup>
17
+ import { ref, watch } from 'vue';
18
+
19
+ import { TMagicTimePicker } from '@tmagic/design';
20
+ import { datetimeFormatter } from '@tmagic/utils';
21
+
22
+ import type { DaterangeConfig, FieldProps } from '../schema';
23
+ import { useAddField } from '../utils/useAddField';
24
+
25
+ defineOptions({
26
+ name: 'MFormTimeRange',
27
+ });
28
+
29
+ const props = defineProps<FieldProps<DaterangeConfig>>();
30
+
31
+ const emit = defineEmits(['change']);
32
+
33
+ useAddField(props.prop);
34
+
35
+ // eslint-disable-next-line vue/no-setup-props-destructure
36
+ const { names } = props.config;
37
+ const value = ref<(Date | undefined)[] | null>([]);
38
+
39
+ if (props.model !== undefined && names?.length) {
40
+ watch(
41
+ [() => props.model[names[0]], () => props.model[names[1]]],
42
+ ([start, end], [preStart, preEnd]) => {
43
+ if (!value.value) {
44
+ value.value = [];
45
+ }
46
+ if (!start || !end) value.value = [];
47
+ if (start !== preStart) value.value[0] = start;
48
+ if (end !== preEnd) value.value[1] = end;
49
+ },
50
+ {
51
+ immediate: true,
52
+ },
53
+ );
54
+ }
55
+
56
+ const setValue = (v: Date[] | Date) => {
57
+ names?.forEach((item, index) => {
58
+ if (!props.model) {
59
+ return;
60
+ }
61
+ if (Array.isArray(v)) {
62
+ props.model[item] = datetimeFormatter(v[index]?.toString(), '');
63
+ } else {
64
+ props.model[item] = undefined;
65
+ }
66
+ });
67
+ };
68
+
69
+ const changeHandler = (v: Date[]) => {
70
+ const value = v || [];
71
+ if (names?.length) {
72
+ setValue(value);
73
+ }
74
+ emit('change', value);
75
+ };
76
+ </script>
package/src/index.ts CHANGED
@@ -45,6 +45,7 @@ import Switch from './fields/Switch.vue';
45
45
  import Text from './fields/Text.vue';
46
46
  import Textarea from './fields/Textarea.vue';
47
47
  import Time from './fields/Time.vue';
48
+ import Timerange from './fields/Timerange.vue';
48
49
  import { setConfig } from './utils/config';
49
50
  import Form from './Form.vue';
50
51
  import FormDialog from './FormDialog.vue';
@@ -76,6 +77,7 @@ export { default as MTime } from './fields/Time.vue';
76
77
  export { default as MCheckbox } from './fields/Checkbox.vue';
77
78
  export { default as MSwitch } from './fields/Switch.vue';
78
79
  export { default as MDaterange } from './fields/Daterange.vue';
80
+ export { default as MTimerange } from './fields/Timerange.vue';
79
81
  export { default as MColorPicker } from './fields/ColorPicker.vue';
80
82
  export { default as MCheckboxGroup } from './fields/CheckboxGroup.vue';
81
83
  export { default as MRadioGroup } from './fields/RadioGroup.vue';
@@ -117,6 +119,7 @@ export default {
117
119
  app.component('m-fields-date', Date);
118
120
  app.component('m-fields-datetime', DateTime);
119
121
  app.component('m-fields-daterange', Daterange);
122
+ app.component('m-fields-timerange', Timerange);
120
123
  app.component('m-fields-time', Time);
121
124
  app.component('m-fields-checkbox', Checkbox);
122
125
  app.component('m-fields-switch', Switch);
@@ -8,6 +8,8 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
8
8
  fullscreen?: boolean | undefined;
9
9
  disabled?: boolean | undefined;
10
10
  title?: string | undefined;
11
+ inline?: boolean | undefined;
12
+ labelPosition?: string | undefined;
11
13
  zIndex?: number | undefined;
12
14
  size?: "large" | "default" | "small" | undefined;
13
15
  confirmText?: string | undefined;
@@ -289,6 +291,8 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
289
291
  fullscreen?: boolean | undefined;
290
292
  disabled?: boolean | undefined;
291
293
  title?: string | undefined;
294
+ inline?: boolean | undefined;
295
+ labelPosition?: string | undefined;
292
296
  zIndex?: number | undefined;
293
297
  size?: "large" | "default" | "small" | undefined;
294
298
  confirmText?: string | undefined;
@@ -11,6 +11,8 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
11
11
  zIndex?: number | undefined;
12
12
  size?: "large" | "default" | "small" | undefined;
13
13
  confirmText?: string | undefined;
14
+ inline?: boolean | undefined;
15
+ labelPosition?: string | undefined;
14
16
  }>, {
15
17
  closeOnPressEscape: boolean;
16
18
  config: () => never[];
@@ -291,6 +293,8 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
291
293
  zIndex?: number | undefined;
292
294
  size?: "large" | "default" | "small" | undefined;
293
295
  confirmText?: string | undefined;
296
+ inline?: boolean | undefined;
297
+ labelPosition?: string | undefined;
294
298
  }>, {
295
299
  closeOnPressEscape: boolean;
296
300
  config: () => never[];
@@ -0,0 +1,14 @@
1
+ import type { DaterangeConfig, FieldProps } from '../schema';
2
+ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<FieldProps<DaterangeConfig>>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "change"[], "change", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<FieldProps<DaterangeConfig>>>> & {
3
+ onChange?: ((...args: any[]) => any) | undefined;
4
+ }, {}, {}>;
5
+ export default _default;
6
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
7
+ type __VLS_TypePropsToRuntimeProps<T> = {
8
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
9
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
10
+ } : {
11
+ type: import('vue').PropType<T[K]>;
12
+ required: true;
13
+ };
14
+ };
package/types/index.d.ts CHANGED
@@ -24,6 +24,7 @@ export { default as MTime } from './fields/Time.vue';
24
24
  export { default as MCheckbox } from './fields/Checkbox.vue';
25
25
  export { default as MSwitch } from './fields/Switch.vue';
26
26
  export { default as MDaterange } from './fields/Daterange.vue';
27
+ export { default as MTimerange } from './fields/Timerange.vue';
27
28
  export { default as MColorPicker } from './fields/ColorPicker.vue';
28
29
  export { default as MCheckboxGroup } from './fields/CheckboxGroup.vue';
29
30
  export { default as MRadioGroup } from './fields/RadioGroup.vue';