@funcho/ui 1.1.28 → 1.1.30

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 (38) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/business/DataTable/DataTable.vue.js +91 -102
  3. package/dist/cjs/business/ProForm/ProForm.vue.js +37 -2
  4. package/dist/cjs/business/VerticalLayout/VerticalLayout.vue.js +99 -0
  5. package/dist/cjs/business/VerticalLayout/VerticalLayout.vue3.js +10 -0
  6. package/dist/cjs/business/VerticalLayout/index.js +12 -0
  7. package/dist/cjs/business/index.js +2 -0
  8. package/dist/cjs/components/DatePicker/BzDatePicker.vue.js +6 -2
  9. package/dist/cjs/components/DotStatus/DotStatus.vue.js +3 -7
  10. package/dist/cjs/components/DotStatus/DotStatus.vue2.js +52 -0
  11. package/dist/cjs/index.js +8 -6
  12. package/dist/cjs/packages/ui/package.json.js +1 -1
  13. package/dist/esm/business/DataTable/DataTable.vue.mjs +94 -105
  14. package/dist/esm/business/ProForm/ProForm.vue.mjs +38 -3
  15. package/dist/esm/business/VerticalLayout/VerticalLayout.vue.mjs +95 -0
  16. package/dist/esm/business/VerticalLayout/VerticalLayout.vue3.mjs +6 -0
  17. package/dist/esm/business/VerticalLayout/index.mjs +7 -0
  18. package/dist/esm/business/index.mjs +1 -0
  19. package/dist/esm/components/DatePicker/BzDatePicker.vue.mjs +7 -3
  20. package/dist/esm/components/DotStatus/DotStatus.vue.mjs +3 -7
  21. package/dist/esm/components/DotStatus/DotStatus.vue2.mjs +48 -0
  22. package/dist/esm/index.mjs +1 -0
  23. package/dist/esm/packages/ui/package.json.mjs +1 -1
  24. package/dist/style.css +81 -6
  25. package/dist/types/business/DataTable/DataTable.vue.d.ts +0 -6
  26. package/dist/types/business/DataTable/index.d.ts +0 -3
  27. package/dist/types/business/ProForm/ProForm.types.d.ts +2 -0
  28. package/dist/types/business/ProForm/ProForm.vue.d.ts +2 -2
  29. package/dist/types/business/VerticalLayout/VerticalLayout.types.d.ts +1 -0
  30. package/dist/types/business/VerticalLayout/VerticalLayout.vue.d.ts +41 -0
  31. package/dist/types/business/index.d.ts +1 -0
  32. package/dist/types/components/DatePicker/BzDatePicker.vue.d.ts +11 -7
  33. package/dist/types/components/DatePicker/DatePickerRanger.vue.d.ts +14 -1
  34. package/dist/types/components/DatePicker/DateTimePickerRanger.vue.d.ts +14 -1
  35. package/dist/types/components/DatePicker/index.d.ts +51 -6
  36. package/dist/types/components/DotStatus/DotStatus.vue.d.ts +35 -1
  37. package/dist/types/components/DotStatus/index.d.ts +61 -3
  38. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, computed, onMounted, resolveDirective, createElementBlock, openBlock, normalizeClass, unref, createVNode, createCommentVNode, withDirectives, withCtx, renderSlot, createBlock, mergeProps, Fragment, renderList, createSlots, resolveDynamicComponent, h } from 'vue';
1
+ import { defineComponent, ref, onMounted, resolveComponent, resolveDirective, createBlock, openBlock, normalizeClass, unref, createSlots, withCtx, withDirectives, mergeProps, createCommentVNode, createElementBlock, Fragment, renderList, resolveDynamicComponent, createVNode, renderSlot, h } from 'vue';
2
2
  import { useNamespace } from '../../hooks/use-namespace.mjs';
3
3
  import { FcDangerButton, FcLinkButton } from '../../components/Button/index.mjs';
4
4
  import '../../components/Dialog/index.mjs';
@@ -77,9 +77,8 @@ import '../../components/CodeEditor/index.mjs';
77
77
  import '../../components/RichEditor/index.mjs';
78
78
  import '../../components/LovText/index.mjs';
