@inventreedb/ui 0.11.3 → 1.4.1

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 (165) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/.vite/manifest.json +45 -5
  3. package/dist/_virtual/dynamic-import-helper.js +20 -0
  4. package/dist/_virtual/dynamic-import-helper.js.map +1 -0
  5. package/dist/components/Boundary.js +5 -4
  6. package/dist/components/Boundary.js.map +1 -1
  7. package/dist/components/InvenTreeTable.js +4 -3
  8. package/dist/components/InvenTreeTable.js.map +1 -1
  9. package/dist/components/RowActions.js +3 -2
  10. package/dist/components/RowActions.js.map +1 -1
  11. package/dist/components/TableColumnSelect.js +1 -1
  12. package/dist/components/TableColumnSelect.js.map +1 -1
  13. package/dist/components/TagsList.d.ts +3 -0
  14. package/dist/components/TagsList.js +21 -0
  15. package/dist/components/TagsList.js.map +1 -0
  16. package/dist/components/nav/DetailDrawer.d.ts +1 -0
  17. package/dist/components/nav/DetailDrawer.js +1 -0
  18. package/dist/components/nav/DetailDrawer.js.map +1 -1
  19. package/dist/enums/ApiEndpoints.d.ts +15 -4
  20. package/dist/enums/ApiEndpoints.js +15 -4
  21. package/dist/enums/ApiEndpoints.js.map +1 -1
  22. package/dist/enums/ModelInformation.d.ts +1 -0
  23. package/dist/enums/ModelInformation.js +55 -2
  24. package/dist/enums/ModelInformation.js.map +1 -1
  25. package/dist/enums/ModelType.d.ts +4 -1
  26. package/dist/enums/ModelType.js +3 -0
  27. package/dist/enums/ModelType.js.map +1 -1
  28. package/dist/enums/Roles.d.ts +1 -0
  29. package/dist/enums/Roles.js +1 -0
  30. package/dist/enums/Roles.js.map +1 -1
  31. package/dist/functions/Events.js +4 -3
  32. package/dist/functions/Events.js.map +1 -1
  33. package/dist/functions/Navigation.js +6 -3
  34. package/dist/functions/Navigation.js.map +1 -1
  35. package/dist/functions/Plugins.js +4 -2
  36. package/dist/functions/Plugins.js.map +1 -1
  37. package/dist/hooks/MonitorBackgroundTask.js +10 -8
  38. package/dist/hooks/MonitorBackgroundTask.js.map +1 -1
  39. package/dist/hooks/MonitorDataOutput.js +4 -3
  40. package/dist/hooks/MonitorDataOutput.js.map +1 -1
  41. package/dist/hooks/UseFilterSet.js +45 -7
  42. package/dist/hooks/UseFilterSet.js.map +1 -1
  43. package/dist/hooks/UseTable.js +1 -1
  44. package/dist/index.d.ts +6 -1
  45. package/dist/index.js +20 -11
  46. package/dist/index.js.map +1 -1
  47. package/dist/node_modules/@mantine/hooks/esm/use-debounced-value/use-debounced-value.js +40 -15
  48. package/dist/node_modules/@mantine/hooks/esm/use-debounced-value/use-debounced-value.js.map +1 -1
  49. package/dist/node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.js +1 -1
  50. package/dist/node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.js.map +1 -1
  51. package/dist/node_modules/@mantine/hooks/esm/use-local-storage/create-storage.js +57 -62
  52. package/dist/node_modules/@mantine/hooks/esm/use-local-storage/create-storage.js.map +1 -1
  53. package/dist/node_modules/@mantine/hooks/esm/use-local-storage/use-local-storage.js.map +1 -1
  54. package/dist/node_modules/@mantine/hooks/esm/use-window-event/use-window-event.js +5 -3
  55. package/dist/node_modules/@mantine/hooks/esm/use-window-event/use-window-event.js.map +1 -1
  56. package/dist/node_modules/@mantine/hooks/esm/utils/random-id/random-id.js.map +1 -1
  57. package/dist/node_modules/@remix-run/router/dist/router.js +10 -0
  58. package/dist/node_modules/@remix-run/router/dist/router.js.map +1 -1
  59. package/dist/node_modules/@sentry/browser/build/npm/esm/prod/report-dialog.js +2 -2
  60. package/dist/node_modules/@sentry/browser/build/npm/esm/prod/report-dialog.js.map +1 -1
  61. package/dist/node_modules/@sentry/core/build/esm/scope.js +6 -5
  62. package/dist/node_modules/@sentry/core/build/esm/scope.js.map +1 -1
  63. package/dist/node_modules/@sentry/core/build/esm/utils/chain-and-copy-promiselike.js +1 -1
  64. package/dist/node_modules/@sentry/core/build/esm/utils/chain-and-copy-promiselike.js.map +1 -1
  65. package/dist/node_modules/@sentry/core/build/esm/utils/is.js +1 -1
  66. package/dist/node_modules/@sentry/core/build/esm/utils/is.js.map +1 -1
  67. package/dist/node_modules/@sentry/core/build/esm/utils/misc.js +1 -1
  68. package/dist/node_modules/@sentry/core/build/esm/utils/misc.js.map +1 -1
  69. package/dist/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js +1 -1
  70. package/dist/node_modules/@sentry/core/build/esm/utils/randomSafeContext.js.map +1 -1
  71. package/dist/node_modules/@sentry/core/build/esm/utils/time.js +1 -1
  72. package/dist/node_modules/@sentry/core/build/esm/utils/time.js.map +1 -1
  73. package/dist/node_modules/@tabler/icons-react/dist/esm/createReactComponent.js +6 -0
  74. package/dist/node_modules/@tabler/icons-react/dist/esm/createReactComponent.js.map +1 -1
  75. package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.js +6 -0
  76. package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.js.map +1 -1
  77. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAdjustments.js +6 -0
  78. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAdjustments.js.map +1 -1
  79. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowRight.js +6 -0
  80. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowRight.js.map +1 -1
  81. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.js +6 -0
  82. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.js.map +1 -1
  83. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronLeft.js +6 -0
  84. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronLeft.js.map +1 -1
  85. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.js +6 -0
  86. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.js.map +1 -1
  87. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleX.js +6 -0
  88. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleX.js.map +1 -1
  89. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCopy.js +6 -0
  90. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCopy.js.map +1 -1
  91. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconDots.js +6 -0
  92. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconDots.js.map +1 -1
  93. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconEdit.js +6 -0
  94. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconEdit.js.map +1 -1
  95. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.js +6 -0
  96. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.js.map +1 -1
  97. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconPlus.js +6 -0
  98. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconPlus.js.map +1 -1
  99. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.js +6 -0
  100. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.js.map +1 -1
  101. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTag.js +14 -0
  102. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTag.js.map +1 -0
  103. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.js +6 -0
  104. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.js.map +1 -1
  105. package/dist/node_modules/@tanstack/query-core/build/modern/focusManager.js +31 -20
  106. package/dist/node_modules/@tanstack/query-core/build/modern/focusManager.js.map +1 -1
  107. package/dist/node_modules/@tanstack/query-core/build/modern/onlineManager.js +27 -17
  108. package/dist/node_modules/@tanstack/query-core/build/modern/onlineManager.js.map +1 -1
  109. package/dist/node_modules/@tanstack/query-core/build/modern/queryObserver.js +179 -177
  110. package/dist/node_modules/@tanstack/query-core/build/modern/queryObserver.js.map +1 -1
  111. package/dist/node_modules/@tanstack/query-core/build/modern/timeoutManager.js +31 -21
  112. package/dist/node_modules/@tanstack/query-core/build/modern/timeoutManager.js.map +1 -1
  113. package/dist/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js +1 -1
  114. package/dist/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js.map +1 -1
  115. package/dist/node_modules/@tanstack/react-query/build/modern/suspense.js +1 -1
  116. package/dist/node_modules/@tanstack/react-query/build/modern/suspense.js.map +1 -1
  117. package/dist/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js +7 -4
  118. package/dist/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js.map +1 -1
  119. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +10 -1
  120. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -1
  121. package/dist/node_modules/react/cjs/react-jsx-runtime.production.js +10 -1
  122. package/dist/node_modules/react/cjs/react-jsx-runtime.production.js.map +1 -1
  123. package/dist/node_modules/react-router/dist/index.js +11 -1
  124. package/dist/node_modules/react-router/dist/index.js.map +1 -1
  125. package/dist/node_modules/react-router-dom/dist/index.js +10 -0
  126. package/dist/node_modules/react-router-dom/dist/index.js.map +1 -1
  127. package/dist/plugin/InventreeHmrPlugin.d.ts +8 -0
  128. package/dist/plugin/InventreeHmrPlugin.js +21 -0
  129. package/dist/plugin/InventreeHmrPlugin.js.map +1 -0
  130. package/dist/plugin/LocalizedComponent.d.ts +9 -0
  131. package/dist/plugin/LocalizedComponent.js +57 -0
  132. package/dist/plugin/LocalizedComponent.js.map +1 -0
  133. package/dist/states/StoredTableState.js +2 -1
  134. package/dist/states/StoredTableState.js.map +1 -1
  135. package/dist/states/types.d.ts +3 -0
  136. package/dist/types/Filters.d.ts +11 -0
  137. package/dist/types/Forms.d.ts +6 -1
  138. package/dist/types/Panel.d.ts +26 -0
  139. package/dist/types/Plugins.d.ts +14 -2
  140. package/dist/types/Plugins.js +2 -2
  141. package/dist/types/Plugins.js.map +1 -1
  142. package/dist/types/Rendering.d.ts +54 -0
  143. package/dist/types/Tables.d.ts +7 -3
  144. package/lib/components/Boundary.tsx +7 -3
  145. package/lib/components/RowActions.tsx +2 -2
  146. package/lib/components/TableColumnSelect.tsx +1 -1
  147. package/lib/components/TagsList.tsx +27 -0
  148. package/lib/components/nav/DetailDrawer.tsx +1 -1
  149. package/lib/enums/ApiEndpoints.tsx +18 -4
  150. package/lib/enums/ModelInformation.tsx +26 -2
  151. package/lib/enums/ModelType.tsx +4 -1
  152. package/lib/enums/Roles.tsx +3 -0
  153. package/lib/functions/Navigation.tsx +1 -1
  154. package/lib/hooks/UseFilterSet.tsx +62 -11
  155. package/lib/index.ts +14 -1
  156. package/lib/plugin/InventreeHmrPlugin.tsx +40 -0
  157. package/lib/plugin/LocalizedComponent.tsx +85 -0
  158. package/lib/states/types.tsx +7 -0
  159. package/lib/types/Filters.tsx +19 -0
  160. package/lib/types/Forms.tsx +7 -1
  161. package/lib/types/Panel.tsx +30 -0
  162. package/lib/types/Plugins.tsx +20 -1
  163. package/lib/types/Rendering.tsx +61 -0
  164. package/lib/types/Tables.tsx +8 -3
  165. package/package.json +19 -18
