@dolusoft/vue3-datatable 1.8.37 → 1.8.40
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/vue3-datatable.cjs +103 -37
- package/dist/vue3-datatable.css +9 -9
- package/dist/vue3-datatable.js +103 -37
- package/package.json +1 -1
package/dist/vue3-datatable.cjs
CHANGED
|
@@ -2469,7 +2469,7 @@ const _export_sfc = (sfc, props) => {
|
|
|
2469
2469
|
}
|
|
2470
2470
|
return target;
|
|
2471
2471
|
};
|
|
2472
|
-
const ButtonExpand = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-
|
|
2472
|
+
const ButtonExpand = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-4d01a2fa"]]);
|
|
2473
2473
|
const __default__$4 = {
|
|
2474
2474
|
name: "ButtonRightPanel"
|
|
2475
2475
|
};
|
|
@@ -2495,7 +2495,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
2495
2495
|
};
|
|
2496
2496
|
}
|
|
2497
2497
|
});
|
|
2498
|
-
const ButtonRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-
|
|
2498
|
+
const ButtonRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-d739c6bf"]]);
|
|
2499
2499
|
const sides = ["top", "right", "bottom", "left"];
|
|
2500
2500
|
const alignments = ["start", "end"];
|
|
2501
2501
|
const placements = /* @__PURE__ */ sides.reduce((acc, side) => acc.concat(side, side + "-" + alignments[0], side + "-" + alignments[1]), []);
|
|
@@ -5365,10 +5365,10 @@ const _hoisted_17$1 = {
|
|
|
5365
5365
|
key: 0,
|
|
5366
5366
|
class: "bh-filter bh-relative"
|
|
5367
5367
|
};
|
|
5368
|
-
const _hoisted_18$1 = ["onUpdate:modelValue"];
|
|
5369
|
-
const _hoisted_19$1 = ["onUpdate:modelValue"];
|
|
5370
|
-
const _hoisted_20$1 = ["onUpdate:modelValue"];
|
|
5371
|
-
const _hoisted_21$1 = ["onUpdate:modelValue"];
|
|
5368
|
+
const _hoisted_18$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5369
|
+
const _hoisted_19$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5370
|
+
const _hoisted_20$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5371
|
+
const _hoisted_21$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5372
5372
|
const _hoisted_22$1 = /* @__PURE__ */ vue.createElementVNode("option", { value: void 0 }, "All", -1);
|
|
5373
5373
|
const _hoisted_23$1 = /* @__PURE__ */ vue.createElementVNode("option", { value: true }, "True", -1);
|
|
5374
5374
|
const _hoisted_24$1 = /* @__PURE__ */ vue.createElementVNode("option", { value: false }, "False", -1);
|
|
@@ -5381,10 +5381,10 @@ const _hoisted_26$1 = {
|
|
|
5381
5381
|
key: 1,
|
|
5382
5382
|
class: "bh-filter-input-wrapper"
|
|
5383
5383
|
};
|
|
5384
|
-
const _hoisted_27$1 = ["onUpdate:modelValue"];
|
|
5385
|
-
const _hoisted_28$1 = ["onUpdate:modelValue"];
|
|
5386
|
-
const _hoisted_29$1 = ["onUpdate:modelValue"];
|
|
5387
|
-
const _hoisted_30$1 = ["onUpdate:modelValue"];
|
|
5384
|
+
const _hoisted_27$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5385
|
+
const _hoisted_28$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5386
|
+
const _hoisted_29$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5387
|
+
const _hoisted_30$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5388
5388
|
const _hoisted_31$1 = /* @__PURE__ */ vue.createElementVNode("option", { value: void 0 }, "All", -1);
|
|
5389
5389
|
const _hoisted_32$1 = /* @__PURE__ */ vue.createElementVNode("option", { value: true }, "True", -1);
|
|
5390
5390
|
const _hoisted_33$1 = /* @__PURE__ */ vue.createElementVNode("option", { value: false }, "False", -1);
|
|
@@ -5423,7 +5423,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5423
5423
|
"filterDatetimeUpdate",
|
|
5424
5424
|
"clearAllFilters"
|
|
5425
5425
|
],
|
|
5426
|
-
setup(__props, { emit: __emit }) {
|
|
5426
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
5427
5427
|
const selectedAll = vue.ref(null);
|
|
5428
5428
|
const props = __props;
|
|
5429
5429
|
const emit = __emit;
|
|
@@ -5436,6 +5436,8 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5436
5436
|
const filterInputs = vue.ref({});
|
|
5437
5437
|
const columnConditions = vue.ref({});
|
|
5438
5438
|
const watchedFields = vue.ref(/* @__PURE__ */ new Set());
|
|
5439
|
+
const debounceTimers = /* @__PURE__ */ new Map();
|
|
5440
|
+
const processChangeFunctions = /* @__PURE__ */ new Map();
|
|
5439
5441
|
const columnsMap = vue.computed(() => {
|
|
5440
5442
|
var _a;
|
|
5441
5443
|
const map = /* @__PURE__ */ new Map();
|
|
@@ -5457,18 +5459,20 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5457
5459
|
filterInputs.value[col.field] = col.value || "";
|
|
5458
5460
|
}
|
|
5459
5461
|
watchedFields.value.add(col.field);
|
|
5460
|
-
|
|
5462
|
+
debounceTimers.set(col.field, null);
|
|
5461
5463
|
vue.watch(
|
|
5462
5464
|
() => filterInputs.value[col.field],
|
|
5463
5465
|
(newValue) => {
|
|
5464
5466
|
const column = columnsMap.value.get(col.field);
|
|
5465
5467
|
if (!column) return;
|
|
5466
5468
|
const isEmpty = newValue === "" || newValue === null || newValue === void 0;
|
|
5467
|
-
|
|
5468
|
-
|
|
5469
|
-
|
|
5469
|
+
const existingTimer = debounceTimers.get(col.field);
|
|
5470
|
+
if (existingTimer) {
|
|
5471
|
+
clearTimeout(existingTimer);
|
|
5472
|
+
debounceTimers.set(col.field, null);
|
|
5470
5473
|
}
|
|
5471
5474
|
const processChange = () => {
|
|
5475
|
+
debounceTimers.set(col.field, null);
|
|
5472
5476
|
if (column.type === "string" || column.type === "String") {
|
|
5473
5477
|
column.value = isEmpty ? "" : typeof newValue === "string" ? newValue.trim() : newValue;
|
|
5474
5478
|
} else {
|
|
@@ -5485,16 +5489,43 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5485
5489
|
}
|
|
5486
5490
|
emit("filterChange");
|
|
5487
5491
|
};
|
|
5492
|
+
processChangeFunctions.set(col.field, processChange);
|
|
5488
5493
|
if (isEmpty) {
|
|
5489
5494
|
processChange();
|
|
5490
5495
|
} else {
|
|
5491
|
-
|
|
5496
|
+
debounceTimers.set(col.field, setTimeout(processChange, 100));
|
|
5492
5497
|
}
|
|
5493
5498
|
}
|
|
5494
5499
|
);
|
|
5495
5500
|
}
|
|
5496
5501
|
});
|
|
5497
5502
|
};
|
|
5503
|
+
const flushFilterDebounce = (field) => {
|
|
5504
|
+
const timer = debounceTimers.get(field);
|
|
5505
|
+
if (timer) {
|
|
5506
|
+
clearTimeout(timer);
|
|
5507
|
+
debounceTimers.set(field, null);
|
|
5508
|
+
const processChange = processChangeFunctions.get(field);
|
|
5509
|
+
if (processChange) {
|
|
5510
|
+
processChange();
|
|
5511
|
+
}
|
|
5512
|
+
}
|
|
5513
|
+
};
|
|
5514
|
+
const flushAllFilterDebounces = () => {
|
|
5515
|
+
debounceTimers.forEach((timer, field) => {
|
|
5516
|
+
if (timer) {
|
|
5517
|
+
clearTimeout(timer);
|
|
5518
|
+
debounceTimers.set(field, null);
|
|
5519
|
+
const processChange = processChangeFunctions.get(field);
|
|
5520
|
+
if (processChange) {
|
|
5521
|
+
processChange();
|
|
5522
|
+
}
|
|
5523
|
+
}
|
|
5524
|
+
});
|
|
5525
|
+
};
|
|
5526
|
+
const handleFilterEnter = (field) => {
|
|
5527
|
+
flushFilterDebounce(field);
|
|
5528
|
+
};
|
|
5498
5529
|
const handleClearAllFilters = () => {
|
|
5499
5530
|
var _a;
|
|
5500
5531
|
Object.keys(filterInputs.value).forEach((key) => {
|
|
@@ -5634,6 +5665,10 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5634
5665
|
}
|
|
5635
5666
|
emit("filterChange");
|
|
5636
5667
|
};
|
|
5668
|
+
__expose({
|
|
5669
|
+
flushFilterDebounce,
|
|
5670
|
+
flushAllFilterDebounces
|
|
5671
|
+
});
|
|
5637
5672
|
return (_ctx, _cache) => {
|
|
5638
5673
|
const _component_VDropdown = vue.resolveComponent("VDropdown");
|
|
5639
5674
|
return vue.openBlock(), vue.createElementBlock("tr", _hoisted_1$1, [
|
|
@@ -5665,7 +5700,10 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5665
5700
|
])
|
|
5666
5701
|
]),
|
|
5667
5702
|
props.all.columnFilter && !props.isFooter && clearButtonLocation.value === "checkbox" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$1, [
|
|
5668
|
-
vue.createVNode(vue.unref(Vt),
|
|
5703
|
+
vue.createVNode(vue.unref(Vt), {
|
|
5704
|
+
placement: "top",
|
|
5705
|
+
distance: 6
|
|
5706
|
+
}, {
|
|
5669
5707
|
popper: vue.withCtx(() => [
|
|
5670
5708
|
vue.createTextVNode("Clear all filters")
|
|
5671
5709
|
]),
|
|
@@ -5697,7 +5735,10 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5697
5735
|
})
|
|
5698
5736
|
}, [
|
|
5699
5737
|
props.all.columnFilter && !props.isFooter && clearButtonLocation.value === "rightpanel" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$1, [
|
|
5700
|
-
vue.createVNode(vue.unref(Vt),
|
|
5738
|
+
vue.createVNode(vue.unref(Vt), {
|
|
5739
|
+
placement: "top",
|
|
5740
|
+
distance: 6
|
|
5741
|
+
}, {
|
|
5701
5742
|
popper: vue.withCtx(() => [
|
|
5702
5743
|
vue.createTextVNode("Clear all filters")
|
|
5703
5744
|
]),
|
|
@@ -5729,7 +5770,10 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5729
5770
|
expandall: props.all.expandall
|
|
5730
5771
|
}, null, 8, ["expandedrows", "expandall"])) : vue.createCommentVNode("", true),
|
|
5731
5772
|
props.all.columnFilter && !props.isFooter && clearButtonLocation.value === "subtable" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_11$1, [
|
|
5732
|
-
vue.createVNode(vue.unref(Vt),
|
|
5773
|
+
vue.createVNode(vue.unref(Vt), {
|
|
5774
|
+
placement: "top",
|
|
5775
|
+
distance: 6
|
|
5776
|
+
}, {
|
|
5733
5777
|
popper: vue.withCtx(() => [
|
|
5734
5778
|
vue.createTextVNode("Clear all filters")
|
|
5735
5779
|
]),
|
|
@@ -5797,16 +5841,18 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5797
5841
|
key: 0,
|
|
5798
5842
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5799
5843
|
type: "text",
|
|
5800
|
-
class: "bh-form-control"
|
|
5801
|
-
|
|
5844
|
+
class: "bh-form-control",
|
|
5845
|
+
onKeydown: vue.withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5846
|
+
}, null, 40, _hoisted_18$1)), [
|
|
5802
5847
|
[vue.vModelText, filterInputs.value[col.field]]
|
|
5803
5848
|
]) : vue.createCommentVNode("", true),
|
|
5804
5849
|
col.type === "number" || col.type === "integer" || col.type === "Integer" ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
|
|
5805
5850
|
key: 1,
|
|
5806
5851
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5807
5852
|
type: "number",
|
|
5808
|
-
class: "bh-form-control"
|
|
5809
|
-
|
|
5853
|
+
class: "bh-form-control",
|
|
5854
|
+
onKeydown: vue.withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5855
|
+
}, null, 40, _hoisted_19$1)), [
|
|
5810
5856
|
[
|
|
5811
5857
|
vue.vModelText,
|
|
5812
5858
|
filterInputs.value[col.field],
|
|
@@ -5821,13 +5867,15 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5821
5867
|
updateValue: (val) => {
|
|
5822
5868
|
filterInputs.value[col.field] = val;
|
|
5823
5869
|
emit("filterDatetimeUpdate", col.field, val);
|
|
5824
|
-
}
|
|
5870
|
+
},
|
|
5871
|
+
onEnter: () => handleFilterEnter(col.field)
|
|
5825
5872
|
}) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
|
|
5826
5873
|
key: 1,
|
|
5827
5874
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5828
5875
|
type: "date",
|
|
5829
|
-
class: "bh-form-control"
|
|
5830
|
-
|
|
5876
|
+
class: "bh-form-control",
|
|
5877
|
+
onKeydown: vue.withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5878
|
+
}, null, 40, _hoisted_20$1)), [
|
|
5831
5879
|
[vue.vModelText, filterInputs.value[col.field]]
|
|
5832
5880
|
])
|
|
5833
5881
|
], 64)) : col.type === "bool" ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("select", {
|
|
@@ -5835,8 +5883,9 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5835
5883
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5836
5884
|
class: "bh-form-control",
|
|
5837
5885
|
onClick: _cache[1] || (_cache[1] = //@ts-ignore
|
|
5838
|
-
(...args) => props.isOpenFilter && props.isOpenFilter(...args))
|
|
5839
|
-
|
|
5886
|
+
(...args) => props.isOpenFilter && props.isOpenFilter(...args)),
|
|
5887
|
+
onKeydown: vue.withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5888
|
+
}, _hoisted_25$1, 40, _hoisted_21$1)), [
|
|
5840
5889
|
[vue.vModelSelect, filterInputs.value[col.field]]
|
|
5841
5890
|
]) : vue.createCommentVNode("", true)
|
|
5842
5891
|
], 64)) : vue.createCommentVNode("", true),
|
|
@@ -5853,8 +5902,9 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5853
5902
|
type: "text",
|
|
5854
5903
|
class: vue.normalizeClass(["bh-form-control", {
|
|
5855
5904
|
"bh-form-control--with-label": hasConditionSet(col) && props.all.useNewColumnFilter
|
|
5856
|
-
}])
|
|
5857
|
-
|
|
5905
|
+
}]),
|
|
5906
|
+
onKeydown: vue.withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5907
|
+
}, null, 42, _hoisted_27$1)), [
|
|
5858
5908
|
[vue.vModelText, filterInputs.value[col.field]]
|
|
5859
5909
|
]) : vue.createCommentVNode("", true),
|
|
5860
5910
|
col.type === "number" || col.type === "integer" || col.type === "Integer" ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
|
|
@@ -5863,8 +5913,9 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5863
5913
|
type: "number",
|
|
5864
5914
|
class: vue.normalizeClass(["bh-form-control", {
|
|
5865
5915
|
"bh-form-control--with-label": hasConditionSet(col) && props.all.useNewColumnFilter
|
|
5866
|
-
}])
|
|
5867
|
-
|
|
5916
|
+
}]),
|
|
5917
|
+
onKeydown: vue.withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5918
|
+
}, null, 42, _hoisted_28$1)), [
|
|
5868
5919
|
[
|
|
5869
5920
|
vue.vModelText,
|
|
5870
5921
|
filterInputs.value[col.field],
|
|
@@ -5880,15 +5931,17 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5880
5931
|
filterInputs.value[col.field] = val;
|
|
5881
5932
|
emit("filterDatetimeUpdate", col.field, val);
|
|
5882
5933
|
},
|
|
5883
|
-
hasLabel: hasConditionSet(col) && props.all.useNewColumnFilter
|
|
5934
|
+
hasLabel: hasConditionSet(col) && props.all.useNewColumnFilter,
|
|
5935
|
+
onEnter: () => handleFilterEnter(col.field)
|
|
5884
5936
|
}) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
|
|
5885
5937
|
key: 1,
|
|
5886
5938
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5887
5939
|
type: "date",
|
|
5888
5940
|
class: vue.normalizeClass(["bh-form-control", {
|
|
5889
5941
|
"bh-form-control--with-label": hasConditionSet(col) && props.all.useNewColumnFilter
|
|
5890
|
-
}])
|
|
5891
|
-
|
|
5942
|
+
}]),
|
|
5943
|
+
onKeydown: vue.withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5944
|
+
}, null, 42, _hoisted_29$1)), [
|
|
5892
5945
|
[vue.vModelText, filterInputs.value[col.field]]
|
|
5893
5946
|
])
|
|
5894
5947
|
], 64)) : col.type === "bool" ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("select", {
|
|
@@ -5896,8 +5949,9 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
5896
5949
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5897
5950
|
class: "bh-form-control",
|
|
5898
5951
|
onClick: _cache[2] || (_cache[2] = //@ts-ignore
|
|
5899
|
-
(...args) => props.isOpenFilter && props.isOpenFilter(...args))
|
|
5900
|
-
|
|
5952
|
+
(...args) => props.isOpenFilter && props.isOpenFilter(...args)),
|
|
5953
|
+
onKeydown: vue.withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5954
|
+
}, _hoisted_34$1, 40, _hoisted_30$1)), [
|
|
5901
5955
|
[vue.vModelSelect, filterInputs.value[col.field]]
|
|
5902
5956
|
]) : vue.createCommentVNode("", true)
|
|
5903
5957
|
])) : vue.createCommentVNode("", true),
|
|
@@ -6263,6 +6317,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
6263
6317
|
return (col == null ? void 0 : col.field) || null;
|
|
6264
6318
|
});
|
|
6265
6319
|
const hasAnyActiveFilter = vue.ref(false);
|
|
6320
|
+
const columnHeaderRef = vue.ref(null);
|
|
6266
6321
|
const updateHasAnyActiveFilter = () => {
|
|
6267
6322
|
hasAnyActiveFilter.value = props.columns.some((col) => {
|
|
6268
6323
|
return col.value !== void 0 && col.value !== null && col.value !== "";
|
|
@@ -6566,6 +6621,15 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
6566
6621
|
}
|
|
6567
6622
|
}
|
|
6568
6623
|
return !!column;
|
|
6624
|
+
},
|
|
6625
|
+
/**
|
|
6626
|
+
* Flush all pending filter debounces
|
|
6627
|
+
* Call this before getColumnFilters() when Enter is pressed
|
|
6628
|
+
* to ensure all filter values are immediately processed
|
|
6629
|
+
*/
|
|
6630
|
+
flushAllFilterDebounces() {
|
|
6631
|
+
var _a2, _b2;
|
|
6632
|
+
(_b2 = (_a2 = columnHeaderRef.value) == null ? void 0 : _a2.flushAllFilterDebounces) == null ? void 0 : _b2.call(_a2);
|
|
6569
6633
|
}
|
|
6570
6634
|
});
|
|
6571
6635
|
vue.watch(
|
|
@@ -7059,6 +7123,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
7059
7123
|
})
|
|
7060
7124
|
}, [
|
|
7061
7125
|
vue.createVNode(_sfc_main$1, {
|
|
7126
|
+
ref_key: "columnHeaderRef",
|
|
7127
|
+
ref: columnHeaderRef,
|
|
7062
7128
|
all: props,
|
|
7063
7129
|
expandedrows: expandedrows.value,
|
|
7064
7130
|
currentSortColumn: currentSortColumn.value,
|
package/dist/vue3-datatable.css
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
|
|
2
|
-
.expandbtn[data-v-
|
|
2
|
+
.expandbtn[data-v-4d01a2fa] {
|
|
3
3
|
cursor: pointer;
|
|
4
|
-
}
|
|
4
|
+
}
|
|
5
5
|
|
|
6
|
-
.rightpanelbtn[data-v-
|
|
7
|
-
cursor: pointer;
|
|
8
|
-
display: inline-flex;
|
|
9
|
-
align-items: center;
|
|
10
|
-
justify-content: center;
|
|
11
|
-
width: 24px;
|
|
6
|
+
.rightpanelbtn[data-v-d739c6bf] {
|
|
7
|
+
cursor: pointer;
|
|
8
|
+
display: inline-flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
width: 24px;
|
|
12
12
|
height: 24px;
|
|
13
|
-
}
|
|
13
|
+
}
|
|
14
14
|
.splitpanes{display:flex;width:100%;height:100%}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging .splitpanes__pane{-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{transition:none}.splitpanes__splitter{touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;box-sizing:border-box;position:relative;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}
|
|
15
15
|
|
|
16
16
|
.left-menu-container {
|
package/dist/vue3-datatable.js
CHANGED
|
@@ -2468,7 +2468,7 @@ const _export_sfc = (sfc, props) => {
|
|
|
2468
2468
|
}
|
|
2469
2469
|
return target;
|
|
2470
2470
|
};
|
|
2471
|
-
const ButtonExpand = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-
|
|
2471
|
+
const ButtonExpand = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-4d01a2fa"]]);
|
|
2472
2472
|
const __default__$4 = {
|
|
2473
2473
|
name: "ButtonRightPanel"
|
|
2474
2474
|
};
|
|
@@ -2494,7 +2494,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2494
2494
|
};
|
|
2495
2495
|
}
|
|
2496
2496
|
});
|
|
2497
|
-
const ButtonRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-
|
|
2497
|
+
const ButtonRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-d739c6bf"]]);
|
|
2498
2498
|
const sides = ["top", "right", "bottom", "left"];
|
|
2499
2499
|
const alignments = ["start", "end"];
|
|
2500
2500
|
const placements = /* @__PURE__ */ sides.reduce((acc, side) => acc.concat(side, side + "-" + alignments[0], side + "-" + alignments[1]), []);
|
|
@@ -5364,10 +5364,10 @@ const _hoisted_17$1 = {
|
|
|
5364
5364
|
key: 0,
|
|
5365
5365
|
class: "bh-filter bh-relative"
|
|
5366
5366
|
};
|
|
5367
|
-
const _hoisted_18$1 = ["onUpdate:modelValue"];
|
|
5368
|
-
const _hoisted_19$1 = ["onUpdate:modelValue"];
|
|
5369
|
-
const _hoisted_20$1 = ["onUpdate:modelValue"];
|
|
5370
|
-
const _hoisted_21$1 = ["onUpdate:modelValue"];
|
|
5367
|
+
const _hoisted_18$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5368
|
+
const _hoisted_19$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5369
|
+
const _hoisted_20$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5370
|
+
const _hoisted_21$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5371
5371
|
const _hoisted_22$1 = /* @__PURE__ */ createElementVNode("option", { value: void 0 }, "All", -1);
|
|
5372
5372
|
const _hoisted_23$1 = /* @__PURE__ */ createElementVNode("option", { value: true }, "True", -1);
|
|
5373
5373
|
const _hoisted_24$1 = /* @__PURE__ */ createElementVNode("option", { value: false }, "False", -1);
|
|
@@ -5380,10 +5380,10 @@ const _hoisted_26$1 = {
|
|
|
5380
5380
|
key: 1,
|
|
5381
5381
|
class: "bh-filter-input-wrapper"
|
|
5382
5382
|
};
|
|
5383
|
-
const _hoisted_27$1 = ["onUpdate:modelValue"];
|
|
5384
|
-
const _hoisted_28$1 = ["onUpdate:modelValue"];
|
|
5385
|
-
const _hoisted_29$1 = ["onUpdate:modelValue"];
|
|
5386
|
-
const _hoisted_30$1 = ["onUpdate:modelValue"];
|
|
5383
|
+
const _hoisted_27$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5384
|
+
const _hoisted_28$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5385
|
+
const _hoisted_29$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5386
|
+
const _hoisted_30$1 = ["onUpdate:modelValue", "onKeydown"];
|
|
5387
5387
|
const _hoisted_31$1 = /* @__PURE__ */ createElementVNode("option", { value: void 0 }, "All", -1);
|
|
5388
5388
|
const _hoisted_32$1 = /* @__PURE__ */ createElementVNode("option", { value: true }, "True", -1);
|
|
5389
5389
|
const _hoisted_33$1 = /* @__PURE__ */ createElementVNode("option", { value: false }, "False", -1);
|
|
@@ -5422,7 +5422,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5422
5422
|
"filterDatetimeUpdate",
|
|
5423
5423
|
"clearAllFilters"
|
|
5424
5424
|
],
|
|
5425
|
-
setup(__props, { emit: __emit }) {
|
|
5425
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
5426
5426
|
const selectedAll = ref(null);
|
|
5427
5427
|
const props = __props;
|
|
5428
5428
|
const emit = __emit;
|
|
@@ -5435,6 +5435,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5435
5435
|
const filterInputs = ref({});
|
|
5436
5436
|
const columnConditions = ref({});
|
|
5437
5437
|
const watchedFields = ref(/* @__PURE__ */ new Set());
|
|
5438
|
+
const debounceTimers = /* @__PURE__ */ new Map();
|
|
5439
|
+
const processChangeFunctions = /* @__PURE__ */ new Map();
|
|
5438
5440
|
const columnsMap = computed(() => {
|
|
5439
5441
|
var _a;
|
|
5440
5442
|
const map = /* @__PURE__ */ new Map();
|
|
@@ -5456,18 +5458,20 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5456
5458
|
filterInputs.value[col.field] = col.value || "";
|
|
5457
5459
|
}
|
|
5458
5460
|
watchedFields.value.add(col.field);
|
|
5459
|
-
|
|
5461
|
+
debounceTimers.set(col.field, null);
|
|
5460
5462
|
watch(
|
|
5461
5463
|
() => filterInputs.value[col.field],
|
|
5462
5464
|
(newValue) => {
|
|
5463
5465
|
const column = columnsMap.value.get(col.field);
|
|
5464
5466
|
if (!column) return;
|
|
5465
5467
|
const isEmpty = newValue === "" || newValue === null || newValue === void 0;
|
|
5466
|
-
|
|
5467
|
-
|
|
5468
|
-
|
|
5468
|
+
const existingTimer = debounceTimers.get(col.field);
|
|
5469
|
+
if (existingTimer) {
|
|
5470
|
+
clearTimeout(existingTimer);
|
|
5471
|
+
debounceTimers.set(col.field, null);
|
|
5469
5472
|
}
|
|
5470
5473
|
const processChange = () => {
|
|
5474
|
+
debounceTimers.set(col.field, null);
|
|
5471
5475
|
if (column.type === "string" || column.type === "String") {
|
|
5472
5476
|
column.value = isEmpty ? "" : typeof newValue === "string" ? newValue.trim() : newValue;
|
|
5473
5477
|
} else {
|
|
@@ -5484,16 +5488,43 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5484
5488
|
}
|
|
5485
5489
|
emit("filterChange");
|
|
5486
5490
|
};
|
|
5491
|
+
processChangeFunctions.set(col.field, processChange);
|
|
5487
5492
|
if (isEmpty) {
|
|
5488
5493
|
processChange();
|
|
5489
5494
|
} else {
|
|
5490
|
-
|
|
5495
|
+
debounceTimers.set(col.field, setTimeout(processChange, 100));
|
|
5491
5496
|
}
|
|
5492
5497
|
}
|
|
5493
5498
|
);
|
|
5494
5499
|
}
|
|
5495
5500
|
});
|
|
5496
5501
|
};
|
|
5502
|
+
const flushFilterDebounce = (field) => {
|
|
5503
|
+
const timer = debounceTimers.get(field);
|
|
5504
|
+
if (timer) {
|
|
5505
|
+
clearTimeout(timer);
|
|
5506
|
+
debounceTimers.set(field, null);
|
|
5507
|
+
const processChange = processChangeFunctions.get(field);
|
|
5508
|
+
if (processChange) {
|
|
5509
|
+
processChange();
|
|
5510
|
+
}
|
|
5511
|
+
}
|
|
5512
|
+
};
|
|
5513
|
+
const flushAllFilterDebounces = () => {
|
|
5514
|
+
debounceTimers.forEach((timer, field) => {
|
|
5515
|
+
if (timer) {
|
|
5516
|
+
clearTimeout(timer);
|
|
5517
|
+
debounceTimers.set(field, null);
|
|
5518
|
+
const processChange = processChangeFunctions.get(field);
|
|
5519
|
+
if (processChange) {
|
|
5520
|
+
processChange();
|
|
5521
|
+
}
|
|
5522
|
+
}
|
|
5523
|
+
});
|
|
5524
|
+
};
|
|
5525
|
+
const handleFilterEnter = (field) => {
|
|
5526
|
+
flushFilterDebounce(field);
|
|
5527
|
+
};
|
|
5497
5528
|
const handleClearAllFilters = () => {
|
|
5498
5529
|
var _a;
|
|
5499
5530
|
Object.keys(filterInputs.value).forEach((key) => {
|
|
@@ -5633,6 +5664,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5633
5664
|
}
|
|
5634
5665
|
emit("filterChange");
|
|
5635
5666
|
};
|
|
5667
|
+
__expose({
|
|
5668
|
+
flushFilterDebounce,
|
|
5669
|
+
flushAllFilterDebounces
|
|
5670
|
+
});
|
|
5636
5671
|
return (_ctx, _cache) => {
|
|
5637
5672
|
const _component_VDropdown = resolveComponent("VDropdown");
|
|
5638
5673
|
return openBlock(), createElementBlock("tr", _hoisted_1$1, [
|
|
@@ -5664,7 +5699,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5664
5699
|
])
|
|
5665
5700
|
]),
|
|
5666
5701
|
props.all.columnFilter && !props.isFooter && clearButtonLocation.value === "checkbox" ? (openBlock(), createElementBlock("div", _hoisted_3$1, [
|
|
5667
|
-
createVNode(unref(Vt),
|
|
5702
|
+
createVNode(unref(Vt), {
|
|
5703
|
+
placement: "top",
|
|
5704
|
+
distance: 6
|
|
5705
|
+
}, {
|
|
5668
5706
|
popper: withCtx(() => [
|
|
5669
5707
|
createTextVNode("Clear all filters")
|
|
5670
5708
|
]),
|
|
@@ -5696,7 +5734,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5696
5734
|
})
|
|
5697
5735
|
}, [
|
|
5698
5736
|
props.all.columnFilter && !props.isFooter && clearButtonLocation.value === "rightpanel" ? (openBlock(), createElementBlock("div", _hoisted_7$1, [
|
|
5699
|
-
createVNode(unref(Vt),
|
|
5737
|
+
createVNode(unref(Vt), {
|
|
5738
|
+
placement: "top",
|
|
5739
|
+
distance: 6
|
|
5740
|
+
}, {
|
|
5700
5741
|
popper: withCtx(() => [
|
|
5701
5742
|
createTextVNode("Clear all filters")
|
|
5702
5743
|
]),
|
|
@@ -5728,7 +5769,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5728
5769
|
expandall: props.all.expandall
|
|
5729
5770
|
}, null, 8, ["expandedrows", "expandall"])) : createCommentVNode("", true),
|
|
5730
5771
|
props.all.columnFilter && !props.isFooter && clearButtonLocation.value === "subtable" ? (openBlock(), createElementBlock("div", _hoisted_11$1, [
|
|
5731
|
-
createVNode(unref(Vt),
|
|
5772
|
+
createVNode(unref(Vt), {
|
|
5773
|
+
placement: "top",
|
|
5774
|
+
distance: 6
|
|
5775
|
+
}, {
|
|
5732
5776
|
popper: withCtx(() => [
|
|
5733
5777
|
createTextVNode("Clear all filters")
|
|
5734
5778
|
]),
|
|
@@ -5796,16 +5840,18 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5796
5840
|
key: 0,
|
|
5797
5841
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5798
5842
|
type: "text",
|
|
5799
|
-
class: "bh-form-control"
|
|
5800
|
-
|
|
5843
|
+
class: "bh-form-control",
|
|
5844
|
+
onKeydown: withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5845
|
+
}, null, 40, _hoisted_18$1)), [
|
|
5801
5846
|
[vModelText, filterInputs.value[col.field]]
|
|
5802
5847
|
]) : createCommentVNode("", true),
|
|
5803
5848
|
col.type === "number" || col.type === "integer" || col.type === "Integer" ? withDirectives((openBlock(), createElementBlock("input", {
|
|
5804
5849
|
key: 1,
|
|
5805
5850
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5806
5851
|
type: "number",
|
|
5807
|
-
class: "bh-form-control"
|
|
5808
|
-
|
|
5852
|
+
class: "bh-form-control",
|
|
5853
|
+
onKeydown: withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5854
|
+
}, null, 40, _hoisted_19$1)), [
|
|
5809
5855
|
[
|
|
5810
5856
|
vModelText,
|
|
5811
5857
|
filterInputs.value[col.field],
|
|
@@ -5820,13 +5866,15 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5820
5866
|
updateValue: (val) => {
|
|
5821
5867
|
filterInputs.value[col.field] = val;
|
|
5822
5868
|
emit("filterDatetimeUpdate", col.field, val);
|
|
5823
|
-
}
|
|
5869
|
+
},
|
|
5870
|
+
onEnter: () => handleFilterEnter(col.field)
|
|
5824
5871
|
}) : withDirectives((openBlock(), createElementBlock("input", {
|
|
5825
5872
|
key: 1,
|
|
5826
5873
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5827
5874
|
type: "date",
|
|
5828
|
-
class: "bh-form-control"
|
|
5829
|
-
|
|
5875
|
+
class: "bh-form-control",
|
|
5876
|
+
onKeydown: withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5877
|
+
}, null, 40, _hoisted_20$1)), [
|
|
5830
5878
|
[vModelText, filterInputs.value[col.field]]
|
|
5831
5879
|
])
|
|
5832
5880
|
], 64)) : col.type === "bool" ? withDirectives((openBlock(), createElementBlock("select", {
|
|
@@ -5834,8 +5882,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5834
5882
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5835
5883
|
class: "bh-form-control",
|
|
5836
5884
|
onClick: _cache[1] || (_cache[1] = //@ts-ignore
|
|
5837
|
-
(...args) => props.isOpenFilter && props.isOpenFilter(...args))
|
|
5838
|
-
|
|
5885
|
+
(...args) => props.isOpenFilter && props.isOpenFilter(...args)),
|
|
5886
|
+
onKeydown: withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5887
|
+
}, _hoisted_25$1, 40, _hoisted_21$1)), [
|
|
5839
5888
|
[vModelSelect, filterInputs.value[col.field]]
|
|
5840
5889
|
]) : createCommentVNode("", true)
|
|
5841
5890
|
], 64)) : createCommentVNode("", true),
|
|
@@ -5852,8 +5901,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5852
5901
|
type: "text",
|
|
5853
5902
|
class: normalizeClass(["bh-form-control", {
|
|
5854
5903
|
"bh-form-control--with-label": hasConditionSet(col) && props.all.useNewColumnFilter
|
|
5855
|
-
}])
|
|
5856
|
-
|
|
5904
|
+
}]),
|
|
5905
|
+
onKeydown: withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5906
|
+
}, null, 42, _hoisted_27$1)), [
|
|
5857
5907
|
[vModelText, filterInputs.value[col.field]]
|
|
5858
5908
|
]) : createCommentVNode("", true),
|
|
5859
5909
|
col.type === "number" || col.type === "integer" || col.type === "Integer" ? withDirectives((openBlock(), createElementBlock("input", {
|
|
@@ -5862,8 +5912,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5862
5912
|
type: "number",
|
|
5863
5913
|
class: normalizeClass(["bh-form-control", {
|
|
5864
5914
|
"bh-form-control--with-label": hasConditionSet(col) && props.all.useNewColumnFilter
|
|
5865
|
-
}])
|
|
5866
|
-
|
|
5915
|
+
}]),
|
|
5916
|
+
onKeydown: withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5917
|
+
}, null, 42, _hoisted_28$1)), [
|
|
5867
5918
|
[
|
|
5868
5919
|
vModelText,
|
|
5869
5920
|
filterInputs.value[col.field],
|
|
@@ -5879,15 +5930,17 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5879
5930
|
filterInputs.value[col.field] = val;
|
|
5880
5931
|
emit("filterDatetimeUpdate", col.field, val);
|
|
5881
5932
|
},
|
|
5882
|
-
hasLabel: hasConditionSet(col) && props.all.useNewColumnFilter
|
|
5933
|
+
hasLabel: hasConditionSet(col) && props.all.useNewColumnFilter,
|
|
5934
|
+
onEnter: () => handleFilterEnter(col.field)
|
|
5883
5935
|
}) : withDirectives((openBlock(), createElementBlock("input", {
|
|
5884
5936
|
key: 1,
|
|
5885
5937
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5886
5938
|
type: "date",
|
|
5887
5939
|
class: normalizeClass(["bh-form-control", {
|
|
5888
5940
|
"bh-form-control--with-label": hasConditionSet(col) && props.all.useNewColumnFilter
|
|
5889
|
-
}])
|
|
5890
|
-
|
|
5941
|
+
}]),
|
|
5942
|
+
onKeydown: withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5943
|
+
}, null, 42, _hoisted_29$1)), [
|
|
5891
5944
|
[vModelText, filterInputs.value[col.field]]
|
|
5892
5945
|
])
|
|
5893
5946
|
], 64)) : col.type === "bool" ? withDirectives((openBlock(), createElementBlock("select", {
|
|
@@ -5895,8 +5948,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5895
5948
|
"onUpdate:modelValue": ($event) => filterInputs.value[col.field] = $event,
|
|
5896
5949
|
class: "bh-form-control",
|
|
5897
5950
|
onClick: _cache[2] || (_cache[2] = //@ts-ignore
|
|
5898
|
-
(...args) => props.isOpenFilter && props.isOpenFilter(...args))
|
|
5899
|
-
|
|
5951
|
+
(...args) => props.isOpenFilter && props.isOpenFilter(...args)),
|
|
5952
|
+
onKeydown: withKeys(($event) => handleFilterEnter(col.field), ["enter"])
|
|
5953
|
+
}, _hoisted_34$1, 40, _hoisted_30$1)), [
|
|
5900
5954
|
[vModelSelect, filterInputs.value[col.field]]
|
|
5901
5955
|
]) : createCommentVNode("", true)
|
|
5902
5956
|
])) : createCommentVNode("", true),
|
|
@@ -6262,6 +6316,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
6262
6316
|
return (col == null ? void 0 : col.field) || null;
|
|
6263
6317
|
});
|
|
6264
6318
|
const hasAnyActiveFilter = ref(false);
|
|
6319
|
+
const columnHeaderRef = ref(null);
|
|
6265
6320
|
const updateHasAnyActiveFilter = () => {
|
|
6266
6321
|
hasAnyActiveFilter.value = props.columns.some((col) => {
|
|
6267
6322
|
return col.value !== void 0 && col.value !== null && col.value !== "";
|
|
@@ -6565,6 +6620,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
6565
6620
|
}
|
|
6566
6621
|
}
|
|
6567
6622
|
return !!column;
|
|
6623
|
+
},
|
|
6624
|
+
/**
|
|
6625
|
+
* Flush all pending filter debounces
|
|
6626
|
+
* Call this before getColumnFilters() when Enter is pressed
|
|
6627
|
+
* to ensure all filter values are immediately processed
|
|
6628
|
+
*/
|
|
6629
|
+
flushAllFilterDebounces() {
|
|
6630
|
+
var _a2, _b2;
|
|
6631
|
+
(_b2 = (_a2 = columnHeaderRef.value) == null ? void 0 : _a2.flushAllFilterDebounces) == null ? void 0 : _b2.call(_a2);
|
|
6568
6632
|
}
|
|
6569
6633
|
});
|
|
6570
6634
|
watch(
|
|
@@ -7058,6 +7122,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
7058
7122
|
})
|
|
7059
7123
|
}, [
|
|
7060
7124
|
createVNode(_sfc_main$1, {
|
|
7125
|
+
ref_key: "columnHeaderRef",
|
|
7126
|
+
ref: columnHeaderRef,
|
|
7061
7127
|
all: props,
|
|
7062
7128
|
expandedrows: expandedrows.value,
|
|
7063
7129
|
currentSortColumn: currentSortColumn.value,
|