79
79
  import '../../components/DotStatus/index.mjs';
80
- import { useElementSize } from '@vueuse/core';
81
- import _sfc_main$2 from '../../components/VNodeRenderer/index.vue.mjs';
82
- import _sfc_main$1 from '../QueryForm/QueryForm.vue.mjs';
80
+ import _sfc_main$1 from '../../components/VNodeRenderer/index.vue.mjs';
81
+ import _sfc_main$2 from '../QueryForm/QueryForm.vue.mjs';
83
82
  /* empty css */
84
83
 
85
84
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -134,19 +133,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
134
133
  };
135
134
  const queryBoxRef = ref();
136
135
  const queryBoxHeight = ref(0);
137
- const paginationBoxRef = ref(null);
138
- const splitLineRef = ref(null);
139
- const { height: splitLineHeight } = useElementSize(splitLineRef, void 0, {
140
- box: "border-box"
141
- });
142
- const { height: paginationBoxHeight } = useElementSize(paginationBoxRef, void 0, {
143
- box: "border-box"
144
- });
145
- const containerRef = ref(null);
146
- const { height: containerHeight } = useElementSize(containerRef);
147
- const maxTableHeight = computed(() => {
148
- return (props.height || containerHeight.value) - ((queryBoxHeight.value > 0 ? queryBoxHeight.value + splitLineHeight.value : 0) + paginationBoxHeight.value);
149
- });
150
136
  const pagination = ref({
151
137
  currentPage: 1,
152
138
  pageSize: 20,
@@ -207,99 +193,102 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
207
193
  // 清空表单,回到第一页刷新
208
194
  });