package/CHANGELOG.md CHANGED
@@ -2,6 +2,45 @@
2
2
 
3
3
  This file contains historical changelog information for the InvenTree UI components library.
4
4
 
5
+ ### 1.4.1 - June 2026
6
+
7
+ ### HMR Support
8
+
9
+ Adds support for React Fast Refresh in plugin development. This allows for a much smoother development experience when working on UI plugins, as changes to React components will now trigger a component-level update rather than a full page reload.
10
+
11
+ ### Localized Components
12
+
13
+ Exposes a new `LocalizedComponent` function, which can be used to create React components that are automatically localized using the InvenTree server's localization system.
14
+
15
+ ### 1.4.0 - May 2026
16
+
17
+ #### Version Numbering
18
+
19
+ This update brings the version numbering in-line with the core InvenTree server version, which is currently at `1.4.0`. This versioning scheme will be maintained going forward, with the UI components library version matching the core server version.
20
+
21
+ Thus, version `1.4.x` of the UI components library will be compatible with version `1.4.x` of the InvenTree server, and so on.
22
+
23
+ #### Mantine Library Update
24
+
25
+ The underlying Mantine library has been updated from version `8.x` to version `9.x`. This update may introduce breaking changes for plugins that rely on the InvenTree UI components library, as the Mantine library is a core dependency. Plugin developers should test their plugins against this new version to ensure compatibility.
26
+
27
+ #### New Components
28
+
29
+ Adds additional functions in the plugin context related to form rendering and API invocation:
30
+ - `useInstance`
31
+ - `renderRemoteInstance`
32
+ - `EditApiForm`
33
+ - `RenderInlineModel`
34
+ - `Thumbnail`
35
+
36
+ Exposes sub-components related to DetailDrawer rendering:
37
+ - `DetailDrawerComponent`
38
+ - `useLocalLibState`
39
+
40
+ #### Plugin System
41
+
42
+ Enable React Fast Refresh support for plugin frontend development. Plugin modules exporting React components must start with a capital letter; otherwise, a full page reload occurs instead of a component-level update.
43
+
5
44
  ### 0.11.3 - April 2026
6
45
 
7
46
  Exposes additional type definitions related to rendering drawers from tables:
@@ -139,6 +139,15 @@
139
139
  "node_modules/@tabler/icons-react/dist/esm/icons/IconAdjustments.mjs"
140
140
  ]
141
141
  },
142
+ "lib/components/TagsList.tsx": {
143
+ "file": "components/TagsList.js",
144
+ "name": "components/TagsList",
145
+ "src": "lib/components/TagsList.tsx",
146
+ "imports": [
147
+ "/home/inventree/src/frontend/node_modules/react/jsx-runtime.js?commonjs-es-import",
148
+ "node_modules/@tabler/icons-react/dist/esm/icons/IconTag.mjs"
149
+ ]
150
+ },
142
151
  "lib/components/YesNoButton.tsx": {
143
152
  "file": "components/YesNoButton.js",
144
153
  "name": "components/YesNoButton",
@@ -252,10 +261,10 @@
252
261
  "src": "lib/hooks/MonitorBackgroundTask.tsx",
253
262
  "imports": [
254
263
  "/home/inventree/src/frontend/node_modules/react/jsx-runtime.js?commonjs-es-import",
264
+ "node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.mjs",
255
265
  "node_modules/@tanstack/react-query/build/modern/useQuery.js",
256
266
  "lib/enums/ApiEndpoints.tsx",
257
267
  "lib/functions/Api.tsx",
258
- "node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.mjs",
259
268
  "node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.mjs",
260
269
  "node_modules/@tabler/icons-react/dist/esm/icons/IconCircleX.mjs",
261
270
  "node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.mjs"
@@ -267,11 +276,11 @@
267
276
  "src": "lib/hooks/MonitorDataOutput.tsx",
268
277
  "imports": [
269
278
  "/home/inventree/src/frontend/node_modules/react/jsx-runtime.js?commonjs-es-import",
279
+ "node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.mjs",
270
280
  "node_modules/@tanstack/react-query/build/modern/useQuery.js",
271
281
  "lib/components/ProgressBar.tsx",
272
282
  "lib/enums/ApiEndpoints.tsx",
273
283
  "lib/functions/Api.tsx",
274
- "node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.mjs",
275
284
  "node_modules/@tabler/icons-react/dist/esm/icons/IconExclamationCircle.mjs",
276
285
  "node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.mjs"
277
286
  ]
@@ -289,8 +298,8 @@
289
298
  "name": "hooks/UseTable",
290
299
  "src": "lib/hooks/UseTable.tsx",
291
300
  "imports": [
292
- "lib/hooks/UseFilterSet.tsx",
293
- "node_modules/@mantine/hooks/esm/utils/random-id/random-id.mjs"
301
+ "node_modules/@mantine/hooks/esm/utils/random-id/random-id.mjs",
302
+ "lib/hooks/UseFilterSet.tsx"
294
303
  ]
295
304
  },
296
305
  "lib/index.ts": {
@@ -320,6 +329,7 @@
320
329
  "lib/components/YesNoButton.tsx",
321
330
  "lib/components/SearchInput.tsx",
322
331
  "lib/components/TableColumnSelect.tsx",
332
+ "lib/components/TagsList.tsx",
323
333
  "lib/components/InvenTreeTable.tsx",
324
334
  "lib/components/RowActions.tsx",
325
335
  "lib/hooks/MonitorDataOutput.tsx",
@@ -328,7 +338,24 @@
328
338
  "lib/hooks/UseTable.tsx",
329
339
  "lib/components/nav/DetailDrawer.tsx",
330
340
  "lib/components/StylishText.tsx",
331
- "lib/states/StoredTableState.tsx"
341
+ "lib/states/StoredTableState.tsx",
342
+ "lib/states/LocalLibState.tsx",
343
+ "lib/plugin/InventreeHmrPlugin.tsx",
344
+ "lib/plugin/LocalizedComponent.tsx"
345
+ ]
346
+ },
347
+ "lib/plugin/InventreeHmrPlugin.tsx": {
348
+ "file": "plugin/InventreeHmrPlugin.js",
349
+ "name": "plugin/InventreeHmrPlugin",
350
+ "src": "lib/plugin/InventreeHmrPlugin.tsx"
351
+ },
352
+ "lib/plugin/LocalizedComponent.tsx": {
353
+ "file": "plugin/LocalizedComponent.js",
354
+ "name": "plugin/LocalizedComponent",
355
+ "src": "lib/plugin/LocalizedComponent.tsx",
356
+ "imports": [
357
+ "vite/dynamic-import-helper.js",
358
+ "/home/inventree/src/frontend/node_modules/react/jsx-runtime.js?commonjs-es-import"
332
359
  ]
333
360
  },
334
361
  "lib/states/LocalLibState.tsx": {
@@ -762,6 +789,14 @@
762
789
  "node_modules/@tabler/icons-react/dist/esm/createReactComponent.mjs"
763
790
  ]
764
791
  },
792
+ "node_modules/@tabler/icons-react/dist/esm/icons/IconTag.mjs": {
793
+ "file": "node_modules/@tabler/icons-react/dist/esm/icons/IconTag.js",
794
+ "name": "node_modules/@tabler/icons-react/dist/esm/icons/IconTag",
795
+ "src": "node_modules/@tabler/icons-react/dist/esm/icons/IconTag.mjs",
796
+ "imports": [
797
+ "node_modules/@tabler/icons-react/dist/esm/createReactComponent.mjs"
798
+ ]
799
+ },
765
800
  "node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.mjs": {
766
801
  "file": "node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.js",
767
802
  "name": "node_modules/@tabler/icons-react/dist/esm/icons/IconTrash",
@@ -988,5 +1023,10 @@
988
1023
  "style.css": {
989
1024
  "file": "ui.css",
990
1025
  "src": "style.css"
1026
+ },
1027
+ "vite/dynamic-import-helper.js": {
1028
+ "file": "_virtual/dynamic-import-helper.js",
1029
+ "name": "_virtual/dynamic-import-helper",
1030
+ "src": "vite/dynamic-import-helper.js"
991
1031
  }
992
1032
  }
@@ -0,0 +1,20 @@
1
+ const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
2
+ const v = glob[path];
3
+ if (v) {
4
+ return typeof v === "function" ? v() : Promise.resolve(v);
5
+ }
6
+ return new Promise((_, reject) => {
7
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
8
+ reject.bind(
9
+ null,
10
+ new Error(
11
+ "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
12
+ )
13
+ )
14
+ );
15
+ });
16
+ };
17
+ export {
18
+ __variableDynamicImportRuntimeHelper as default
19
+ };
20
+ //# sourceMappingURL=dynamic-import-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-import-helper.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -4,6 +4,7 @@ import IconExclamationCircle from "../node_modules/@tabler/icons-react/dist/esm/
4
4
  const _i18n = window["LinguiCore"].i18n;
5
5
  const Alert = window["MantineCore"].Alert;
6
6
  const Stack = window["MantineCore"].Stack;
7
+ const Text = window["MantineCore"].Text;
7
8
  const useCallback = window["React"].useCallback;
8
9
  function DefaultFallback({
9
10
  title
@@ -14,18 +15,18 @@ function DefaultFallback({
14
15
  id: "qwCNwv"
15
16
  }
16
17
  )}: ${title}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Stack, { gap: "xs", children: [
17
- _i18n._(
18
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { size: "sm", children: _i18n._(
18
19
  /*i18n*/
19
20
  {
20
21
  id: "kH8meY"
21
22
  }
22
- ),
23
- _i18n._(
23
+ ) }),
24
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { size: "sm", children: _i18n._(
24
25
  /*i18n*/
25
26
  {
26
27
  id: "pz0nW1"
27
28
  }
28
- )
29
+ ) })
29
30
  ] }) });
30
31
  }
