@open-mercato/ui 0.8.1-develop.7274.1.21a0083828 → 0.8.1-develop.7294.1.0ef99fc518
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/backend/DataTable.js +30 -11
- package/dist/backend/DataTable.js.map +2 -2
- package/dist/backend/detail/InlineEditors.js +10 -6
- package/dist/backend/detail/InlineEditors.js.map +2 -2
- package/dist/backend/inputs/PhoneNumberField.js +59 -5
- package/dist/backend/inputs/PhoneNumberField.js.map +2 -2
- package/dist/portal/PortalContext.js +2 -1
- package/dist/portal/PortalContext.js.map +2 -2
- package/dist/portal/hooks/useCustomerAuth.js +3 -4
- package/dist/portal/hooks/useCustomerAuth.js.map +2 -2
- package/package.json +3 -3
- package/src/backend/DataTable.tsx +72 -13
- package/src/backend/__tests__/DataTable.metaHiddenLateColumns.test.tsx +94 -4
- package/src/backend/__tests__/DataTable.saveViewApi.test.tsx +129 -1
- package/src/backend/detail/InlineEditors.tsx +18 -6
- package/src/backend/detail/__tests__/InlineEditors.test.tsx +52 -0
- package/src/backend/inputs/PhoneNumberField.tsx +121 -6
- package/src/backend/inputs/__tests__/PhoneNumberField.test.tsx +92 -1
- package/src/portal/PortalContext.tsx +2 -1
- package/src/portal/__tests__/logoutPageReload.test.tsx +118 -0
- package/src/portal/hooks/useCustomerAuth.ts +3 -4
|
@@ -867,10 +867,22 @@ function DataTable({
|
|
|
867
867
|
const [perspectiveApiMissing, setPerspectiveApiMissing] = React.useState(false);
|
|
868
868
|
const [viewBaseline, setViewBaselineState] = React.useState(() => mergedInitialSettings ?? {});
|
|
869
869
|
const viewBaselineInitializedRef = React.useRef(Boolean(mergedInitialSettings));
|
|
870
|
+
const autoHiddenVisibilityRef = React.useRef({});
|
|
870
871
|
const setViewBaseline = React.useCallback((settings) => {
|
|
871
872
|
const initialized = viewBaselineInitializedRef.current;
|
|
872
873
|
viewBaselineInitializedRef.current = true;
|
|
873
|
-
|
|
874
|
+
const autoHidden = autoHiddenVisibilityRef.current;
|
|
875
|
+
const next = Object.keys(autoHidden).length ? { ...settings, columnVisibility: { ...settings.columnVisibility ?? {}, ...autoHidden } } : settings;
|
|
876
|
+
setViewBaselineState((previous) => initialized && diffPerspectiveSettings(previous, next).length === 0 ? previous : next);
|
|
877
|
+
}, []);
|
|
878
|
+
const foldAutoHiddenIntoBaseline = React.useCallback((entries) => {
|
|
879
|
+
autoHiddenVisibilityRef.current = { ...autoHiddenVisibilityRef.current, ...entries };
|
|
880
|
+
if (!viewBaselineInitializedRef.current) return;
|
|
881
|
+
setViewBaselineState((previous) => {
|
|
882
|
+
const current = previous.columnVisibility ?? {};
|
|
883
|
+
if (Object.keys(entries).every((key) => key in current)) return previous;
|
|
884
|
+
return { ...previous, columnVisibility: { ...entries, ...current } };
|
|
885
|
+
});
|
|
874
886
|
}, []);
|
|
875
887
|
const perspectiveFeatureQuery = useQuery({
|
|
876
888
|
queryKey: ["feature-check", "perspectives"],
|
|
@@ -1290,26 +1302,30 @@ function DataTable({
|
|
|
1290
1302
|
return changed ? filtered : prev;
|
|
1291
1303
|
});
|
|
1292
1304
|
}, [table, mergedColumns]);
|
|
1293
|
-
const
|
|
1294
|
-
|
|
1305
|
+
const visibilityDecidedColumnIds = React.useRef(
|
|
1306
|
+
new Set(Object.keys(mergedInitialSettings?.columnVisibility ?? {}))
|
|
1307
|
+
);
|
|
1308
|
+
const [visibilityDefaultsPass, setVisibilityDefaultsPass] = React.useState(0);
|
|
1295
1309
|
React.useEffect(() => {
|
|
1296
|
-
if (visibilitySeededByStoredSettings.current) return;
|
|
1297
1310
|
const hidden = {};
|
|
1298
1311
|
table.getAllLeafColumns().forEach((column) => {
|
|
1312
|
+
if (visibilityDecidedColumnIds.current.has(column.id)) return;
|
|
1299
1313
|
const hiddenMeta = column.columnDef?.meta?.hidden;
|
|
1300
|
-
if (!hiddenMeta
|
|
1314
|
+
if (!hiddenMeta) return;
|
|
1315
|
+
visibilityDecidedColumnIds.current.add(column.id);
|
|
1301
1316
|
hidden[column.id] = false;
|
|
1302
|
-
autoHiddenColumnIds.current.add(column.id);
|
|
1303
1317
|
});
|
|
1304
1318
|
if (!Object.keys(hidden).length) return;
|
|
1305
1319
|
setColumnVisibility((prev) => ({ ...hidden, ...prev }));
|
|
1306
|
-
|
|
1320
|
+
foldAutoHiddenIntoBaseline(hidden);
|
|
1321
|
+
}, [table, mergedColumns, visibilityDefaultsPass, foldAutoHiddenIntoBaseline]);
|
|
1307
1322
|
const getCurrentSettings = React.useCallback(() => {
|
|
1308
1323
|
const visibility = {};
|
|
1309
1324
|
for (const [key, value] of Object.entries(columnVisibility)) {
|
|
1310
|
-
if (typeof
|
|
1311
|
-
|
|
1312
|
-
|
|
1325
|
+
if (typeof value === "boolean") visibility[key] = value;
|
|
1326
|
+
}
|
|
1327
|
+
for (const column of table.getAllLeafColumns()) {
|
|
1328
|
+
visibility[column.id] = column.getIsVisible();
|
|
1313
1329
|
}
|
|
1314
1330
|
let filtersPayload;
|
|
1315
1331
|
if (advancedFilter) {
|
|
@@ -1331,9 +1347,10 @@ function DataTable({
|
|
|
1331
1347
|
searchValue
|
|
1332
1348
|
};
|
|
1333
1349
|
return sanitizePerspectiveSettings(candidate) ?? {};
|
|
1334
|
-
}, [columnOrder, columnVisibility, columnSizing, sorting, filterValues, searchValue, advancedFilter]);
|
|
1350
|
+
}, [table, columnOrder, columnVisibility, columnSizing, sorting, filterValues, searchValue, advancedFilter]);
|
|
1335
1351
|
const applyPerspectiveSettings = React.useCallback((settings, nextId, options) => {
|
|
1336
1352
|
const normalized = sanitizePerspectiveSettings(settings) ?? {};
|
|
1353
|
+
autoHiddenVisibilityRef.current = {};
|
|
1337
1354
|
setViewBaseline(
|
|
1338
1355
|
options?.preserveAdvancedFilter ? { ...normalized, filters: getCurrentSettings().filters } : normalized
|
|
1339
1356
|
);
|
|
@@ -1343,6 +1360,8 @@ function DataTable({
|
|
|
1343
1360
|
const ids = table.getAllLeafColumns().map((column) => column.id);
|
|
1344
1361
|
if (ids.length) setColumnOrder(ids);
|
|
1345
1362
|
}
|
|
1363
|
+
visibilityDecidedColumnIds.current = new Set(Object.keys(normalized.columnVisibility ?? {}));
|
|
1364
|
+
setVisibilityDefaultsPass((pass) => pass + 1);
|
|
1346
1365
|
if (normalized.columnVisibility) setColumnVisibility(normalized.columnVisibility);
|
|
1347
1366
|
else setColumnVisibility({});
|
|
1348
1367
|
if (normalized.sorting) {
|