209
195
  return (_ctx, _cache) => {
196
+ const _component_FcProVerticalLayout = resolveComponent("FcProVerticalLayout");
210
197
  const _directive_loading = resolveDirective("loading");
211
- return openBlock(), createElementBlock("div", {
212
- ref_key: "containerRef",
213
- ref: containerRef,
214
- class: normalizeClass(unref(ns).b())
198
+ return openBlock(), createBlock(_component_FcProVerticalLayout, {
199
+ class: normalizeClass(unref(ns).b()),
200
+ gap: 8
201
+ }, createSlots({
202
+ body: withCtx(({ height: bodyHeight }) => [
203
+ withDirectives((openBlock(), createBlock(unref(FcTable), mergeProps(_ctx.$attrs, {
204
+ data: tableData.value,
205
+ border: "",
206
+ "max-height": bodyHeight
207
+ }), {
208
+ default: withCtx(() => [
209
+ __props.hasIndex ? (openBlock(), createBlock(unref(FcTableColumn), {
210
+ key: "index",
211
+ label: "序号",
212
+ align: "center",
213
+ fixed: "left",
214
+ type: "index",
215
+ width: 60,
216
+ index: getIndex,
217
+ "show-overflow-tooltip": false
218
+ })) : createCommentVNode("", true),
219
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (item) => {
220
+ return openBlock(), createBlock(unref(FcTableColumn), mergeProps({
221
+ key: item.prop
222
+ }, { ref_for: true }, item, {
223
+ "show-overflow-tooltip": item.showOverflowTooltip || true
224
+ }), createSlots({ _: 2 }, [
225
+ item.render ? {
226
+ name: "default",
227
+ fn: withCtx(({ row, $index }) => [
228
+ (openBlock(), createBlock(resolveDynamicComponent(item.render(row, $index))))
229
+ ]),
230
+ key: "0"
231
+ } : void 0
232
+ ]), 1040, ["show-overflow-tooltip"]);
233
+ }), 128)),
234
+ props.actions && props.actions.length > 0 ? (openBlock(), createBlock(unref(FcTableColumn), {
235
+ key: "actions",
236
+ label: "操作",
237
+ align: "right",
238
+ fixed: "right",
239
+ width: __props.actionsWidth || void 0
240
+ }, {
241
+ default: withCtx(({ row, $index }) => [
242
+ createVNode(_sfc_main$1, {
243
+ content: () => renderActions(props.actions, row, $index)
244
+ }, null, 8, ["content"])
245
+ ]),
246
+ _: 1
247
+ }, 8, ["width"])) : createCommentVNode("", true)
248
+ ]),
249
+ _: 1
250
+ }, 16, ["data", "max-height"])), [
251
+ [_directive_loading, tableLoading.value]
252
+ ])
253
+ ]),
254
+ _: 2
215
255
  }, [
216
- createVNode(_sfc_main$1, {
217
- ref_key: "queryBoxRef",
218
- ref: queryBoxRef,
219
- fields: __props.fields,
220
- tools: __props.tools,
221
- "btn-disabled": tableLoading.value,
222
- onSearch: handleSearchClick,
223
- onReset: handleResetClick,
224
- onResize: _cache[0] || (_cache[0] = (e) => queryBoxHeight.value = e.height)
225
- }, {
226
- default: withCtx(() => [
227
- !_ctx.$slots.tools ? renderSlot(_ctx.$slots, "tools", { key: 0 }) : createCommentVNode("", true)
228
- ]),
229
- _: 3
230
- }, 8, ["fields", "tools", "btn-disabled"]),
231
- __props.fields && __props.fields.length > 0 ? (openBlock(), createElementBlock("div", {
232
- key: 0,
233
- ref_key: "splitLineRef",
234
- ref: splitLineRef,
235
- class: normalizeClass(unref(ns).e("split-line"))
236
- }, null, 2)) : createCommentVNode("", true),
237
- withDirectives((openBlock(), createBlock(unref(FcTable), mergeProps(_ctx.$attrs, {
238
- data: tableData.value,
239
- border: "",
240
- "max-height": maxTableHeight.value
241
- }), {
242
- default: withCtx(() => [
243
- __props.hasIndex ? (openBlock(), createBlock(unref(FcTableColumn), {
244
- key: "index",
245
- label: "序号",
246
- align: "center",
247
- fixed: "left",
248
- type: "index",
249
- width: 60,
250
- index: getIndex,
251
- "show-overflow-tooltip": false
252
- })) : createCommentVNode("", true),
253
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (item) => {
254
- return openBlock(), createBlock(unref(FcTableColumn), mergeProps({
255
- key: item.prop
256
- }, { ref_for: true }, item, {
257
- "show-overflow-tooltip": item.showOverflowTooltip || true
258
- }), createSlots({ _: 2 }, [
259
- item.render ? {
260
- name: "default",
261
- fn: withCtx(({ row, $index }) => [
262
- (openBlock(), createBlock(resolveDynamicComponent(item.render(row, $index))))
263
- ]),
264
- key: "0"
265
- } : void 0
266
- ]), 1040, ["show-overflow-tooltip"]);
267
- }), 128)),
268
- props.actions && props.actions.length > 0 ? (openBlock(), createBlock(unref(FcTableColumn), {
269
- key: "actions",
270
- label: "操作",
271
- align: "right",
272
- fixed: "right",
273
- width: __props.actionsWidth || void 0
256
+ __props.fields && __props.fields.length > 0 ? {
257
+ name: "header",
258
+ fn: withCtx(() => [
259
+ createVNode(_sfc_main$2, {
260
+ ref_key: "queryBoxRef",
261
+ ref: queryBoxRef,
262
+ fields: __props.fields,
263
+ tools: __props.tools,
264
+ "btn-disabled": tableLoading.value,
265
+ onSearch: handleSearchClick,
266
+ onReset: handleResetClick,
267
+ onResize: _cache[0] || (_cache[0] = (e) => queryBoxHeight.value = e.height)
274
268
  }, {
275
- default: withCtx(({ row, $index }) => [
276
- createVNode(_sfc_main$2, {
277
- content: () => renderActions(props.actions, row, $index)
278
- }, null, 8, ["content"])
269
+ default: withCtx(() => [
270
+ !_ctx.$slots.tools ? renderSlot(_ctx.$slots, "tools", { key: 0 }) : createCommentVNode("", true)
279
271
  ]),
280
- _: 1
281
- }, 8, ["width"])) : createCommentVNode("", true)
272
+ _: 3
273
+ }, 8, ["fields", "tools", "btn-disabled"])
282
274
  ]),
283
- _: 1
284
- }, 16, ["data", "max-height"])), [
285
- [_directive_loading, tableLoading.value]
286
- ]),
287
- __props.isPagination ? (openBlock(), createElementBlock("div", {
288
- key: 1,
289
- ref_key: "paginationBoxRef",
290
- ref: paginationBoxRef,
291
- class: normalizeClass(unref(ns).e("pagination-box"))
292
- }, [
293
- createVNode(unref(FcPagination), {
294
- "page-size": pagination.value.pageSize,
295
- "onUpdate:pageSize": _cache[1] || (_cache[1] = ($event) => pagination.value.pageSize = $event),
296
- "current-page": pagination.value.currentPage,
297
- "onUpdate:currentPage": _cache[2] || (_cache[2] = ($event) => pagination.value.currentPage = $event),
298
- total: pagination.value.total,
299
- onChange: handlePaginationChange
300
- }, null, 8, ["page-size", "current-page", "total"])
301
- ], 2)) : createCommentVNode("", true)
302
- ], 2);
275
+ key: "0"
276
+ } : void 0,
277
+ __props.isPagination ? {
278
+ name: "footer",
279
+ fn: withCtx(() => [
280
+ createVNode(unref(FcPagination), {
281
+ "page-size": pagination.value.pageSize,
282
+ "onUpdate:pageSize": _cache[1] || (_cache[1] = ($event) => pagination.value.pageSize = $event),
283
+ "current-page": pagination.value.currentPage,
284
+ "onUpdate:currentPage": _cache[2] || (_cache[2] = ($event) => pagination.value.currentPage = $event),
285
+ total: pagination.value.total,
286
+ onChange: handlePaginationChange
287
+ }, null, 8, ["page-size", "current-page", "total"])
288
+ ]),
289
+ key: "1"
290
+ } : void 0
291
+ ]), 1032, ["class"]);
303
292
  };
