@multiplatform.one/frappe-ui 7.34.0 → 7.34.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.
Files changed (65) hide show
  1. package/dist/cjs/fields/Barcode/index.cjs +2 -1
  2. package/dist/cjs/fields/Barcode/index.native.js +2 -1
  3. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  4. package/dist/cjs/fields/Date/catalog.cjs +139 -0
  5. package/dist/cjs/fields/Date/catalog.native.js +165 -0
  6. package/dist/cjs/fields/Date/catalog.native.js.map +1 -0
  7. package/dist/cjs/fields/Date/dateTimePickerLoader.cjs +38 -0
  8. package/dist/cjs/fields/Date/dateTimePickerLoader.native.js +42 -0
  9. package/dist/cjs/fields/Date/dateTimePickerLoader.native.js.map +1 -0
  10. package/dist/cjs/fields/Date/index.cjs +2 -113
  11. package/dist/cjs/fields/Date/index.native.js +19 -15
  12. package/dist/cjs/fields/Date/index.native.js.map +1 -1
  13. package/dist/esm/fields/Barcode/index.mjs +2 -1
  14. package/dist/esm/fields/Barcode/index.mjs.map +1 -1
  15. package/dist/esm/fields/Barcode/index.native.js +2 -1
  16. package/dist/esm/fields/Barcode/index.native.js.map +1 -1
  17. package/dist/esm/fields/Date/catalog.mjs +114 -0
  18. package/dist/esm/fields/Date/catalog.mjs.map +1 -0
  19. package/dist/esm/fields/Date/catalog.native.js +137 -0
  20. package/dist/esm/fields/Date/catalog.native.js.map +1 -0
  21. package/dist/esm/fields/Date/dateTimePickerLoader.mjs +13 -0
  22. package/dist/esm/fields/Date/dateTimePickerLoader.mjs.map +1 -0
  23. package/dist/esm/fields/Date/dateTimePickerLoader.native.js +14 -0
  24. package/dist/esm/fields/Date/dateTimePickerLoader.native.js.map +1 -0
  25. package/dist/esm/fields/Date/index.mjs +1 -112
  26. package/dist/esm/fields/Date/index.mjs.map +1 -1
  27. package/dist/esm/fields/Date/index.native.js +17 -2
  28. package/dist/esm/fields/Date/index.native.js.map +1 -1
  29. package/dist/jsx/fields/Barcode/index.mjs +2 -1
  30. package/dist/jsx/fields/Barcode/index.mjs.map +1 -1
  31. package/dist/jsx/fields/Barcode/index.native.js +2 -1
  32. package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
  33. package/dist/jsx/fields/Date/catalog.mjs +114 -0
  34. package/dist/jsx/fields/Date/catalog.mjs.map +1 -0
  35. package/dist/jsx/fields/Date/catalog.native.js +165 -0
  36. package/dist/jsx/fields/Date/catalog.native.js.map +1 -0
  37. package/dist/jsx/fields/Date/dateTimePickerLoader.mjs +13 -0
  38. package/dist/jsx/fields/Date/dateTimePickerLoader.mjs.map +1 -0
  39. package/dist/jsx/fields/Date/dateTimePickerLoader.native.js +42 -0
  40. package/dist/jsx/fields/Date/dateTimePickerLoader.native.js.map +1 -0
  41. package/dist/jsx/fields/Date/index.mjs +1 -112
  42. package/dist/jsx/fields/Date/index.mjs.map +1 -1
  43. package/dist/jsx/fields/Date/index.native.js +19 -15
  44. package/dist/jsx/fields/Date/index.native.js.map +1 -1
  45. package/package.json +27 -27
  46. package/src/FrappeTable.infiniteLoadError.spec.tsx +118 -0
  47. package/src/desk/DeskSidebar.screen.spec.tsx +131 -0
  48. package/src/fields/Barcode/Barcode.adapter.spec.tsx +77 -0
  49. package/src/fields/Barcode/index.tsx +2 -1
  50. package/src/fields/Date/catalog.tsx +190 -0
  51. package/src/fields/Date/dateTimePickerLoader.ts +25 -0
  52. package/src/fields/Date/index.native.tsx +24 -3
  53. package/src/fields/Date/index.tsx +1 -188
  54. package/src/fields/Date/nativeFallback.spec.tsx +23 -0
  55. package/src/fields/Date/nativePresentation.spec.tsx +2 -2
  56. package/src/fields/Date/typeParity.spec.tsx +2 -2
  57. package/types/fields/Barcode/index.d.ts.map +1 -1
  58. package/types/fields/Date/catalog.d.ts +25 -0
  59. package/types/fields/Date/catalog.d.ts.map +1 -0
  60. package/types/fields/Date/dateTimePickerLoader.d.ts +11 -0
  61. package/types/fields/Date/dateTimePickerLoader.d.ts.map +1 -0
  62. package/types/fields/Date/index.d.ts +1 -22
  63. package/types/fields/Date/index.d.ts.map +1 -1
  64. package/types/fields/Date/index.native.d.ts +2 -7
  65. package/types/fields/Date/index.native.d.ts.map +1 -1
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
 