31
32
  function Boundary({
@@ -1 +1 @@
1
- {"version":3,"file":"Boundary.js","sources":["../../lib/components/Boundary.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport { Alert, Stack } from '@mantine/core';\nimport { ErrorBoundary, type FallbackRender } from '@sentry/react';\nimport { IconExclamationCircle } from '@tabler/icons-react';\nimport { type ReactNode, useCallback } from 'react';\n\nexport function DefaultFallback({\n title\n}: Readonly<{ title: string }>): ReactNode {\n return (\n <Alert\n color='red'\n icon={<IconExclamationCircle />}\n title={`INVE-E17: ${t`Error rendering component`}: ${title}`}\n >\n <Stack gap='xs'>\n {t`An error occurred while rendering this component. Refer to the console for more information.`}\n {t`Try reloading the page, or contact your administrator if the problem persists.`}\n </Stack>\n </Alert>\n );\n}\n\nexport function Boundary({\n children,\n label,\n fallback\n}: Readonly<{\n children: ReactNode;\n label: string;\n fallback?: React.ReactElement<any> | FallbackRender;\n}>): ReactNode {\n const onError = useCallback(\n (error: unknown, componentStack: string | undefined, eventId: string) => {\n console.error(`ERR: Error rendering component: ${label}`);\n console.error(error);\n },\n []\n );\n\n return (\n <ErrorBoundary\n fallback={fallback ?? <DefaultFallback title={label} />}\n onError={onError}\n >\n {children}\n </ErrorBoundary>\n );\n}\n"],"names":["DefaultFallback","title","jsx","_i18n","_","id","jsxs","Boundary","children","label","fallback","onError","useCallback","error","componentStack","eventId","console"],"mappings":";;;AAAA,MAAA,QAAA,OAAA,YAAA,EAAA;AACA,MAAA,QAAA,OAAA,aAAA,EAAA;;AAGA,MAAA,cAAA,OAAA,OAAA,EAAA;AAEO,SAASA,gBAAgB;AAAA,EAC9BC;AAC2B,GAAc;AACzC,SACEC,kCAAAA,IAAC,OAAA,EACC,OAAM,OACN,4CAAO,uBAAA,CAAA,CAAqB,GAC5B,OAAO,aAAAC,MAAAC;AAAAA;AAAAA,IAAa;AAAA,MAAAC,IAAA;AAAA,IAAA;AAAA,EAA2B,CAAC,KAAKJ,KAAK,IAE1D,UAAAK,uCAAC,OAAA,EAAM,KAAI,MACTH,UAAAA;AAAAA,IAAAA,MAAAC;AAAAA;AAAAA,MAAC;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAA8F;AAAA,IAC/FF,MAAAC;AAAAA;AAAAA,MAAC;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgF;AAAA,EAAC,EAAA,CACpF,EAAA,CACF;AAEJ;AAEO,SAASE,SAAS;AAAA,EACvBC;AAAAA,EACAC;AAAAA,EACAC;AAKD,GAAc;AACb,QAAMC,UAAUC,YACd,CAACC,OAAgBC,gBAAoCC,YAAoB;AACvEC,YAAQH,MAAM,mCAAmCJ,KAAK,EAAE;AACxDO,YAAQH,MAAMA,KAAK;AAAA,EACrB,GACA,CAAA,CACF;AAEA,SACEX,kCAAAA,IAAC,eAAA,EACC,UAAUQ,YAAYR,kCAAAA,IAAC,mBAAgB,OAAOO,MAAAA,CAAM,GACpD,SAECD,SAAAA,CACH;AAEJ;"}
1
+ {"version":3,"file":"Boundary.js","sources":["../../lib/components/Boundary.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport { Alert, Stack, Text } from '@mantine/core';\nimport { ErrorBoundary, type FallbackRender } from '@sentry/react';\nimport { IconExclamationCircle } from '@tabler/icons-react';\nimport { type ReactNode, useCallback } from 'react';\n\nexport function DefaultFallback({\n title\n}: Readonly<{ title: string }>): ReactNode {\n return (\n <Alert\n color='red'\n icon={<IconExclamationCircle />}\n title={`INVE-E17: ${t`Error rendering component`}: ${title}`}\n >\n <Stack gap='xs'>\n <Text size='sm'>\n {t`An error occurred while rendering this component. Refer to the console for more information.`}\n </Text>\n <Text size='sm'>\n {t`Try reloading the page, or contact your administrator if the problem persists.`}\n </Text>\n </Stack>\n </Alert>\n );\n}\n\nexport function Boundary({\n children,\n label,\n fallback\n}: Readonly<{\n children: ReactNode;\n label: string;\n fallback?: React.ReactElement<any> | FallbackRender;\n}>): ReactNode {\n const onError = useCallback(\n (error: unknown, componentStack: string | undefined, eventId: string) => {\n console.error(`ERR: Error rendering component: ${label}`);\n console.error(error);\n },\n []\n );\n\n return (\n <ErrorBoundary\n fallback={fallback ?? <DefaultFallback title={label} />}\n onError={onError}\n >\n {children}\n </ErrorBoundary>\n );\n}\n"],"names":["DefaultFallback","title","jsx","_i18n","_","id","jsxs","Boundary","children","label","fallback","onError","useCallback","error","componentStack","eventId","console"],"mappings":";;;AAAA,MAAA,QAAA,OAAA,YAAA,EAAA;AACA,MAAA,QAAA,OAAA,aAAA,EAAA;;;AAGA,MAAA,cAAA,OAAA,OAAA,EAAA;AAEO,SAASA,gBAAgB;AAAA,EAC9BC;AAC2B,GAAc;AACzC,SACEC,kCAAAA,IAAC,OAAA,EACC,OAAM,OACN,4CAAO,uBAAA,CAAA,CAAqB,GAC5B,OAAO,aAAAC,MAAAC;AAAAA;AAAAA,IAAa;AAAA,MAAAC,IAAA;AAAA,IAAA;AAAA,EAA2B,CAAC,KAAKJ,KAAK,IAE1D,UAAAK,uCAAC,OAAA,EAAM,KAAI,MACT,UAAA;AAAA,IAAAJ,kCAAAA,IAAC,MAAA,EAAK,MAAK,MACTC,UAAAA,MAAAC;AAAAA;AAAAA,MAAC;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAA8F,GACjG;AAAA,IACAH,kCAAAA,IAAC,MAAA,EAAK,MAAK,MACTC,UAAAA,MAAAC;AAAAA;AAAAA,MAAC;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgF,EAAC,CACpF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;AAEO,SAASE,SAAS;AAAA,EACvBC;AAAAA,EACAC;AAAAA,EACAC;AAKD,GAAc;AACb,QAAMC,UAAUC,YACd,CAACC,OAAgBC,gBAAoCC,YAAoB;AACvEC,YAAQH,MAAM,mCAAmCJ,KAAK,EAAE;AACxDO,YAAQH,MAAMA,KAAK;AAAA,EACrB,GACA,CAAA,CACF;AAEA,SACEX,kCAAAA,IAAC,eAAA,EACC,UAAUQ,YAAYR,kCAAAA,IAAC,mBAAgB,OAAOO,MAAAA,CAAM,GACpD,SAECD,SAAAA,CACH;AAEJ;"}
@@ -9,7 +9,8 @@ function InvenTreeTable({
9
9
  props,
10
10
  context
11
11
  }) {
12
- if (!context?.tables?.renderTable) {
12
+ var _a, _b;
13
+ if (!((_a = context == null ? void 0 : context.tables) == null ? void 0 : _a.renderTable)) {
13
14
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Alert, { title: "Plugin Version Error", color: "red", children: [
14
15
  'The <InvenTreeTable> component cannot be rendered because the plugin context is missing the "renderTable" function.',
15
16
  /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
@@ -21,11 +22,11 @@ function InvenTreeTable({
21
22
  /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
22
23
  /* @__PURE__ */ jsxRuntimeExports.jsx("b", { children: "UI Version:" }),
23
24
  " ",
24
- context?.version?.inventree || "unknown",
25
+ ((_b = context == null ? void 0 : context.version) == null ? void 0 : _b.inventree) || "unknown",
25
26
  /* @__PURE__ */ jsxRuntimeExports.jsx("br", {})
26
27
  ] });
27
28
  }
28
- return context?.tables.renderTable({
29
+ return context == null ? void 0 : context.tables.renderTable({
29
30
  url,
30
31
  tableState,
31
32
  tableData,
@@ -1 +1 @@
1
- {"version":3,"file":"InvenTreeTable.js","sources":["../../lib/components/InvenTreeTable.tsx"],"sourcesContent":["import { Alert } from '@mantine/core';\nimport {\n INVENTREE_PLUGIN_VERSION,\n type InvenTreePluginContext\n} from '../types/Plugins';\nimport type {\n InvenTreeTableProps,\n TableColumn,\n TableState\n} from '../types/Tables';\n\n/**\n * Wrapper function which allows plugins to render an InvenTree component instance directly,\n * in a similar way to the standard InvenTreeTable component.\n *\n * Note: The InventreePluginContext \"context\" object must be provided when rendering the table\n *\n */\n\nexport default function InvenTreeTable({\n url,\n tableState,\n tableData,\n columns,\n props,\n context\n}: {\n url?: string;\n tableState: TableState;\n tableData?: any[];\n columns: TableColumn<any>[];\n props: InvenTreeTableProps;\n context: InvenTreePluginContext;\n}) {\n if (!context?.tables?.renderTable) {\n return (\n <Alert title='Plugin Version Error' color='red'>\n {\n 'The <InvenTreeTable> component cannot be rendered because the plugin context is missing the \"renderTable\" function.'\n }\n <br />\n {\n 'This means that the InvenTree UI library version is incompatible with this plugin version.'\n }\n <br />\n <b>Plugin Version:</b> {INVENTREE_PLUGIN_VERSION}\n <br />\n <b>UI Version:</b> {context?.version?.inventree || 'unknown'}\n <br />\n </Alert>\n );\n }\n\n return context?.tables.renderTable({\n url: url,\n tableState: tableState,\n tableData: tableData,\n columns: columns,\n props: props,\n api: context.api,\n navigate: context.navigate\n });\n}\n"],"names":["InvenTreeTable","url","tableState","tableData","columns","props","context","tables","renderTable","jsxs","jsx","INVENTREE_PLUGIN_VERSION","version","inventree","api","navigate"],"mappings":";;AAAA,MAAA,QAAA,OAAA,aAAA,EAAA;AAmBA,SAAwBA,eAAe;AAAA,EACrCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAQF,GAAG;AACD,MAAI,CAACA,SAASC,QAAQC,aAAa;AACjC,WACEC,kCAAAA,KAAC,OAAA,EAAM,OAAM,wBAAuB,OAAM,OAEtC,UAAA;AAAA,MAAA;AAAA,4CAED,MAAA,EAAE;AAAA,MAED;AAAA,4CAED,MAAA,EAAE;AAAA,MACHC,kCAAAA,IAAC,OAAE,UAAA,kBAAA,CAAe;AAAA,MAAI;AAAA,MAAEC;AAAAA,4CACvB,MAAA,EAAE;AAAA,MACHD,kCAAAA,IAAC,OAAE,UAAA,cAAA,CAAW;AAAA,MAAI;AAAA,MAAEJ,SAASM,SAASC,aAAa;AAAA,4CAClD,MAAA,CAAA,CAAE;AAAA,IAAA,GACL;AAAA,EAEJ;AAEA,SAAOP,SAASC,OAAOC,YAAY;AAAA,IACjCP;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAS,KAAKR,QAAQQ;AAAAA,IACbC,UAAUT,QAAQS;AAAAA,EAAAA,CACnB;AACH;"}
1
+ {"version":3,"file":"InvenTreeTable.js","sources":["../../lib/components/InvenTreeTable.tsx"],"sourcesContent":["import { Alert } from '@mantine/core';\nimport {\n INVENTREE_PLUGIN_VERSION,\n type InvenTreePluginContext\n} from '../types/Plugins';\nimport type {\n InvenTreeTableProps,\n TableColumn,\n TableState\n} from '../types/Tables';\n\n/**\n * Wrapper function which allows plugins to render an InvenTree component instance directly,\n * in a similar way to the standard InvenTreeTable component.\n *\n * Note: The InventreePluginContext \"context\" object must be provided when rendering the table\n *\n */\n\nexport default function InvenTreeTable({\n url,\n tableState,\n tableData,\n columns,\n props,\n context\n}: {\n url?: string;\n tableState: TableState;\n tableData?: any[];\n columns: TableColumn<any>[];\n props: InvenTreeTableProps;\n context: InvenTreePluginContext;\n}) {\n if (!context?.tables?.renderTable) {\n return (\n <Alert title='Plugin Version Error' color='red'>\n {\n 'The <InvenTreeTable> component cannot be rendered because the plugin context is missing the \"renderTable\" function.'\n }\n <br />\n {\n 'This means that the InvenTree UI library version is incompatible with this plugin version.'\n }\n <br />\n <b>Plugin Version:</b> {INVENTREE_PLUGIN_VERSION}\n <br />\n <b>UI Version:</b> {context?.version?.inventree || 'unknown'}\n <br />\n </Alert>\n );\n }\n\n return context?.tables.renderTable({\n url: url,\n tableState: tableState,\n tableData: tableData,\n columns: columns,\n props: props,\n api: context.api,\n navigate: context.navigate\n });\n}\n"],"names":["InvenTreeTable","url","tableState","tableData","columns","props","context","tables","renderTable","jsxs","jsx","INVENTREE_PLUGIN_VERSION","version","inventree","api","navigate"],"mappings":";;AAAA,MAAA,QAAA,OAAA,aAAA,EAAA;AAmBA,SAAwBA,eAAe;AAAA,EACrCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAQF,GAAG;;AACD,MAAI,GAACA,wCAASC,WAATD,mBAAiBE,cAAa;AACjC,WACEC,kCAAAA,KAAC,OAAA,EAAM,OAAM,wBAAuB,OAAM,OAEtC,UAAA;AAAA,MAAA;AAAA,4CAED,MAAA,EAAE;AAAA,MAED;AAAA,4CAED,MAAA,EAAE;AAAA,MACHC,kCAAAA,IAAC,OAAE,UAAA,kBAAA,CAAe;AAAA,MAAI;AAAA,MAAEC;AAAAA,4CACvB,MAAA,EAAE;AAAA,MACHD,kCAAAA,IAAC,OAAE,UAAA,cAAA,CAAW;AAAA,MAAI;AAAA,QAAEJ,wCAASM,YAATN,mBAAkBO,cAAa;AAAA,4CAClD,MAAA,CAAA,CAAE;AAAA,IAAA,GACL;AAAA,EAEJ;AAEA,SAAOP,mCAASC,OAAOC,YAAY;AAAA,IACjCP;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAS,KAAKR,QAAQQ;AAAAA,IACbC,UAAUT,QAAQS;AAAAA,EAAAA;AAEtB;"}
@@ -92,8 +92,9 @@ function RowActions({
92
92
  }, [actions]);
93
93
  function RowActionIcon(action) {
94
94
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { withinPortal: true, label: action.tooltip ?? action.title, position: "left", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Menu.Item, { color: action.color, leftSection: action.icon, onClick: (event) => {
95
+ var _a;
95
96
  cancelEvent(event);
96
- action.onClick?.(event);
97
+ (_a = action.onClick) == null ? void 0 : _a.call(action, event);
97
98
  setOpened(false);
98
99
  }, disabled: action.disabled || false, children: action.title }) }, action.title);
99
100
  }
@@ -103,7 +104,7 @@ function RowActions({
103
104
  {
104
105
  id: "7L01XJ"
105
106
  }
106
- ), children: /* @__PURE__ */ jsxRuntimeExports.jsx(ActionIcon, { "aria-label": `row-action-menu-${index ?? ""}`, onClick: openMenu, disabled, variant: "subtle", color: "gray", children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconDots, {}) }, `row-action-menu-${index ?? ""}`) }) }),
107
+ ), children: /* @__PURE__ */ jsxRuntimeExports.jsx(ActionIcon, { "aria-label": `row-action-menu-${index ?? ""}`, onClick: openMenu, disabled, variant: "transparent", size: "sm", children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconDots, {}) }, `row-action-menu-${index ?? ""}`) }) }),
107
108
  /* @__PURE__ */ jsxRuntimeExports.jsx(Menu.Dropdown, { children: visibleActions.map((action) => /* @__PURE__ */ jsxRuntimeExports.jsx(RowActionIcon, { ...action }, action.title)) })