304
293
  }
305
294
  });
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, createBlock, openBlock, unref, mergeProps, withCtx, createElementBlock, Fragment, renderList, normalizeStyle, createSlots, resolveDynamicComponent, createElementVNode, normalizeClass, createVNode, toDisplayString } from 'vue';
1
+ import { defineComponent, ref, watch, createBlock, openBlock, unref, mergeProps, withCtx, createElementBlock, Fragment, renderList, normalizeStyle, createSlots, resolveDynamicComponent, createElementVNode, normalizeClass, createVNode, toDisplayString } from 'vue';
2
2
  import { useNamespace } from '../../hooks/use-namespace.mjs';
3
3
  import '../../components/Button/index.mjs';
4
4
  import '../../components/Dialog/index.mjs';
@@ -78,8 +78,8 @@ import '../../components/RichEditor/index.mjs';
78
78
  import '../../components/LovText/index.mjs';
79
79
  import '../../components/DotStatus/index.mjs';
80
80
  import { ComponentsMap } from './componentsMap.mjs';
81
- import isPlainObject from '../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isPlainObject.mjs';
82
81
  import cloneDeep from '../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/cloneDeep.mjs';
82
+ import isPlainObject from '../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isPlainObject.mjs';
83
83
 
84
84
  const _sfc_main = /* @__PURE__ */ defineComponent({
85
85
  ...{
@@ -96,7 +96,27 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
96
96
  },
97
97
  setup(__props, { expose: __expose }) {
98
98
  const ns = useNamespace("pro-form");
99
+ const props = __props;
99
100
  const formModel = ref({});
101
+ const initialModelSnapshot = ref({});
102
+ watch(
103
+ () => props.fields,
104
+ (newFields) => {
105
+ const snapshot = {};
106
+ const newModel = { ...formModel.value };
107
+ newFields.forEach((field) => {
108
+ if (field.initialValue !== void 0) {
109
+ snapshot[field.prop] = cloneDeep(field.initialValue);
110
+ if (newModel[field.prop] === void 0) {
111
+ newModel[field.prop] = cloneDeep(field.initialValue);
112
+ }
113
+ }
114
+ });
115
+ initialModelSnapshot.value = snapshot;
116
+ formModel.value = newModel;
117
+ },
118
+ { immediate: true }
119
+ );
100
120
  const setValues = (data) => {
101
121
  if (isPlainObject(data)) {
102
122
  formModel.value = cloneDeep(data || {});
@@ -128,6 +148,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
128
148
  item.attrs.onRef(el, item);
129
149
  }
130
150
  };
151
+ const resetFields = () => {
152
+ if (!formRef.value) return;
153
+ formRef.value.resetFields();
154
+ props.fields.forEach((field) => {
155
+ const prop = field.prop;
156
+ const initialValue = initialModelSnapshot.value[prop];
157
+ const hasInitialValue = initialValue !== void 0;
158
+ if (hasInitialValue && field.clearInitialValueOnReset) {
159
+ formModel.value[prop] = void 0;
160
+ }
161
+ });
162
+ };
131
163
  __expose(
132
164
  new Proxy(
133
165
  {},
@@ -136,13 +168,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
136
168
  if (key === "setValues") {
137
169
  return setValues;
138
170
  }
171
+ if (key === "resetFields") {
172
+ return resetFields;
173
+ }
139
174
  if (key === "model") {
140
175
  return formModel.value;
141
176
  }
142
177
  return formRef.value?.[key];
143
178
  },
144
179
  has(_, key) {
145
- if (key === "setValues" || key === "model") {
180
+ if (key === "setValues" || key === "resetFields" || key === "model") {
146
181
  return true;
147
182
  }
148
183
  if (!formRef.value) return false;
@@ -0,0 +1,95 @@
1
+ import { defineComponent, ref, computed, createElementBlock, openBlock, normalizeClass, unref, createElementVNode, normalizeStyle, createCommentVNode, renderSlot } from 'vue';
2
+ import { useNamespace } from '../../hooks/use-namespace.mjs';
3
+ import { useElementSize } from '@vueuse/core';
4
+
5
+ const _sfc_main = /* @__PURE__ */ defineComponent({
6
+ ...{
7
+ name: "FcProVerticalLayout"
8
+ },
9
+ __name: "VerticalLayout",
10
+ props: {
11
+ gap: { default: 8 },
12
+ full: { type: Boolean, default: false }
13
+ },
14
+ setup(__props) {
15
+ const ns = useNamespace("pro-vertical-layout");
16
+ const props = __props;
17
+ const headerRef = ref(null);
18
+ const bodyRef = ref(null);
19
+ const footerRef = ref(null);
20
+ const ghostBodyRef = ref(null);
21
+ const { height: headerHeight } = useElementSize(headerRef);
22
+ const { height: footerHeight } = useElementSize(footerRef);
23
+ const { width: bodyWidth } = useElementSize(bodyRef);
24
+ const { height: ghostBodyHeight } = useElementSize(ghostBodyRef);
25
+ const layoutStyle = computed(() => {
26
+ const gapValue = typeof props.gap === "number" ? `${props.gap}px` : props.gap;
27
+ return {
28
+ gap: gapValue
29
+ };
30
+ });
31
+ return (_ctx, _cache) => {
32
+ return openBlock(), createElementBlock("div", {
33
+ ref: "layoutRef",
34
+ class: normalizeClass(unref(ns).b())
35
+ }, [
36
+ createElementVNode("div", {
37
+ class: normalizeClass(unref(ns).e("actual")),
38
+ style: normalizeStyle(layoutStyle.value)
39
+ }, [
40
+ _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
41
+ key: 0,
42
+ ref_key: "headerRef",
43
+ ref: headerRef,
44
+ class: normalizeClass(unref(ns).e("header"))
45
+ }, [
46
+ renderSlot(_ctx.$slots, "header")
47
+ ], 2)) : createCommentVNode("", true),
48
+ _ctx.$slots.body ? (openBlock(), createElementBlock("div", {
49
+ key: 1,
50
+ ref_key: "bodyRef",
51
+ ref: bodyRef,
52
+ class: normalizeClass(unref(ns).e("body")),
53
+ style: normalizeStyle(__props.full ? "flex: 1;" : `max-height: ${unref(ghostBodyHeight)}px;`)
54
+ }, [
55
+ renderSlot(_ctx.$slots, "body", {
56
+ width: unref(bodyWidth),
57
+ height: unref(ghostBodyHeight)
58
+ })
59
+ ], 6)) : createCommentVNode("", true),
60
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", {
61
+ key: 2,
62
+ ref_key: "footerRef",
63
+ ref: footerRef,
64
+ class: normalizeClass(unref(ns).e("footer"))
65
+ }, [
66
+ renderSlot(_ctx.$slots, "footer")
67
+ ], 2)) : createCommentVNode("", true)
68
+ ], 6),
69
+ createElementVNode("div", {
70
+ class: normalizeClass(unref(ns).e("ghost-wrapper")),
71
+ "aria-hidden": "true",
72
+ style: normalizeStyle(layoutStyle.value)
73
+ }, [
74
+ _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
75
+ key: 0,
76
+ class: normalizeClass(unref(ns).e("ghost-header")),
77
+ style: normalizeStyle({ height: `${unref(headerHeight)}px` })
78
+ }, null, 6)) : createCommentVNode("", true),
79
+ createElementVNode("div", {
80
+ ref_key: "ghostBodyRef",
81
+ ref: ghostBodyRef,
82
+ class: normalizeClass(unref(ns).e("ghost-body"))
83
+ }, null, 2),
84
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", {
85
+ key: 1,
86
+ class: normalizeClass(unref(ns).e("ghost-footer")),
87
+ style: normalizeStyle({ height: `${unref(footerHeight)}px` })
88
+ }, null, 6)) : createCommentVNode("", true)
89
+ ], 6)
90
+ ], 2);
91
+ };
92
+ }
93
+ });
94
+
95
+ export { _sfc_main as default };
@@ -0,0 +1,6 @@
1
+ import _sfc_main from './VerticalLayout.vue.mjs';
2
+ /* empty css */
3
+
4
+
5
+
6
+ export { _sfc_main as default };
@@ -0,0 +1,7 @@
1
+ import _sfc_main from './VerticalLayout.vue.mjs';
2
+ /* empty css */
3
+ import { withInstall } from '../../_utils/with-install.mjs';
4
+
5
+ const FcProVerticalLayout = withInstall(_sfc_main);
6
+
7
+ export { FcProVerticalLayout, FcProVerticalLayout as default };
@@ -6,3 +6,4 @@ export { FcProTreeTransfer } from './TreeTransfer/index.mjs';
6
6
  export { FcProEditFormCard } from './EditFormCard/index.mjs';
