@atscript/vue-table 0.1.147 → 0.1.148
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/as-action-form-dialog.cjs +1 -1
- package/dist/as-action-form-dialog.mjs +1 -1
- package/dist/{as-action-menu-content-35yQWbLF.mjs → as-action-menu-content-BBwL1YZU.mjs} +1 -1
- package/dist/{as-action-menu-content-BJ0tn6jq.cjs → as-action-menu-content-DAOjkslC.cjs} +1 -1
- package/dist/{as-cell-array-CCZ0Ajj9.cjs → as-cell-array-CB4Nt6Fo.cjs} +3 -2
- package/dist/{as-cell-array-Bgc4GYZf.mjs → as-cell-array-CnoVd9ps.mjs} +4 -3
- package/dist/as-cell-array.cjs +1 -1
- package/dist/as-cell-array.d.mts +1 -1
- package/dist/as-cell-array.mjs +1 -1
- package/dist/{as-cell-date-RU5JPJhI.cjs → as-cell-date-DrnhvCr4.cjs} +3 -14
- package/dist/{as-cell-date-B9mu0OOD.mjs → as-cell-date-dhIM7hWA.mjs} +2 -13
- package/dist/as-cell-date.cjs +1 -1
- package/dist/as-cell-date.d.mts +1 -1
- package/dist/as-cell-date.mjs +1 -1
- package/dist/{as-cell-json-ByEGYRST.mjs → as-cell-json-ChN_NDhO.mjs} +1 -1
- package/dist/{as-cell-json-w5YJxNuF.cjs → as-cell-json-CzHTpkjS.cjs} +1 -1
- package/dist/as-cell-json.cjs +1 -1
- package/dist/as-cell-json.d.mts +1 -1
- package/dist/as-cell-json.mjs +1 -1
- package/dist/{as-cell-number-DGJCTXDf.cjs → as-cell-number-C4JMqvqa.cjs} +1 -1
- package/dist/{as-cell-number-CNDT6gfw.mjs → as-cell-number-D-mSaE_G.mjs} +1 -1
- package/dist/as-cell-number.cjs +1 -1
- package/dist/as-cell-number.d.mts +1 -1
- package/dist/as-cell-number.mjs +1 -1
- package/dist/{as-cell-union-DMnoa7RM.mjs → as-cell-union-C9Bbnkrg.mjs} +1 -1
- package/dist/{as-cell-union-LOGvhPeK.cjs → as-cell-union-DpCEHLzN.cjs} +1 -1
- package/dist/as-cell-union.cjs +1 -1
- package/dist/as-cell-union.d.mts +1 -1
- package/dist/as-cell-union.mjs +1 -1
- package/dist/as-column-menu.d.cts +1 -1
- package/dist/as-column-menu.d.mts +1 -1
- package/dist/{as-column-menu.vue-B6iuKmIj.d.cts → as-column-menu.vue-4zJmC_M6.d.mts} +2 -2
- package/dist/{as-column-menu.vue-wxb2f92k.d.mts → as-column-menu.vue-CS_8jHG3.d.cts} +2 -2
- package/dist/{as-config-dialog-BJkBzaku.cjs → as-config-dialog-CnIvMsK0.cjs} +10 -5
- package/dist/{as-config-dialog-D503Ek_m.mjs → as-config-dialog-ZKMnfirD.mjs} +10 -5
- package/dist/as-config-dialog.cjs +1 -1
- package/dist/as-config-dialog.d.mts +1 -1
- package/dist/as-config-dialog.mjs +1 -1
- package/dist/{as-confirm-dialog-CJfDnaiU.mjs → as-confirm-dialog-DMiGquH1.mjs} +1 -1
- package/dist/{as-confirm-dialog-C5xPbkox.cjs → as-confirm-dialog-cSEHVFBq.cjs} +1 -1
- package/dist/as-confirm-dialog.cjs +1 -1
- package/dist/as-confirm-dialog.d.mts +1 -1
- package/dist/as-confirm-dialog.mjs +1 -1
- package/dist/{as-filter-dialog-CxjO-Ge5.mjs → as-filter-dialog-DNFR30fV.mjs} +61 -38
- package/dist/{as-filter-dialog-Co0WfWOe.cjs → as-filter-dialog-KjvJdaMg.cjs} +60 -37
- package/dist/as-filter-dialog.cjs +1 -1
- package/dist/as-filter-dialog.d.mts +1 -1
- package/dist/as-filter-dialog.mjs +1 -1
- package/dist/{as-filter-field-FTrxFkTw.cjs → as-filter-field-BsucQwbm.cjs} +247 -35
- package/dist/{as-filter-field-ByPlGyWz.mjs → as-filter-field-DE6MJMx7.mjs} +227 -39
- package/dist/as-filter-field.cjs +1 -1
- package/dist/as-filter-field.d.mts +1 -1
- package/dist/as-filter-field.mjs +1 -1
- package/dist/as-filter-input-ChJ8JE6-.cjs +254 -0
- package/dist/as-filter-input-DmOW_jzK.mjs +249 -0
- package/dist/as-filter-input.cjs +1 -1
- package/dist/as-filter-input.d.cts +1 -1
- package/dist/as-filter-input.d.mts +1 -1
- package/dist/as-filter-input.mjs +1 -1
- package/dist/{as-filter-input.vue-CksJOtqw.d.cts → as-filter-input.vue-BLTzA2Iy.d.cts} +9 -0
- package/dist/{as-filter-input.vue-DMwr0ArL.d.mts → as-filter-input.vue-CmWQGQCv.d.mts} +9 -0
- package/dist/{as-filters-W3iMELuL.cjs → as-filters-CYC_SXaA.cjs} +4 -4
- package/dist/{as-filters-CJZJiOXb.mjs → as-filters-DErM2bFq.mjs} +4 -4
- package/dist/as-filters.cjs +1 -1
- package/dist/as-filters.d.mts +1 -1
- package/dist/as-filters.mjs +1 -1
- package/dist/{as-preset-dialog-CLOVEpWZ.mjs → as-preset-dialog-CY5dPfZa.mjs} +2 -2
- package/dist/{as-preset-dialog-Dvvx0jmU.cjs → as-preset-dialog-tM-jrQgs.cjs} +2 -2
- package/dist/as-preset-dialog.cjs +1 -1
- package/dist/as-preset-dialog.d.mts +1 -1
- package/dist/as-preset-dialog.mjs +1 -1
- package/dist/{as-preset-picker-DFLhbm59.cjs → as-preset-picker-CjSXtx83.cjs} +2 -2
- package/dist/{as-preset-picker-CwFObhME.mjs → as-preset-picker-DkZ7sinz.mjs} +2 -2
- package/dist/as-preset-picker.cjs +1 -1
- package/dist/as-preset-picker.d.mts +1 -1
- package/dist/as-preset-picker.mjs +1 -1
- package/dist/{as-residual-filter-BRsEs8oe.mjs → as-residual-filter-DHfbtTQj.mjs} +4 -5
- package/dist/{as-residual-filter-sZlsFPDS.cjs → as-residual-filter-XkXnMQNu.cjs} +4 -5
- package/dist/as-residual-filter.cjs +1 -1
- package/dist/as-residual-filter.d.mts +1 -1
- package/dist/as-residual-filter.mjs +1 -1
- package/dist/{as-row-actions-DyjIXePd.mjs → as-row-actions-BNQ7jrie.mjs} +2 -2
- package/dist/{as-row-actions-DFv2cSrP.cjs → as-row-actions-q_oMmUz1.cjs} +2 -2
- package/dist/as-row-actions.cjs +1 -1
- package/dist/as-row-actions.d.cts +1 -1
- package/dist/as-row-actions.d.mts +1 -1
- package/dist/as-row-actions.mjs +1 -1
- package/dist/{as-row-actions.vue-BHrZBXVU.d.cts → as-row-actions.vue-BB8ATWBY.d.mts} +1 -1
- package/dist/{as-row-actions.vue-D4MylwCW.d.mts → as-row-actions.vue-CnjcRD0P.d.cts} +1 -1
- package/dist/{as-select-cell-CoQJjhnq.cjs → as-select-cell-Dc3lArvR.cjs} +5 -5
- package/dist/{as-select-cell-Dl8fohIj.mjs → as-select-cell-DjcPorVb.mjs} +5 -5
- package/dist/{as-selection-banner-DBtLjulh.mjs → as-selection-banner-Ca9DWVdW.mjs} +1 -1
- package/dist/{as-selection-banner-BI5gKHqW.cjs → as-selection-banner-CxPXBztW.cjs} +1 -1
- package/dist/{as-table-B1FowaPF.cjs → as-table-BIAkCI4g.cjs} +4 -4
- package/dist/{as-table-Cpvfv9zA.mjs → as-table-Bcz-WOTS.mjs} +4 -4
- package/dist/{as-table-actions-BlbAps1h.mjs → as-table-actions-DPq5SrGa.mjs} +2 -2
- package/dist/{as-table-actions-B0xaicfv.cjs → as-table-actions-TaI-NeVv.cjs} +2 -2
- package/dist/as-table-actions.cjs +1 -1
- package/dist/as-table-actions.d.cts +1 -1
- package/dist/as-table-actions.d.mts +1 -1
- package/dist/as-table-actions.mjs +1 -1
- package/dist/{as-table-actions.vue-7ml3JiOO.d.mts → as-table-actions.vue-C2szPEXd.d.mts} +2 -2
- package/dist/{as-table-actions.vue-BKRqHprR.d.cts → as-table-actions.vue-CBD_tEpe.d.cts} +2 -2
- package/dist/{as-table-base-EzKaChOp.mjs → as-table-base-CsK79vYe.mjs} +2 -2
- package/dist/{as-table-base-LZ26YlWp.cjs → as-table-base-Dvey_Gie.cjs} +2 -2
- package/dist/{as-table-cell-value-DoH8Mieo.mjs → as-table-cell-value-D-S127gr.mjs} +13 -2
- package/dist/{as-table-cell-value-COyZnwUj.cjs → as-table-cell-value-VWlXc5dA.cjs} +12 -1
- package/dist/as-table-cell-value.cjs +1 -1
- package/dist/as-table-cell-value.d.mts +1 -1
- package/dist/as-table-cell-value.mjs +1 -1
- package/dist/{as-table-header-cell-gHhCdxJX.cjs → as-table-header-cell-DB7Cdskr.cjs} +1 -1
- package/dist/{as-table-header-cell-DrVzYaof.mjs → as-table-header-cell-ahzAeHXj.mjs} +1 -1
- package/dist/as-table-header-cell.cjs +1 -1
- package/dist/as-table-header-cell.d.cts +1 -1
- package/dist/as-table-header-cell.d.mts +1 -1
- package/dist/as-table-header-cell.mjs +1 -1
- package/dist/{as-table-header-cell.vue-BCk4NPYT.d.cts → as-table-header-cell.vue-D2s9YLSJ.d.cts} +1 -1
- package/dist/{as-table-header-cell.vue-BZU8s9CT.d.mts → as-table-header-cell.vue-DfDNma_Z.d.mts} +1 -1
- package/dist/{as-table-root-BYHXuNPI.mjs → as-table-root-BnkF5-rh.mjs} +49 -9
- package/dist/{as-table-root-K6fWKHtF.cjs → as-table-root-Nsk-9XaH.cjs} +48 -8
- package/dist/as-table-root.cjs +1 -1
- package/dist/as-table-root.d.cts +1 -1
- package/dist/as-table-root.d.mts +1 -1
- package/dist/as-table-root.mjs +1 -1
- package/dist/{as-table-root.vue-Bm2DxAqU.d.mts → as-table-root.vue-D56WcudY.d.mts} +313 -1638
- package/dist/{as-table-root.vue-CF03c4vu.d.cts → as-table-root.vue-DXXcBPu_.d.cts} +313 -1638
- package/dist/as-table.cjs +1 -1
- package/dist/as-table.d.cts +1 -1
- package/dist/as-table.d.mts +1 -1
- package/dist/as-table.mjs +1 -1
- package/dist/{as-window-table-CygDqZMU.mjs → as-window-table-DjplqWzr.mjs} +4 -4
- package/dist/{as-window-table-_flc8o64.cjs → as-window-table-ubm2u8_i.cjs} +4 -4
- package/dist/as-window-table.cjs +1 -1
- package/dist/as-window-table.d.cts +1 -1
- package/dist/as-window-table.d.mts +1 -1
- package/dist/as-window-table.mjs +1 -1
- package/dist/index.cjs +68 -90
- package/dist/index.d.cts +8 -8
- package/dist/index.d.mts +21 -21
- package/dist/index.mjs +69 -91
- package/dist/{intent-scope-BXPEN5kJ.d.cts → intent-scope-CGch9yhy.d.cts} +13 -0
- package/dist/{intent-scope-Ck7RZ0dK.d.mts → intent-scope-CvD4YOvf.d.mts} +13 -0
- package/dist/use-condition-format-5LcuInDy.mjs +34 -0
- package/dist/use-condition-format-DrgfX6xL.cjs +39 -0
- package/dist/{use-table-DP6Y0kbl.mjs → use-table-BYNBpLJt.mjs} +23 -2
- package/dist/{use-table-CydIJZbx.cjs → use-table-C9qI-TL6.cjs} +22 -1
- package/dist/{use-table-component-aqfGzECx.cjs → use-table-component-CsdvdGJT.cjs} +1 -1
- package/dist/{use-table-component-DNGUvhf7.mjs → use-table-component-Dy397695.mjs} +1 -1
- package/dist/{use-table-nav-bridge-BhOPIT2R.mjs → use-table-nav-bridge-CJBERyPB.mjs} +1 -1
- package/dist/{use-table-nav-bridge-B7A30yja.cjs → use-table-nav-bridge-Gm4ZfOjJ.cjs} +1 -1
- package/dist/{use-table-state-sDnqOi3b.cjs → use-table-state-BQchKxUr.cjs} +53 -6
- package/dist/{use-table-state-1OZfdhQi.mjs → use-table-state-CIoWhwTD.mjs} +54 -7
- package/package.json +11 -11
- package/dist/as-filter-input-BM23TNeh.mjs +0 -101
- package/dist/as-filter-input-DJu2k9gO.cjs +0 -106
- /package/dist/{as-cell-array.vue-Dj3nZop3.d.mts → as-cell-array.vue-D4vS7C_D.d.mts} +0 -0
- /package/dist/{as-cell-date.vue-BPuyH7q3.d.mts → as-cell-date.vue-Chs7WTZ9.d.mts} +0 -0
- /package/dist/{as-cell-json-popover-Dkdv5Y9E.mjs → as-cell-json-popover-CH5bAcLE.mjs} +0 -0
- /package/dist/{as-cell-json-popover-BM2QLgfk.cjs → as-cell-json-popover-vty5vMjW.cjs} +0 -0
- /package/dist/{as-cell-json.vue-D8J7YwVV.d.mts → as-cell-json.vue-C0_LDvQw.d.mts} +0 -0
- /package/dist/{as-cell-number.vue-sUoZvuat.d.mts → as-cell-number.vue-BBF0OuU8.d.mts} +0 -0
- /package/dist/{as-cell-union.vue-DZBejMxR.d.mts → as-cell-union.vue-CL-Lf-Rm.d.mts} +0 -0
- /package/dist/{as-config-dialog.vue-D2AVR1a5.d.mts → as-config-dialog.vue-BvFZZRuY.d.mts} +0 -0
- /package/dist/{as-confirm-dialog.vue-BxAaCuYf.d.mts → as-confirm-dialog.vue-Cz52-v6c.d.mts} +0 -0
- /package/dist/{as-filter-dialog.vue-WYXGtymZ.d.mts → as-filter-dialog.vue-likNLqzF.d.mts} +0 -0
- /package/dist/{as-filter-field.vue-DTpuDkHh.d.mts → as-filter-field.vue-BbXLhd6O.d.mts} +0 -0
- /package/dist/{as-filters.vue-dHbGmcbr.d.mts → as-filters.vue-Bu4wK0iD.d.mts} +0 -0
- /package/dist/{as-preset-dialog.vue-BrnvBWxJ.d.mts → as-preset-dialog.vue-BRjjfPty.d.mts} +0 -0
- /package/dist/{as-preset-picker.vue-OaAV2v9z.d.mts → as-preset-picker.vue-DAUZOlOD.d.mts} +0 -0
- /package/dist/{as-residual-filter.vue-Cev_8Wy7.d.mts → as-residual-filter.vue-DbeOOtR7.d.mts} +0 -0
- /package/dist/{as-table-cell-value.vue-kfNgVhzn.d.mts → as-table-cell-value.vue-BXIH_yfq.d.mts} +0 -0
- /package/dist/{error-message-CfKpn_5w.cjs → error-message-CoUcpWal.cjs} +0 -0
- /package/dist/{error-message-gNEXnnbb.mjs → error-message-rziSiSjs.mjs} +0 -0
- /package/dist/{use-cell-locale-MQXoONh5.mjs → use-cell-locale-BTJZ6UcP.mjs} +0 -0
- /package/dist/{use-cell-locale-BGBRQB7s.cjs → use-cell-locale-Dv514-Al.cjs} +0 -0
- /package/dist/{use-has-emit-listener-DrBbsLHQ.mjs → use-has-emit-listener-CsF2w9iT.mjs} +0 -0
- /package/dist/{use-has-emit-listener-BaGFZDyM.cjs → use-has-emit-listener-gD1aWp6N.cjs} +0 -0
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
const require_use_table_state = require("./use-table-state-
|
|
2
|
-
const require_use_table = require("./use-table-
|
|
3
|
-
const require_use_table_nav_bridge = require("./use-table-nav-bridge-
|
|
4
|
-
const require_use_table_component = require("./use-table-component-
|
|
5
|
-
const require_as_config_dialog = require("./as-config-dialog-
|
|
1
|
+
const require_use_table_state = require("./use-table-state-BQchKxUr.cjs");
|
|
2
|
+
const require_use_table = require("./use-table-C9qI-TL6.cjs");
|
|
3
|
+
const require_use_table_nav_bridge = require("./use-table-nav-bridge-Gm4ZfOjJ.cjs");
|
|
4
|
+
const require_use_table_component = require("./use-table-component-CsdvdGJT.cjs");
|
|
5
|
+
const require_as_config_dialog = require("./as-config-dialog-CnIvMsK0.cjs");
|
|
6
6
|
const require_use_seed_on_open = require("./use-seed-on-open-Dg9I89fU.cjs");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
7
|
+
const require_use_condition_format = require("./use-condition-format-DrgfX6xL.cjs");
|
|
8
|
+
const require_as_filter_field = require("./as-filter-field-BsucQwbm.cjs");
|
|
9
|
+
const require_as_filter_input = require("./as-filter-input-ChJ8JE6-.cjs");
|
|
10
|
+
const require_as_window_table = require("./as-window-table-ubm2u8_i.cjs");
|
|
11
|
+
const require_as_filters = require("./as-filters-CYC_SXaA.cjs");
|
|
10
12
|
let _atscript_ui = require("@atscript/ui");
|
|
11
13
|
let vue = require("vue");
|
|
12
14
|
let _atscript_ui_table = require("@atscript/ui-table");
|
|
@@ -39,11 +41,12 @@ var as_filter_conditions_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
39
41
|
const props = __props;
|
|
40
42
|
const FilterInput = require_use_table_component.useTableComponent("filterInput", require_as_filter_input.as_filter_input_default);
|
|
41
43
|
const model = (0, vue.useModel)(__props, "modelValue");
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
44
|
+
const spec = (0, vue.computed)(() => (0, _atscript_ui_table.columnFilter)(props.column));
|
|
45
|
+
const filterType = (0, vue.computed)(() => spec.value.kind);
|
|
46
|
+
const availableConditions = (0, vue.computed)(() => spec.value.conditions);
|
|
47
|
+
const defCondition = (0, vue.computed)(() => spec.value.defaultCondition);
|
|
48
|
+
const allShortcuts = (0, _atscript_ui_table.temporalShortcuts)();
|
|
49
|
+
const shortcuts = (0, vue.computed)(() => (0, _atscript_ui_table.isTemporalKind)(filterType.value) ? allShortcuts : []);
|
|
47
50
|
function updateCondition(index, update) {
|
|
48
51
|
model.value = model.value.map((c, i) => i === index ? {
|
|
49
52
|
...c,
|
|
@@ -63,11 +66,11 @@ var as_filter_conditions_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
63
66
|
value: []
|
|
64
67
|
}];
|
|
65
68
|
}
|
|
66
|
-
function applyShortcut(
|
|
67
|
-
model.value =
|
|
68
|
-
type:
|
|
69
|
-
value: [
|
|
70
|
-
}
|
|
69
|
+
function applyShortcut(sc) {
|
|
70
|
+
model.value = sc.conditions.map((c) => ({
|
|
71
|
+
type: c.type,
|
|
72
|
+
value: [...c.value]
|
|
73
|
+
}));
|
|
71
74
|
}
|
|
72
75
|
return (_ctx, _cache) => {
|
|
73
76
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [
|
|
@@ -87,7 +90,7 @@ var as_filter_conditions_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
87
90
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("option", {
|
|
88
91
|
key: ct,
|
|
89
92
|
value: ct
|
|
90
|
-
}, (0, vue.toDisplayString)((0, vue.unref)(_atscript_ui_table.conditionLabel)(ct)), 9, _hoisted_2$2);
|
|
93
|
+
}, (0, vue.toDisplayString)((0, vue.unref)(_atscript_ui_table.conditionLabel)(ct, filterType.value)), 9, _hoisted_2$2);
|
|
91
94
|
}), 128))], 40, _hoisted_1$2),
|
|
92
95
|
((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(FilterInput)), {
|
|
93
96
|
column: __props.column,
|
|
@@ -118,12 +121,12 @@ var as_filter_conditions_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
118
121
|
class: "as-filter-add-condition",
|
|
119
122
|
onClick: addCondition
|
|
120
123
|
}, " + Add condition "),
|
|
121
|
-
|
|
124
|
+
shortcuts.value.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$2, [_cache[1] || (_cache[1] = (0, vue.createElementVNode)("span", { class: "as-filter-shortcuts-label" }, "Quick:", -1)), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(shortcuts.value, (sc) => {
|
|
122
125
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
123
|
-
key: sc.
|
|
126
|
+
key: sc.id,
|
|
124
127
|
type: "button",
|
|
125
128
|
class: "as-filter-shortcut-btn",
|
|
126
|
-
onClick: ($event) => applyShortcut(sc
|
|
129
|
+
onClick: ($event) => applyShortcut(sc)
|
|
127
130
|
}, (0, vue.toDisplayString)(sc.label), 9, _hoisted_5$2);
|
|
128
131
|
}), 128))])) : (0, vue.createCommentVNode)("v-if", true)
|
|
129
132
|
], 64);
|
|
@@ -163,7 +166,9 @@ var as_filter_value_help_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
163
166
|
setup(__props) {
|
|
164
167
|
const props = __props;
|
|
165
168
|
const model = (0, vue.useModel)(__props, "modelValue");
|
|
169
|
+
const outer = require_use_table_state.useTableContextOptional();
|
|
166
170
|
const info = props.column.valueHelpInfo;
|
|
171
|
+
const distinct = props.column.distinct;
|
|
167
172
|
const options = props.column.options;
|
|
168
173
|
function modelToValues(conds) {
|
|
169
174
|
const values = [];
|
|
@@ -187,22 +192,36 @@ var as_filter_value_help_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
187
192
|
provideContext: true,
|
|
188
193
|
rowValueFn: (row) => row[info.targetField],
|
|
189
194
|
selectionPersistence: "persist",
|
|
190
|
-
selectedRows: selectionRef
|
|
195
|
+
selectedRows: selectionRef,
|
|
196
|
+
forceFilters: info.filter,
|
|
197
|
+
alwaysSelected: [info.targetField]
|
|
191
198
|
});
|
|
192
|
-
else if (
|
|
199
|
+
else if (distinct) {
|
|
200
|
+
const fetchPage = require_as_filter_field.createDistinctPager(outer?.state, props.column);
|
|
201
|
+
const { state } = require_use_table_state.createStaticTableState({
|
|
202
|
+
rows: [],
|
|
203
|
+
columns: [require_as_filter_field.valueColumn(false)],
|
|
204
|
+
searchPaths: ["__label"],
|
|
205
|
+
limit: 100,
|
|
206
|
+
selection: {
|
|
207
|
+
rowValueFn: (row) => row.__value,
|
|
208
|
+
selectedRows: selectionRef
|
|
209
|
+
},
|
|
210
|
+
remote: ({ searchTerm }, page, size) => fetchPage(searchTerm.trim(), page, size)
|
|
211
|
+
});
|
|
212
|
+
innerState = state;
|
|
213
|
+
require_use_table_state.provideTableContext({
|
|
214
|
+
state,
|
|
215
|
+
client: {},
|
|
216
|
+
controls: {}
|
|
217
|
+
});
|
|
218
|
+
} else if (options) {
|
|
193
219
|
const { state } = require_use_table_state.createStaticTableState({
|
|
194
220
|
rows: options.map((o) => ({
|
|
195
221
|
__value: o.key,
|
|
196
222
|
__label: o.label
|
|
197
223
|
})),
|
|
198
|
-
columns: [
|
|
199
|
-
path: "__label",
|
|
200
|
-
label: "Value",
|
|
201
|
-
type: "text",
|
|
202
|
-
sortable: true,
|
|
203
|
-
filterable: false,
|
|
204
|
-
order: 0
|
|
205
|
-
}],
|
|
224
|
+
columns: [require_as_filter_field.valueColumn(true)],
|
|
206
225
|
searchPaths: ["__label"],
|
|
207
226
|
selection: {
|
|
208
227
|
rowValueFn: (row) => row.__value,
|
|
@@ -219,7 +238,9 @@ var as_filter_value_help_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
219
238
|
if (info) (0, vue.onMounted)(() => {
|
|
220
239
|
(0, _atscript_ui.resolveValueHelp)(info.url).then((r) => {
|
|
221
240
|
resolved.value = r;
|
|
222
|
-
}).catch(() => {
|
|
241
|
+
}).catch((err) => {
|
|
242
|
+
require_as_filter_field.declineIfRejected(outer?.state, info, err);
|
|
243
|
+
});
|
|
223
244
|
});
|
|
224
245
|
if (info && innerState) {
|
|
225
246
|
const fkState = innerState;
|
|
@@ -229,7 +250,8 @@ var as_filter_value_help_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
229
250
|
initialized = true;
|
|
230
251
|
stop();
|
|
231
252
|
const dictPaths = (0, _atscript_ui.valueHelpDictPaths)(r);
|
|
232
|
-
const
|
|
253
|
+
const pinned = new Set(info.pinned);
|
|
254
|
+
const dictCols = fkState.allColumns.value.filter((c) => dictPaths.has(c.path) && !pinned.has(c.path));
|
|
233
255
|
fkState.columnNames.value = dictCols.map((c) => c.path);
|
|
234
256
|
if (fkState.filterFields.value.length === 0) fkState.filterFields.value = dictCols.filter(_atscript_ui_table.isColumnFilterable).map((c) => c.path);
|
|
235
257
|
fkState.query();
|
|
@@ -332,6 +354,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
332
354
|
__name: "as-filter-dialog",
|
|
333
355
|
setup(__props) {
|
|
334
356
|
const { state } = require_use_table_state.useTableContext();
|
|
357
|
+
const { formatCondition } = require_use_condition_format.useConditionFormat(state);
|
|
335
358
|
const FilterValueHelp = require_use_table_component.useTableComponent("filterValueHelp", as_filter_value_help_default);
|
|
336
359
|
const isOpen = (0, vue.computed)({
|
|
337
360
|
get: () => state.filterDialogColumn.value !== null,
|
|
@@ -340,7 +363,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
340
363
|
}
|
|
341
364
|
});
|
|
342
365
|
const column = (0, vue.computed)(() => state.filterDialogColumn.value);
|
|
343
|
-
const hasValueHelp = (0, vue.computed)(() => !!column.value && column.value.filterable && (
|
|
366
|
+
const hasValueHelp = (0, vue.computed)(() => !!column.value && column.value.filterable && require_as_filter_field.hasValuePicker(state, column.value));
|
|
344
367
|
const defCondition = (0, vue.computed)(() => column.value ? (0, _atscript_ui_table.columnDefaultCondition)(column.value) : "eq");
|
|
345
368
|
const valueHelpConditions = (0, vue.ref)([]);
|
|
346
369
|
const freeConditions = (0, vue.ref)([]);
|
|
@@ -366,7 +389,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
366
389
|
valueHelpConditions.value.forEach((c, i) => {
|
|
367
390
|
if ((0, _atscript_ui_table.isFilled)(c)) result.push({
|
|
368
391
|
key: `vh:${i}:${String(c.value[0] ?? "")}`,
|
|
369
|
-
label: (
|
|
392
|
+
label: formatCondition(column.value, c),
|
|
370
393
|
bucket: "value-help",
|
|
371
394
|
index: i
|
|
372
395
|
});
|
|
@@ -374,7 +397,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
374
397
|
freeConditions.value.forEach((c, i) => {
|
|
375
398
|
if ((0, _atscript_ui_table.isFilled)(c)) result.push({
|
|
376
399
|
key: `fc:${i}:${c.type}:${String(c.value[0] ?? "")}`,
|
|
377
|
-
label: (
|
|
400
|
+
label: formatCondition(column.value, c),
|
|
378
401
|
bucket: "free",
|
|
379
402
|
index: i
|
|
380
403
|
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const require_as_filter_dialog = require("./as-filter-dialog-
|
|
1
|
+
const require_as_filter_dialog = require("./as-filter-dialog-KjvJdaMg.cjs");
|
|
2
2
|
module.exports = require_as_filter_dialog.as_filter_dialog_default;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as _default } from "./as-filter-dialog.vue-
|
|
1
|
+
import { t as _default } from "./as-filter-dialog.vue-likNLqzF.mjs";
|
|
2
2
|
export { _default as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as as_filter_dialog_default } from "./as-filter-dialog-
|
|
1
|
+
import { t as as_filter_dialog_default } from "./as-filter-dialog-DNFR30fV.mjs";
|
|
2
2
|
export { as_filter_dialog_default as default };
|
|
@@ -1,11 +1,171 @@
|
|
|
1
|
-
const require_use_table_state = require("./use-table-state-
|
|
2
|
-
const require_use_table = require("./use-table-
|
|
3
|
-
const
|
|
1
|
+
const require_use_table_state = require("./use-table-state-BQchKxUr.cjs");
|
|
2
|
+
const require_use_table = require("./use-table-C9qI-TL6.cjs");
|
|
3
|
+
const require_use_condition_format = require("./use-condition-format-DrgfX6xL.cjs");
|
|
4
|
+
const require_as_table_base = require("./as-table-base-Dvey_Gie.cjs");
|
|
4
5
|
let _atscript_ui = require("@atscript/ui");
|
|
5
6
|
let vue = require("vue");
|
|
6
7
|
let _atscript_ui_table = require("@atscript/ui-table");
|
|
7
8
|
let _vueuse_core = require("@vueuse/core");
|
|
8
9
|
let reka_ui = require("reka-ui");
|
|
10
|
+
//#region src/composables/use-value-pickers.ts
|
|
11
|
+
/** The single "Value" column of an enum or distinct-values picker table (rows carry `__value` / `__label`). */
|
|
12
|
+
function valueColumn(sortable) {
|
|
13
|
+
return {
|
|
14
|
+
path: "__label",
|
|
15
|
+
label: "Value",
|
|
16
|
+
type: "text",
|
|
17
|
+
sortable,
|
|
18
|
+
filterable: false,
|
|
19
|
+
nullable: false,
|
|
20
|
+
order: 0
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** How long an unsearched first page is reused (the inline field and the dialog share it). */
|
|
24
|
+
const PAGE1_TTL_MS = 3e4;
|
|
25
|
+
const createStore = () => ({
|
|
26
|
+
declined: (0, vue.shallowReactive)(/* @__PURE__ */ new Set()),
|
|
27
|
+
page1: /* @__PURE__ */ new Map()
|
|
28
|
+
});
|
|
29
|
+
const stores = /* @__PURE__ */ new WeakMap();
|
|
30
|
+
function storeOf(host) {
|
|
31
|
+
const def = host?.tableDef.value;
|
|
32
|
+
if (!def) return createStore();
|
|
33
|
+
let store = stores.get(def);
|
|
34
|
+
if (!store) {
|
|
35
|
+
store = createStore();
|
|
36
|
+
stores.set(def, store);
|
|
37
|
+
}
|
|
38
|
+
return store;
|
|
39
|
+
}
|
|
40
|
+
const keyOf = (info) => `${info.url}\0${info.targetField}`;
|
|
41
|
+
/**
|
|
42
|
+
* Whether `column` offers a value picker: literal options, the distinct values of
|
|
43
|
+
* its own table, or a dictionary the server has not declined for this table —
|
|
44
|
+
* and only on a column the server filters by value with the operators a picker
|
|
45
|
+
* emits (`$eq` / `$in`): an existence-only (JSON-stored) column takes the
|
|
46
|
+
* empty / not-empty input instead.
|
|
47
|
+
*/
|
|
48
|
+
function hasValuePicker(host, column) {
|
|
49
|
+
if (!column.filterable) return false;
|
|
50
|
+
const ops = column.filterOps;
|
|
51
|
+
if (ops && !(ops.includes("$eq") || ops.includes("$in"))) return false;
|
|
52
|
+
if (column.options?.length || column.distinct) return true;
|
|
53
|
+
const info = column.valueHelpInfo;
|
|
54
|
+
return !!info && !storeOf(host).declined.has(keyOf(info));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The dictionary answered 4xx (not readable for this caller): this table stops
|
|
58
|
+
* offering that picker and the column takes free text. Anything else is no verdict.
|
|
59
|
+
*/
|
|
60
|
+
function declineIfRejected(host, info, err) {
|
|
61
|
+
if ((0, _atscript_ui.isPickerDeclined)(err)) storeOf(host).declined.add(keyOf(info));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Pager over the distinct values of `column.distinct`: `fetch(searchTerm, page, size)`
|
|
65
|
+
* asks the table's controller via `$groupBy`. Values are ordered (and so paged) only
|
|
66
|
+
* on a sortable column; otherwise the first `size` values are the whole list — search
|
|
67
|
+
* narrows it. A 4xx rejects: the picker shows the error. An unsearched first page is
|
|
68
|
+
* reused for a short while, so reopening a picker (or its dialog) does not re-ask.
|
|
69
|
+
*/
|
|
70
|
+
function createDistinctPager(host, column) {
|
|
71
|
+
const { url, field } = column.distinct;
|
|
72
|
+
const numeric = column.valueKind !== void 0 && _atscript_ui.NUMERIC_VALUE_KINDS.has(column.valueKind);
|
|
73
|
+
const paged = column.sortable;
|
|
74
|
+
return async function fetch(searchTerm, page, size) {
|
|
75
|
+
const text = searchTerm.trim();
|
|
76
|
+
const skip = paged ? (page - 1) * size : 0;
|
|
77
|
+
const empty = !paged && page > 1;
|
|
78
|
+
const scope = host?.forceFilters?.value;
|
|
79
|
+
const load = () => (0, _atscript_ui.fetchDistinctValues)((0, _atscript_ui.getMetaEntry)(url).client, field, {
|
|
80
|
+
text,
|
|
81
|
+
limit: size,
|
|
82
|
+
skip,
|
|
83
|
+
sortable: paged,
|
|
84
|
+
numeric,
|
|
85
|
+
filter: scope
|
|
86
|
+
});
|
|
87
|
+
let result;
|
|
88
|
+
if (empty) result = {
|
|
89
|
+
items: [],
|
|
90
|
+
hasMore: false
|
|
91
|
+
};
|
|
92
|
+
else if (text || page > 1) result = await load();
|
|
93
|
+
else {
|
|
94
|
+
const store = storeOf(host);
|
|
95
|
+
const key = `${url}\0${field}\0${size}\0${scope ? (0, _atscript_ui_table.stableValueKey)(scope) : ""}`;
|
|
96
|
+
let hit = store.page1.get(key);
|
|
97
|
+
if (!hit || Date.now() - hit.at > PAGE1_TTL_MS) {
|
|
98
|
+
const pending = load();
|
|
99
|
+
hit = {
|
|
100
|
+
at: Date.now(),
|
|
101
|
+
result: pending
|
|
102
|
+
};
|
|
103
|
+
store.page1.set(key, hit);
|
|
104
|
+
pending.catch(() => store.page1.delete(key));
|
|
105
|
+
}
|
|
106
|
+
result = await hit.result;
|
|
107
|
+
}
|
|
108
|
+
const hasMore = paged && result.hasMore;
|
|
109
|
+
const count = skip + result.items.length + (hasMore ? 1 : 0);
|
|
110
|
+
return {
|
|
111
|
+
data: result.items.map((v) => ({
|
|
112
|
+
__value: v,
|
|
113
|
+
__label: String(v)
|
|
114
|
+
})),
|
|
115
|
+
count,
|
|
116
|
+
page,
|
|
117
|
+
itemsPerPage: size,
|
|
118
|
+
pages: Math.max(1, Math.ceil(count / size))
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Reactive state of an inline distinct-values dropdown over `pager`: the first
|
|
124
|
+
* `shown` values of the first `size`, and how many exist (`count`, one past `size`
|
|
125
|
+
* when more follow — the dialog pages the rest). A superseded search is dropped.
|
|
126
|
+
*/
|
|
127
|
+
function useDistinctPicker(pager, size, shown) {
|
|
128
|
+
const rows = (0, vue.shallowRef)([]);
|
|
129
|
+
const count = (0, vue.ref)(0);
|
|
130
|
+
/** More values exist past the first `size` (`count` is then one past `size`). */
|
|
131
|
+
const more = (0, vue.ref)(false);
|
|
132
|
+
const querying = (0, vue.ref)(false);
|
|
133
|
+
const error = (0, vue.shallowRef)(null);
|
|
134
|
+
/** The first page arrived once — reopening the dropdown does not ask again. */
|
|
135
|
+
const loaded = (0, vue.ref)(false);
|
|
136
|
+
let seq = 0;
|
|
137
|
+
async function load(text) {
|
|
138
|
+
const mine = ++seq;
|
|
139
|
+
querying.value = true;
|
|
140
|
+
try {
|
|
141
|
+
const res = await pager(text, 1, size);
|
|
142
|
+
if (mine !== seq) return;
|
|
143
|
+
rows.value = res.data.slice(0, shown);
|
|
144
|
+
count.value = res.count;
|
|
145
|
+
more.value = res.count > size;
|
|
146
|
+
error.value = null;
|
|
147
|
+
loaded.value = true;
|
|
148
|
+
} catch (err) {
|
|
149
|
+
if (mine !== seq) return;
|
|
150
|
+
rows.value = [];
|
|
151
|
+
count.value = 0;
|
|
152
|
+
more.value = false;
|
|
153
|
+
error.value = err instanceof Error ? err : new Error(String(err));
|
|
154
|
+
} finally {
|
|
155
|
+
if (mine === seq) querying.value = false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
rows,
|
|
160
|
+
count,
|
|
161
|
+
more,
|
|
162
|
+
querying,
|
|
163
|
+
error,
|
|
164
|
+
loaded,
|
|
165
|
+
load
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
//#endregion
|
|
9
169
|
//#region src/composables/use-drag-scroll.ts
|
|
10
170
|
/**
|
|
11
171
|
* Pointer-drag horizontal scroll for a container. Listens for pointerdown on
|
|
@@ -115,8 +275,11 @@ const _hoisted_15 = ["onClick"];
|
|
|
115
275
|
const _hoisted_16 = [
|
|
116
276
|
"id",
|
|
117
277
|
"value",
|
|
278
|
+
"placeholder",
|
|
118
279
|
"onKeydown"
|
|
119
280
|
];
|
|
281
|
+
const DISTINCT_WINDOW = 100;
|
|
282
|
+
const DISTINCT_SHOWN = 10;
|
|
120
283
|
//#endregion
|
|
121
284
|
//#region src/components/defaults/as-filter-field.vue
|
|
122
285
|
var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
@@ -128,28 +291,34 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
128
291
|
setup(__props) {
|
|
129
292
|
const props = __props;
|
|
130
293
|
const { state } = require_use_table_state.useTableContext();
|
|
294
|
+
const { formatCondition } = require_use_condition_format.useConditionFormat(state);
|
|
295
|
+
const isTemporal = (0, vue.computed)(() => (0, _atscript_ui_table.isTemporalKind)((0, _atscript_ui_table.columnFilterKind)(props.column)));
|
|
131
296
|
const chipsScrollEl = (0, vue.ref)(null);
|
|
132
297
|
useDragScroll(chipsScrollEl);
|
|
133
298
|
const info = props.column.valueHelpInfo;
|
|
134
|
-
const
|
|
299
|
+
const distinct = props.column.distinct;
|
|
135
300
|
const hasOptions = !!(props.column.options && props.column.options.length > 0);
|
|
136
|
-
const hasDropdown =
|
|
301
|
+
const hasDropdown = (0, vue.computed)(() => hasValuePicker(state, props.column));
|
|
137
302
|
let vhClient;
|
|
138
303
|
let innerState;
|
|
139
304
|
const resolved = (0, vue.shallowRef)(null);
|
|
140
|
-
if (
|
|
305
|
+
if (info) {
|
|
141
306
|
vhClient = new _atscript_ui.ValueHelpClient((0, _atscript_ui.getMetaEntry)(info.url).client);
|
|
142
307
|
innerState = require_use_table.useTable(info.url, {
|
|
143
308
|
select: "none",
|
|
144
309
|
queryOnMount: false,
|
|
145
310
|
limit: 10,
|
|
146
|
-
provideContext: false
|
|
311
|
+
provideContext: false,
|
|
312
|
+
forceFilters: info.filter,
|
|
313
|
+
alwaysSelected: [info.targetField]
|
|
147
314
|
});
|
|
148
315
|
}
|
|
316
|
+
const distinctPicker = distinct ? useDistinctPicker(createDistinctPager(state, props.column), DISTINCT_WINDOW, DISTINCT_SHOWN) : void 0;
|
|
149
317
|
const dictColumns = (0, vue.computed)(() => {
|
|
150
318
|
if (!resolved.value || !innerState) return [];
|
|
151
319
|
const paths = (0, _atscript_ui.valueHelpDictPaths)(resolved.value);
|
|
152
|
-
|
|
320
|
+
const pinned = new Set(info?.pinned);
|
|
321
|
+
return innerState.allColumns.value.filter((c) => paths.has(c.path) && !pinned.has(c.path));
|
|
153
322
|
});
|
|
154
323
|
async function ensureResolved() {
|
|
155
324
|
if (resolved.value) return resolved.value;
|
|
@@ -157,7 +326,8 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
157
326
|
try {
|
|
158
327
|
resolved.value = await (0, _atscript_ui.resolveValueHelp)(info.url);
|
|
159
328
|
return resolved.value;
|
|
160
|
-
} catch {
|
|
329
|
+
} catch (err) {
|
|
330
|
+
declineIfRejected(state, info, err);
|
|
161
331
|
return null;
|
|
162
332
|
}
|
|
163
333
|
}
|
|
@@ -166,33 +336,28 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
166
336
|
}
|
|
167
337
|
const enumRows = hasOptions ? (0, vue.computed)(() => (props.column.options ?? []).map((opt) => ({
|
|
168
338
|
__key: opt.key,
|
|
169
|
-
__label: opt.label
|
|
339
|
+
__label: opt.label,
|
|
340
|
+
__value: (0, _atscript_ui.optionValue)(opt)
|
|
170
341
|
}))) : void 0;
|
|
171
|
-
const enumColumns = hasOptions ? [
|
|
172
|
-
path: "__label",
|
|
173
|
-
label: "Value",
|
|
174
|
-
type: "text",
|
|
175
|
-
sortable: false,
|
|
176
|
-
filterable: false,
|
|
177
|
-
order: 0
|
|
178
|
-
}] : void 0;
|
|
342
|
+
const enumColumns = hasOptions || distinct ? [valueColumn(false)] : void 0;
|
|
179
343
|
const dropdownRows = (0, vue.computed)(() => {
|
|
180
344
|
if (innerState) return innerState.results.value;
|
|
345
|
+
if (distinctPicker) return distinctPicker.rows.value;
|
|
181
346
|
if (enumRows) return enumRows.value;
|
|
182
347
|
return [];
|
|
183
348
|
});
|
|
184
349
|
const dropdownColumns = (0, vue.computed)(() => {
|
|
185
|
-
if (
|
|
350
|
+
if (info) return dictColumns.value;
|
|
186
351
|
if (enumColumns) return enumColumns;
|
|
187
352
|
return [];
|
|
188
353
|
});
|
|
189
354
|
const dropdownQuerying = (0, vue.computed)(() => {
|
|
190
355
|
if (innerState) return innerState.querying.value;
|
|
191
|
-
return false;
|
|
356
|
+
return distinctPicker?.querying.value ?? false;
|
|
192
357
|
});
|
|
193
358
|
const dropdownQueryError = (0, vue.computed)(() => {
|
|
194
359
|
if (innerState) return innerState.queryError.value;
|
|
195
|
-
return null;
|
|
360
|
+
return distinctPicker?.error.value ?? null;
|
|
196
361
|
});
|
|
197
362
|
const dropdownLoadingMetadata = (0, vue.computed)(() => {
|
|
198
363
|
if (innerState) return innerState.loadingMetadata.value;
|
|
@@ -200,17 +365,21 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
200
365
|
});
|
|
201
366
|
const seeAllCount = (0, vue.computed)(() => {
|
|
202
367
|
if (innerState) return innerState.totalCount.value;
|
|
368
|
+
if (distinctPicker) return distinctPicker.count.value;
|
|
203
369
|
if (enumRows) return enumRows.value.length;
|
|
204
370
|
return 0;
|
|
205
371
|
});
|
|
372
|
+
/** "100+" when a distinct picker has more values than its first page (its count is one past it). */
|
|
373
|
+
const seeAllLabel = (0, vue.computed)(() => !innerState && distinctPicker?.more.value ? `${distinctPicker.count.value - 1}+` : String(seeAllCount.value));
|
|
206
374
|
function extractEqValues(conditions) {
|
|
207
375
|
if (!conditions) return [];
|
|
208
376
|
const values = [];
|
|
209
377
|
for (const c of conditions) if ((0, _atscript_ui_table.isSimpleEq)(c)) values.push(c.value[0]);
|
|
210
378
|
return values;
|
|
211
379
|
}
|
|
212
|
-
const
|
|
213
|
-
|
|
380
|
+
const dropdownCapable = !!info || hasOptions || !!distinct;
|
|
381
|
+
const selectedValues = (0, vue.ref)(dropdownCapable ? extractEqValues(state.filters.value[props.column.path]) : []);
|
|
382
|
+
if (dropdownCapable) {
|
|
214
383
|
(0, vue.watch)(selectedValues, (values) => {
|
|
215
384
|
if ((0, _atscript_ui_table.arraysEqual)(values, extractEqValues(state.filters.value[props.column.path]))) return;
|
|
216
385
|
const nonEq = (state.filters.value[props.column.path] ?? []).filter((c) => c.type !== "eq");
|
|
@@ -229,7 +398,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
229
398
|
const chips = (0, vue.computed)(() => {
|
|
230
399
|
return (state.filters.value[props.column.path] ?? []).filter(_atscript_ui_table.isFilled).map((cond, i) => ({
|
|
231
400
|
key: `${cond.type}:${i}:${String(cond.value[0] ?? "")}`,
|
|
232
|
-
label: (
|
|
401
|
+
label: formatCondition(props.column, cond),
|
|
233
402
|
condition: cond
|
|
234
403
|
}));
|
|
235
404
|
});
|
|
@@ -243,8 +412,8 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
243
412
|
if (len > prev) scrollChipsToEnd();
|
|
244
413
|
});
|
|
245
414
|
function rowValueFn(row) {
|
|
246
|
-
if (
|
|
247
|
-
if (hasOptions) return row.
|
|
415
|
+
if (info) return row[info.targetField];
|
|
416
|
+
if (hasOptions || distinct) return row.__value;
|
|
248
417
|
}
|
|
249
418
|
const inputId = (0, vue.useId)();
|
|
250
419
|
const searchTerm = (0, vue.ref)("");
|
|
@@ -260,17 +429,27 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
260
429
|
}
|
|
261
430
|
innerState.query();
|
|
262
431
|
}, { once: true });
|
|
263
|
-
const
|
|
432
|
+
const serverSearch = !!info || !!distinct;
|
|
433
|
+
const debouncedSearch = serverSearch ? (0, _atscript_ui_table.debounce)(() => {
|
|
264
434
|
doSearch(searchTerm.value);
|
|
265
435
|
}, 500) : void 0;
|
|
436
|
+
if (distinctPicker) {
|
|
437
|
+
(0, vue.watch)(() => (0, _atscript_ui_table.stableValueKey)(state.forceFilters.value ?? null), () => {
|
|
438
|
+
distinctPicker.loaded.value = false;
|
|
439
|
+
});
|
|
440
|
+
(0, vue.watch)(dropdownOpen, (open) => {
|
|
441
|
+
if (open && !distinctPicker.loaded.value && !distinctPicker.querying.value) distinctPicker.load("");
|
|
442
|
+
});
|
|
443
|
+
}
|
|
266
444
|
(0, vue.onBeforeUnmount)(() => {
|
|
267
445
|
debouncedSearch?.cancel();
|
|
268
446
|
});
|
|
269
447
|
function onSearchInput(event) {
|
|
270
448
|
searchTerm.value = event.target.value;
|
|
271
|
-
if (
|
|
449
|
+
if (serverSearch) debouncedSearch();
|
|
272
450
|
}
|
|
273
451
|
async function doSearch(text) {
|
|
452
|
+
if (distinctPicker) return distinctPicker.load(text);
|
|
274
453
|
if (!vhClient || !innerState) return;
|
|
275
454
|
const r = await ensureResolved();
|
|
276
455
|
if (!r) return;
|
|
@@ -279,7 +458,9 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
279
458
|
const result = await vhClient.search(r, {
|
|
280
459
|
text: text || void 0,
|
|
281
460
|
mode: "filter",
|
|
282
|
-
limit: 10
|
|
461
|
+
limit: 10,
|
|
462
|
+
filter: info?.filter,
|
|
463
|
+
valueField: info?.targetField
|
|
283
464
|
});
|
|
284
465
|
innerState.results.value = result.items;
|
|
285
466
|
innerState.queryError.value = null;
|
|
@@ -302,7 +483,9 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
302
483
|
});
|
|
303
484
|
}
|
|
304
485
|
const noEnumMatches = (0, vue.computed)(() => {
|
|
305
|
-
if (!dropdownOpen.value
|
|
486
|
+
if (!dropdownOpen.value) return false;
|
|
487
|
+
if (distinctPicker) return !distinctPicker.querying.value && !distinctPicker.error.value && distinctPicker.rows.value.length === 0;
|
|
488
|
+
if (!enumRows) return false;
|
|
306
489
|
return filterFunction(enumRows.value).length === 0;
|
|
307
490
|
});
|
|
308
491
|
function removeChip(chip) {
|
|
@@ -334,7 +517,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
334
517
|
scrollChipsToEnd();
|
|
335
518
|
}
|
|
336
519
|
function onEnter() {
|
|
337
|
-
if (hasDropdown || !searchTerm.value.trim()) return;
|
|
520
|
+
if (hasDropdown.value || !searchTerm.value.trim()) return;
|
|
338
521
|
const parsed = (0, _atscript_ui_table.parseColumnFilterInput)(searchTerm.value, props.column);
|
|
339
522
|
if (!parsed) return;
|
|
340
523
|
const filled = (state.filters.value[props.column.path] ?? []).filter(_atscript_ui_table.isFilled);
|
|
@@ -356,7 +539,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
356
539
|
dropdownLoadingMetadata.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4, [..._cache[5] || (_cache[5] = [(0, vue.createElementVNode)("span", {
|
|
357
540
|
class: "as-filter-field-loading-icon",
|
|
358
541
|
"aria-hidden": "true"
|
|
359
|
-
}, null, -1)])])) :
|
|
542
|
+
}, null, -1)])])) : hasDropdown.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.ComboboxRoot), {
|
|
360
543
|
key: 1,
|
|
361
544
|
modelValue: selectedValues.value,
|
|
362
545
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => selectedValues.value = $event),
|
|
@@ -364,7 +547,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
364
547
|
"onUpdate:open": _cache[2] || (_cache[2] = ($event) => dropdownOpen.value = $event),
|
|
365
548
|
multiple: true,
|
|
366
549
|
"reset-search-term-on-blur": false,
|
|
367
|
-
"ignore-filter":
|
|
550
|
+
"ignore-filter": (0, vue.unref)(serverSearch),
|
|
368
551
|
"as-child": ""
|
|
369
552
|
}, {
|
|
370
553
|
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxAnchor), { "as-child": "" }, {
|
|
@@ -452,11 +635,15 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
452
635
|
key: 1,
|
|
453
636
|
type: "button",
|
|
454
637
|
onClick: openFilterDialog
|
|
455
|
-
}, [(0, vue.createTextVNode)(" See All (" + (0, vue.toDisplayString)(
|
|
638
|
+
}, [(0, vue.createTextVNode)(" See All (" + (0, vue.toDisplayString)(seeAllLabel.value) + ") ", 1), _cache[12] || (_cache[12] = (0, vue.createElementVNode)("span", { class: "as-kbd" }, "F4", -1))])) : (0, vue.createCommentVNode)("v-if", true)])) : (0, vue.createCommentVNode)("v-if", true)]),
|
|
456
639
|
_: 1
|
|
457
640
|
})]),
|
|
458
641
|
_: 1
|
|
459
|
-
}, 8, [
|
|
642
|
+
}, 8, [
|
|
643
|
+
"modelValue",
|
|
644
|
+
"open",
|
|
645
|
+
"ignore-filter"
|
|
646
|
+
])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createCommentVNode)(" Plain input (no dropdown) "), (0, vue.createElementVNode)("div", _hoisted_14, [(0, vue.createElementVNode)("div", {
|
|
460
647
|
ref_key: "chipsScrollEl",
|
|
461
648
|
ref: chipsScrollEl,
|
|
462
649
|
class: "as-filter-field-chips"
|
|
@@ -474,6 +661,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
474
661
|
id: (0, vue.unref)(inputId),
|
|
475
662
|
class: "as-filter-field-search",
|
|
476
663
|
value: searchTerm.value,
|
|
664
|
+
placeholder: isTemporal.value ? "YYYY-MM-DD" : void 0,
|
|
477
665
|
onInput: _cache[3] || (_cache[3] = ($event) => searchTerm.value = $event.target.value),
|
|
478
666
|
onKeydown: [
|
|
479
667
|
(0, vue.withKeys)(onBackspace, ["backspace"]),
|
|
@@ -505,3 +693,27 @@ Object.defineProperty(exports, "as_filter_field_default", {
|
|
|
505
693
|
return as_filter_field_default;
|
|
506
694
|
}
|
|
507
695
|
});
|
|
696
|
+
Object.defineProperty(exports, "createDistinctPager", {
|
|
697
|
+
enumerable: true,
|
|
698
|
+
get: function() {
|
|
699
|
+
return createDistinctPager;
|
|
700
|
+
}
|
|
701
|
+
});
|
|
702
|
+
Object.defineProperty(exports, "declineIfRejected", {
|
|
703
|
+
enumerable: true,
|
|
704
|
+
get: function() {
|
|
705
|
+
return declineIfRejected;
|
|
706
|
+
}
|
|
707
|
+
});
|
|
708
|
+
Object.defineProperty(exports, "hasValuePicker", {
|
|
709
|
+
enumerable: true,
|
|
710
|
+
get: function() {
|
|
711
|
+
return hasValuePicker;
|
|
712
|
+
}
|
|
713
|
+
});
|
|
714
|
+
Object.defineProperty(exports, "valueColumn", {
|
|
715
|
+
enumerable: true,
|
|
716
|
+
get: function() {
|
|
717
|
+
return valueColumn;
|
|
718
|
+
}
|
|
719
|
+
});
|