108
109
  ] });
109
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RowActions.js","sources":["../../lib/components/RowActions.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport { ActionIcon, Menu, Tooltip } from '@mantine/core';\nimport {\n IconArrowRight,\n IconCircleX,\n IconCopy,\n IconDots,\n IconEdit,\n IconTrash\n} from '@tabler/icons-react';\nimport { type ReactNode, useMemo, useState } from 'react';\nimport { cancelEvent } from '../functions/Events';\nimport { getDetailUrl } from '../functions/Navigation';\nimport { navigateToLink } from '../functions/Navigation';\nimport type { RowAction, RowViewProps } from '../types/Tables';\n\nexport type { RowAction, RowViewProps } from '../types/Tables';\n\n// Component for viewing a row in a table\nexport function RowViewAction(props: RowViewProps): RowAction {\n return {\n ...props,\n color: undefined,\n icon: <IconArrowRight />,\n onClick: (event: any) => {\n const url = getDetailUrl(props.modelType, props.modelId);\n navigateToLink(url, props.navigate, event);\n }\n };\n}\n\n// Component for duplicating a row in a table\nexport function RowDuplicateAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Duplicate`,\n color: 'green',\n icon: <IconCopy />\n };\n}\n\n// Component for editing a row in a table\nexport function RowEditAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Edit`,\n color: 'blue',\n icon: <IconEdit />\n };\n}\n\n// Component for deleting a row in a table\nexport function RowDeleteAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Delete`,\n color: 'red',\n icon: <IconTrash />\n };\n}\n\n// Component for cancelling a row in a table\nexport function RowCancelAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Cancel`,\n color: 'red',\n icon: <IconCircleX />\n };\n}\n\n/**\n * Component for displaying actions for a row in a table.\n * Displays a simple dropdown menu with a list of actions.\n */\nexport function RowActions({\n title,\n actions,\n disabled = false,\n index\n}: {\n title?: string;\n disabled?: boolean;\n actions: RowAction[];\n index?: number;\n}): ReactNode {\n // Prevent default event handling\n // Ref: https://icflorescu.github.io/mantine-datatable/examples/links-or-buttons-inside-clickable-rows-or-cells\n function openMenu(event: any) {\n cancelEvent(event);\n setOpened(!opened);\n }\n\n const [opened, setOpened] = useState(false);\n\n const visibleActions = useMemo(() => {\n return actions.filter((action) => !action.hidden);\n }, [actions]);\n\n // Render a single action icon\n function RowActionIcon(action: Readonly<RowAction>) {\n return (\n <Tooltip\n withinPortal={true}\n label={action.tooltip ?? action.title}\n key={action.title}\n position='left'\n >\n <Menu.Item\n color={action.color}\n leftSection={action.icon}\n onClick={(event) => {\n // Prevent clicking on the action from selecting the row itself\n cancelEvent(event);\n action.onClick?.(event);\n setOpened(false);\n }}\n disabled={action.disabled || false}\n >\n {action.title}\n </Menu.Item>\n </Tooltip>\n );\n }\n\n return (\n visibleActions.length > 0 && (\n <Menu\n withinPortal={true}\n disabled={disabled}\n position='bottom-end'\n opened={opened}\n onChange={setOpened}\n >\n <Menu.Target>\n <Tooltip withinPortal={true} label={title || t`Actions`}>\n <ActionIcon\n key={`row-action-menu-${index ?? ''}`}\n aria-label={`row-action-menu-${index ?? ''}`}\n onClick={openMenu}\n disabled={disabled}\n variant='subtle'\n color='gray'\n >\n <IconDots />\n </ActionIcon>\n </Tooltip>\n </Menu.Target>\n <Menu.Dropdown>\n {visibleActions.map((action) => (\n <RowActionIcon key={action.title} {...action} />\n ))}\n </Menu.Dropdown>\n </Menu>\n )\n );\n}\n"],"names":["RowViewAction","props","color","undefined","icon","onClick","event","url","getDetailUrl","modelType","modelId","navigateToLink","navigate","RowDuplicateAction","title","_i18n","_","id","RowEditAction","RowDeleteAction","RowCancelAction","RowActions","actions","disabled","index","openMenu","cancelEvent","setOpened","opened","useState","visibleActions","useMemo","filter","action","hidden","RowActionIcon","jsx","tooltip","length","jsxs","map"],"mappings":";;;;;;;;;AAAA,MAAA,QAAA,OAAA,YAAA,EAAA;AACA,MAAA,aAAA,OAAA,aAAA,EAAA;;;AASA,MAAA,UAAA,OAAA,OAAA,EAAA;;AASO,SAASA,cAAcC,OAAgC;AAC5D,SAAO;AAAA,IACL,GAAGA;AAAAA,IACHC,OAAOC;AAAAA,IACPC,4CAAO,gBAAA,EAAc;AAAA,IACrBC,SAASA,CAACC,UAAe;AACvB,YAAMC,MAAMC,aAAaP,MAAMQ,WAAWR,MAAMS,OAAO;AACvDC,qBAAeJ,KAAKN,MAAMW,UAAUN,KAAK;AAAA,IAC3C;AAAA,EAAA;AAEJ;AAGO,SAASO,mBAAmBZ,OAA6B;AAC9D,SAAO;AAAA,IACL,GAAGA;AAAAA,IACHa,OAAKC,MAAAC;AAAAA;AAAAA,MAAE;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAW;AAAA,IAClBf,OAAO;AAAA,IACPE,4CAAO,UAAA,CAAA,CAAQ;AAAA,EAAA;AAEnB;AAGO,SAASc,cAAcjB,OAA6B;AACzD,SAAO;AAAA,IACL,GAAGA;AAAAA,IACHa,OAAKC,MAAAC;AAAAA;AAAAA,MAAE;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAM;AAAA,IACbf,OAAO;AAAA,IACPE,4CAAO,UAAA,CAAA,CAAQ;AAAA,EAAA;AAEnB;AAGO,SAASe,gBAAgBlB,OAA6B;AAC3D,SAAO;AAAA,IACL,GAAGA;AAAAA,IACHa,OAAKC,MAAAC;AAAAA;AAAAA,MAAE;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAQ;AAAA,IACff,OAAO;AAAA,IACPE,4CAAO,WAAA,CAAA,CAAS;AAAA,EAAA;AAEpB;AAGO,SAASgB,gBAAgBnB,OAA6B;AAC3D,SAAO;AAAA,IACL,GAAGA;AAAAA,IACHa,OAAKC,MAAAC;AAAAA;AAAAA,MAAE;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAQ;AAAA,IACff,OAAO;AAAA,IACPE,4CAAO,aAAA,CAAA,CAAW;AAAA,EAAA;AAEtB;AAMO,SAASiB,WAAW;AAAA,EACzBP;AAAAA,EACAQ;AAAAA,EACAC,WAAW;AAAA,EACXC;AAMF,GAAc;AAGZ,WAASC,SAASnB,OAAY;AAC5BoB,gBAAYpB,KAAK;AACjBqB,cAAU,CAACC,MAAM;AAAA,EACnB;AAEA,QAAM,CAACA,QAAQD,SAAS,IAAIE,SAAS,KAAK;AAE1C,QAAMC,iBAAiBC,QAAQ,MAAM;AACnC,WAAOT,QAAQU,OAAQC,CAAAA,WAAW,CAACA,OAAOC,MAAM;AAAA,EAClD,GAAG,CAACZ,OAAO,CAAC;AAGZ,WAASa,cAAcF,QAA6B;AAClD,WACEG,sCAAC,WACC,cAAc,MACd,OAAOH,OAAOI,WAAWJ,OAAOnB,OAEhC,UAAS,QAET,gDAAC,KAAK,MAAL,EACC,OAAOmB,OAAO/B,OACd,aAAa+B,OAAO7B,MACpB,SAAUE,CAAAA,UAAU;AAElBoB,kBAAYpB,KAAK;AACjB2B,aAAO5B,UAAUC,KAAK;AACtBqB,gBAAU,KAAK;AAAA,IACjB,GACA,UAAUM,OAAOV,YAAY,OAE5BU,UAAAA,OAAOnB,MAAAA,CACV,KAfKmB,OAAOnB,KAgBd;AAAA,EAEJ;AAEA,SACEgB,eAAeQ,SAAS,KACtBC,kCAAAA,KAAC,MAAA,EACC,cAAc,MACd,UACA,UAAS,cACT,QACA,UAAUZ,WAEV,UAAA;AAAA,IAAAS,kCAAAA,IAAC,KAAK,QAAL,EACC,UAAAA,kCAAAA,IAAC,WAAQ,cAAc,MAAM,OAAOtB,SAAKC,MAAAC;AAAAA;AAAAA,MAAI;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAS,GACpD,gDAAC,YAAA,EAEC,cAAY,mBAAmBO,SAAS,EAAE,IAC1C,SAASC,UACT,UACA,SAAQ,UACR,OAAM,QAEN,UAAAW,kCAAAA,IAAC,UAAA,CAAA,CAAQ,EAAA,GAPJ,mBAAmBZ,SAAS,EAAE,EAQrC,EAAA,CACF,EAAA,CACF;AAAA,IACAY,kCAAAA,IAAC,KAAK,UAAL,EACEN,yBAAeU,IAAKP,CAAAA,WACnBG,kCAAAA,IAAC,eAAA,EAAiC,GAAIH,OAAAA,GAAlBA,OAAOnB,KAAkB,CAC9C,EAAA,CACH;AAAA,EAAA,GACF;AAGN;"}
1
+ {"version":3,"file":"RowActions.js","sources":["../../lib/components/RowActions.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport { ActionIcon, Menu, Tooltip } from '@mantine/core';\nimport {\n IconArrowRight,\n IconCircleX,\n IconCopy,\n IconDots,\n IconEdit,\n IconTrash\n} from '@tabler/icons-react';\nimport { type ReactNode, useMemo, useState } from 'react';\nimport { cancelEvent } from '../functions/Events';\nimport { getDetailUrl } from '../functions/Navigation';\nimport { navigateToLink } from '../functions/Navigation';\nimport type { RowAction, RowViewProps } from '../types/Tables';\n\nexport type { RowAction, RowViewProps } from '../types/Tables';\n\n// Component for viewing a row in a table\nexport function RowViewAction(props: RowViewProps): RowAction {\n return {\n ...props,\n color: undefined,\n icon: <IconArrowRight />,\n onClick: (event: any) => {\n const url = getDetailUrl(props.modelType, props.modelId);\n navigateToLink(url, props.navigate, event);\n }\n };\n}\n\n// Component for duplicating a row in a table\nexport function RowDuplicateAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Duplicate`,\n color: 'green',\n icon: <IconCopy />\n };\n}\n\n// Component for editing a row in a table\nexport function RowEditAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Edit`,\n color: 'blue',\n icon: <IconEdit />\n };\n}\n\n// Component for deleting a row in a table\nexport function RowDeleteAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Delete`,\n color: 'red',\n icon: <IconTrash />\n };\n}\n\n// Component for cancelling a row in a table\nexport function RowCancelAction(props: RowAction): RowAction {\n return {\n ...props,\n title: t`Cancel`,\n color: 'red',\n icon: <IconCircleX />\n };\n}\n\n/**\n * Component for displaying actions for a row in a table.\n * Displays a simple dropdown menu with a list of actions.\n */\nexport function RowActions({\n title,\n actions,\n disabled = false,\n index\n}: {\n title?: string;\n disabled?: boolean;\n actions: RowAction[];\n index?: number;\n}): ReactNode {\n // Prevent default event handling\n // Ref: https://icflorescu.github.io/mantine-datatable/examples/links-or-buttons-inside-clickable-rows-or-cells\n function openMenu(event: any) {\n cancelEvent(event);\n setOpened(!opened);\n }\n\n const [opened, setOpened] = useState(false);\n\n const visibleActions = useMemo(() => {\n return actions.filter((action) => !action.hidden);\n }, [actions]);\n\n // Render a single action icon\n function RowActionIcon(action: Readonly<RowAction>) {\n return (\n <Tooltip\n withinPortal={true}\n label={action.tooltip ?? action.title}\n key={action.title}\n position='left'\n >\n <Menu.Item\n color={action.color}\n leftSection={action.icon}\n onClick={(event) => {\n // Prevent clicking on the action from selecting the row itself\n cancelEvent(event);\n action.onClick?.(event);\n setOpened(false);\n }}\n disabled={action.disabled || false}\n >\n {action.title}\n </Menu.Item>\n </Tooltip>\n );\n }\n\n return (\n visibleActions.length > 0 && (\n <Menu\n withinPortal={true}\n disabled={disabled}\n position='bottom-end'\n opened={opened}\n onChange={setOpened}\n >\n <Menu.Target>\n <Tooltip withinPortal={true} label={title || t`Actions`}>\n <ActionIcon\n key={`row-action-menu-${index ?? ''}`}\n aria-label={`row-action-menu-${index ?? ''}`}\n onClick={openMenu}\n disabled={disabled}\n variant='transparent'\n size='sm'\n >\n <IconDots />\n </ActionIcon>\n </Tooltip>\n </Menu.Target>\n <Menu.Dropdown>\n {visibleActions.map((action) => (\n <RowActionIcon key={action.title} {...action} />\n ))}\n </Menu.Dropdown>\n </Menu>\n )\n );\n}\n"],"names":["RowViewAction","props","color","undefined","icon","onClick","event","url","getDetailUrl","modelType","modelId","navigateToLink","navigate","RowDuplicateAction","title","_i18n","_","id","RowEditAction","RowDeleteAction","RowCancelAction","RowActions","actions","disabled","index","openMenu","cancelEvent","setOpened","opened","useState","visibleActions","useMemo","filter","action","hidden","RowActionIcon","jsx","tooltip","length","jsxs","map"],"mappings":"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"}
@@ -28,7 +28,7 @@ function TableColumnSelect({
28
28
  }
29
29
  ) }),
