@parallelworks/ui 0.84.2 → 0.85.0

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.
@@ -11,6 +11,10 @@ var PRIORITY_SHOW_CLASS = {
11
11
  function stacks(col, i) {
12
12
  return i > 0 && !col.priority && col.stack !== false;
13
13
  }
14
+ /** Whether a column is always shown and kept out of the column picker. */
15
+ function isLocked(col) {
16
+ return Boolean(col.alwaysVisible || col.locked);
17
+ }
14
18
  function columnResponsiveClass(col, i) {
15
19
  if (stacks(col, i)) return PRIORITY_SHOW_CLASS.medium;
16
20
  return col.priority ? PRIORITY_SHOW_CLASS[col.priority] : "";
@@ -55,7 +59,7 @@ function useListView({ storageKey, sharedFiltersKey, columns, groupBys = [], def
55
59
  ]);
56
60
  const defaultGroupByValue = defaultGroupBy ?? groupBys[0]?.value ?? "";
57
61
  const defaultOrderByValue = isFavorite ? DEFAULT_ORDER : defaultOrderBy ?? orderBys[0]?.value ?? "";
58
- const defaultHiddenKeys = useMemo(() => columns.filter((c) => c.defaultHidden && !c.alwaysVisible).map((c) => c.key), [columns]);
62
+ const defaultHiddenKeys = useMemo(() => columns.filter((c) => c.defaultHidden && !isLocked(c)).map((c) => c.key), [columns]);
59
63
  const defaultPinnedKeys = useMemo(() => actions.filter((a) => a.defaultPinned).map((a) => a.key), [actions]);
60
64
  const [hiddenKeys, setHiddenKeys] = usePersistedState(`${storageKey}:hiddenColumns`, defaultHiddenKeys);
61
65
  const [pinnedKeys, setPinnedKeys] = usePersistedState(`${storageKey}:pinnedActions`, defaultPinnedKeys);
@@ -84,11 +88,13 @@ function useListView({ storageKey, sharedFiltersKey, columns, groupBys = [], def
84
88
  const actionsWidth = effectiveShowActions ? actionsColumnWidth(pinnedCount) : 0;
85
89
  const isVisible = useCallback((key) => {
86
90
  const col = columns.find((c) => c.key === key);
87
- return Boolean(col?.alwaysVisible) || !hiddenKeys.includes(key);
91
+ return col !== void 0 && isLocked(col) || !hiddenKeys.includes(key);
88
92
  }, [columns, hiddenKeys]);
89
- const visibleColumns = useMemo(() => columns.filter((c) => !c.inline && (c.alwaysVisible || !hiddenKeys.includes(c.key))), [columns, hiddenKeys]);
93
+ const visibleColumns = useMemo(() => columns.filter((c) => !c.inline && (isLocked(c) || !hiddenKeys.includes(c.key))), [columns, hiddenKeys]);
90
94
  const columnClasses = useMemo(() => visibleColumns.map(columnClass), [visibleColumns]);
91
95
  const columnStacks = useMemo(() => visibleColumns.map(stacks), [visibleColumns]);
96
+ const last = visibleColumns.at(-1);
97
+ const lastColumnLocked = visibleColumns.length > 1 && last !== void 0 && !last.alwaysVisible && isLocked(last);
92
98
  const toggleColumn = useCallback((key) => setHiddenKeys((prev) => prev.includes(key) ? prev.filter((k) => k !== key) : [...prev, key]), [setHiddenKeys]);
93
99
  const { add, update, remove } = filterState;
94
100
  const setFacetValues = useCallback((key, values) => {
@@ -183,6 +189,7 @@ function useListView({ storageKey, sharedFiltersKey, columns, groupBys = [], def
183
189
  visibleColumns,
184
190
  columnClasses,
185
191
  columnStacks,
192
+ lastColumnLocked,
186
193
  isVisible,
187
194
  pinnedCount,
188
195
  actionsWidth,
@@ -230,4 +237,4 @@ function facetField(facet) {
230
237
  };
231
238
  }
232
239
  //#endregion
233
- export { DEFAULT_ORDER, FAVORITE_ORDER, useListView };
240
+ export { DEFAULT_ORDER, FAVORITE_ORDER, isLocked, useListView };