@arbocollab/arbo-plugin-item-table 0.0.203 → 0.1.2
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/CHANGELOG.md +71 -0
- package/lib/es/index.es.js +17 -25
- package/lib/style.css +1 -1
- package/lib/umd/index.umd.js +26 -26
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,77 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [1.0.203] - 2026-02-27 (Live)
|
|
6
|
+
|
|
7
|
+
### 🎯 Release Summary (0.0.36 → 0.0.203)
|
|
8
|
+
|
|
9
|
+
This live milestone consolidates all major improvements delivered from `0.0.36` up to `0.0.203`, focused on table performance, metric editing, filtering accuracy, bulk operations, permission safety, keyboard accessibility, and overall UX stability.
|
|
10
|
+
|
|
11
|
+
### 🚀 Major Highlights
|
|
12
|
+
|
|
13
|
+
- **Bulk update (detailed)**
|
|
14
|
+
- Introduced centralized bulk update store state for consistent selection status across header checkbox, bulk panel, and table actions
|
|
15
|
+
- Added full “Select All” flow for partial/indeterminate selection, with support for `visibleRows` vs `totalRows` scenarios
|
|
16
|
+
- Unified bulk action handling for assignee, status, date, and metric update paths with cleaner action switching
|
|
17
|
+
- Added/propagated `filterParams` so bulk updates correctly target filtered entity-level datasets
|
|
18
|
+
- Improved payload consistency for clear/replace/update operations (including metric clear semantics)
|
|
19
|
+
|
|
20
|
+
- **UI changes (detailed)**
|
|
21
|
+
- Refined drag/drop row items with reusable icon system, clearer metric-type indicators, and improved text overflow handling
|
|
22
|
+
- Improved checkbox sizing system with CSS variable-driven dimensions and consistent sizing presets
|
|
23
|
+
- Enhanced snackbar layering and interaction behavior to reduce overlap with popup/modal stacks
|
|
24
|
+
- Improved create-scene UX with safer failure behavior, clearer action layout, and keep-open creation mode
|
|
25
|
+
- Upgraded avatar/profile and tooltip interaction patterns for more consistent user detail display and popup behavior
|
|
26
|
+
|
|
27
|
+
- **Search improvements (detailed)**
|
|
28
|
+
- Standardized search input behavior via auto-emit + debounce strategy for smoother query updates
|
|
29
|
+
- Improved search state rendering with clearer empty/no-result states and better loading skeleton handling
|
|
30
|
+
- Refined SearchList keyboard/click event model to pass full event context and improve close/select reliability
|
|
31
|
+
- Improved API search parameter consistency (`search`) and reduced noisy/empty query serialization
|
|
32
|
+
|
|
33
|
+
- **Filter improvements (detailed)**
|
|
34
|
+
- Expanded filter suite coverage (status, assignee, archive status, date range) with improved data exposure/clear methods
|
|
35
|
+
- Switched default archive behavior to active-first through `preflight_status: '1'` while preserving explicit `status_eq` cases
|
|
36
|
+
- Clarified clear vs reset behavior to avoid accidental “show everything” scenarios
|
|
37
|
+
- Improved filter count logic and active-state detection (including selected assignees and archive combinations)
|
|
38
|
+
- Better synchronization between filter UI state, cached state, and table query params
|
|
39
|
+
|
|
40
|
+
- **Table customization (detailed)**
|
|
41
|
+
- Upgraded column manager/search UX with cleaner conditional rendering and focused query behavior
|
|
42
|
+
- Added dynamic height handling tied to table/container size for predictable layout on different screens
|
|
43
|
+
- Improved pinned/unpinned organization and drag-disable rules while searching
|
|
44
|
+
- Introduced warning-state styling and metric selection constraints (including max selected metric behavior)
|
|
45
|
+
- Improved focus management (auto-focus on open) and warning display support in customization layout
|
|
46
|
+
|
|
47
|
+
- **Permission handling (detailed)**
|
|
48
|
+
- Refactored permission checks to rely on cell params/row data instead of fragile context-only reads
|
|
49
|
+
- Hardened fallback behavior to `readOnly` when permission data is missing or incomplete
|
|
50
|
+
- Improved edit-type classification and permission guard consistency across renderer/editor selectors
|
|
51
|
+
- Added safer handling for metric editability (formula and auth-permission constraints)
|
|
52
|
+
- Reduced accidental edit entry points by aligning renderer defaults with restrictive permission assumptions
|
|
53
|
+
|
|
54
|
+
- **Performance (detailed)**
|
|
55
|
+
- Improved API pagination defaults for heavy lists (notably metric/status retrieval) to reduce request volume
|
|
56
|
+
- Optimized AG Grid refresh/update paths with smarter row updates and targeted cell refresh behavior
|
|
57
|
+
- Added/loading refinement for skeleton rendering only when row or field data is truly undefined
|
|
58
|
+
- Reduced redundant re-renders and duplicate fetch/update logic by extracting shared composables
|
|
59
|
+
- Improved cache/fetch patterns for remote assets and user/icon data to limit repeated network work
|
|
60
|
+
|
|
61
|
+
- **Accessibility and interaction quality**
|
|
62
|
+
- Expanded keyboard navigation in calendars, editors, and list/dropdown controls
|
|
63
|
+
- Improved focus management, tab flow, and escape/cancel behavior
|
|
64
|
+
- Tuned event propagation/handling in critical dropdowns and status selectors for fewer interaction conflicts
|
|
65
|
+
|
|
66
|
+
- **Code quality and maintainability**
|
|
67
|
+
- Component/composable refactors (row updating, metric updates, input handling)
|
|
68
|
+
- Better type safety and cleaner event contracts across UI/core packages
|
|
69
|
+
- Ongoing cleanup of legacy/debug code and consistency improvements
|
|
70
|
+
|
|
71
|
+
### 📦 Live Version Update
|
|
72
|
+
|
|
73
|
+
- **Version:** `0.0.203` → `1.0.203`
|
|
74
|
+
- **Status:** Live release baseline
|
|
75
|
+
|
|
5
76
|
## [0.0.194] - 2026-02-26
|
|
6
77
|
|
|
7
78
|
### 🚀 Features
|
package/lib/es/index.es.js
CHANGED
|
@@ -7626,7 +7626,7 @@ const Lm = {
|
|
|
7626
7626
|
placement: "top",
|
|
7627
7627
|
trigger: "mouseenter focus",
|
|
7628
7628
|
hideOnClick: !1,
|
|
7629
|
-
delay: [
|
|
7629
|
+
delay: [300, 0],
|
|
7630
7630
|
theme: "arbo",
|
|
7631
7631
|
contentClass: "extra-padding",
|
|
7632
7632
|
bypassOverflowCheck: !0,
|
|
@@ -11197,7 +11197,7 @@ const pz = (e) => {
|
|
|
11197
11197
|
(i = e._userProfileInstance) == null || i.hide();
|
|
11198
11198
|
}, e._userProfileInstance = rk(e, {
|
|
11199
11199
|
...ik,
|
|
11200
|
-
delay: [
|
|
11200
|
+
delay: [300, 0],
|
|
11201
11201
|
content: ((s = n.user) == null ? void 0 : s.name) || "User",
|
|
11202
11202
|
placement: n.placement || "bottom-start",
|
|
11203
11203
|
trigger: "mouseenter focus",
|
|
@@ -25469,7 +25469,7 @@ const Qf = (e) => {
|
|
|
25469
25469
|
} else E.key === "Escape" && s.value && (E.preventDefault(), v());
|
|
25470
25470
|
}
|
|
25471
25471
|
const C = Object.freeze({
|
|
25472
|
-
delay: [
|
|
25472
|
+
delay: [300, 0],
|
|
25473
25473
|
contentClass: ["extra-padding"]
|
|
25474
25474
|
}), R = TE();
|
|
25475
25475
|
return nt(
|
|
@@ -30650,8 +30650,7 @@ const _X = {
|
|
|
30650
30650
|
);
|
|
30651
30651
|
const S = async (O) => {
|
|
30652
30652
|
var F, D, x;
|
|
30653
|
-
|
|
30654
|
-
console.log(" API response for removing assignee:", A), A && (i.value = (F = i.value) == null ? void 0 : F.filter((P) => P.id !== O), (x = o.params) == null || x.node.setData({
|
|
30653
|
+
await T(O) && (i.value = (F = i.value) == null ? void 0 : F.filter((P) => P.id !== O), (x = o.params) == null || x.node.setData({
|
|
30655
30654
|
...(D = o.params) == null ? void 0 : D.node.data,
|
|
30656
30655
|
assignees: i.value
|
|
30657
30656
|
}));
|
|
@@ -31187,7 +31186,7 @@ const _X = {
|
|
|
31187
31186
|
}, null, 8, ["src"])), [
|
|
31188
31187
|
[W(n), {
|
|
31189
31188
|
content: e.option.label,
|
|
31190
|
-
delay: [
|
|
31189
|
+
delay: [300, 0],
|
|
31191
31190
|
contentClass: ["extra-padding"]
|
|
31192
31191
|
}]
|
|
31193
31192
|
]) : Ye("", !0)
|
|
@@ -31217,7 +31216,7 @@ const _X = {
|
|
|
31217
31216
|
})), [
|
|
31218
31217
|
[W(n), {
|
|
31219
31218
|
content: "Cancel ",
|
|
31220
|
-
delay: [
|
|
31219
|
+
delay: [300, 0],
|
|
31221
31220
|
contentClass: ["extra-padding"]
|
|
31222
31221
|
}]
|
|
31223
31222
|
]),
|
|
@@ -31235,7 +31234,7 @@ const _X = {
|
|
|
31235
31234
|
_: 1
|
|
31236
31235
|
})), [
|
|
31237
31236
|
[W(n), {
|
|
31238
|
-
delay: [
|
|
31237
|
+
delay: [300, 0],
|
|
31239
31238
|
contentClass: ["extra-padding"],
|
|
31240
31239
|
content: "Confirm ",
|
|
31241
31240
|
theme: "warning"
|
|
@@ -31267,7 +31266,8 @@ const _X = {
|
|
|
31267
31266
|
content: e.option.description,
|
|
31268
31267
|
contentClass: ["extra-padding"],
|
|
31269
31268
|
theme: e.option.isDanger ? "warning" : "arbo",
|
|
31270
|
-
hideOnClick: !1
|
|
31269
|
+
hideOnClick: !1,
|
|
31270
|
+
delay: [300, 0]
|
|
31271
31271
|
// trigger: 'mouseenter focus',
|
|
31272
31272
|
}]
|
|
31273
31273
|
]);
|
|
@@ -35652,15 +35652,7 @@ const Rte = /* @__PURE__ */ ct({
|
|
|
35652
35652
|
const t = e, n = bN(), { sorts: o } = es(n), s = j(() => {
|
|
35653
35653
|
var l, u;
|
|
35654
35654
|
return ((u = (l = t.params) == null ? void 0 : l.column) == null ? void 0 : u.getColId()) || "template_col_id";
|
|
35655
|
-
})
|
|
35656
|
-
nt(
|
|
35657
|
-
() => t.params.context,
|
|
35658
|
-
() => {
|
|
35659
|
-
console.log("Context changed:", t.params.context);
|
|
35660
|
-
},
|
|
35661
|
-
{ deep: !0, immediate: !0 }
|
|
35662
|
-
);
|
|
35663
|
-
const i = (l) => {
|
|
35655
|
+
}), i = (l) => {
|
|
35664
35656
|
s.value && n.setSort(s.value, l);
|
|
35665
35657
|
}, r = j(() => t.params.headerType || void 0), a = L("none");
|
|
35666
35658
|
return nt(
|
|
@@ -35842,7 +35834,7 @@ const my = /* @__PURE__ */ Eu("userStore", () => {
|
|
|
35842
35834
|
);
|
|
35843
35835
|
const we = (ve) => {
|
|
35844
35836
|
var te;
|
|
35845
|
-
|
|
35837
|
+
F.value = (te = F.value) == null ? void 0 : te.filter((_e) => _e.id !== ve);
|
|
35846
35838
|
}, de = (ve) => {
|
|
35847
35839
|
var _e;
|
|
35848
35840
|
const te = Sn.getInstance().getItem("ws.code");
|
|
@@ -36227,7 +36219,7 @@ const my = /* @__PURE__ */ Eu("userStore", () => {
|
|
|
36227
36219
|
}
|
|
36228
36220
|
}, Z = (Q, G) => {
|
|
36229
36221
|
var re;
|
|
36230
|
-
G.stopImmediatePropagation(), G.preventDefault(), G.stopPropagation()
|
|
36222
|
+
G.stopImmediatePropagation(), G.preventDefault(), G.stopPropagation();
|
|
36231
36223
|
const q = Q.id;
|
|
36232
36224
|
c.value = q, (re = E.value) == null || re.focus(), S("update:modelValue", c.value), u();
|
|
36233
36225
|
}, B = async () => {
|
|
@@ -36328,7 +36320,7 @@ const my = /* @__PURE__ */ Eu("userStore", () => {
|
|
|
36328
36320
|
empty: Pne
|
|
36329
36321
|
}, kne = {
|
|
36330
36322
|
$style: Ane
|
|
36331
|
-
}, One = /* @__PURE__ */ _t(Fne, [["__cssModules", kne], ["__scopeId", "data-v-
|
|
36323
|
+
}, One = /* @__PURE__ */ _t(Fne, [["__cssModules", kne], ["__scopeId", "data-v-38b31f5c"]]), Mne = /* @__PURE__ */ ct({
|
|
36332
36324
|
__name: "CreateNewScene",
|
|
36333
36325
|
emits: ["create-new-item", "focus-on-id", "search-for-code"],
|
|
36334
36326
|
setup(e, { expose: t, emit: n }) {
|
|
@@ -36497,7 +36489,7 @@ const my = /* @__PURE__ */ Eu("userStore", () => {
|
|
|
36497
36489
|
}
|
|
36498
36490
|
try {
|
|
36499
36491
|
const $t = await p.value.addNewItem(r, a, N), gn = c.name;
|
|
36500
|
-
if (U($t.id, $t.name, $t.code),
|
|
36492
|
+
if (U($t.id, $t.name, $t.code), !$t.id)
|
|
36501
36493
|
throw new Error("Invalid response from server: missing scene ID");
|
|
36502
36494
|
switch (k) {
|
|
36503
36495
|
case "close":
|
|
@@ -42344,7 +42336,7 @@ class mC {
|
|
|
42344
42336
|
var n, o, s, i, r;
|
|
42345
42337
|
const t = document.createElement("div");
|
|
42346
42338
|
return (n = this.params) != null && n.height && t.style.setProperty("--height", (o = this.params) == null ? void 0 : o.height), (s = this.params) != null && s.width ? t.style.setProperty("--width", (i = this.params) == null ? void 0 : i.width) : (r = this.params) != null && r.fullwidth ? t.style.setProperty("--width", "100%") : t.style.setProperty("--width", `${Math.floor(Math.random() * 50) + 50}%`), t.className = "ag-cell-skeleton", t.addEventListener("click", (a) => {
|
|
42347
|
-
|
|
42339
|
+
a.preventDefault(), a.stopPropagation(), a.stopImmediatePropagation();
|
|
42348
42340
|
}), this.eGui = t, t;
|
|
42349
42341
|
}
|
|
42350
42342
|
refresh(t) {
|
|
@@ -84010,7 +84002,7 @@ class AB extends Z_e {
|
|
|
84010
84002
|
params: {
|
|
84011
84003
|
status_ed: 1,
|
|
84012
84004
|
include: "metric_type",
|
|
84013
|
-
|
|
84005
|
+
entity_id: n,
|
|
84014
84006
|
include_permission: 1,
|
|
84015
84007
|
per_page: i || 100,
|
|
84016
84008
|
page: o || 1,
|
|
@@ -85737,7 +85729,7 @@ const sRe = {
|
|
|
85737
85729
|
"beta-tag": "_beta-tag_1lefh_57"
|
|
85738
85730
|
}, TRe = {
|
|
85739
85731
|
$style: DRe
|
|
85740
|
-
}, xRe = /* @__PURE__ */ _t(CRe, [["__cssModules", TRe]]), kB = "0.
|
|
85732
|
+
}, xRe = /* @__PURE__ */ _t(CRe, [["__cssModules", TRe]]), kB = "0.1.2", FRe = { key: 0 }, IRe = /* @__PURE__ */ ct({
|
|
85741
85733
|
__name: "app",
|
|
85742
85734
|
setup(e) {
|
|
85743
85735
|
const t = j(() => n.id.length === 0 || n.workspaceId.length === 0), n = ti({
|