30
30
  /* @__PURE__ */ jsxRuntimeExports.jsx(Divider, {}),
31
- columns.filter((col) => col.switchable ?? true).map((col) => /* @__PURE__ */ jsxRuntimeExports.jsx(Menu.Item, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Checkbox, { checked: !col.hidden, label: col.title || col.accessor, onChange: () => onToggleColumn(col.accessor), radius: "sm" }) }, col.accessor))
31
+ columns.filter((col) => (col.switchable ?? true) && !col.propHidden).map((col) => /* @__PURE__ */ jsxRuntimeExports.jsx(Menu.Item, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Checkbox, { checked: !col.hidden, label: col.title || col.accessor, onChange: () => onToggleColumn(col.accessor), radius: "sm" }) }, col.accessor))
32
32
  ] })
33
33
  ] });
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TableColumnSelect.js","sources":["../../lib/components/TableColumnSelect.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport { ActionIcon, Checkbox, Divider, Menu, Tooltip } from '@mantine/core';\nimport { IconAdjustments } from '@tabler/icons-react';\n\nexport function TableColumnSelect({\n columns,\n onToggleColumn\n}: Readonly<{\n columns: any[];\n onToggleColumn: (columnName: string) => void;\n}>) {\n return (\n <Menu shadow='xs' closeOnItemClick={false}>\n <Menu.Target>\n <ActionIcon variant='transparent' aria-label='table-select-columns'>\n <Tooltip label={t`Select Columns`} position='top-end'>\n <IconAdjustments />\n </Tooltip>\n </ActionIcon>\n </Menu.Target>\n\n <Menu.Dropdown style={{ maxHeight: '400px', overflowY: 'auto' }}>\n <Menu.Label>{t`Select Columns`}</Menu.Label>\n <Divider />\n {columns\n .filter((col) => col.switchable ?? true)\n .map((col) => (\n <Menu.Item key={col.accessor}>\n <Checkbox\n checked={!col.hidden}\n label={col.title || col.accessor}\n onChange={() => onToggleColumn(col.accessor)}\n radius='sm'\n />\n </Menu.Item>\n ))}\n </Menu.Dropdown>\n </Menu>\n );\n}\n"],"names":["TableColumnSelect","columns","onToggleColumn","jsxs","jsx","_i18n","_","id","maxHeight","overflowY","filter","col","switchable","map","hidden","title","accessor"],"mappings":";;AAAA,MAAA,QAAA,OAAA,YAAA,EAAA;AACA,MAAA,aAAA,OAAA,aAAA,EAAA;;;;;AAGO,SAASA,kBAAkB;AAAA,EAChCC;AAAAA,EACAC;AAID,GAAG;AACF,SACEC,kCAAAA,KAAC,MAAA,EAAK,QAAO,MAAK,kBAAkB,OAClC,UAAA;AAAA,IAAAC,kCAAAA,IAAC,KAAK,QAAL,EACC,UAAAA,kCAAAA,IAAC,YAAA,EAAW,SAAQ,eAAc,cAAW,wBAC3C,UAAAA,kCAAAA,IAAC,SAAA,EAAQ,OAAMC,MAAAC;AAAAA;AAAAA,MAAC;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgB,GAAG,UAAS,WAC1C,gDAAC,iBAAA,EAAe,EAAA,CAClB,GACF,GACF;AAAA,IAEAJ,kCAAAA,KAAC,KAAK,UAAL,EAAc,OAAO;AAAA,MAAEK,WAAW;AAAA,MAASC,WAAW;AAAA,IAAA,GACrD,UAAA;AAAA,MAAAL,kCAAAA,IAAC,KAAK,OAAL,EAAWC,UAAAA,MAAAC;AAAAA;AAAAA,QAAC;AAAA,UAAAC,IAAA;AAAA,QAAA;AAAA,MAAgB,GAAE;AAAA,4CAC9B,SAAA,EAAO;AAAA,MACPN,QACES,OAAQC,CAAAA,QAAQA,IAAIC,cAAc,IAAI,EACtCC,IAAKF,CAAAA,8CACH,KAAK,MAAL,EACC,UAAAP,kCAAAA,IAAC,YACC,SAAS,CAACO,IAAIG,QACd,OAAOH,IAAII,SAASJ,IAAIK,UACxB,UAAU,MAAMd,eAAeS,IAAIK,QAAQ,GAC3C,QAAO,KAAA,CAAI,EAAA,GALCL,IAAIK,QAOpB,CACD;AAAA,IAAA,EAAA,CACL;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"TableColumnSelect.js","sources":["../../lib/components/TableColumnSelect.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport { ActionIcon, Checkbox, Divider, Menu, Tooltip } from '@mantine/core';\nimport { IconAdjustments } from '@tabler/icons-react';\n\nexport function TableColumnSelect({\n columns,\n onToggleColumn\n}: Readonly<{\n columns: any[];\n onToggleColumn: (columnName: string) => void;\n}>) {\n return (\n <Menu shadow='xs' closeOnItemClick={false}>\n <Menu.Target>\n <ActionIcon variant='transparent' aria-label='table-select-columns'>\n <Tooltip label={t`Select Columns`} position='top-end'>\n <IconAdjustments />\n </Tooltip>\n </ActionIcon>\n </Menu.Target>\n\n <Menu.Dropdown style={{ maxHeight: '400px', overflowY: 'auto' }}>\n <Menu.Label>{t`Select Columns`}</Menu.Label>\n <Divider />\n {columns\n .filter((col) => (col.switchable ?? true) && !col.propHidden)\n .map((col) => (\n <Menu.Item key={col.accessor}>\n <Checkbox\n checked={!col.hidden}\n label={col.title || col.accessor}\n onChange={() => onToggleColumn(col.accessor)}\n radius='sm'\n />\n </Menu.Item>\n ))}\n </Menu.Dropdown>\n </Menu>\n );\n}\n"],"names":["TableColumnSelect","columns","onToggleColumn","jsxs","jsx","_i18n","_","id","maxHeight","overflowY","filter","col","switchable","propHidden","map","hidden","title","accessor"],"mappings":";;AAAA,MAAA,QAAA,OAAA,YAAA,EAAA;AACA,MAAA,aAAA,OAAA,aAAA,EAAA;;;;;AAGO,SAASA,kBAAkB;AAAA,EAChCC;AAAAA,EACAC;AAID,GAAG;AACF,SACEC,kCAAAA,KAAC,MAAA,EAAK,QAAO,MAAK,kBAAkB,OAClC,UAAA;AAAA,IAAAC,kCAAAA,IAAC,KAAK,QAAL,EACC,UAAAA,kCAAAA,IAAC,YAAA,EAAW,SAAQ,eAAc,cAAW,wBAC3C,UAAAA,kCAAAA,IAAC,SAAA,EAAQ,OAAMC,MAAAC;AAAAA;AAAAA,MAAC;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgB,GAAG,UAAS,WAC1C,gDAAC,iBAAA,EAAe,EAAA,CAClB,GACF,GACF;AAAA,IAEAJ,kCAAAA,KAAC,KAAK,UAAL,EAAc,OAAO;AAAA,MAAEK,WAAW;AAAA,MAASC,WAAW;AAAA,IAAA,GACrD,UAAA;AAAA,MAAAL,kCAAAA,IAAC,KAAK,OAAL,EAAWC,UAAAA,MAAAC;AAAAA;AAAAA,QAAC;AAAA,UAAAC,IAAA;AAAA,QAAA;AAAA,MAAgB,GAAE;AAAA,4CAC9B,SAAA,EAAO;AAAA,MACPN,QACES,OAAQC,CAAAA,SAASA,IAAIC,cAAc,SAAS,CAACD,IAAIE,UAAU,EAC3DC,IAAKH,CAAAA,QACJP,sCAAC,KAAK,MAAL,EACC,gDAAC,UAAA,EACC,SAAS,CAACO,IAAII,QACd,OAAOJ,IAAIK,SAASL,IAAIM,UACxB,UAAU,MAAMf,eAAeS,IAAIM,QAAQ,GAC3C,QAAO,MAAI,EAAA,GALCN,IAAIM,QAOpB,CACD;AAAA,IAAA,EAAA,CACL;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,3 @@
1
+ export default function TagsList({ tags }: Readonly<{
2
+ tags: string[];
3
+ }>): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,21 @@
1
+ import { j as jsxRuntimeExports } from "../_virtual/jsx-runtime.js";
2
+ import IconTag from "../node_modules/@tabler/icons-react/dist/esm/icons/IconTag.js";
3
+ const ActionIcon = window["MantineCore"].ActionIcon;
4
+ const Badge = window["MantineCore"].Badge;
5
+ const Group = window["MantineCore"].Group;
6
+ const Paper = window["MantineCore"].Paper;
7
+ function TagsList({
8
+ tags
9
+ }) {
10
+ if (!tags || tags.length === 0) {
11
+ return null;
12
+ }
13
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Paper, { p: "xs", shadow: "xs", withBorder: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Group, { gap: "xs", children: [
14
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ActionIcon, { size: "sm", variant: "transparent", children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconTag, {}) }),
15
+ tags.map((tag) => /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "outline", size: "sm", children: tag }, tag))
16
+ ] }) });
17
+ }
18
+ export {
19
+ TagsList as default
20
+ };
21
+ //# sourceMappingURL=TagsList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagsList.js","sources":["../../lib/components/TagsList.tsx"],"sourcesContent":["import { ActionIcon, Badge, Group, Paper } from '@mantine/core';\nimport { IconTag } from '@tabler/icons-react';\n\nexport default function TagsList({\n tags\n}: Readonly<{\n tags: string[];\n}>) {\n if (!tags || tags.length === 0) {\n return null;\n }\n\n return (\n <Paper p='xs' shadow='xs' withBorder>\n <Group gap='xs'>\n <ActionIcon size='sm' variant='transparent'>\n <IconTag />\n </ActionIcon>\n {tags.map((tag: string) => (\n <Badge key={tag} variant='outline' size='sm'>\n {tag}\n </Badge>\n ))}\n </Group>\n </Paper>\n );\n}\n"],"names":["TagsList","tags","length","jsx","jsxs","map","tag"],"mappings":";;AAAA,MAAA,aAAA,OAAA,aAAA,EAAA;;;;AAGA,SAAwBA,SAAS;AAAA,EAC/BC;AAGD,GAAG;AACF,MAAI,CAACA,QAAQA,KAAKC,WAAW,GAAG;AAC9B,WAAO;AAAA,EACT;AAEA,SACEC,kCAAAA,IAAC,OAAA,EAAM,GAAE,MAAK,QAAO,MAAK,YAAU,MAClC,UAAAC,kCAAAA,KAAC,OAAA,EAAM,KAAI,MACT,UAAA;AAAA,IAAAD,kCAAAA,IAAC,cAAW,MAAK,MAAK,SAAQ,eAC5B,UAAAA,kCAAAA,IAAC,WAAO,EAAA,CACV;AAAA,IACCF,KAAKI,IAAI,CAACC,QACTH,kCAAAA,IAAC,OAAA,EAAgB,SAAQ,WAAU,MAAK,MACrCG,UAAAA,IAAAA,GADSA,GAEZ,CACD;AAAA,EAAA,EAAA,CACH,EAAA,CACF;AAEJ;"}
@@ -14,6 +14,7 @@ export interface DrawerProps {
14
14
  size?: UiSizeType;
15
15
  closeOnEscape?: boolean;
16
16
  }
