@tmagic/form 1.7.7 → 1.7.8-beta.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.
Files changed (103) hide show
  1. package/LICENSE +235 -164
  2. package/dist/es/Form.js +5 -0
  3. package/dist/es/Form.vue_vue_type_script_setup_true_lang.js +234 -0
  4. package/dist/es/FormBox.js +5 -0
  5. package/dist/es/FormBox.vue_vue_type_script_setup_true_lang.js +117 -0
  6. package/dist/es/FormDialog.js +5 -0
  7. package/dist/es/FormDialog.vue_vue_type_script_setup_true_lang.js +222 -0
  8. package/dist/es/FormDrawer.js +5 -0
  9. package/dist/es/FormDrawer.vue_vue_type_script_setup_true_lang.js +176 -0
  10. package/dist/es/_virtual/_rolldown/runtime.js +27 -0
  11. package/dist/es/containers/Col.js +5 -0
  12. package/dist/es/containers/Col.vue_vue_type_script_setup_true_lang.js +60 -0
  13. package/dist/es/containers/Container.js +5 -0
  14. package/dist/es/containers/Container.vue_vue_type_script_setup_true_lang.js +439 -0
  15. package/dist/es/containers/Fieldset.js +5 -0
  16. package/dist/es/containers/Fieldset.vue_vue_type_script_setup_true_lang.js +153 -0
  17. package/dist/es/containers/FlexLayout.js +5 -0
  18. package/dist/es/containers/FlexLayout.vue_vue_type_script_setup_true_lang.js +64 -0
  19. package/dist/es/containers/FormLabel.js +5 -0
  20. package/dist/es/containers/FormLabel.vue_vue_type_script_setup_true_lang.js +51 -0
  21. package/dist/es/containers/GroupList.js +5 -0
  22. package/dist/es/containers/GroupList.vue_vue_type_script_setup_true_lang.js +164 -0
  23. package/dist/es/containers/GroupListItem.js +5 -0
  24. package/dist/es/containers/GroupListItem.vue_vue_type_script_setup_true_lang.js +221 -0
  25. package/dist/es/containers/Panel.js +5 -0
  26. package/dist/es/containers/Panel.vue_vue_type_script_setup_true_lang.js +130 -0
  27. package/dist/es/containers/Row.js +5 -0
  28. package/dist/es/containers/Row.vue_vue_type_script_setup_true_lang.js +65 -0
  29. package/dist/es/containers/Step.js +5 -0
  30. package/dist/es/containers/Step.vue_vue_type_script_setup_true_lang.js +85 -0
  31. package/dist/es/containers/Tabs.js +5 -0
  32. package/dist/es/containers/Tabs.vue_vue_type_script_setup_true_lang.js +194 -0
  33. package/dist/es/fields/Cascader.js +5 -0
  34. package/dist/es/fields/Cascader.vue_vue_type_script_setup_true_lang.js +123 -0
  35. package/dist/es/fields/Checkbox.js +5 -0
  36. package/dist/es/fields/Checkbox.vue_vue_type_script_setup_true_lang.js +61 -0
  37. package/dist/es/fields/CheckboxGroup.js +5 -0
  38. package/dist/es/fields/CheckboxGroup.vue_vue_type_script_setup_true_lang.js +63 -0
  39. package/dist/es/fields/ColorPicker.js +5 -0
  40. package/dist/es/fields/ColorPicker.vue_vue_type_script_setup_true_lang.js +42 -0
  41. package/dist/es/fields/Date.js +5 -0
  42. package/dist/es/fields/Date.vue_vue_type_script_setup_true_lang.js +52 -0
  43. package/dist/es/fields/DateTime.js +5 -0
  44. package/dist/es/fields/DateTime.vue_vue_type_script_setup_true_lang.js +57 -0
  45. package/dist/es/fields/Daterange.js +5 -0
  46. package/dist/es/fields/Daterange.vue_vue_type_script_setup_true_lang.js +99 -0
  47. package/dist/es/fields/Display.js +5 -0
  48. package/dist/es/fields/Display.vue_vue_type_script_setup_true_lang.js +36 -0
  49. package/dist/es/fields/DynamicField.js +5 -0
  50. package/dist/es/fields/DynamicField.vue_vue_type_script_setup_true_lang.js +91 -0
  51. package/dist/es/fields/Hidden.js +5 -0
  52. package/dist/es/fields/Hidden.vue_vue_type_script_setup_true_lang.js +24 -0
  53. package/dist/es/fields/Link.js +5 -0
  54. package/dist/es/fields/Link.vue_vue_type_script_setup_true_lang.js +104 -0
  55. package/dist/es/fields/Number.js +5 -0
  56. package/dist/es/fields/Number.vue_vue_type_script_setup_true_lang.js +65 -0
  57. package/dist/es/fields/NumberRange.js +5 -0
  58. package/dist/es/fields/NumberRange.vue_vue_type_script_setup_true_lang.js +76 -0
  59. package/dist/es/fields/RadioGroup.js +5 -0
  60. package/dist/es/fields/RadioGroup.vue_vue_type_script_setup_true_lang.js +74 -0
  61. package/dist/es/fields/Select.js +5 -0
  62. package/dist/es/fields/Select.vue_vue_type_script_setup_true_lang.js +337 -0
  63. package/dist/es/fields/Switch.js +5 -0
  64. package/dist/es/fields/Switch.vue_vue_type_script_setup_true_lang.js +59 -0
  65. package/dist/es/fields/Text.js +5 -0
  66. package/dist/es/fields/Text.vue_vue_type_script_setup_true_lang.js +215 -0
  67. package/dist/es/fields/Textarea.js +5 -0
  68. package/dist/es/fields/Textarea.vue_vue_type_script_setup_true_lang.js +60 -0
  69. package/dist/es/fields/Time.js +5 -0
  70. package/dist/es/fields/Time.vue_vue_type_script_setup_true_lang.js +49 -0
  71. package/dist/es/fields/Timerange.js +5 -0
  72. package/dist/es/fields/Timerange.vue_vue_type_script_setup_true_lang.js +100 -0
  73. package/dist/es/index.js +41 -0
  74. package/dist/es/plugin.js +74 -0
  75. package/dist/es/schema.js +2 -0
  76. package/dist/es/style.css +325 -0
  77. package/dist/es/table/ActionsColumn.js +5 -0
  78. package/dist/es/table/ActionsColumn.vue_vue_type_script_setup_true_lang.js +107 -0
  79. package/dist/es/table/SortColumn.js +5 -0
  80. package/dist/es/table/SortColumn.vue_vue_type_script_setup_true_lang.js +88 -0
  81. package/dist/es/table/Table.js +5 -0
  82. package/dist/es/table/Table.vue_vue_type_script_setup_true_lang.js +232 -0
  83. package/dist/es/table/useAdd.js +71 -0
  84. package/dist/es/table/useFullscreen.js +15 -0
  85. package/dist/es/table/useImport.js +46 -0
  86. package/dist/es/table/usePagination.js +26 -0
  87. package/dist/es/table/useSelection.js +26 -0
  88. package/dist/es/table/useSortable.js +39 -0
  89. package/dist/es/table/useTableColumns.js +160 -0
  90. package/dist/es/utils/config.js +15 -0
  91. package/dist/es/utils/form.js +173 -0
  92. package/dist/es/utils/useAddField.js +13 -0
  93. package/dist/style.css +1 -1
  94. package/dist/tmagic-form.umd.cjs +7693 -8924
  95. package/package.json +7 -6
  96. package/src/containers/Container.vue +16 -10
  97. package/src/fields/Hidden.vue +6 -2
  98. package/src/index.ts +8 -82
  99. package/src/plugin.ts +102 -0
  100. package/src/table/useSortable.ts +8 -4
  101. package/src/utils/config.ts +16 -1
  102. package/types/index.d.ts +1264 -1226
  103. package/dist/tmagic-form.js +0 -5940