3
- var __create = Object.create;
4
3
  var __defProp = Object.defineProperty;
5
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
7
  var __export = (target, all) => {
10
8
  for (var name in all) __defProp(target, name, {
@@ -21,15 +19,6 @@ var __copyProps = (to, from, except, desc) => {
21
19
  }
22
20
  return to;
23
21
  };
24
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
- // If the importer is in node compatibility mode or this is not an ESM
26
- // file that has been converted to a CommonJS file using a Babel-
27
- // compatible transform (i.e. "__esModule" has not been set), then set
28
- // "default" to the CommonJS "module.exports" for node compatibility.
29
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
- value: mod,
31
- enumerable: true
32
- }) : target, mod));
33
22
  var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
23
  value: true
35
24
  }), mod);
@@ -45,9 +34,10 @@ var import_react = require("react");
45
34
  var import_react_native = require("react-native");
46
35
  var import_react_native_safe_area_context = require("react-native-safe-area-context");
47
36
  var import_platform = require("@multiplatform.one/platform");
48
- var import_datetimepicker = __toESM(require("@react-native-community/datetimepicker"));
49
37
  var import_tamagui = require("tamagui");
50
38
  var import_useKeyboardInset = require("../../shared/useKeyboardInset.native.js");
39
+ var import_catalog = require("./catalog.native.js");
40
+ var import_dateTimePickerLoader = require("./dateTimePickerLoader.native.js");
51
41
  var import_sheetKeyboard = require("./sheetKeyboard.native.js");
52
42
  var import_wire = require("./wire.native.js");