17
+ export declare function DetailDrawerComponent({ title, position, size, closeOnEscape, renderContent }: Readonly<DrawerProps>): import("react/jsx-runtime").JSX.Element;
17
18
  export declare function DetailDrawer(props: Readonly<DrawerProps>): import("react/jsx-runtime").JSX.Element;
18
19
  export declare function DetailDrawerLink({ to, text }: Readonly<{
19
20
  to: To;
@@ -60,6 +60,7 @@ function DetailDrawerLink({
60
60
  }
61
61
  export {
62
62
  DetailDrawer,
63
+ DetailDrawerComponent,
63
64
  DetailDrawerLink
64
65
  };
65
66
  //# sourceMappingURL=DetailDrawer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailDrawer.js","sources":["../../../lib/components/nav/DetailDrawer.tsx"],"sourcesContent":["import { ActionIcon, Divider, Drawer, Group, Stack, Text } from '@mantine/core';\nimport { IconChevronLeft } from '@tabler/icons-react';\nimport { useCallback, useMemo } from 'react';\nimport { Link, Route, Routes, useNavigate, useParams } from 'react-router-dom';\nimport type { To } from 'react-router-dom';\n\nimport type { UiSizeType } from '../../types/Core';\n\nimport { useShallow } from 'zustand/react/shallow';\nimport { useLocalLibState } from '../../states/LocalLibState';\nimport { StylishText } from '../StylishText';\nimport * as classes from './DetailDrawer.css';\n\n/**\n * @param title - drawer title\n * @param position - drawer position\n * @param renderContent - function used to render the drawer content\n * @param urlPrefix - set an additional url segment, useful when multiple drawers are rendered on one page (e.g. \"user/\")\n */\nexport interface DrawerProps {\n title: string;\n position?: 'right' | 'left';\n renderContent: (id?: string) => React.ReactNode;\n urlPrefix?: string;\n size?: UiSizeType;\n closeOnEscape?: boolean;\n}\n\nfunction DetailDrawerComponent({\n title,\n position = 'right',\n size,\n closeOnEscape = true,\n renderContent\n}: Readonly<DrawerProps>) {\n const navigate = useNavigate();\n const { id } = useParams();\n\n const content = renderContent(id);\n const opened = useMemo(() => !!id && !!content, [id, content]);\n\n const [detailDrawerStack, addDetailDrawer] = useLocalLibState(\n useShallow((state) => [state.detailDrawerStack, state.addDetailDrawer])\n );\n\n return (\n <Drawer\n opened={opened}\n onClose={() => {\n navigate('../');\n addDetailDrawer(false);\n }}\n position={position}\n closeOnEscape={closeOnEscape}\n size={size}\n classNames={{ root: classes.flex, body: classes.flex }}\n scrollAreaComponent={Stack}\n title={\n <Group>\n {detailDrawerStack > 0 && (\n <ActionIcon\n variant='outline'\n onClick={() => {\n navigate(-1);\n addDetailDrawer(-1);\n }}\n >\n <IconChevronLeft />\n </ActionIcon>\n )}\n <StylishText size='xl'>{title}</StylishText>\n </Group>\n }\n >\n <Stack gap={'xs'} className={classes.flex}>\n <Divider />\n {content}\n </Stack>\n </Drawer>\n );\n}\n\nexport function DetailDrawer(props: Readonly<DrawerProps>) {\n return (\n <Routes>\n <Route path=':id?/' element={<DetailDrawerComponent {...props} />} />\n </Routes>\n );\n}\n\nexport function DetailDrawerLink({\n to,\n text\n}: Readonly<{ to: To; text: string }>) {\n const addDetailDrawer = useLocalLibState(\n useShallow((state) => state.addDetailDrawer)\n );\n\n const onNavigate = useCallback(() => {\n addDetailDrawer(1);\n }, [addDetailDrawer]);\n\n return (\n <Link to={to} onClick={onNavigate}>\n <Text>{text}</Text>\n </Link>\n );\n}\n"],"names":["DetailDrawerComponent","title","position","size","closeOnEscape","renderContent","navigate","useNavigate","id","useParams","content","opened","useMemo","detailDrawerStack","addDetailDrawer","useLocalLibState","useShallow","state","jsx","root","classes","body","flex","Stack","jsxs","DetailDrawer","props","DetailDrawerLink","to","text","onNavigate","useCallback"],"mappings":";;;;;;;;AAAA,MAAA,aAAA,OAAA,aAAA,EAAA;;;;;;AAEA,MAAA,cAAA,OAAA,OAAA,EAAA;;AA0BA,SAASA,sBAAsB;AAAA,EAC7BC;AAAAA,EACAC,WAAW;AAAA,EACXC;AAAAA,EACAC,gBAAgB;AAAA,EAChBC;AACqB,GAAG;AACxB,QAAMC,WAAWC,YAAAA;AACjB,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAOC,UAAAA;AAEf,QAAMC,UAAUL,cAAcG,EAAE;AAChC,QAAMG,SAASC,QAAQ,MAAM,CAAC,CAACJ,MAAM,CAAC,CAACE,SAAS,CAACF,IAAIE,OAAO,CAAC;AAE7D,QAAM,CAACG,mBAAmBC,eAAe,IAAIC,iBAC3CC,WAAYC,CAAAA,UAAU,CAACA,MAAMJ,mBAAmBI,MAAMH,eAAe,CAAC,CACxE;AAEA,SACEI,kCAAAA,IAAC,QAAA,EACC,QACA,SAAS,MAAM;AACbZ,aAAS,KAAK;AACdQ,oBAAgB,KAAK;AAAA,EACvB,GACA,UACA,eACA,MACA,YAAY;AAAA,IAAEK,MAAMC;AAAAA,IAAcC,MAAMD;AAAAA,EAAQE,GAChD,qBAAqBC,OACrB,8CACG,OAAA,EACEV,UAAAA;AAAAA,IAAAA,oBAAoB,KACnBK,sCAAC,YAAA,EACC,SAAQ,WACR,SAAS,MAAM;AACbZ,eAAS,EAAE;AACXQ,sBAAgB,EAAE;AAAA,IACpB,GAEA,UAAAI,kCAAAA,IAAC,iBAAA,CAAA,CAAe,EAAA,CAClB;AAAA,IAEFA,kCAAAA,IAAC,aAAA,EAAY,MAAK,MAAMjB,UAAAA,MAAAA,CAAM;AAAA,EAAA,GAChC,GAGF,UAAAuB,kCAAAA,KAAC,OAAA,EAAM,KAAK,MAAM,WAAWJ,MAC3B,UAAA;AAAA,IAAAF,kCAAAA,IAAC,SAAA,EAAO;AAAA,IACPR;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF;AAEJ;AAEO,SAASe,aAAaC,OAA8B;AACzD,SACER,kCAAAA,IAAC,QAAA,EACC,UAAAA,kCAAAA,IAAC,OAAA,EAAM,MAAK,SAAQ,SAASA,kCAAAA,IAAC,uBAAA,KAA0BQ,MAAAA,IAAU,GACpE;AAEJ;AAEO,SAASC,iBAAiB;AAAA,EAC/BC;AAAAA,EACAC;AACkC,GAAG;AACrC,QAAMf,kBAAkBC,iBACtBC,WAAYC,CAAAA,UAAUA,MAAMH,eAAe,CAC7C;AAEA,QAAMgB,aAAaC,YAAY,MAAM;AACnCjB,oBAAgB,CAAC;AAAA,EACnB,GAAG,CAACA,eAAe,CAAC;AAEpB,SACEI,kCAAAA,IAAC,QAAK,IAAQ,SAASY,YACrB,UAAAZ,kCAAAA,IAAC,MAAA,EAAMW,gBAAK,EAAA,CACd;AAEJ;"}
1
+ {"version":3,"file":"DetailDrawer.js","sources":["../../../lib/components/nav/DetailDrawer.tsx"],"sourcesContent":["import { ActionIcon, Divider, Drawer, Group, Stack, Text } from '@mantine/core';\nimport { IconChevronLeft } from '@tabler/icons-react';\nimport { useCallback, useMemo } from 'react';\nimport { Link, Route, Routes, useNavigate, useParams } from 'react-router-dom';\nimport type { To } from 'react-router-dom';\n\nimport type { UiSizeType } from '../../types/Core';\n\nimport { useShallow } from 'zustand/react/shallow';\nimport { useLocalLibState } from '../../states/LocalLibState';\nimport { StylishText } from '../StylishText';\nimport * as classes from './DetailDrawer.css';\n\n/**\n * @param title - drawer title\n * @param position - drawer position\n * @param renderContent - function used to render the drawer content\n * @param urlPrefix - set an additional url segment, useful when multiple drawers are rendered on one page (e.g. \"user/\")\n */\nexport interface DrawerProps {\n title: string;\n position?: 'right' | 'left';\n renderContent: (id?: string) => React.ReactNode;\n urlPrefix?: string;\n size?: UiSizeType;\n closeOnEscape?: boolean;\n}\n\nexport function DetailDrawerComponent({\n title,\n position = 'right',\n size,\n closeOnEscape = true,\n renderContent\n}: Readonly<DrawerProps>) {\n const navigate = useNavigate();\n const { id } = useParams();\n\n const content = renderContent(id);\n const opened = useMemo(() => !!id && !!content, [id, content]);\n\n const [detailDrawerStack, addDetailDrawer] = useLocalLibState(\n useShallow((state) => [state.detailDrawerStack, state.addDetailDrawer])\n );\n\n return (\n <Drawer\n opened={opened}\n onClose={() => {\n navigate('../');\n addDetailDrawer(false);\n }}\n position={position}\n closeOnEscape={closeOnEscape}\n size={size}\n classNames={{ root: classes.flex, body: classes.flex }}\n scrollAreaComponent={Stack}\n title={\n <Group>\n {detailDrawerStack > 0 && (\n <ActionIcon\n variant='outline'\n onClick={() => {\n navigate(-1);\n addDetailDrawer(-1);\n }}\n >\n <IconChevronLeft />\n </ActionIcon>\n )}\n <StylishText size='xl'>{title}</StylishText>\n </Group>\n }\n >\n <Stack gap={'xs'} className={classes.flex}>\n <Divider />\n {content}\n </Stack>\n </Drawer>\n );\n}\n\nexport function DetailDrawer(props: Readonly<DrawerProps>) {\n return (\n <Routes>\n <Route path=':id?/' element={<DetailDrawerComponent {...props} />} />\n </Routes>\n );\n}\n\nexport function DetailDrawerLink({\n to,\n text\n}: Readonly<{ to: To; text: string }>) {\n const addDetailDrawer = useLocalLibState(\n useShallow((state) => state.addDetailDrawer)\n );\n\n const onNavigate = useCallback(() => {\n addDetailDrawer(1);\n }, [addDetailDrawer]);\n\n return (\n <Link to={to} onClick={onNavigate}>\n <Text>{text}</Text>\n </Link>\n );\n}\n"],"names":["DetailDrawerComponent","title","position","size","closeOnEscape","renderContent","navigate","useNavigate","id","useParams","content","opened","useMemo","detailDrawerStack","addDetailDrawer","useLocalLibState","useShallow","state","jsx","root","classes","body","flex","Stack","jsxs","DetailDrawer","props","DetailDrawerLink","to","text","onNavigate","useCallback"],"mappings":";;;;;;;;AAAA,MAAA,aAAA,OAAA,aAAA,EAAA;;;;;;AAEA,MAAA,cAAA,OAAA,OAAA,EAAA;;AA0BO,SAASA,sBAAsB;AAAA,EACpCC;AAAAA,EACAC,WAAW;AAAA,EACXC;AAAAA,EACAC,gBAAgB;AAAA,EAChBC;AACqB,GAAG;AACxB,QAAMC,WAAWC,YAAAA;AACjB,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAOC,UAAAA;AAEf,QAAMC,UAAUL,cAAcG,EAAE;AAChC,QAAMG,SAASC,QAAQ,MAAM,CAAC,CAACJ,MAAM,CAAC,CAACE,SAAS,CAACF,IAAIE,OAAO,CAAC;AAE7D,QAAM,CAACG,mBAAmBC,eAAe,IAAIC,iBAC3CC,WAAYC,CAAAA,UAAU,CAACA,MAAMJ,mBAAmBI,MAAMH,eAAe,CAAC,CACxE;AAEA,SACEI,kCAAAA,IAAC,QAAA,EACC,QACA,SAAS,MAAM;AACbZ,aAAS,KAAK;AACdQ,oBAAgB,KAAK;AAAA,EACvB,GACA,UACA,eACA,MACA,YAAY;AAAA,IAAEK,MAAMC;AAAAA,IAAcC,MAAMD;AAAAA,EAAQE,GAChD,qBAAqBC,OACrB,8CACG,OAAA,EACEV,UAAAA;AAAAA,IAAAA,oBAAoB,KACnBK,sCAAC,YAAA,EACC,SAAQ,WACR,SAAS,MAAM;AACbZ,eAAS,EAAE;AACXQ,sBAAgB,EAAE;AAAA,IACpB,GAEA,UAAAI,kCAAAA,IAAC,iBAAA,CAAA,CAAe,EAAA,CAClB;AAAA,IAEFA,kCAAAA,IAAC,aAAA,EAAY,MAAK,MAAMjB,UAAAA,MAAAA,CAAM;AAAA,EAAA,GAChC,GAGF,UAAAuB,kCAAAA,KAAC,OAAA,EAAM,KAAK,MAAM,WAAWJ,MAC3B,UAAA;AAAA,IAAAF,kCAAAA,IAAC,SAAA,EAAO;AAAA,IACPR;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF;AAEJ;AAEO,SAASe,aAAaC,OAA8B;AACzD,SACER,kCAAAA,IAAC,QAAA,EACC,UAAAA,kCAAAA,IAAC,OAAA,EAAM,MAAK,SAAQ,SAASA,kCAAAA,IAAC,uBAAA,KAA0BQ,MAAAA,IAAU,GACpE;AAEJ;AAEO,SAASC,iBAAiB;AAAA,EAC/BC;AAAAA,EACAC;AACkC,GAAG;AACrC,QAAMf,kBAAkBC,iBACtBC,WAAYC,CAAAA,UAAUA,MAAMH,eAAe,CAC7C;AAEA,QAAMgB,aAAaC,YAAY,MAAM;AACnCjB,oBAAgB,CAAC;AAAA,EACnB,GAAG,CAACA,eAAe,CAAC;AAEpB,SACEI,kCAAAA,IAAC,QAAK,IAAQ,SAASY,YACrB,UAAAZ,kCAAAA,IAAC,MAAA,EAAMW,gBAAK,EAAA,CACd;AAEJ;"}
@@ -2,12 +2,12 @@ export declare enum ApiEndpoints {
2
2
  api_server_info = "",
3
3
  user_list = "user/",
4
4
  user_set_password = "user/:id/set-password/",
5
- user_me = "user/me/",
6
- user_profile = "user/profile/",
7
- user_roles = "user/roles/",
8
- user_token = "user/token/",
9
5
  user_tokens = "user/tokens/",
10
6
  user_simple_login = "email/generate/",
7
+ user_me_profile = "user/me/profile/",
8
+ user_me_roles = "user/me/roles/",
9
+ user_me_token = "user/me/token/",
10
+ user_me = "user/me/",
11
11
  auth_base = "/auth/",
12
12
  user_reset = "auth/v1/auth/password/request",
13
13
  user_reset_set = "auth/v1/auth/password/reset",
@@ -142,6 +142,7 @@ export declare enum ApiEndpoints {
142
142
  sales_order_complete = "order/so/:id/complete/",
143
143
  sales_order_allocate = "order/so/:id/allocate/",
144
144
  sales_order_allocate_serials = "order/so/:id/allocate-serials/",
145
+ sales_order_auto_allocate = "order/so/:id/auto-allocate/",
145
146
  sales_order_line_list = "order/so-line/",
146
147
  sales_order_extra_line_list = "order/so-extra-line/",
147
148
  sales_order_allocation_list = "order/so-allocation/",
@@ -155,6 +156,15 @@ export declare enum ApiEndpoints {
155
156
  return_order_receive = "order/ro/:id/receive/",
156
157
  return_order_line_list = "order/ro-line/",
157
158
  return_order_extra_line_list = "order/ro-extra-line/",
159
+ transfer_order_list = "order/transfer-order/",
160
+ transfer_order_issue = "order/transfer-order/:id/issue/",
161
+ transfer_order_hold = "order/transfer-order/:id/hold/",
162
+ transfer_order_cancel = "order/transfer-order/:id/cancel/",
163
+ transfer_order_complete = "order/transfer-order/:id/complete/",
164
+ transfer_order_allocate = "order/transfer-order/:id/allocate/",
165
+ transfer_order_allocate_serials = "order/transfer-order/:id/allocate-serials/",
166
+ transfer_order_line_list = "order/transfer-order-line/",
167
+ transfer_order_allocation_list = "order/transfer-order-allocation/",
158
168
  label_list = "label/template/",
159
169
  label_print = "label/print/",
160
170
  report_list = "report/template/",
@@ -192,5 +202,6 @@ export declare enum ApiEndpoints {
192
202
  config_list = "admin/config/",
193
203
  parameter_list = "parameter/",
194
204
  parameter_template_list = "parameter/template/",
205
+ tag_list = "tag/",
195
206
  system_internal_trace_end = "system-internal/observability/end"
196
207
  }
@@ -2,12 +2,12 @@ var ApiEndpoints = /* @__PURE__ */ ((ApiEndpoints2) => {
2
2
  ApiEndpoints2["api_server_info"] = "";
3
3
  ApiEndpoints2["user_list"] = "user/";
4
4
  ApiEndpoints2["user_set_password"] = "user/:id/set-password/";
5
- ApiEndpoints2["user_me"] = "user/me/";
6
- ApiEndpoints2["user_profile"] = "user/profile/";
7
- ApiEndpoints2["user_roles"] = "user/roles/";
8
- ApiEndpoints2["user_token"] = "user/token/";
9
5
  ApiEndpoints2["user_tokens"] = "user/tokens/";
10
6
  ApiEndpoints2["user_simple_login"] = "email/generate/";
7
+ ApiEndpoints2["user_me_profile"] = "user/me/profile/";
8
+ ApiEndpoints2["user_me_roles"] = "user/me/roles/";
9
+ ApiEndpoints2["user_me_token"] = "user/me/token/";
10
+ ApiEndpoints2["user_me"] = "user/me/";
11
11
  ApiEndpoints2["auth_base"] = "/auth/";
12
12
  ApiEndpoints2["user_reset"] = "auth/v1/auth/password/request";
13
13
  ApiEndpoints2["user_reset_set"] = "auth/v1/auth/password/reset";
@@ -142,6 +142,7 @@ var ApiEndpoints = /* @__PURE__ */ ((ApiEndpoints2) => {
142
142
  ApiEndpoints2["sales_order_complete"] = "order/so/:id/complete/";
143
143
  ApiEndpoints2["sales_order_allocate"] = "order/so/:id/allocate/";
144
144
  ApiEndpoints2["sales_order_allocate_serials"] = "order/so/:id/allocate-serials/";
145
+ ApiEndpoints2["sales_order_auto_allocate"] = "order/so/:id/auto-allocate/";
145
146
  ApiEndpoints2["sales_order_line_list"] = "order/so-line/";
146
147
  ApiEndpoints2["sales_order_extra_line_list"] = "order/so-extra-line/";
147
148
  ApiEndpoints2["sales_order_allocation_list"] = "order/so-allocation/";
@@ -155,6 +156,15 @@ var ApiEndpoints = /* @__PURE__ */ ((ApiEndpoints2) => {
155
156
  ApiEndpoints2["return_order_receive"] = "order/ro/:id/receive/";
156
157
  ApiEndpoints2["return_order_line_list"] = "order/ro-line/";
157
158
  ApiEndpoints2["return_order_extra_line_list"] = "order/ro-extra-line/";
159
+ ApiEndpoints2["transfer_order_list"] = "order/transfer-order/";
160
+ ApiEndpoints2["transfer_order_issue"] = "order/transfer-order/:id/issue/";
161
+ ApiEndpoints2["transfer_order_hold"] = "order/transfer-order/:id/hold/";
162
+ ApiEndpoints2["transfer_order_cancel"] = "order/transfer-order/:id/cancel/";
163
+ ApiEndpoints2["transfer_order_complete"] = "order/transfer-order/:id/complete/";
164
+ ApiEndpoints2["transfer_order_allocate"] = "order/transfer-order/:id/allocate/";
165
+ ApiEndpoints2["transfer_order_allocate_serials"] = "order/transfer-order/:id/allocate-serials/";
166
+ ApiEndpoints2["transfer_order_line_list"] = "order/transfer-order-line/";
167
+ ApiEndpoints2["transfer_order_allocation_list"] = "order/transfer-order-allocation/";
158
168
  ApiEndpoints2["label_list"] = "label/template/";
159
169
  ApiEndpoints2["label_print"] = "label/print/";
160
170
  ApiEndpoints2["report_list"] = "report/template/";
@@ -192,6 +202,7 @@ var ApiEndpoints = /* @__PURE__ */ ((ApiEndpoints2) => {
192
202
  ApiEndpoints2["config_list"] = "admin/config/";
193
203
  ApiEndpoints2["parameter_list"] = "parameter/";
194
204
  ApiEndpoints2["parameter_template_list"] = "parameter/template/";
205
+ ApiEndpoints2["tag_list"] = "tag/";
195
206
  ApiEndpoints2["system_internal_trace_end"] = "system-internal/observability/end";
196
207
  return ApiEndpoints2;
197
208
  })(ApiEndpoints || {});