@atscript/vue-table 0.1.146 → 0.1.147
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 +3 -2
- package/dist/as-action-form-dialog.mjs +3 -2
- package/dist/{as-action-menu-content-DoZnQP0I.mjs → as-action-menu-content-35yQWbLF.mjs} +1 -1
- package/dist/{as-action-menu-content-FQ2miGid.cjs → as-action-menu-content-BJ0tn6jq.cjs} +1 -1
- package/dist/as-cell-array.d.cts +1 -1
- package/dist/as-cell-array.d.mts +1 -1
- package/dist/as-cell-date.d.cts +1 -1
- package/dist/as-cell-date.d.mts +1 -1
- package/dist/as-cell-json.d.cts +1 -1
- package/dist/as-cell-json.d.mts +1 -1
- package/dist/as-cell-number.d.cts +1 -1
- package/dist/as-cell-number.d.mts +1 -1
- package/dist/as-cell-union.d.cts +1 -1
- package/dist/as-cell-union.d.mts +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-ByTECTbX.d.cts → as-column-menu.vue-B6iuKmIj.d.cts} +1 -1
- package/dist/{as-column-menu.vue-TChT482i.d.mts → as-column-menu.vue-wxb2f92k.d.mts} +1 -1
- package/dist/{as-config-dialog-CpW1Qemf.cjs → as-config-dialog-BJkBzaku.cjs} +2 -2
- package/dist/{as-config-dialog-ObHtungs.mjs → as-config-dialog-D503Ek_m.mjs} +2 -2
- package/dist/as-config-dialog.cjs +1 -1
- package/dist/as-config-dialog.d.cts +1 -1
- package/dist/as-config-dialog.d.mts +1 -1
- package/dist/as-config-dialog.mjs +1 -1
- package/dist/{as-confirm-dialog-D3Vu1Rb_.cjs → as-confirm-dialog-C5xPbkox.cjs} +1 -1
- package/dist/{as-confirm-dialog-zg7jmS3u.mjs → as-confirm-dialog-CJfDnaiU.mjs} +1 -1
- package/dist/as-confirm-dialog.cjs +1 -1
- package/dist/as-confirm-dialog.d.cts +1 -1
- package/dist/as-confirm-dialog.d.mts +1 -1
- package/dist/as-confirm-dialog.mjs +1 -1
- package/dist/{as-filter-dialog-C4EyRr2_.cjs → as-filter-dialog-Co0WfWOe.cjs} +7 -7
- package/dist/{as-filter-dialog-CWy0mjZl.mjs → as-filter-dialog-CxjO-Ge5.mjs} +7 -7
- package/dist/as-filter-dialog.cjs +1 -1
- package/dist/as-filter-dialog.d.cts +1 -1
- package/dist/as-filter-dialog.d.mts +1 -1
- package/dist/as-filter-dialog.mjs +1 -1
- package/dist/{as-filter-field-CW1_GHZT.mjs → as-filter-field-ByPlGyWz.mjs} +3 -3
- package/dist/{as-filter-field-BQ9UlV0y.cjs → as-filter-field-FTrxFkTw.cjs} +3 -3
- package/dist/as-filter-field.cjs +1 -1
- package/dist/as-filter-field.d.cts +1 -1
- package/dist/as-filter-field.d.mts +1 -1
- package/dist/as-filter-field.mjs +1 -1
- package/dist/as-filter-input.d.cts +1 -1
- package/dist/as-filter-input.d.mts +1 -1
- package/dist/{as-filters-BLFSS_VP.mjs → as-filters-CJZJiOXb.mjs} +4 -4
- package/dist/{as-filters-DUfFkXAo.cjs → as-filters-W3iMELuL.cjs} +4 -4
- package/dist/as-filters.cjs +1 -1
- package/dist/as-filters.mjs +1 -1
- package/dist/{as-preset-dialog-CI2Hw8vi.mjs → as-preset-dialog-CLOVEpWZ.mjs} +1 -1
- package/dist/{as-preset-dialog-BlXqTZiT.cjs → as-preset-dialog-Dvvx0jmU.cjs} +1 -1
- package/dist/as-preset-dialog.cjs +1 -1
- package/dist/as-preset-dialog.d.cts +1 -1
- package/dist/as-preset-dialog.d.mts +1 -1
- package/dist/as-preset-dialog.mjs +1 -1
- package/dist/{as-preset-picker-CbZDGPaf.mjs → as-preset-picker-CwFObhME.mjs} +1 -1
- package/dist/{as-preset-picker-CVgyZBG7.cjs → as-preset-picker-DFLhbm59.cjs} +1 -1
- package/dist/as-preset-picker.cjs +1 -1
- package/dist/as-preset-picker.mjs +1 -1
- package/dist/{as-residual-filter-CUTouIn5.mjs → as-residual-filter-BRsEs8oe.mjs} +1 -1
- package/dist/{as-residual-filter-C8n7kdGW.cjs → as-residual-filter-sZlsFPDS.cjs} +1 -1
- package/dist/as-residual-filter.cjs +1 -1
- package/dist/as-residual-filter.d.cts +1 -1
- package/dist/as-residual-filter.d.mts +1 -1
- package/dist/as-residual-filter.mjs +1 -1
- package/dist/{as-row-actions-DfUL9sYB.cjs → as-row-actions-DFv2cSrP.cjs} +7 -5
- package/dist/{as-row-actions-ed1P6GEJ.mjs → as-row-actions-DyjIXePd.mjs} +7 -5
- 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-Ba3VO9W-.d.cts → as-row-actions.vue-BHrZBXVU.d.cts} +1 -1
- package/dist/{as-row-actions.vue-CKOnE0eb.d.mts → as-row-actions.vue-D4MylwCW.d.mts} +1 -1
- package/dist/{as-select-cell-DwMfqBMV.cjs → as-select-cell-CoQJjhnq.cjs} +10 -5
- package/dist/{as-select-cell-BMptU5sQ.mjs → as-select-cell-Dl8fohIj.mjs} +10 -5
- package/dist/as-selection-banner-BI5gKHqW.cjs +206 -0
- package/dist/as-selection-banner-DBtLjulh.mjs +189 -0
- package/dist/as-table-B1FowaPF.cjs +215 -0
- package/dist/as-table-Cpvfv9zA.mjs +210 -0
- package/dist/{as-table-actions-DplblFlK.cjs → as-table-actions-B0xaicfv.cjs} +32 -6
- package/dist/{as-table-actions-DQco4pGu.mjs → as-table-actions-BlbAps1h.mjs} +32 -6
- 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-BYphfAe2.d.cts → as-table-actions.vue-7ml3JiOO.d.mts} +9 -2
- package/dist/{as-table-actions.vue-C6hzRtS7.d.mts → as-table-actions.vue-BKRqHprR.d.cts} +9 -2
- package/dist/{as-table-base-lfyjPgsO.mjs → as-table-base-EzKaChOp.mjs} +3 -3
- package/dist/{as-table-base-CNAn-vpa.cjs → as-table-base-LZ26YlWp.cjs} +3 -3
- package/dist/as-table-cell-value.d.cts +1 -1
- package/dist/as-table-cell-value.d.mts +1 -1
- package/dist/{as-table-header-cell-Csv1KQDa.mjs → as-table-header-cell-DrVzYaof.mjs} +1 -1
- package/dist/{as-table-header-cell-BwaOPYwI.cjs → as-table-header-cell-gHhCdxJX.cjs} +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-DU5h-2C_.d.cts → as-table-header-cell.vue-BCk4NPYT.d.cts} +1 -1
- package/dist/{as-table-header-cell.vue-KkANwimG.d.mts → as-table-header-cell.vue-BZU8s9CT.d.mts} +1 -1
- package/dist/{as-table-root-BreMYhnv.mjs → as-table-root-BYHXuNPI.mjs} +33 -6
- package/dist/{as-table-root-DXewWV9h.cjs → as-table-root-K6fWKHtF.cjs} +33 -6
- 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-XtDgUjO2.d.mts → as-table-root.vue-Bm2DxAqU.d.mts} +319 -9
- package/dist/{as-table-root.vue-Bjzp8TJl.d.cts → as-table-root.vue-CF03c4vu.d.cts} +320 -10
- 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-JOTOi_Nm.mjs → as-window-table-CygDqZMU.mjs} +99 -53
- package/dist/{as-window-table-Bj1dXOS6.cjs → as-window-table-_flc8o64.cjs} +101 -55
- 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 +23 -19
- package/dist/index.d.cts +19 -21
- package/dist/index.d.mts +19 -21
- package/dist/index.mjs +20 -20
- package/dist/{types-D1NxhrpW.d.cts → intent-scope-BXPEN5kJ.d.cts} +202 -35
- package/dist/{types-BEZ4_erB.d.mts → intent-scope-Ck7RZ0dK.d.mts} +202 -35
- package/dist/{use-table-W0KmaJ6L.cjs → use-table-CydIJZbx.cjs} +5 -3
- package/dist/{use-table-BTsNGBVx.mjs → use-table-DP6Y0kbl.mjs} +5 -3
- package/dist/{use-table-component-DRMXTk9M.mjs → use-table-component-DNGUvhf7.mjs} +1 -1
- package/dist/{use-table-component-BvAC82_c.cjs → use-table-component-aqfGzECx.cjs} +1 -1
- package/dist/{use-table-nav-bridge-CPI1tql6.cjs → use-table-nav-bridge-B7A30yja.cjs} +1 -1
- package/dist/{use-table-nav-bridge-Bw0NFDSf.mjs → use-table-nav-bridge-BhOPIT2R.mjs} +1 -1
- package/dist/{use-table-selection-ULbKT2xW.mjs → use-table-selection-CdaOPo1d.mjs} +8 -3
- package/dist/{use-table-selection-DtCV3rhu.cjs → use-table-selection-Cs7-gjHg.cjs} +8 -3
- package/dist/{use-table-state-DuY-Mf8e.mjs → use-table-state-1OZfdhQi.mjs} +414 -41
- package/dist/{use-table-state-Ddr2UZzB.cjs → use-table-state-sDnqOi3b.cjs} +447 -38
- package/package.json +11 -10
- package/dist/as-table-BjKzKB0a.cjs +0 -207
- package/dist/as-table-DGWfzV4w.mjs +0 -202
- package/dist/as-table.vue-BULJe49x.d.cts +0 -115
- package/dist/as-table.vue-DgCtlV4u.d.mts +0 -115
- package/dist/as-window-table.vue-CYFgK10g.d.mts +0 -132
- package/dist/as-window-table.vue-ijutqrJ0.d.cts +0 -132
- package/dist/use-table-column-handlers-BitvioH4.mjs +0 -85
- package/dist/use-table-column-handlers-DksXpbON.cjs +0 -96
- /package/dist/{as-cell-array.vue-pFs5GcCR.d.cts → as-cell-array.vue-C4BTM8YW.d.cts} +0 -0
- /package/dist/{as-cell-array.vue-ow34clSF.d.mts → as-cell-array.vue-Dj3nZop3.d.mts} +0 -0
- /package/dist/{as-cell-date.vue-B4JCr1qP.d.mts → as-cell-date.vue-BPuyH7q3.d.mts} +0 -0
- /package/dist/{as-cell-date.vue-BBSps2B2.d.cts → as-cell-date.vue-BcMgxBfm.d.cts} +0 -0
- /package/dist/{as-cell-json.vue-B-T3TuFj.d.mts → as-cell-json.vue-D8J7YwVV.d.mts} +0 -0
- /package/dist/{as-cell-json.vue-C6wg4ARZ.d.cts → as-cell-json.vue-pwE9uJdv.d.cts} +0 -0
- /package/dist/{as-cell-number.vue-CJ2K5zeM.d.cts → as-cell-number.vue-pbgVCIWT.d.cts} +0 -0
- /package/dist/{as-cell-number.vue-CNH2fbCB.d.mts → as-cell-number.vue-sUoZvuat.d.mts} +0 -0
- /package/dist/{as-cell-union.vue-CslPM_c2.d.cts → as-cell-union.vue-BK_M7opL.d.cts} +0 -0
- /package/dist/{as-cell-union.vue-CZwN81H4.d.mts → as-cell-union.vue-DZBejMxR.d.mts} +0 -0
- /package/dist/{as-config-dialog.vue-BKo2GpzN.d.mts → as-config-dialog.vue-C-Jw_rb7.d.cts} +0 -0
- /package/dist/{as-config-dialog.vue-DvvJi3xx.d.cts → as-config-dialog.vue-D2AVR1a5.d.mts} +0 -0
- /package/dist/{as-confirm-dialog.vue-BN_yzu3h.d.mts → as-confirm-dialog.vue-BxAaCuYf.d.mts} +0 -0
- /package/dist/{as-confirm-dialog.vue-CXxLpzbu.d.cts → as-confirm-dialog.vue-D8hJ5qPY.d.cts} +0 -0
- /package/dist/{as-filter-dialog.vue-BV2J8PgZ.d.cts → as-filter-dialog.vue-CyD6qtuX.d.cts} +0 -0
- /package/dist/{as-filter-dialog.vue-Bl8OIKOf.d.mts → as-filter-dialog.vue-WYXGtymZ.d.mts} +0 -0
- /package/dist/{as-filter-field.vue-DD0IZXS1.d.mts → as-filter-field.vue-DTpuDkHh.d.mts} +0 -0
- /package/dist/{as-filter-field.vue-ByQ8xIGq.d.cts → as-filter-field.vue-ajAFhraz.d.cts} +0 -0
- /package/dist/{as-filter-input.vue-CS4nOk_Q.d.cts → as-filter-input.vue-CksJOtqw.d.cts} +0 -0
- /package/dist/{as-filter-input.vue-CFZ33B--.d.mts → as-filter-input.vue-DMwr0ArL.d.mts} +0 -0
- /package/dist/{as-preset-dialog.vue-ChM7H7B4.d.mts → as-preset-dialog.vue-BEM-L4BY.d.cts} +0 -0
- /package/dist/{as-preset-dialog.vue-DP9fy00Y.d.cts → as-preset-dialog.vue-BrnvBWxJ.d.mts} +0 -0
- /package/dist/{as-residual-filter.vue-Dfw1l2wS.d.cts → as-residual-filter.vue-CGXCipEn.d.cts} +0 -0
- /package/dist/{as-residual-filter.vue-N89YqlCz.d.mts → as-residual-filter.vue-Cev_8Wy7.d.mts} +0 -0
- /package/dist/{as-table-cell-value.vue-C0VR9GRK.d.cts → as-table-cell-value.vue-UkAuJanv.d.cts} +0 -0
- /package/dist/{as-table-cell-value.vue-DphckGq-.d.mts → as-table-cell-value.vue-kfNgVhzn.d.mts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { g as toggleRowAt, h as onSelectControlKeydown, o as useTableContextOptional } from "./use-table-state-
|
|
2
|
-
import { t as useTableComponent } from "./use-table-component-
|
|
3
|
-
import { t as as_table_header_cell_default } from "./as-table-header-cell-
|
|
4
|
-
import { t as as_row_actions_default } from "./as-row-actions-
|
|
1
|
+
import { g as toggleRowAt, h as onSelectControlKeydown, o as useTableContextOptional } from "./use-table-state-1OZfdhQi.mjs";
|
|
2
|
+
import { t as useTableComponent } from "./use-table-component-DNGUvhf7.mjs";
|
|
3
|
+
import { t as as_table_header_cell_default } from "./as-table-header-cell-DrVzYaof.mjs";
|
|
4
|
+
import { t as as_row_actions_default } from "./as-row-actions-DyjIXePd.mjs";
|
|
5
5
|
import { t as as_table_cell_value_default } from "./as-table-cell-value-DoH8Mieo.mjs";
|
|
6
6
|
import { UI_TABLE_ATTR, UI_TABLE_CLASSES, UI_TABLE_FN_ATTR, UI_TABLE_FN_CLASSES, UI_TABLE_FN_STYLES, UI_TABLE_STYLES, getFieldMeta, parseStaticAttrs, resolveAttrs, resolveFieldProp } from "@atscript/ui";
|
|
7
7
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, normalizeStyle, onBeforeUnmount, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, withModifiers } from "vue";
|
|
@@ -486,6 +486,8 @@ var as_table_header_default = /* @__PURE__ */ defineComponent({
|
|
|
486
486
|
const HeaderCell = useTableComponent("headerCell", as_table_header_cell_default);
|
|
487
487
|
const props = __props;
|
|
488
488
|
const emit = __emit;
|
|
489
|
+
const tableState = useTableContextOptional()?.state;
|
|
490
|
+
const NO_OP = () => {};
|
|
489
491
|
const sortMap = computed(() => {
|
|
490
492
|
const map = {};
|
|
491
493
|
for (const s of props.sorters) map[s.field] = s.direction;
|
|
@@ -557,7 +559,10 @@ var as_table_header_default = /* @__PURE__ */ defineComponent({
|
|
|
557
559
|
__props.hasSelectColumn ? (openBlock(), createElementBlock("th", _hoisted_1$2, [renderSlot(_ctx.$slots, "header-__select", {
|
|
558
560
|
state: __props.selectAllState,
|
|
559
561
|
toggle: toggleSelectAll,
|
|
560
|
-
selectedCount: __props.selectedCount ?? 0
|
|
562
|
+
selectedCount: __props.selectedCount ?? 0,
|
|
563
|
+
mode: unref(tableState)?.querySelection.value ? "query" : "ids",
|
|
564
|
+
canSelectAllMatching: unref(tableState)?.canSelectAllMatching.value ?? false,
|
|
565
|
+
selectAllMatching: unref(tableState)?.selectAllMatching ?? NO_OP
|
|
561
566
|
}, () => [__props.selectAllState ? (openBlock(), createElementBlock("span", {
|
|
562
567
|
key: 0,
|
|
563
568
|
class: normalizeClass(["as-table-checkbox", {
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
const require_use_table_state = require("./use-table-state-sDnqOi3b.cjs");
|
|
2
|
+
let vue = require("vue");
|
|
3
|
+
let _atscript_ui_table = require("@atscript/ui-table");
|
|
4
|
+
//#region src/composables/use-row-actions-column.ts
|
|
5
|
+
/**
|
|
6
|
+
* The synthesised row-actions pseudo-column, shared by `<AsTable>` and
|
|
7
|
+
* `<AsWindowTable>`. Returns the renderer's effective column list — the base
|
|
8
|
+
* columns with a fixed `__actions` column prepended / appended per
|
|
9
|
+
* `placement` — and opts the table into per-row `$actions` while the column
|
|
10
|
+
* is shown.
|
|
11
|
+
*/
|
|
12
|
+
function useRowActionsColumn(state, opts) {
|
|
13
|
+
const cellActions = (0, vue.computed)(() => {
|
|
14
|
+
const r = require_use_table_state.resolveRowActions(state, void 0);
|
|
15
|
+
return [
|
|
16
|
+
...r.default ? [r.default] : [],
|
|
17
|
+
...r.others,
|
|
18
|
+
...r.rows,
|
|
19
|
+
...r.extra
|
|
20
|
+
];
|
|
21
|
+
});
|
|
22
|
+
(0, vue.watch)(() => {
|
|
23
|
+
const placement = opts.placement();
|
|
24
|
+
if (!placement) return false;
|
|
25
|
+
if (placement === "merge-select" && opts.select() !== "none") return false;
|
|
26
|
+
return cellActions.value.length > 0;
|
|
27
|
+
}, (on) => {
|
|
28
|
+
state.includeActions.value = on;
|
|
29
|
+
}, { immediate: true });
|
|
30
|
+
const actionsCol = (0, vue.computed)(() => {
|
|
31
|
+
const acts = cellActions.value;
|
|
32
|
+
return {
|
|
33
|
+
path: require_use_table_state.ROW_ACTIONS_PATH,
|
|
34
|
+
label: "",
|
|
35
|
+
type: require_use_table_state.ROW_ACTIONS_TYPE,
|
|
36
|
+
sortable: false,
|
|
37
|
+
filterable: false,
|
|
38
|
+
nullable: false,
|
|
39
|
+
order: 0,
|
|
40
|
+
fixed: true,
|
|
41
|
+
width: acts.length === 1 && !acts[0].icon ? "8em" : "4em"
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
return (0, vue.computed)(() => {
|
|
45
|
+
const base = opts.columns();
|
|
46
|
+
const placement = opts.placement();
|
|
47
|
+
if (placement === false || placement === void 0) return base;
|
|
48
|
+
if (cellActions.value.length === 0) return base;
|
|
49
|
+
if (placement === "first") return [actionsCol.value, ...base];
|
|
50
|
+
if (placement === "last") return [...base, actionsCol.value];
|
|
51
|
+
if (opts.select() === "none") return [actionsCol.value, ...base];
|
|
52
|
+
return base;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/composables/use-table-column-handlers.ts
|
|
57
|
+
/**
|
|
58
|
+
* Pure pass-through handlers shared between the pagination renderer
|
|
59
|
+
* (`<AsTable>`) and the window renderer (`<AsWindowTableBase>`). Selection
|
|
60
|
+
* and row-mouse handlers stay in their owning components because their
|
|
61
|
+
* semantics diverge meaningfully (window has no "all" state; standalone
|
|
62
|
+
* vs Reka renderModes need different gating).
|
|
63
|
+
*/
|
|
64
|
+
function useTableColumnHandlers(state) {
|
|
65
|
+
return {
|
|
66
|
+
onSort(column, direction) {
|
|
67
|
+
state.sorters.value = direction === null ? [] : [{
|
|
68
|
+
field: column.path,
|
|
69
|
+
direction
|
|
70
|
+
}];
|
|
71
|
+
},
|
|
72
|
+
onHide(column) {
|
|
73
|
+
state.columnNames.value = state.columnNames.value.filter((n) => n !== column.path);
|
|
74
|
+
},
|
|
75
|
+
onFilter(column) {
|
|
76
|
+
state.openFilterDialog(column);
|
|
77
|
+
},
|
|
78
|
+
onFiltersOff(column) {
|
|
79
|
+
state.removeFieldFilter(column.path);
|
|
80
|
+
},
|
|
81
|
+
onResetWidth(column) {
|
|
82
|
+
state.resetColumnWidth(column.path);
|
|
83
|
+
},
|
|
84
|
+
onReorder(fromPath, toPath, position) {
|
|
85
|
+
state.columnNames.value = (0, _atscript_ui_table.reorderColumnNames)(state.columnNames.value, fromPath, toPath, position);
|
|
86
|
+
},
|
|
87
|
+
onClearFilters() {
|
|
88
|
+
state.resetFilters();
|
|
89
|
+
if (state.searchTerm.value) state.searchTerm.value = "";
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region src/components/internal/as-selection-banner.vue?vue&type=script&setup=true&lang.ts
|
|
95
|
+
const _hoisted_1 = ["data-kind"];
|
|
96
|
+
const _hoisted_2 = { class: "as-selection-banner-text" };
|
|
97
|
+
const _hoisted_3 = { class: "as-selection-banner-text" };
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/components/internal/as-selection-banner.vue
|
|
100
|
+
var as_selection_banner_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
101
|
+
__name: "as-selection-banner",
|
|
102
|
+
props: { scope: {
|
|
103
|
+
type: String,
|
|
104
|
+
required: true
|
|
105
|
+
} },
|
|
106
|
+
setup(__props) {
|
|
107
|
+
const props = __props;
|
|
108
|
+
const { state } = require_use_table_state.useTableContext();
|
|
109
|
+
const kind = (0, vue.computed)(() => {
|
|
110
|
+
if (state.selectMode.value !== "multi") return null;
|
|
111
|
+
if (state.querySelection.value) return "query";
|
|
112
|
+
if (!state.canSelectAllMatching.value) return null;
|
|
113
|
+
const loaded = state.loadedEligiblePks.value.length;
|
|
114
|
+
return loaded > 0 && state.loadedSelectedCount.value === loaded ? "offer" : null;
|
|
115
|
+
});
|
|
116
|
+
const loadedCount = (0, vue.computed)(() => state.loadedEligiblePks.value.length);
|
|
117
|
+
const offerText = (0, vue.computed)(() => {
|
|
118
|
+
const n = loadedCount.value;
|
|
119
|
+
const where = props.scope === "page" ? "on this page" : "loaded";
|
|
120
|
+
return n === 1 ? `The 1 row ${where} is selected.` : `All ${n} rows ${where} are selected.`;
|
|
121
|
+
});
|
|
122
|
+
const queryText = (0, vue.computed)(() => {
|
|
123
|
+
const n = state.selectedCount.value;
|
|
124
|
+
return n === 1 ? "1 matching row is selected." : `All ${n} matching rows are selected.`;
|
|
125
|
+
});
|
|
126
|
+
const rootRef = (0, vue.ref)(null);
|
|
127
|
+
const btnRef = (0, vue.ref)(null);
|
|
128
|
+
/**
|
|
129
|
+
* Keep keyboard focus when the banner's button is swapped — on the new
|
|
130
|
+
* button, or, once the banner is gone, on the table's select-all checkbox.
|
|
131
|
+
*/
|
|
132
|
+
async function refocus(hadFocus) {
|
|
133
|
+
if (!hadFocus) return;
|
|
134
|
+
await (0, vue.nextTick)();
|
|
135
|
+
if (btnRef.value) {
|
|
136
|
+
btnRef.value.focus();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
rootRef.value?.parentElement?.querySelector(".as-th-select [role=checkbox][tabindex]")?.focus();
|
|
140
|
+
}
|
|
141
|
+
function hasFocus() {
|
|
142
|
+
return !!btnRef.value && btnRef.value === document.activeElement;
|
|
143
|
+
}
|
|
144
|
+
/** Run a banner action, keeping focus on the banner's button (see `refocus`). */
|
|
145
|
+
function keepingFocus(fn) {
|
|
146
|
+
return () => {
|
|
147
|
+
const focused = hasFocus();
|
|
148
|
+
fn();
|
|
149
|
+
refocus(focused);
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const selectAllMatching = keepingFocus(() => state.selectAllMatching());
|
|
153
|
+
const clearSelection = keepingFocus(() => state.clearSelection());
|
|
154
|
+
return (_ctx, _cache) => {
|
|
155
|
+
return (0, vue.unref)(state).selectMode.value === "multi" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
156
|
+
key: 0,
|
|
157
|
+
ref_key: "rootRef",
|
|
158
|
+
ref: rootRef,
|
|
159
|
+
role: "status",
|
|
160
|
+
"aria-live": "polite",
|
|
161
|
+
class: (0, vue.normalizeClass)(kind.value ? "as-selection-banner" : "sr-only"),
|
|
162
|
+
"data-kind": kind.value ?? void 0
|
|
163
|
+
}, [kind.value ? (0, vue.renderSlot)(_ctx.$slots, "default", {
|
|
164
|
+
key: 0,
|
|
165
|
+
selection: (0, vue.unref)(state).selection.value,
|
|
166
|
+
canSelectAllMatching: (0, vue.unref)(state).canSelectAllMatching.value,
|
|
167
|
+
selectAllMatching: (0, vue.unref)(selectAllMatching),
|
|
168
|
+
clearSelection: (0, vue.unref)(clearSelection),
|
|
169
|
+
loadedCount: loadedCount.value
|
|
170
|
+
}, () => [kind.value === "offer" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createElementVNode)("span", _hoisted_2, (0, vue.toDisplayString)(offerText.value), 1), (0, vue.createElementVNode)("button", {
|
|
171
|
+
ref_key: "btnRef",
|
|
172
|
+
ref: btnRef,
|
|
173
|
+
type: "button",
|
|
174
|
+
class: "as-selection-banner-btn",
|
|
175
|
+
"data-select-all-matching": "",
|
|
176
|
+
onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(selectAllMatching) && (0, vue.unref)(selectAllMatching)(...args))
|
|
177
|
+
}, " Select all " + (0, vue.toDisplayString)((0, vue.unref)(state).totalCount.value) + " matching ", 513)], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createElementVNode)("span", _hoisted_3, (0, vue.toDisplayString)(queryText.value), 1), (0, vue.createElementVNode)("button", {
|
|
178
|
+
ref_key: "btnRef",
|
|
179
|
+
ref: btnRef,
|
|
180
|
+
type: "button",
|
|
181
|
+
class: "as-selection-banner-btn",
|
|
182
|
+
"data-clear-selection": "",
|
|
183
|
+
onClick: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(clearSelection) && (0, vue.unref)(clearSelection)(...args))
|
|
184
|
+
}, " Clear selection ", 512)], 64))]) : (0, vue.createCommentVNode)("v-if", true)], 10, _hoisted_1)) : (0, vue.createCommentVNode)("v-if", true);
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
//#endregion
|
|
189
|
+
Object.defineProperty(exports, "as_selection_banner_default", {
|
|
190
|
+
enumerable: true,
|
|
191
|
+
get: function() {
|
|
192
|
+
return as_selection_banner_default;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
Object.defineProperty(exports, "useRowActionsColumn", {
|
|
196
|
+
enumerable: true,
|
|
197
|
+
get: function() {
|
|
198
|
+
return useRowActionsColumn;
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
Object.defineProperty(exports, "useTableColumnHandlers", {
|
|
202
|
+
enumerable: true,
|
|
203
|
+
get: function() {
|
|
204
|
+
return useTableColumnHandlers;
|
|
205
|
+
}
|
|
206
|
+
});
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { B as ROW_ACTIONS_PATH, V as ROW_ACTIONS_TYPE, a as useTableContext, v as resolveRowActions } from "./use-table-state-1OZfdhQi.mjs";
|
|
2
|
+
import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, nextTick, normalizeClass, openBlock, ref, renderSlot, toDisplayString, unref, watch } from "vue";
|
|
3
|
+
import { reorderColumnNames } from "@atscript/ui-table";
|
|
4
|
+
//#region src/composables/use-row-actions-column.ts
|
|
5
|
+
/**
|
|
6
|
+
* The synthesised row-actions pseudo-column, shared by `<AsTable>` and
|
|
7
|
+
* `<AsWindowTable>`. Returns the renderer's effective column list — the base
|
|
8
|
+
* columns with a fixed `__actions` column prepended / appended per
|
|
9
|
+
* `placement` — and opts the table into per-row `$actions` while the column
|
|
10
|
+
* is shown.
|
|
11
|
+
*/
|
|
12
|
+
function useRowActionsColumn(state, opts) {
|
|
13
|
+
const cellActions = computed(() => {
|
|
14
|
+
const r = resolveRowActions(state, void 0);
|
|
15
|
+
return [
|
|
16
|
+
...r.default ? [r.default] : [],
|
|
17
|
+
...r.others,
|
|
18
|
+
...r.rows,
|
|
19
|
+
...r.extra
|
|
20
|
+
];
|
|
21
|
+
});
|
|
22
|
+
watch(() => {
|
|
23
|
+
const placement = opts.placement();
|
|
24
|
+
if (!placement) return false;
|
|
25
|
+
if (placement === "merge-select" && opts.select() !== "none") return false;
|
|
26
|
+
return cellActions.value.length > 0;
|
|
27
|
+
}, (on) => {
|
|
28
|
+
state.includeActions.value = on;
|
|
29
|
+
}, { immediate: true });
|
|
30
|
+
const actionsCol = computed(() => {
|
|
31
|
+
const acts = cellActions.value;
|
|
32
|
+
return {
|
|
33
|
+
path: ROW_ACTIONS_PATH,
|
|
34
|
+
label: "",
|
|
35
|
+
type: ROW_ACTIONS_TYPE,
|
|
36
|
+
sortable: false,
|
|
37
|
+
filterable: false,
|
|
38
|
+
nullable: false,
|
|
39
|
+
order: 0,
|
|
40
|
+
fixed: true,
|
|
41
|
+
width: acts.length === 1 && !acts[0].icon ? "8em" : "4em"
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
return computed(() => {
|
|
45
|
+
const base = opts.columns();
|
|
46
|
+
const placement = opts.placement();
|
|
47
|
+
if (placement === false || placement === void 0) return base;
|
|
48
|
+
if (cellActions.value.length === 0) return base;
|
|
49
|
+
if (placement === "first") return [actionsCol.value, ...base];
|
|
50
|
+
if (placement === "last") return [...base, actionsCol.value];
|
|
51
|
+
if (opts.select() === "none") return [actionsCol.value, ...base];
|
|
52
|
+
return base;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/composables/use-table-column-handlers.ts
|
|
57
|
+
/**
|
|
58
|
+
* Pure pass-through handlers shared between the pagination renderer
|
|
59
|
+
* (`<AsTable>`) and the window renderer (`<AsWindowTableBase>`). Selection
|
|
60
|
+
* and row-mouse handlers stay in their owning components because their
|
|
61
|
+
* semantics diverge meaningfully (window has no "all" state; standalone
|
|
62
|
+
* vs Reka renderModes need different gating).
|
|
63
|
+
*/
|
|
64
|
+
function useTableColumnHandlers(state) {
|
|
65
|
+
return {
|
|
66
|
+
onSort(column, direction) {
|
|
67
|
+
state.sorters.value = direction === null ? [] : [{
|
|
68
|
+
field: column.path,
|
|
69
|
+
direction
|
|
70
|
+
}];
|
|
71
|
+
},
|
|
72
|
+
onHide(column) {
|
|
73
|
+
state.columnNames.value = state.columnNames.value.filter((n) => n !== column.path);
|
|
74
|
+
},
|
|
75
|
+
onFilter(column) {
|
|
76
|
+
state.openFilterDialog(column);
|
|
77
|
+
},
|
|
78
|
+
onFiltersOff(column) {
|
|
79
|
+
state.removeFieldFilter(column.path);
|
|
80
|
+
},
|
|
81
|
+
onResetWidth(column) {
|
|
82
|
+
state.resetColumnWidth(column.path);
|
|
83
|
+
},
|
|
84
|
+
onReorder(fromPath, toPath, position) {
|
|
85
|
+
state.columnNames.value = reorderColumnNames(state.columnNames.value, fromPath, toPath, position);
|
|
86
|
+
},
|
|
87
|
+
onClearFilters() {
|
|
88
|
+
state.resetFilters();
|
|
89
|
+
if (state.searchTerm.value) state.searchTerm.value = "";
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region src/components/internal/as-selection-banner.vue?vue&type=script&setup=true&lang.ts
|
|
95
|
+
const _hoisted_1 = ["data-kind"];
|
|
96
|
+
const _hoisted_2 = { class: "as-selection-banner-text" };
|
|
97
|
+
const _hoisted_3 = { class: "as-selection-banner-text" };
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/components/internal/as-selection-banner.vue
|
|
100
|
+
var as_selection_banner_default = /* @__PURE__ */ defineComponent({
|
|
101
|
+
__name: "as-selection-banner",
|
|
102
|
+
props: { scope: {
|
|
103
|
+
type: String,
|
|
104
|
+
required: true
|
|
105
|
+
} },
|
|
106
|
+
setup(__props) {
|
|
107
|
+
const props = __props;
|
|
108
|
+
const { state } = useTableContext();
|
|
109
|
+
const kind = computed(() => {
|
|
110
|
+
if (state.selectMode.value !== "multi") return null;
|
|
111
|
+
if (state.querySelection.value) return "query";
|
|
112
|
+
if (!state.canSelectAllMatching.value) return null;
|
|
113
|
+
const loaded = state.loadedEligiblePks.value.length;
|
|
114
|
+
return loaded > 0 && state.loadedSelectedCount.value === loaded ? "offer" : null;
|
|
115
|
+
});
|
|
116
|
+
const loadedCount = computed(() => state.loadedEligiblePks.value.length);
|
|
117
|
+
const offerText = computed(() => {
|
|
118
|
+
const n = loadedCount.value;
|
|
119
|
+
const where = props.scope === "page" ? "on this page" : "loaded";
|
|
120
|
+
return n === 1 ? `The 1 row ${where} is selected.` : `All ${n} rows ${where} are selected.`;
|
|
121
|
+
});
|
|
122
|
+
const queryText = computed(() => {
|
|
123
|
+
const n = state.selectedCount.value;
|
|
124
|
+
return n === 1 ? "1 matching row is selected." : `All ${n} matching rows are selected.`;
|
|
125
|
+
});
|
|
126
|
+
const rootRef = ref(null);
|
|
127
|
+
const btnRef = ref(null);
|
|
128
|
+
/**
|
|
129
|
+
* Keep keyboard focus when the banner's button is swapped — on the new
|
|
130
|
+
* button, or, once the banner is gone, on the table's select-all checkbox.
|
|
131
|
+
*/
|
|
132
|
+
async function refocus(hadFocus) {
|
|
133
|
+
if (!hadFocus) return;
|
|
134
|
+
await nextTick();
|
|
135
|
+
if (btnRef.value) {
|
|
136
|
+
btnRef.value.focus();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
rootRef.value?.parentElement?.querySelector(".as-th-select [role=checkbox][tabindex]")?.focus();
|
|
140
|
+
}
|
|
141
|
+
function hasFocus() {
|
|
142
|
+
return !!btnRef.value && btnRef.value === document.activeElement;
|
|
143
|
+
}
|
|
144
|
+
/** Run a banner action, keeping focus on the banner's button (see `refocus`). */
|
|
145
|
+
function keepingFocus(fn) {
|
|
146
|
+
return () => {
|
|
147
|
+
const focused = hasFocus();
|
|
148
|
+
fn();
|
|
149
|
+
refocus(focused);
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const selectAllMatching = keepingFocus(() => state.selectAllMatching());
|
|
153
|
+
const clearSelection = keepingFocus(() => state.clearSelection());
|
|
154
|
+
return (_ctx, _cache) => {
|
|
155
|
+
return unref(state).selectMode.value === "multi" ? (openBlock(), createElementBlock("div", {
|
|
156
|
+
key: 0,
|
|
157
|
+
ref_key: "rootRef",
|
|
158
|
+
ref: rootRef,
|
|
159
|
+
role: "status",
|
|
160
|
+
"aria-live": "polite",
|
|
161
|
+
class: normalizeClass(kind.value ? "as-selection-banner" : "sr-only"),
|
|
162
|
+
"data-kind": kind.value ?? void 0
|
|
163
|
+
}, [kind.value ? renderSlot(_ctx.$slots, "default", {
|
|
164
|
+
key: 0,
|
|
165
|
+
selection: unref(state).selection.value,
|
|
166
|
+
canSelectAllMatching: unref(state).canSelectAllMatching.value,
|
|
167
|
+
selectAllMatching: unref(selectAllMatching),
|
|
168
|
+
clearSelection: unref(clearSelection),
|
|
169
|
+
loadedCount: loadedCount.value
|
|
170
|
+
}, () => [kind.value === "offer" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("span", _hoisted_2, toDisplayString(offerText.value), 1), createElementVNode("button", {
|
|
171
|
+
ref_key: "btnRef",
|
|
172
|
+
ref: btnRef,
|
|
173
|
+
type: "button",
|
|
174
|
+
class: "as-selection-banner-btn",
|
|
175
|
+
"data-select-all-matching": "",
|
|
176
|
+
onClick: _cache[0] || (_cache[0] = (...args) => unref(selectAllMatching) && unref(selectAllMatching)(...args))
|
|
177
|
+
}, " Select all " + toDisplayString(unref(state).totalCount.value) + " matching ", 513)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("span", _hoisted_3, toDisplayString(queryText.value), 1), createElementVNode("button", {
|
|
178
|
+
ref_key: "btnRef",
|
|
179
|
+
ref: btnRef,
|
|
180
|
+
type: "button",
|
|
181
|
+
class: "as-selection-banner-btn",
|
|
182
|
+
"data-clear-selection": "",
|
|
183
|
+
onClick: _cache[1] || (_cache[1] = (...args) => unref(clearSelection) && unref(clearSelection)(...args))
|
|
184
|
+
}, " Clear selection ", 512)], 64))]) : createCommentVNode("v-if", true)], 10, _hoisted_1)) : createCommentVNode("v-if", true);
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
//#endregion
|
|
189
|
+
export { useTableColumnHandlers as n, useRowActionsColumn as r, as_selection_banner_default as t };
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
const require_use_table_state = require("./use-table-state-sDnqOi3b.cjs");
|
|
2
|
+
const require_use_table_selection = require("./use-table-selection-Cs7-gjHg.cjs");
|
|
3
|
+
const require_use_has_emit_listener = require("./use-has-emit-listener-BaGFZDyM.cjs");
|
|
4
|
+
const require_as_selection_banner = require("./as-selection-banner-BI5gKHqW.cjs");
|
|
5
|
+
const require_as_table_base = require("./as-table-base-LZ26YlWp.cjs");
|
|
6
|
+
let vue = require("vue");
|
|
7
|
+
//#region src/components/as-table.vue?vue&type=script&setup=true&lang.ts
|
|
8
|
+
const _hoisted_1 = { class: "as-table-outer-wrap" };
|
|
9
|
+
const _hoisted_2 = {
|
|
10
|
+
key: 0,
|
|
11
|
+
class: "as-table-query-overlay"
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/components/as-table.vue
|
|
15
|
+
var as_table_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
16
|
+
__name: "as-table",
|
|
17
|
+
props: {
|
|
18
|
+
rows: {
|
|
19
|
+
type: Array,
|
|
20
|
+
required: false
|
|
21
|
+
},
|
|
22
|
+
columns: {
|
|
23
|
+
type: Array,
|
|
24
|
+
required: false
|
|
25
|
+
},
|
|
26
|
+
stickyHeader: {
|
|
27
|
+
type: Boolean,
|
|
28
|
+
required: false,
|
|
29
|
+
default: true
|
|
30
|
+
},
|
|
31
|
+
virtualRowHeight: {
|
|
32
|
+
type: Number,
|
|
33
|
+
required: false
|
|
34
|
+
},
|
|
35
|
+
virtualOverscan: {
|
|
36
|
+
type: Number,
|
|
37
|
+
required: false,
|
|
38
|
+
default: 5
|
|
39
|
+
},
|
|
40
|
+
columnMenu: {
|
|
41
|
+
type: Object,
|
|
42
|
+
required: false
|
|
43
|
+
},
|
|
44
|
+
reorderable: {
|
|
45
|
+
type: Boolean,
|
|
46
|
+
required: false,
|
|
47
|
+
default: true
|
|
48
|
+
},
|
|
49
|
+
resizable: {
|
|
50
|
+
type: Boolean,
|
|
51
|
+
required: false,
|
|
52
|
+
default: true
|
|
53
|
+
},
|
|
54
|
+
columnMinWidth: {
|
|
55
|
+
type: Number,
|
|
56
|
+
required: false,
|
|
57
|
+
default: 48
|
|
58
|
+
},
|
|
59
|
+
select: {
|
|
60
|
+
type: String,
|
|
61
|
+
required: false,
|
|
62
|
+
default: "none"
|
|
63
|
+
},
|
|
64
|
+
selectOn: {
|
|
65
|
+
type: String,
|
|
66
|
+
required: false,
|
|
67
|
+
default: "row"
|
|
68
|
+
},
|
|
69
|
+
rowDelete: {
|
|
70
|
+
type: [Boolean, Object],
|
|
71
|
+
required: false,
|
|
72
|
+
default: false
|
|
73
|
+
},
|
|
74
|
+
rowActionsColumn: {
|
|
75
|
+
type: [String, Boolean],
|
|
76
|
+
required: false,
|
|
77
|
+
default: false
|
|
78
|
+
},
|
|
79
|
+
headless: {
|
|
80
|
+
type: Boolean,
|
|
81
|
+
required: false,
|
|
82
|
+
default: false
|
|
83
|
+
},
|
|
84
|
+
rowSelectable: {
|
|
85
|
+
type: Function,
|
|
86
|
+
required: false
|
|
87
|
+
},
|
|
88
|
+
rowClass: {
|
|
89
|
+
type: Function,
|
|
90
|
+
required: false
|
|
91
|
+
},
|
|
92
|
+
rowAttrs: {
|
|
93
|
+
type: Function,
|
|
94
|
+
required: false
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
emits: [
|
|
98
|
+
"row-click",
|
|
99
|
+
"row-dblclick",
|
|
100
|
+
"main-action"
|
|
101
|
+
],
|
|
102
|
+
setup(__props, { emit: __emit }) {
|
|
103
|
+
const props = __props;
|
|
104
|
+
const emit = __emit;
|
|
105
|
+
const { state } = require_use_table_state.useTableContext();
|
|
106
|
+
(0, vue.watch)(() => props.rowDelete, (val) => {
|
|
107
|
+
state.rowDelete.value = val;
|
|
108
|
+
}, { immediate: true });
|
|
109
|
+
(0, vue.watch)(() => props.rowSelectable, (val) => {
|
|
110
|
+
state.rowSelectable.value = val;
|
|
111
|
+
}, { immediate: true });
|
|
112
|
+
require_use_table_selection.useSelectModeReset(state, () => props.select);
|
|
113
|
+
const effectiveRows = (0, vue.computed)(() => state.applyLocalSort(props.rows ?? state.results.value));
|
|
114
|
+
const effectiveColumns = require_as_selection_banner.useRowActionsColumn(state, {
|
|
115
|
+
placement: () => props.rowActionsColumn,
|
|
116
|
+
select: () => props.select,
|
|
117
|
+
columns: () => props.columns ?? state.columns.value
|
|
118
|
+
});
|
|
119
|
+
require_use_table_state.useRegisterMainActionListener(state, (req) => emit("main-action", req.row, req.absIndex, req.event), require_use_has_emit_listener.useHasEmitListener("onMainAction"));
|
|
120
|
+
const { onSort, onHide, onFilter, onFiltersOff, onResetWidth, onReorder, onClearFilters } = require_as_selection_banner.useTableColumnHandlers(state);
|
|
121
|
+
return (_ctx, _cache) => {
|
|
122
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1, [
|
|
123
|
+
(0, vue.createVNode)(require_as_selection_banner.as_selection_banner_default, { scope: "page" }, (0, vue.createSlots)({ _: 2 }, [_ctx.$slots["selection-banner"] ? {
|
|
124
|
+
name: "default",
|
|
125
|
+
fn: (0, vue.withCtx)((bannerProps) => [(0, vue.renderSlot)(_ctx.$slots, "selection-banner", (0, vue.normalizeProps)((0, vue.guardReactiveProps)(bannerProps)))]),
|
|
126
|
+
key: "0"
|
|
127
|
+
} : void 0]), 1024),
|
|
128
|
+
(0, vue.createVNode)(require_as_table_base.as_table_base_default, {
|
|
129
|
+
"render-mode": "standalone",
|
|
130
|
+
columns: (0, vue.unref)(effectiveColumns),
|
|
131
|
+
rows: effectiveRows.value,
|
|
132
|
+
sorters: (0, vue.unref)(state).sorters.value,
|
|
133
|
+
"selected-rows": (0, vue.unref)(state).selectedRows.value,
|
|
134
|
+
select: props.select,
|
|
135
|
+
"select-on": props.selectOn,
|
|
136
|
+
"row-value-fn": (0, vue.unref)(state).rowValueFn,
|
|
137
|
+
querying: (0, vue.unref)(state).querying.value,
|
|
138
|
+
"query-error": (0, vue.unref)(state).queryError.value,
|
|
139
|
+
"on-retry": (0, vue.unref)(state).query,
|
|
140
|
+
"sticky-header": __props.stickyHeader,
|
|
141
|
+
headless: __props.headless,
|
|
142
|
+
"virtual-row-height": __props.virtualRowHeight,
|
|
143
|
+
"virtual-overscan": __props.virtualOverscan,
|
|
144
|
+
filters: (0, vue.unref)(state).filters.value,
|
|
145
|
+
"search-term": (0, vue.unref)(state).searchTerm.value,
|
|
146
|
+
"on-clear-filters": (0, vue.unref)(onClearFilters),
|
|
147
|
+
"column-menu": __props.columnMenu,
|
|
148
|
+
reorderable: __props.reorderable,
|
|
149
|
+
resizable: __props.resizable,
|
|
150
|
+
"column-min-width": __props.columnMinWidth,
|
|
151
|
+
"column-widths": (0, vue.unref)(state).columnWidths.value,
|
|
152
|
+
"row-class": __props.rowClass,
|
|
153
|
+
"row-attrs": __props.rowAttrs,
|
|
154
|
+
onSort: (0, vue.unref)(onSort),
|
|
155
|
+
onHide: (0, vue.unref)(onHide),
|
|
156
|
+
onFilter: (0, vue.unref)(onFilter),
|
|
157
|
+
onFiltersOff: (0, vue.unref)(onFiltersOff),
|
|
158
|
+
onReorder: (0, vue.unref)(onReorder),
|
|
159
|
+
onResize: (0, vue.unref)(state).setColumnWidth,
|
|
160
|
+
onResetWidth: (0, vue.unref)(onResetWidth),
|
|
161
|
+
onRowClick: _cache[0] || (_cache[0] = (row, ev) => emit("row-click", row, ev)),
|
|
162
|
+
onRowDblclick: _cache[1] || (_cache[1] = (row, ev) => emit("row-dblclick", row, ev))
|
|
163
|
+
}, (0, vue.createSlots)({ _: 2 }, [(0, vue.renderList)(_ctx.$slots, (_, name) => {
|
|
164
|
+
return {
|
|
165
|
+
name,
|
|
166
|
+
fn: (0, vue.withCtx)((slotProps) => [(0, vue.renderSlot)(_ctx.$slots, name, (0, vue.normalizeProps)((0, vue.guardReactiveProps)(slotProps ?? {})))])
|
|
167
|
+
};
|
|
168
|
+
})]), 1032, [
|
|
169
|
+
"columns",
|
|
170
|
+
"rows",
|
|
171
|
+
"sorters",
|
|
172
|
+
"selected-rows",
|
|
173
|
+
"select",
|
|
174
|
+
"select-on",
|
|
175
|
+
"row-value-fn",
|
|
176
|
+
"querying",
|
|
177
|
+
"query-error",
|
|
178
|
+
"on-retry",
|
|
179
|
+
"sticky-header",
|
|
180
|
+
"headless",
|
|
181
|
+
"virtual-row-height",
|
|
182
|
+
"virtual-overscan",
|
|
183
|
+
"filters",
|
|
184
|
+
"search-term",
|
|
185
|
+
"on-clear-filters",
|
|
186
|
+
"column-menu",
|
|
187
|
+
"reorderable",
|
|
188
|
+
"resizable",
|
|
189
|
+
"column-min-width",
|
|
190
|
+
"column-widths",
|
|
191
|
+
"row-class",
|
|
192
|
+
"row-attrs",
|
|
193
|
+
"onSort",
|
|
194
|
+
"onHide",
|
|
195
|
+
"onFilter",
|
|
196
|
+
"onFiltersOff",
|
|
197
|
+
"onReorder",
|
|
198
|
+
"onResize",
|
|
199
|
+
"onResetWidth"
|
|
200
|
+
]),
|
|
201
|
+
(0, vue.unref)(state).querying.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2, [(0, vue.renderSlot)(_ctx.$slots, "query-loading", {}, () => [_cache[2] || (_cache[2] = (0, vue.createElementVNode)("span", {
|
|
202
|
+
class: "as-table-query-overlay-icon",
|
|
203
|
+
"aria-hidden": "true"
|
|
204
|
+
}, null, -1))])])) : (0, vue.createCommentVNode)("v-if", true)
|
|
205
|
+
]);
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
//#endregion
|
|
210
|
+
Object.defineProperty(exports, "as_table_default", {
|
|
211
|
+
enumerable: true,
|
|
212
|
+
get: function() {
|
|
213
|
+
return as_table_default;
|
|
214
|
+
}
|
|
215
|
+
});
|