7
7
  export { FcProFormDialog } from './FormDialog/index.mjs';
8
8
  export { FcProQueryForm } from './QueryForm/index.mjs';
9
+ export { FcProVerticalLayout } from './VerticalLayout/index.mjs';
@@ -1,4 +1,4 @@
1
- import { defineComponent, mergeModels, computed, useModel, onMounted, ref, watch, createBlock, openBlock, mergeProps, withCtx, createElementVNode, normalizeClass, unref, createVNode, createTextVNode } from 'vue';
1
+ import { defineComponent, mergeModels, computed, useModel, onMounted, ref, watch, createBlock, openBlock, mergeProps, withCtx, createElementVNode, normalizeClass, unref, createVNode, createTextVNode, nextTick } from 'vue';
2
2
  import _sfc_main$4 from '../Button/Button.vue.mjs';
3
3
  /* empty css */
4
4
  import _sfc_main$1 from './DatePicker.vue.mjs';
@@ -29,8 +29,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
29
29
  },
30
30
  "modelModifiers": {}
31
31
  }),
32
- emits: ["update:modelValue"],
33
- setup(__props) {
32
+ emits: /* @__PURE__ */ mergeModels(["change"], ["update:modelValue"]),
33
+ setup(__props, { emit: __emit }) {
34
34
  const ns = useNamespace("bz-date-picker");
35
35
  const props = __props;
36
36
  const isRange = computed(() => {
@@ -103,6 +103,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
103
103
  );
104
104
  }
105
105
  });