53
43
  function _instanceof(left, right) {
@@ -94,7 +84,11 @@ function useNativePickerScheme() {
94
84
  if (themeName) return String(themeName).startsWith("dark") ? "dark" : "light";
95
85
  return osScheme === "dark" ? "dark" : "light";
96
86
  }
97
- function DateField(props) {
87
+ function OsDateField(param) {
88
+ var {
89
+ DateTimePicker,
90
+ ...props
91
+ } = param;
98
92
  var _ref, _ref1;
99
93
  var _theme_accentBackground, _useContext;
100
94
  var {
@@ -225,7 +219,7 @@ function DateField(props) {
225
219
  children: displayValue || resolvedPlaceholder
226
220
  })
227
221
  }), /* Android: the Material dialog is its own window. */
228
- showPicker && !isIOS && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_datetimepicker.default, {
222
+ showPicker && !isIOS && /* @__PURE__ */(0, import_jsx_runtime.jsx)(DateTimePicker, {
229
223
  value: tempDate || seed,
230
224
  mode: pickerMode,
231
225
  display: "default",
@@ -309,7 +303,7 @@ function DateField(props) {
309
303
  ...knobProps.panelPadding,
310
304
  flexShrink: 1,
311
305
  minHeight: 0,
312
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_datetimepicker.default, {
306
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(DateTimePicker, {
313
307
  value: tempDate || seed,
314
308
  mode: pickerMode,
315
309
  display: iosDisplay,
@@ -384,4 +378,14 @@ function DateField(props) {
384
378
  }
385
379
  });
386
380
  }
381
+ function DateField(props) {
382
+ var DateTimePicker = (0, import_dateTimePickerLoader.loadDateTimePicker)();
383
+ if (!DateTimePicker) return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_catalog.Date, {
384
+ ...props
385
+ });
386
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(OsDateField, {
387
+ ...props,
388
+ DateTimePicker
389
+ });
390
+ }
387
391
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["index_native_exports","__export","Date","DateField","module","exports","__toCommonJS","import_jsx_runtime","require","import_theme","import_forms","import_react","import_react_native","import_react_native_safe_area_context","import_platform","import_datetimepicker","__toESM","import_tamagui","import_useKeyboardInset","import_sheetKeyboard","import_wire","_instanceof","left","right","Symbol","hasInstance","formatDisplayValue","value","type","date","fromFrappeDateValue","formatTimeOfDay","formatAbsoluteDateTime","year","formatAbsoluteDate","unused","toWireValue","raw","Number","isNaN","getTime","toFrappeDateValue","String","seedDate","wire","parsed","useNativePickerScheme","themeName","useThemeName","osScheme","useColorScheme","startsWith","props","_ref","_ref1","_theme_accentBackground","_useContext","compact","defaultValue","disabled","error","errorProp","form","helperText","id","idProp","inputProps","_inputProps","label","labelProps","maxDate","minDate","mode","name","onBlur","onChange","placeholder","preserveValue","readOnly","required","size","skeleton","validators","useProps","resolvedForm","knobProps","useFormField","resolvedValidators","useResolvedValidators","themeVariant","theme","useTheme","accentColor","accentBackground","val","keyboardInset","useKeyboardInset","height","windowHeight","useWindowDimensions","topInset","useContext","SafeAreaInsetsContext","top","initialWindowMetrics","insets","maxHeight","dateSheetMaxHeight","showPicker","setShowPicker","useState","showTimePicker","setShowTimePicker","tempDate","setTempDate","fieldType","isIOS","platform","isIos","sheetBottomPadding","dateSheetBottomPadding","pickerMode","iosDisplay","closePicker","renderControl","hasError","commit","blur","seed","displayValue","resolvedPlaceholder","emit","picked","openPicker","cancel","handleAndroidChange","event","selected","setTimeout","getFullYear","getMonth","getDate","getHours","getMinutes","handleIOSChange","_event","confirm","jsxs","YStack","gap","children","jsx","Button","onPress","justifyContent","sizeToken","borderRadius","borderColor","backgroundColor","Text","color","formCommonColors","text","muted","default","display","minimumDate","maximumDate","Modal","transparent","animationType","visible","onRequestClose","View","style","flex","paddingBottom","Pressable","StyleSheet","absoluteFill","pointerEvents","e","stopPropagation","elevatedSurface","borderBottomLeftRadius","borderBottomRightRadius","flexShrink","minHeight","XStack","panelPadding","chromeless","width","datePickerHeight","FieldLayout","Skeleton","variant","Field","field","resolvedError","getFieldError","state","mergeFieldHandler"],"sources":["../../../../src/fields/Date/index.native.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["index_native_exports","__export","Date","DateField","module","exports","__toCommonJS","import_jsx_runtime","require","import_theme","import_forms","import_react","import_react_native","import_react_native_safe_area_context","import_platform","import_tamagui","import_useKeyboardInset","import_catalog","import_dateTimePickerLoader","import_sheetKeyboard","import_wire","_instanceof","left","right","Symbol","hasInstance","formatDisplayValue","value","type","date","fromFrappeDateValue","formatTimeOfDay","formatAbsoluteDateTime","year","formatAbsoluteDate","unused","toWireValue","raw","Number","isNaN","getTime","toFrappeDateValue","String","seedDate","wire","parsed","useNativePickerScheme","themeName","useThemeName","osScheme","useColorScheme","startsWith","OsDateField","param","DateTimePicker","props","_ref","_ref1","_theme_accentBackground","_useContext","compact","defaultValue","disabled","error","errorProp","form","helperText","id","idProp","inputProps","_inputProps","label","labelProps","maxDate","minDate","mode","name","onBlur","onChange","placeholder","preserveValue","readOnly","required","size","skeleton","validators","useProps","resolvedForm","knobProps","useFormField","resolvedValidators","useResolvedValidators","themeVariant","theme","useTheme","accentColor","accentBackground","val","keyboardInset","useKeyboardInset","height","windowHeight","useWindowDimensions","topInset","useContext","SafeAreaInsetsContext","top","initialWindowMetrics","insets","maxHeight","dateSheetMaxHeight","showPicker","setShowPicker","useState","showTimePicker","setShowTimePicker","tempDate","setTempDate","fieldType","isIOS","platform","isIos","sheetBottomPadding","dateSheetBottomPadding","pickerMode","iosDisplay","closePicker","renderControl","hasError","commit","blur","seed","displayValue","resolvedPlaceholder","emit","picked","openPicker","cancel","handleAndroidChange","event","selected","setTimeout","getFullYear","getMonth","getDate","getHours","getMinutes","handleIOSChange","_event","confirm","jsxs","YStack","gap","children","jsx","Button","onPress","justifyContent","sizeToken","borderRadius","borderColor","backgroundColor","Text","color","formCommonColors","text","muted","display","minimumDate","maximumDate","Modal","transparent","animationType","visible","onRequestClose","View","style","flex","paddingBottom","Pressable","StyleSheet","absoluteFill","pointerEvents","e","stopPropagation","elevatedSurface","borderBottomLeftRadius","borderBottomRightRadius","flexShrink","minHeight","XStack","panelPadding","chromeless","width","datePickerHeight","FieldLayout","Skeleton","variant","Field","field","resolvedError","getFieldError","state","mergeFieldHandler","loadDateTimePicker"],"sources":["../../../../src/fields/Date/index.native.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/frappe-ui",
3
- "version": "7.34.0",
3
+ "version": "7.34.2",
4
4
  "description": "Pre-wired Tamagui components for Frappe doctypes with live data",
5
5
  "keywords": [
6
6
  "cross-platform",
@@ -72,42 +72,42 @@
72
72
  "access": "public"
73
73
  },
74
74
  "dependencies": {
75
- "@multiplatform.one/components": "7.34.0",
76
- "@multiplatform.one/desktop": "7.34.0",
77
- "@multiplatform.one/forms": "7.34.0",
78
- "@multiplatform.one/frappe": "7.34.0",
79
- "@multiplatform.one/i18n": "7.34.0",
80
- "@multiplatform.one/markdown": "7.34.0",
81
- "@multiplatform.one/platform": "7.34.0",
82
- "@multiplatform.one/rich-text": "7.34.0",
83
- "@multiplatform.one/router": "7.34.0",
84
- "@multiplatform.one/store": "7.34.0",
85
- "@multiplatform.one/table": "7.34.0",
86
- "@multiplatform.one/theme": "7.34.0",
75
+ "@multiplatform.one/components": "7.34.2",
76
+ "@multiplatform.one/desktop": "7.34.2",
77
+ "@multiplatform.one/forms": "7.34.2",
78
+ "@multiplatform.one/frappe": "7.34.2",
79
+ "@multiplatform.one/i18n": "7.34.2",
80
+ "@multiplatform.one/markdown": "7.34.2",
81
+ "@multiplatform.one/platform": "7.34.2",
82
+ "@multiplatform.one/rich-text": "7.34.2",
83
+ "@multiplatform.one/router": "7.34.2",
84
+ "@multiplatform.one/store": "7.34.2",
85
+ "@multiplatform.one/table": "7.34.2",
86
+ "@multiplatform.one/theme": "7.34.2",
87
87
  "@phosphor-icons/react": "^2.1.10",
88
88
  "@tamagui/colors": "2.7.6",
89
89
  "@tanstack/db": "0.8.0",
90
- "@tanstack/form-core": "^1.29.1",
90
+ "@tanstack/form-core": "^1.33.5",
91
91
  "@tanstack/react-hotkeys": "^0.5.1",
92
- "@tiptap/extension-image": "^3.30.0",
93
- "@tiptap/extension-link": "^3.30.0",
94
- "@tiptap/extension-placeholder": "^3.30.0",
95
- "@tiptap/pm": "^3.30.0",
96
- "@tiptap/react": "^3.30.0",
97
- "@tiptap/starter-kit": "^3.30.0",
92
+ "@tiptap/extension-image": "^3.32.0",
93
+ "@tiptap/extension-link": "^3.32.0",
94
+ "@tiptap/extension-placeholder": "^3.32.0",
95
+ "@tiptap/pm": "^3.32.0",
96
+ "@tiptap/react": "^3.32.0",
97
+ "@tiptap/starter-kit": "^3.32.0",
98
98
  "html5-qrcode": "^2.3.8",
99
- "signature_pad": "^5.1.3",
99
+ "signature_pad": "^5.1.4",
100
100
  "tamagui": "2.7.6"
101
101
  },
102
102
  "devDependencies": {
103
- "@multiplatform.one/config": "7.34.0",
104
- "@multiplatform.one/storybook": "7.34.0",
105
- "@multiplatform.one/test-utils": "7.34.0",
103
+ "@multiplatform.one/config": "7.34.2",
104
+ "@multiplatform.one/storybook": "7.34.2",
105
+ "@multiplatform.one/test-utils": "7.34.2",
106
106
  "@tamagui/build": "2.7.6",
107
- "@testing-library/jest-dom": "^6.9.1",
108
- "@testing-library/react": "^16.3.2",
107
+ "@testing-library/jest-dom": "^7.0.1",
108
+ "@testing-library/react": "^16.3.3",
109
109
  "@types/react-dom": "^19.2.3",
110
- "@vitejs/plugin-react": "^6.0.1",
110
+ "@vitejs/plugin-react": "^6.1.2",
111
111
  "@vitest/coverage-v8": "^4.1.5",
112
112
  "i18next": "^25.10.10",
113
113
  "react": "19.2.5",
@@ -0,0 +1,118 @@
1
+ // MPO-485 / LC-84: infinite serverSide hands loading and empty chrome to
2
+ // DataTable, whose page loader swallowed a rejected page 0. A list whose read
3
+ // failed said "No data available". A failed read is an error with the
4
+ // server's reason and a Retry, and Retry loads the rows once the bench answers.
5
+ import type { DataTableColumn } from "@multiplatform.one/table";
6
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
7
+ import { cleanup, screen, waitFor } from "@testing-library/react";
8
+ import userEvent from "@testing-library/user-event";
9
+ import i18next from "i18next";
10
+ import { initReactI18next } from "react-i18next";
11
+ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
12
+ import { FrappeProvider } from "./FrappeProvider";
13
+ import { FrappeTable } from "./FrappeTable";
14
+
15
+ const doctype = "Pokemon";
16
+
17
+ interface Pokemon {
18
+ name: string;
19
+ doctype: string;
20
+ pokemon_name: string;
21
+ }
22
+
23
+ const columns: DataTableColumn<Partial<Pokemon>>[] = [
24
+ { id: "name", accessorKey: "name", header: "ID" },
25
+ { id: "pokemon_name", accessorKey: "pokemon_name", header: "Pokemon Name" },
26
+ ];
27
+
28
+ const filterFields = [{ id: "pokemon_name", label: "Pokemon Name", type: "text" as const }];
29
+ const readOnly = { create: false, write: false, delete: false };
30
+ const settle = { timeout: 8000 };
31
+
32
+ let run = 0;
33
+ let failing: "count" | "rows" | null = null;
34
+
35
+ function json(body: unknown, status = 200) {
36
+ return new Response(JSON.stringify(body), {
37
+ status,
38
+ headers: { "content-type": "application/json" },
39
+ });
40
+ }
41
+
42
+ beforeAll(async () => {
43
+ await i18next.use(initReactI18next).init({
44
+ lng: "en",
45
+ interpolation: { escapeValue: false },
46
+ resources: { en: { translation: {} } },
47
+ });
48
+ });
49
+
50
+ beforeEach(() => {
51
+ run += 1;
52
+ failing = null;
53
+ vi.stubGlobal("fetch", async (input: string | URL | Request) => {
54
+ const url = new URL(String(input instanceof Request ? input.url : input));
55
+ if (url.pathname === "/api/method/frappe.client.get_count") {
56
+ return failing === "count"
57
+ ? json({ exc_type: "ValidationError", exception: "Count timed out" }, 417)
58
+ : json({ message: 2 });
59
+ }
60
+ if (url.pathname === `/api/resource/${doctype}`) {
61
+ if (failing === "rows") {
62
+ return json({ exc_type: "ValidationError", exception: "Pokemon is being migrated" }, 417);
63
+ }
64
+ return json({
65
+ data: [
66
+ { name: "bulbasaur", pokemon_name: "Bulbasaur" },
67
+ { name: "ivysaur", pokemon_name: "Ivysaur" },
68
+ ],
69
+ });
70
+ }
71
+ return json({ exc_type: "PermissionError" }, 403);
72
+ });
73
+ });
74
+
75
+ afterEach(() => {
76
+ cleanup();
77
+ vi.unstubAllGlobals();
78
+ });
79
+
80
+ function renderTable() {
81
+ return renderWithProviders(
82
+ <FrappeProvider baseURL={`https://infinite-load-error-${run}.spec.test`} realtime={false}>
83
+ <FrappeTable<Pokemon>
84
+ doctype={doctype}
85
+ columns={columns}
86
+ filterableFields={filterFields}
87
+ rights={readOnly}
88
+ serverSide
89
+ enablePagination
90
+ paginationMode="infinite"
91
+ />
92
+ </FrappeProvider>,
93
+ );
94
+ }
95
+
96
+ describe("FrappeTable infinite server mode with a failed read", () => {
97
+ it("shows the server's reason with Retry when get_count answers 417", async () => {
98
+ failing = "count";
99
+ renderTable();
100
+ await waitFor(() => expect(screen.getByText(/Count timed out/)).toBeTruthy(), settle);
101
+ expect(screen.getByText("Retry")).toBeTruthy();
102
+ expect(screen.queryByText("No data available")).toBeNull();
103
+ expect(screen.queryByText("Bulbasaur")).toBeNull();
104
+ });
105
+
106
+ it("shows the server's reason when the /api/resource read fails, and Retry loads the rows", async () => {
107
+ failing = "rows";
108
+ const user = userEvent.setup();
109
+ renderTable();
110
+ await waitFor(() => expect(screen.getByText(/Pokemon is being migrated/)).toBeTruthy(), settle);
111
+ expect(screen.queryByText("No data available")).toBeNull();
112
+
113
+ failing = null;
114
+ await user.click(screen.getByText("Retry"));
115
+ await waitFor(() => expect(screen.getByText("Bulbasaur")).toBeTruthy(), settle);
116
+ expect(screen.queryByText(/Pokemon is being migrated/)).toBeNull();
117
+ });
118
+ });
@@ -0,0 +1,131 @@
1
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
2
+ import { cleanup, fireEvent, screen, waitFor, within } from "@testing-library/react";
3
+ import i18next from "i18next";
4
+ import { initReactI18next } from "react-i18next";
5
+ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
6
+ import { FrappeProvider } from "../FrappeProvider";
7
+ import { DeskSidebar } from "./DeskSidebar";
8
+
9
+ const mockUseDocTypeSearch = vi.fn();
10
+ const stored = new Map<string, string>();
11
+
12
+ vi.mock("@multiplatform.one/frappe", async (importOriginal) => {
13
+ const actual = await importOriginal<Record<string, unknown>>();
14
+ return {
15
+ ...actual,
16
+ useDocTypeSearch: (...args: unknown[]) => mockUseDocTypeSearch(...args),
17
+ };
18
+ });
19
+
20
+ vi.mock("@multiplatform.one/store", async (importOriginal) => {
21
+ const actual = await importOriginal<Record<string, unknown>>();
22
+ return {
23
+ ...actual,
24
+ storage: {
25
+ getItem: (key: string) => stored.get(key) ?? null,
26
+ setItem: (key: string, value: string) => {
27
+ stored.set(key, value);
28
+ },
29
+ removeItem: (key: string) => {
30
+ stored.delete(key);
31
+ },
32
+ },
33
+ };
34
+ });
35
+
36
+ beforeAll(async () => {
37
+ await i18next.use(initReactI18next).init({
38
+ lng: "en",
39
+ interpolation: { escapeValue: false },
40
+ resources: { en: { translation: {} } },
41
+ });
42
+ });
43
+
44
+ beforeEach(() => {
45
+ vi.clearAllMocks();
46
+ stored.clear();
47
+ mockUseDocTypeSearch.mockReturnValue({
48
+ results: [
49
+ { type: "list", doctype: "Todo", label: "Todo List" },
50
+ { type: "list", doctype: "Note", label: "Note List" },
51
+ { type: "new", doctype: "Todo", label: "New Todo" },
52
+ { type: "list", doctype: "Todo", label: "Todo List" },
53
+ ],
54
+ });
55
+ });
56
+
57
+ afterEach(cleanup);
58
+
59
+ function renderSidebar(props: Parameters<typeof DeskSidebar>[0] = {}) {
60
+ return renderWithProviders(
61
+ <FrappeProvider baseURL="https://bench.example.com">
62
+ <DeskSidebar {...props} />
63
+ </FrappeProvider>,
64
+ );
65
+ }
66
+
67
+ function section(title: string): HTMLElement {
68
+ const heading = screen.getByText(title);
69
+ const group = heading.closest('[role="group"]');
70
+ expect(group, `${title} section`).not.toBeNull();
71
+ return group as HTMLElement;
72
+ }
73
+
74
+ describe("DeskSidebar (MPO-415)", () => {
75
+ it("lists every searchable DocType once, sorted, under Modules", () => {
76
+ renderSidebar();
77
+ const modules = section("Modules");
78
+ const todo = within(modules).getAllByText("Todo");
79
+ expect(todo).toHaveLength(1);
80
+ const note = within(modules).getByText("Note");
81
+ expect(note.compareDocumentPosition(todo[0]) & Node.DOCUMENT_POSITION_FOLLOWING).toBeTruthy();
82
+ expect(within(modules).queryByText("New Todo")).toBeNull();
83
+ });
84
+
85
+ it("asks the DocType search for the full list with the provider's connection", () => {
86
+ renderSidebar();
87
+ const [config, query] = mockUseDocTypeSearch.mock.calls[0] as [{ baseURL: string }, string];
88
+ expect(config.baseURL).toBe("https://bench.example.com");
89
+ expect(query).toBe(" ");
90
+ });
91
+
92
+ it("navigates to the module's desk path and marks the active one", () => {
93
+ const onNavigate = vi.fn();
94
+ renderSidebar({ onNavigate, activePath: "/app/Note", basePath: "/app" });
95
+ const modules = section("Modules");
96
+ fireEvent.click(within(modules).getByText("Todo"));
97
+ expect(onNavigate).toHaveBeenCalledWith("/app/Todo");
98
+ expect(modules.querySelector('[aria-current="page"]')?.textContent).toContain("Note");
99
+ });
100
+
101
+ it("reads Recent and Favorites from shared storage, above Modules", async () => {
102
+ stored.set(
103
+ "frappe-desk-recent",
104
+ JSON.stringify([{ label: "TODO-0001", path: "/desk/Todo/TODO-0001" }]),
105
+ );
106
+ stored.set(
107
+ "frappe-desk-favorites",
108
+ JSON.stringify([{ label: "Weekly notes", path: "/desk/Note/NOTE-7" }]),
109
+ );
110
+ const onNavigate = vi.fn();
111
+ renderSidebar({ onNavigate });
112
+ await waitFor(() => expect(screen.getByText("Recent")).toBeTruthy());
113
+ expect(within(section("Recent")).getByText("TODO-0001")).toBeTruthy();
114
+ expect(within(section("Favorites")).getByText("Weekly notes")).toBeTruthy();
115
+ const titles = ["Recent", "Favorites", "Modules"].map((title) => screen.getByText(title));
116
+ for (let i = 1; i < titles.length; i += 1) {
117
+ const order = titles[i - 1].compareDocumentPosition(titles[i]);
118
+ expect(order & Node.DOCUMENT_POSITION_FOLLOWING).toBeTruthy();
119
+ }
120
+ fireEvent.click(within(section("Favorites")).getByText("Weekly notes"));
121
+ expect(onNavigate).toHaveBeenCalledWith("/desk/Note/NOTE-7");
122
+ });
123
+
124
+ it("renders no section at all when storage is empty and the search finds nothing", () => {
125
+ mockUseDocTypeSearch.mockReturnValue({ results: [] });
126
+ renderSidebar();
127
+ expect(screen.queryByText("Modules")).toBeNull();
128
+ expect(screen.queryByText("Recent")).toBeNull();
129
+ expect(screen.queryByText("Favorites")).toBeNull();
130
+ });
131
+ });
@@ -0,0 +1,77 @@
1
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
2
+ import { cleanup, fireEvent } from "@testing-library/react";
3
+ import { useState } from "react";
4
+ import { afterEach, describe, expect, it, vi } from "vitest";
5
+ import { Barcode } from "./index";
6
+
7
+ afterEach(cleanup);
8
+
9
+ function input(container: HTMLElement): HTMLInputElement {
10
+ const el = container.querySelector("input");
11
+ expect(el).not.toBeNull();
12
+ return el as HTMLInputElement;
13
+ }
14
+
15
+ function ControlledBarcode({ onChange }: { onChange: (value: string) => void }) {
16
+ const [value, setValue] = useState("5901234123457");
17
+ return (
18
+ <Barcode
19
+ label="Barcode"
20
+ value={value}
21
+ onChange={(next) => {
22
+ setValue(next);
23
+ onChange(next);
24
+ }}
25
+ />
26
+ );
27
+ }
28
+
29
+ describe("frappe-ui Barcode adapter (MPO-415)", () => {
30
+ it("round-trips a typed value through onChange back into the field", () => {
31
+ const onChange = vi.fn();
32
+ const { container } = renderWithProviders(<ControlledBarcode onChange={onChange} />);
33
+ expect(input(container).value).toBe("5901234123457");
34
+ fireEvent.change(input(container), { target: { value: "SKU-001234" } });
35
+ expect(onChange).toHaveBeenLastCalledWith("SKU-001234");
36
+ expect(input(container).value).toBe("SKU-001234");
37
+ });
38
+
39
+ it("clears to an empty string", () => {
40
+ const onChange = vi.fn();
41
+ const { container } = renderWithProviders(<ControlledBarcode onChange={onChange} />);
42
+ const clear = container.querySelector("[aria-label='Clear barcode']");
43
+ expect(clear).not.toBeNull();
44
+ fireEvent.click(clear as Element);
45
+ expect(onChange).toHaveBeenLastCalledWith("");
46
+ expect(input(container).value).toBe("");
47
+ });
48
+
49
+ it("supplies its own barcode, scan and stop glyphs", () => {
50
+ const { container } = renderWithProviders(<Barcode label="Barcode" value="" enableScan />);
51
+ const scan = container.querySelector("[aria-label='Scan barcode']");
52
+ expect(scan).not.toBeNull();
53
+ expect(scan?.querySelector("svg")).not.toBeNull();
54
+ });
55
+
56
+ it("draws a Code 128 preview for the value by default", () => {
57
+ const { container } = renderWithProviders(<Barcode label="Barcode" value="SKU-001234" />);
58
+ expect(container.querySelector('[data-testid="barcode-preview"]')).not.toBeNull();
59
+ expect(container.querySelector('[data-testid="barcode-preview-qr"]')).toBeNull();
60
+ });
61
+
62
+ it("hands formats to the forms field, so a qrcode field draws a QR matrix", () => {
63
+ const { container } = renderWithProviders(
64
+ <Barcode label="QR" value="https://multiplatform.one" formats={["qrcode"]} />,
65
+ );
66
+ expect(container.querySelector('[data-testid="barcode-preview-qr"]')).not.toBeNull();
67
+ });
68
+
69
+ it("disabled and readOnly block editing", () => {
70
+ const disabled = renderWithProviders(<Barcode label="Barcode" value="A-1" disabled />);
71
+ expect(input(disabled.container).disabled).toBe(true);
72
+ cleanup();
73
+ const readOnly = renderWithProviders(<Barcode label="Barcode" value="A-1" readOnly />);
74
+ expect(readOnly.container.querySelector("[aria-label='Clear barcode']")).toBeNull();
75
+ expect(readOnly.container.querySelector("[aria-label='Scan barcode']")).toBeNull();
76
+ });
77
+ });
@@ -55,7 +55,7 @@ export function Barcode<
55
55
  disabled,
56
56
  value,
57
57
  enableScan,
58
- formats: _formats,
58
+ formats,
59
59
  ...fieldProps
60
60
  } = useProps(props);
61
61
 
@@ -80,6 +80,7 @@ export function Barcode<
80
80
  onBlur={onBlur}
81
81
  disabled={disabled}
82
82
  enableScan={enableScan}
83
+ formats={formats}
83
84
  barcodeIcon={<BarcodeIcon size={18} />}
84
85
  scanIcon={<CameraIcon size={18} />}
85
86
  stopIcon={<XIcon size={18} />}