@@ -0,0 +1,325 @@
1
+ @charset "UTF-8";
2
+ .tmagic-design-form-inline .m-form-container {
3
+ display: inline-flex;
4
+ }
5
+
6
+ .m-form-container.has-tip {
7
+ display: flex;
8
+ align-items: baseline;
9
+ }
10
+ .m-form-container.has-tip .tmagic-design-form-item {
11
+ flex: 1;
12
+ }
13
+ .m-form-container .tmagic-design-form-item.show-diff {
14
+ background: #f7dadd;
15
+ }
16
+
17
+ .m-form-dialog .el-dialog__body {
18
+ padding: 0 !important;
19
+ }
20
+ .m-form-dialog .m-dialog-body {
21
+ padding: 0 20px;
22
+ }
23
+ .m-form-dialog .el-table .m-form-item .el-form-item {
24
+ margin-bottom: 0;
25
+ }
26
+
27
+ .m-form-drawer .el-drawer__header {
28
+ margin: 0;
29
+ }
30
+ .m-form-drawer .m-drawer-body {
31
+ height: 100%;
32
+ overflow-y: auto;
33
+ overflow-x: hidden;
34
+ }
35
+
36
+ .fade-enter-active,
37
+ .fade-leave-active {
38
+ transition: opacity 0.5s;
39
+ }
40
+
41
+ .fade-enter, .fade-leave-to {
42
+ opacity: 0;
43
+ }
44
+
45
+ .m-form .m-form-tip {
46
+ color: rgba(0, 0, 0, 0.45);
47
+ font-size: 12px;
48
+ transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
49
+ }
50
+ .m-form .m-form-schematic {
51
+ max-width: 50%;
52
+ height: 100%;
53
+ }
54
+ .m-form .tmagic-design-table .cell > div.m-form-container {
55
+ display: block;
56
+ }
57
+ .m-form .tmagic-design-table .cell > div.m-form-container.has-tip {
58
+ display: flex;
59
+ }
60
+ .m-form .tmagic-design-tabs {
61
+ margin-bottom: 10px;
62
+ }
63
+ .m-form .tmagic-design-form-item.tmagic-form-hidden > .el-form-item__label {
64
+ display: none;
65
+ }
66
+ .m-form .t-form__item.tmagic-form-hidden > .t-form__label {
67
+ display: none;
68
+ }
69
+ .m-form .t-form__item.tmagic-form-hidden > .t-form__controls {
70
+ margin-left: 0 !important;
71
+ }
72
+ .m-form.t-form:not(.t-form-inline) .t-form__item:last-of-type {
73
+ margin-bottom: var(--td-comp-margin-xxl);
74
+ }
75
+
76
+ .magic-datetime-picker-popper .el-picker-panel__footer button:first-child {
77
+ display: none;
78
+ }
79
+
80
+ .m-fields-text {
81
+ display: flex;
82
+ align-items: center;
83
+ width: 100%;
84
+ }
85
+
86
+ .m-form-validate__warning {
87
+ color: var(--el-color-warning);
88
+ font-size: 12px;
89
+ width: 100%;
90
+ line-height: 1.4;
91
+ }
92
+
93
+ .tmagic-form-text-popper {
94
+ min-width: 150px;
95
+ line-height: 1.4;
96
+ background-color: #fff;
97
+ box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
98
+ color: #606266;
99
+ border: 1px solid #e4e7ed;
100
+ border-radius: 4px;
101
+ font-size: 14px;
102
+ overflow-wrap: break-word;
103
+ box-sizing: border-box;
104
+ padding: 10px;
105
+ }
106
+ .tmagic-form-text-popper:focus {
107
+ outline: none;
108
+ }
109
+
110
+ .tmagic-form-text-popper[data-popper-placement^=top] > .tmagic-form-text-popper-arrow {
111
+ bottom: -4px;
112
+ }
113
+
114
+ .tmagic-form-text-popper[data-popper-placement^=bottom] > .tmagic-form-text-popper-arrow {
115
+ top: -4px;
116
+ }
117
+
118
+ .tmagic-form-text-popper[data-popper-placement^=left] > .tmagic-form-text-popper-arrow {
119
+ right: -4px;
120
+ }
121
+
122
+ .tmagic-form-text-popper[data-popper-placement^=right] > .tmagic-form-text-popper-arrow {
123
+ left: -4px;
124
+ }
125
+
126
+ .tmagic-form-text-popper-arrow,
127
+ .tmagic-form-text-popper-arrow::before {
128
+ position: absolute;
129
+ width: 8px;
130
+ height: 8px;
131
+ background: inherit;
132
+ }
133
+
134
+ .tmagic-form-text-popper-arrow {
135
+ visibility: hidden;
136
+ }
137
+
138
+ .tmagic-form-text-popper-arrow::before {
139
+ visibility: visible;
140
+ content: "";
141
+ transform: rotate(45deg);
142
+ }
143
+
144
+ div.m-fields-link {
145
+ width: fit-content;
146
+ }
147
+
148
+ fieldset.m-fieldset {
149
+ position: relative;
150
+ border: 1px solid rgb(229, 229, 229);
151
+ margin-top: 10px;
152
+ margin-bottom: 10px;
153
+ min-inline-size: auto;
154
+ }
155
+ fieldset.m-fieldset .el-checkbox {
156
+ height: 22px;
157
+ }
158
+ fieldset.m-fieldset legend {
159
+ font-size: 14px;
160
+ position: absolute;
161
+ border: 0;
162
+ top: -10px;
163
+ left: 20px;
164
+ background: rgb(255, 255, 255);
165
+ width: auto;
166
+ padding: 0px 3px;
167
+ font-weight: bold;
168
+ line-height: 20px;
169
+ }
170
+ fieldset.m-fieldset .m-form-tip {
171
+ margin-left: 5px;
172
+ }
173
+
174
+ .m-fields-group-list .el-button--text {
175
+ padding: 0;
176
+ margin-bottom: 7px;
177
+ }
178
+ .m-fields-group-list .el-tree-node__expand-icon {
179
+ padding: 0;
180
+ margin-bottom: 7px;
181
+ }
182
+ .m-fields-group-list .el-tree-node__expand-icon.expand {
183
+ transform: rotate(90deg);
184
+ }
185
+ .m-fields-group-list .m-fields-group-list-item {
186
+ border-bottom: 1px solid #ebeef5;
187
+ margin-bottom: 7px;
188
+ }
189
+ .m-fields-group-list .m-fields-group-list-item:last-of-type {
190
+ border-bottom: 0;
191
+ }
192
+ .m-fields-group-list .tmagic-design-card .el-card__header {
193
+ padding: 5px 20px;
194
+ }
195
+ .m-fields-group-list .tmagic-design-card .t-card__header {
196
+ padding: 5px 0;
197
+ }
198
+ .m-fields-group-list .m-fields-group-list-footer {
199
+ display: flex;
200
+ justify-content: space-between;
201
+ margin-top: 10px;
202
+ }
203
+
204
+ .m-form-panel .el-card__header:hover {
205
+ background: #f2f6fc;
206
+ }
207
+ .m-form-panel .el-card__header a {
208
+ color: #409eff;
209
+ }
210
+ .m-form-panel .el-card__body {
211
+ padding: 10px;
212
+ }
213
+ .m-form-panel .m-form-tip {
214
+ margin-left: 5px;
215
+ }
216
+
217
+ .m-container-panel:not(:last-of-type) {
218
+ margin-bottom: 20px;
219
+ }
220
+
221
+ .m-fields-table-wrap {
222
+ width: 100%;
223
+ }
224
+ .m-fields-table-wrap.fixed {
225
+ position: fixed;
226
+ height: 100%;
227
+ overflow: auto;
228
+ top: 0;
229
+ right: 0;
230
+ left: 0;
231
+ bottom: 0;
232
+ z-index: 100;
233
+ background: rgba(0, 0, 0, 0.5);
234
+ align-items: center;
235
+ display: flex;
236
+ }
237
+ .m-fields-table-wrap.fixed > .el-form-item__content {
238
+ z-index: 101;
239
+ position: relative;
240
+ margin: 10vh auto;
241
+ max-width: fit-content;
242
+ }
243
+ .m-fields-table-wrap.fixed table {
244
+ width: 95vw !important;
245
+ }
246
+
247
+ .m-fields-table {
248
+ width: 100%;
249
+ }
250
+ .m-fields-table th {
251
+ background-color: #f2f2f2 !important;
252
+ color: #333 !important;
253
+ }
254
+ .m-fields-table .el-table th {
255
+ padding: 0 !important;
256
+ }
257
+ .m-fields-table .el-table__column--dropable {
258
+ cursor: move;
259
+ }
260
+ .m-fields-table .el-form-item__content .el-input-group {
261
+ vertical-align: middle;
262
+ }
263
+ .m-fields-table.m-fields-table-item-extra tr.expanded td {
264
+ border-bottom: 0;
265
+ }
266
+ .m-fields-table .el-table__expanded-cell .m-form-tip {
267
+ margin-left: 80px;
268
+ }
269
+ .m-fields-table .el-form-item {
270
+ margin-bottom: 0;
271
+ }
272
+ .m-fields-table .tmagic-form-table-drag-target {
273
+ cursor: move;
274
+ }
275
+
276
+ .m-select {
277
+ width: 100%;
278
+ }
279
+
280
+ .magic-form-dynamic-tab .el-tabs__header.is-top {
281
+ padding-right: 8px;
282
+ }
283
+ .magic-form-dynamic-tab .el-tabs__header.is-top .el-tabs__new-tab {
284
+ margin-right: auto;
285
+ min-width: 50px;
286
+ outline: none;
287
+ border-color: #409eff;
288
+ color: #409eff;
289
+ width: 10px;
290
+ }
291
+ .magic-form-dynamic-tab .el-tabs__header.is-top .el-tabs__new-tab::before {
292
+ content: "添加";
293
+ }
294
+ .magic-form-dynamic-tab .el-tabs__header.is-top .el-tabs__new-tab .el-icon-plus {
295
+ display: none;
296
+ }
297
+
298
+ .magic-form-tab {
299
+ margin-bottom: 10px;
300
+ }
301
+
302
+ .diff-count-badge {
303
+ top: -10px;
304
+ }
305
+
306
+ .m-fields-number-range {
307
+ display: flex;
308
+ align-items: center;
309
+ }
310
+ .m-fields-number-range .split-tag {
311
+ margin: 0 5px;
312
+ }
313
+
314
+ .m-form-box {
315
+ display: flex;
316
+ flex-direction: column;
317
+ }
318
+ .m-form-box .el-box__header {
319
+ margin: 0;
320
+ }
321
+ .m-form-box .dialog-footer {
322
+ display: flex;
323
+ align-items: center;
324
+ justify-content: space-between;
325
+ }/*$vite$:1*/
@@ -0,0 +1,5 @@
1
+ import ActionsColumn_vue_vue_type_script_setup_true_lang_default from "./ActionsColumn.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/table/ActionsColumn.vue
3
+ var ActionsColumn_default = ActionsColumn_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { ActionsColumn_default as default };
@@ -0,0 +1,107 @@
1
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, normalizeClass, openBlock, renderSlot, unref, vShow, withCtx, withDirectives } from "vue";
2
+ import { cloneDeep } from "lodash-es";
3
+ import { TMagicButton, TMagicTooltip } from "@tmagic/design";
4
+ import { Delete, DocumentCopy, Sort } from "@element-plus/icons-vue";
5
+ //#region packages/form/src/table/ActionsColumn.vue?vue&type=script&setup=true&lang.ts
6
+ var ActionsColumn_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ __name: "ActionsColumn",
8
+ props: {
9
+ config: {},
10
+ model: {},
11
+ name: {},
12
+ disabled: { type: Boolean },
13
+ currentPage: {},
14
+ pageSize: {},
15
+ index: {},
16
+ row: {},
17
+ prop: {},
18
+ sortKey: {}
19
+ },
20
+ emits: ["change"],
21
+ setup(__props, { emit: __emit }) {
22
+ const emit = __emit;
23
+ const props = __props;
24
+ const mForm = inject("mForm");
25
+ const removeHandler = (index) => {
26
+ if (props.disabled) return;
27
+ emit("change", props.model[props.name].toSpliced(index, 1));
28
+ };
29
+ const copyHandler = (index) => {
30
+ let inputs = cloneDeep(props.model[props.name][index]);
31
+ if (typeof props.config.copyHandler === "function") {
32
+ const modelName = props.name || props.config.name || "";
33
+ inputs = props.config.copyHandler(mForm, {
34
+ model: props.model[modelName],
35
+ prop: props.prop,
36
+ formValue: mForm?.values,
37
+ inputs
38
+ });
39
+ }
40
+ const { length } = props.model[props.name];
41
+ if (props.sortKey && length) inputs[props.sortKey] = props.model[props.name][length - 1][props.sortKey] - 1;
42
+ emit("change", [...props.model[props.name], inputs], { changeRecords: [{
43
+ propPath: `${props.prop}.${props.model[props.name].length}`,
44
+ value: inputs
45
+ }] });
46
+ };
47
+ const showDelete = (index) => {
48
+ const deleteFunc = props.config.delete;
49
+ if (deleteFunc && typeof deleteFunc === "function") return deleteFunc(props.model[props.name], index, mForm?.values);
50
+ return props.config.delete ?? true;
51
+ };
52
+ const copyable = (index) => {
53
+ const copyableFunc = props.config.copyable;
54
+ if (copyableFunc && typeof copyableFunc === "function") return copyableFunc(mForm, {
55
+ values: mForm?.initValues || {},
56
+ model: props.model,
57
+ parent: mForm?.parentValues || {},
58
+ formValue: mForm?.values || props.model,
59
+ prop: props.prop,
60
+ config: props.config,
61
+ index
62
+ });
63
+ return props.config.copyable ?? true;
64
+ };
65
+ return (_ctx, _cache) => {
66
+ return openBlock(), createElementBlock(Fragment, null, [
67
+ renderSlot(_ctx.$slots, "operateCol", { scope: {
68
+ $index: __props.index,
69
+ row: __props.row
70
+ } }),
71
+ __props.config.dropSort && __props.config.dropSortHandle ? (openBlock(), createBlock(unref(TMagicTooltip), {
72
+ key: 0,
73
+ content: "拖动排序",
74
+ placement: "left-start"
75
+ }, {
76
+ default: withCtx(() => [createVNode(unref(TMagicButton), {
77
+ size: "small",
78
+ link: "",
79
+ class: normalizeClass({ "tmagic-form-table-drag-target": __props.config.dropSortHandle }),
80
+ icon: __props.config.dropActionButtonIcon || unref(Sort)
81
+ }, null, 8, ["class", "icon"])]),
82
+ _: 1
83
+ })) : createCommentVNode("v-if", true),
84
+ withDirectives(createVNode(unref(TMagicButton), {
85
+ size: "small",
86
+ type: "danger",
87
+ link: "",
88
+ title: "删除",
89
+ icon: __props.config.deleteActionButtonIcon || unref(Delete),
90
+ onClick: _cache[0] || (_cache[0] = ($event) => removeHandler(__props.index + 1 + __props.currentPage * __props.pageSize - 1))
91
+ }, null, 8, ["icon"]), [[vShow, showDelete(__props.index + 1 + __props.currentPage * __props.pageSize - 1)]]),
92
+ copyable(__props.index + 1 + __props.currentPage * __props.pageSize - 1) ? (openBlock(), createBlock(unref(TMagicButton), {
93
+ key: 1,
94
+ link: "",
95
+ size: "small",
96
+ type: "primary",
97
+ title: "复制",
98
+ icon: __props.config.copyActionButtonIcon || unref(DocumentCopy),
99
+ disabled: __props.disabled,
100
+ onClick: _cache[1] || (_cache[1] = ($event) => copyHandler(__props.index + 1 + __props.currentPage * __props.pageSize - 1))
101
+ }, null, 8, ["icon", "disabled"])) : createCommentVNode("v-if", true)
102
+ ], 64);
103
+ };
104
+ }
105
+ });
106
+ //#endregion
107
+ export { ActionsColumn_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import SortColumn_vue_vue_type_script_setup_true_lang_default from "./SortColumn.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/table/SortColumn.vue
3
+ var SortColumn_default = SortColumn_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { SortColumn_default as default };
@@ -0,0 +1,88 @@
1
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
2
+ import { TMagicButton, TMagicTooltip } from "@tmagic/design";
3
+ import { ArrowDown, ArrowUp } from "@element-plus/icons-vue";
4
+ //#region packages/form/src/table/SortColumn.vue?vue&type=script&setup=true&lang.ts
5
+ var SortColumn_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
+ __name: "SortColumn",
7
+ props: {
8
+ index: {},
9
+ disabled: { type: Boolean },
10
+ currentPage: {},
11
+ pageSize: {},
12
+ name: {},
13
+ model: {}
14
+ },
15
+ emits: ["swap"],
16
+ setup(__props, { emit: __emit }) {
17
+ const props = __props;
18
+ const emit = __emit;
19
+ let timer = null;
20
+ const upHandler = (index) => {
21
+ if (timer) clearTimeout(timer);
22
+ timer = setTimeout(() => {
23
+ emit("swap", index, index - 1);
24
+ timer = null;
25
+ }, 300);
26
+ };
27
+ const topHandler = (index) => {
28
+ if (timer) clearTimeout(timer);
29
+ const moveNum = index;
30
+ for (let i = 0; i < moveNum; i++) {
31
+ emit("swap", index, index - 1);
32
+ index -= 1;
33
+ }
34
+ };
35
+ const downHandler = (index) => {
36
+ if (timer) clearTimeout(timer);
37
+ timer = setTimeout(() => {
38
+ emit("swap", index, index + 1);
39
+ timer = null;
40
+ }, 300);
41
+ };
42
+ const bottomHandler = (index) => {
43
+ if (timer) clearTimeout(timer);
44
+ const moveNum = props.model[props.name].length - 1 - index;
45
+ for (let i = 0; i < moveNum; i++) {
46
+ emit("swap", index, index + 1);
47
+ index += 1;
48
+ }
49
+ };
50
+ return (_ctx, _cache) => {
51
+ return openBlock(), createElementBlock(Fragment, null, [__props.index + 1 + __props.currentPage * __props.pageSize - 1 !== 0 ? (openBlock(), createBlock(unref(TMagicTooltip), {
52
+ key: 0,
53
+ content: "点击上移,双击置顶",
54
+ placement: "top"
55
+ }, {
56
+ default: withCtx(() => [createVNode(unref(TMagicButton), {
57
+ plain: "",
58
+ size: "small",
59
+ type: "primary",
60
+ icon: unref(ArrowUp),
61
+ disabled: __props.disabled,
62
+ link: "",
63
+ onClick: _cache[0] || (_cache[0] = ($event) => upHandler(__props.index + 1 + __props.currentPage * __props.pageSize - 1)),
64
+ onDblclick: _cache[1] || (_cache[1] = ($event) => topHandler(__props.index + 1 + __props.currentPage * __props.pageSize - 1))
65
+ }, null, 8, ["icon", "disabled"])]),
66
+ _: 1
67
+ })) : createCommentVNode("v-if", true), __props.index + 1 + __props.currentPage * __props.pageSize - 1 !== __props.model[__props.name].length - 1 ? (openBlock(), createBlock(unref(TMagicTooltip), {
68
+ key: 1,
69
+ content: "点击下移,双击置底",
70
+ placement: "top"
71
+ }, {
72
+ default: withCtx(() => [createVNode(unref(TMagicButton), {
73
+ plain: "",
74
+ size: "small",
75
+ type: "primary",
76
+ icon: unref(ArrowDown),
77
+ disabled: __props.disabled,
78
+ link: "",
79
+ onClick: _cache[2] || (_cache[2] = ($event) => downHandler(__props.index + 1 + __props.currentPage * __props.pageSize - 1)),
80
+ onDblclick: _cache[3] || (_cache[3] = ($event) => bottomHandler(__props.index + 1 + __props.currentPage * __props.pageSize - 1))
81
+ }, null, 8, ["icon", "disabled"])]),
82
+ _: 1
83
+ })) : createCommentVNode("v-if", true)], 64);
84
+ };
85
+ }
86
+ });
87
+ //#endregion
88
+ export { SortColumn_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Table_vue_vue_type_script_setup_true_lang_default from "./Table.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/form/src/table/Table.vue
3
+ var Table_default = Table_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Table_default as default };