106
+ const emits = __emit;
106
107
  const handleConfirm = () => {
107
108
  if (date1.value && date2.value && isRange.value) {
108
109
  dateRange.value = [date1.value, date2.value];
@@ -110,6 +111,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
110
111
  dateRange.value = isRange.value ? [] : "";
111
112
  }
112
113
  tooltipRef.value?.hide();
114
+ nextTick(() => {
115
+ emits("change", dateRange.value);
116
+ });
113
117
  };
114
118
  const todayClick = () => {
115
119
  const start = /* @__PURE__ */ new Date();
@@ -1,11 +1,7 @@
1
- import { createElementBlock, openBlock } from 'vue';
1
+ import _sfc_main from './DotStatus.vue2.mjs';
2
+ /* empty css */
2
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.mjs';
3
4
 
4
- const _sfc_main = { };
5
-
6
- function _sfc_render(_ctx, _cache) {
7
- return (openBlock(), createElementBlock("div", null, "1"))
8
- }
9
- const DotStatus = /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render]]);
5
+ const DotStatus = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a9f6e8d5"]]);
10
6
 
11
7
  export { DotStatus as default };
@@ -0,0 +1,48 @@
1
+ import { defineComponent, createElementBlock, openBlock, normalizeStyle, normalizeClass, unref, renderSlot, Fragment, createBlock, createTextVNode, toDisplayString } from 'vue';
2
+ import { useNamespace } from '../../hooks/use-namespace.mjs';
3
+ import _sfc_main$1 from '../LovText/LovText.vue.mjs';
4
+ /* empty css */
5
+
6
+ const _sfc_main = /* @__PURE__ */ defineComponent({
7
+ ...{
8
+ name: "FcDotStatus"
9
+ },
10
+ __name: "DotStatus",
11
+ props: {
12
+ type: { default: "info" },
13
+ size: { default: "medium" },
14
+ color: { default: "" },
15
+ label: { default: "" },
16
+ lovId: { default: "" },
17
+ value: { default: null },
18
+ isSql: { type: Boolean, default: false },
19
+ isUpdateLovOptions: { type: Boolean, default: false }
20
+ },
21
+ setup(__props) {
22
+ const ns = useNamespace("dot-status");
23
+ return (_ctx, _cache) => {
24
+ return openBlock(), createElementBlock("div", {
25
+ class: normalizeClass({
26
+ [unref(ns).b()]: true,
27
+ [unref(ns).b(__props.type)]: true,
28
+ [unref(ns).b(__props.size)]: true
29
+ }),
30
+ style: normalizeStyle({ "--fc-ui-dot-bg-color": __props.color })
31
+ }, [
32
+ !_ctx.$slots.default ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
33
+ __props.lovId && __props.value ? (openBlock(), createBlock(_sfc_main$1, {
34
+ key: 0,
35
+ "lov-id": __props.lovId,
36
+ value: __props.value,
37
+ "is-sql": __props.isSql,
38
+ "is-update-lov-options": __props.isUpdateLovOptions
39
+ }, null, 8, ["lov-id", "value", "is-sql", "is-update-lov-options"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
40
+ createTextVNode(toDisplayString(__props.label), 1)
41
+ ], 64))
42
+ ], 64)) : renderSlot(_ctx.$slots, "default", { key: 1 }, void 0, true)
43
+ ], 6);
44
+ };
45
+ }
46
+ });
47
+
48
+ export { _sfc_main as default };
@@ -94,6 +94,7 @@ export { FcProTreeTransfer } from './business/TreeTransfer/index.mjs';
94
94
  export { FcProEditFormCard } from './business/EditFormCard/index.mjs';
95
95
  export { FcProFormDialog } from './business/FormDialog/index.mjs';
96
96
  export { FcProQueryForm } from './business/QueryForm/index.mjs';
97
+ export { FcProVerticalLayout } from './business/VerticalLayout/index.mjs';
97
98
 
98
99
  const components = Object.keys(index$1).map((key) => {
99
100
  return index$1[key];
@@ -1,3 +1,3 @@
1
- const version = "1.1.28";
1
+ const version = "1.1.30";
2
2
 
3
3
  export { version };
package/dist/style.css CHANGED
@@ -17032,6 +17032,60 @@ to {
17032
17032
  display: flex;
17033
17033
  align-items: center;
17034
17034
  justify-content: space-between;
17035
+ }.fc-mkui-dot-status[data-v-a9f6e8d5] {
17036
+ display: inline-flex;
17037
+ align-items: center;
17038
+ gap: 4px;
17039
+ color: #181818;
17040
+ }
17041
+ .fc-mkui-dot-status[data-v-a9f6e8d5]::before {
17042
+ width: 8px;
17043
+ height: 8px;
17044
+ border-radius: 50%;
17045
+ content: "";
17046
+ display: inline-block;
17047
+ background-color: #b2b2b2;
17048
+ background-color: var(--fc-ui-dot-bg-color, #b2b2b2);
17049
+ animation: dot-ping-a9f6e8d5 1.5s cubic-bezier(0, 0, 0.2, 1) infinite;
17050
+ }
17051
+ .fc-mkui-dot-status-primary[data-v-a9f6e8d5]::before {
17052
+ background-color: #165dff;
17053
+ background-color: var(--fc-ui-dot-bg-color, #165dff);
17054
+ }
17055
+ .fc-mkui-dot-status-success[data-v-a9f6e8d5]::before {
17056
+ background-color: #62d62b;
17057
+ background-color: var(--fc-ui-dot-bg-color, #62d62b);
17058
+ }
17059
+ .fc-mkui-dot-status-warning[data-v-a9f6e8d5]::before {
17060
+ background-color: #f7ba1d;
17061
+ background-color: var(--fc-ui-dot-bg-color, #f7ba1d);
17062
+ }
17063
+ .fc-mkui-dot-status-error[data-v-a9f6e8d5]::before {
17064
+ background-color: #ff3232;
17065
+ background-color: var(--fc-ui-dot-bg-color, #ff3232);
17066
+ }
17067
+ .fc-mkui-dot-status-danger[data-v-a9f6e8d5]::before {
17068
+ background-color: #ff3232;
17069
+ background-color: var(--fc-ui-dot-bg-color, #ff3232);
17070
+ }
17071
+ .fc-mkui-dot-status-small[data-v-a9f6e8d5]::before {
17072
+ width: 6px;
17073
+ height: 6px;
17074
+ }
17075
+ .fc-mkui-dot-status-large[data-v-a9f6e8d5]::before {
17076
+ width: 10px;
17077
+ height: 10px;
17078
+ }
17079
+ @keyframes dot-ping-a9f6e8d5 {
17080
+ 0% {
17081
+ opacity: 1;
17082
+ }
17083
+ 50% {
17084
+ opacity: 0.4;
17085
+ }
17086
+ 100% {
17087
+ opacity: 1;
17088
+ }
17035
17089
  }.fc-mkui-sidebar-main-layout {
17036
17090
  height: 100%;
17037
17091
  display: flex;
@@ -17147,12 +17201,6 @@ to {
17147
17201
  .fc-mkui-data-table .fc-ui-table__border-left-patch {
17148
17202
  background-color: #c5d6ff;
17149
17203
  }
17150
- .fc-mkui-data-table__split-line {
17151
- height: 8px;
17152
- }
17153
- .fc-mkui-data-table__pagination-box {
17154
- padding-top: 8px;
17155
- }
17156
17204
  .fc-mkui-data-table__actions {
17157
17205
  display: flex;
17158
17206
  align-items: center;
@@ -17224,4 +17272,31 @@ to {
17224
17272
  cursor: pointer;
17225
17273
  }.fc-mkui-form-dialog__body {
17226
17274
  padding-bottom: 0;
17275
+ }.fc-mkui-pro-vertical-layout {
17276
+ position: relative;
17277
+ height: 100%;
17278
+ }
17279
+ .fc-mkui-pro-vertical-layout__actual {
17280
+ height: 100%;
17281
+ display: flex;
17282
+ flex-direction: column;
17283
+ box-sizing: border-box;
17284
+ overflow: hidden;
17285
+ z-index: 1;
17286
+ }
17287
+ .fc-mkui-pro-vertical-layout__body {
17288
+ width: 100%;
17289
+ box-sizing: border-box;
17290
+ overflow: hidden;
17291
+ }
17292
+ .fc-mkui-pro-vertical-layout__ghost-wrapper {
17293
+ position: absolute;
17294
+ inset: 0;
17295
+ pointer-events: none;
17296
+ display: flex;
17297
+ flex-direction: column;
17298
+ visibility: hidden;
17299
+ }
17300
+ .fc-mkui-pro-vertical-layout__ghost-body {
17301
+ flex: 1;
17227
17302
  }