@inventreedb/ui 0.0.3 → 0.0.5

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.
@@ -23,11 +23,19 @@ function getDetailUrl(model, pk, absolute) {
23
23
  }
24
24
  const navigateToLink = (link, navigate, event) => {
25
25
  cancelEvent(event);
26
+ const base = `/${getBaseUrl()}`;
26
27
  if ((event == null ? void 0 : event.ctrlKey) || (event == null ? void 0 : event.shiftKey)) {
27
- const url = `/${getBaseUrl()}${link}`;
28
+ let url = link;
29
+ if (link.startsWith("/") && !link.startsWith(base)) {
30
+ url = `${base}${link}`;
31
+ }
28
32
  window.open(url, "_blank");
29
33
  } else {
30
- navigate(link);
34
+ let url = link;
35
+ if (link.startsWith(base)) {
36
+ url = link.replace(base, "");
37
+ }
38
+ navigate(url);
31
39
  }
32
40
  };
33
41
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.js","sources":["../../lib/functions/Navigation.tsx"],"sourcesContent":["import type { NavigateFunction } from 'react-router-dom';\nimport { ModelInformationDict } from '../enums/ModelInformation';\nimport type { ModelType } from '../enums/ModelType';\nimport { cancelEvent } from './Events';\n\nexport const getBaseUrl = (): string =>\n (window as any).INVENTREE_SETTINGS?.base_url || 'web';\n\n/**\n * Returns the detail view URL for a given model type\n */\nexport function getDetailUrl(\n model: ModelType,\n pk: number | string,\n absolute?: boolean\n): string {\n const modelInfo = ModelInformationDict[model];\n\n if (pk === undefined || pk === null) {\n return '';\n }\n\n if (!!pk && modelInfo && modelInfo.url_detail) {\n const url = modelInfo.url_detail.replace(':pk', pk.toString());\n const base = getBaseUrl();\n\n if (absolute && base) {\n return `/${base}${url}`;\n } else {\n return url;\n }\n }\n\n console.error(`No detail URL found for model ${model} <${pk}>`);\n return '';\n}\n\n/*\n * Navigate to a provided link.\n * - If the link is to be opened externally, open it in a new tab.\n * - Otherwise, navigate using the provided navigate function.\n */\nexport const navigateToLink = (\n link: string,\n navigate: NavigateFunction,\n event: any\n) => {\n cancelEvent(event);\n\n if (event?.ctrlKey || event?.shiftKey) {\n // Open the link in a new tab\n const url = `/${getBaseUrl()}${link}`;\n window.open(url, '_blank');\n } else {\n // Navigate internally\n navigate(link);\n }\n};\n"],"names":["getBaseUrl","window","INVENTREE_SETTINGS","base_url","getDetailUrl","model","pk","absolute","modelInfo","ModelInformationDict","undefined","url_detail","url","replace","toString","base","console","error","navigateToLink","link","navigate","event","cancelEvent","ctrlKey","shiftKey","open"],"mappings":";;AAKO,MAAMA,aAAaA,MACvBC;;AAAAA,uBAAeC,uBAAfD,mBAAmCE,aAAY;AAAA;AAKlCC,SAAAA,aACdC,OACAC,IACAC,UACQ;AACFC,QAAAA,YAAYC,qBAAqBJ,KAAK;AAExCC,MAAAA,OAAOI,UAAaJ,OAAO,MAAM;AAC5B,WAAA;AAAA,EAAA;AAGT,MAAI,CAAC,CAACA,MAAME,aAAaA,UAAUG,YAAY;AAC7C,UAAMC,MAAMJ,UAAUG,WAAWE,QAAQ,OAAOP,GAAGQ,UAAU;AAC7D,UAAMC,OAAOf,WAAW;AAExB,QAAIO,YAAYQ,MAAM;AACb,aAAA,IAAIA,IAAI,GAAGH,GAAG;AAAA,IAAA,OAChB;AACEA,aAAAA;AAAAA,IAAAA;AAAAA,EACT;AAGFI,UAAQC,MAAM,iCAAiCZ,KAAK,KAAKC,EAAE,GAAG;AACvD,SAAA;AACT;AAOO,MAAMY,iBAAiBA,CAC5BC,MACAC,UACAC,UACG;AACHC,cAAYD,KAAK;AAEbA,OAAAA,+BAAOE,aAAWF,+BAAOG,WAAU;AAErC,UAAMZ,MAAM,IAAIZ,WAAW,CAAC,GAAGmB,IAAI;AAC5BM,WAAAA,KAAKb,KAAK,QAAQ;AAAA,EAAA,OACpB;AAELQ,aAASD,IAAI;AAAA,EAAA;AAEjB;"}
1
+ {"version":3,"file":"Navigation.js","sources":["../../lib/functions/Navigation.tsx"],"sourcesContent":["import type { NavigateFunction } from 'react-router-dom';\nimport { ModelInformationDict } from '../enums/ModelInformation';\nimport type { ModelType } from '../enums/ModelType';\nimport { cancelEvent } from './Events';\n\nexport const getBaseUrl = (): string =>\n (window as any).INVENTREE_SETTINGS?.base_url || 'web';\n\n/**\n * Returns the detail view URL for a given model type\n */\nexport function getDetailUrl(\n model: ModelType,\n pk: number | string,\n absolute?: boolean\n): string {\n const modelInfo = ModelInformationDict[model];\n\n if (pk === undefined || pk === null) {\n return '';\n }\n\n if (!!pk && modelInfo && modelInfo.url_detail) {\n const url = modelInfo.url_detail.replace(':pk', pk.toString());\n const base = getBaseUrl();\n\n if (absolute && base) {\n return `/${base}${url}`;\n } else {\n return url;\n }\n }\n\n console.error(`No detail URL found for model ${model} <${pk}>`);\n return '';\n}\n\n/*\n * Navigate to a provided link.\n * - If the link is to be opened externally, open it in a new tab.\n * - Otherwise, navigate using the provided navigate function.\n */\nexport const navigateToLink = (\n link: string,\n navigate: NavigateFunction,\n event: any\n) => {\n cancelEvent(event);\n\n const base = `/${getBaseUrl()}`;\n\n if (event?.ctrlKey || event?.shiftKey) {\n // Open the link in a new tab\n let url = link;\n if (link.startsWith('/') && !link.startsWith(base)) {\n url = `${base}${link}`;\n }\n window.open(url, '_blank');\n } else {\n // Navigate internally\n let url = link;\n\n if (link.startsWith(base)) {\n // Strip the base URL from the link\n url = link.replace(base, '');\n }\n\n navigate(url);\n }\n};\n"],"names":["getBaseUrl","window","INVENTREE_SETTINGS","base_url","getDetailUrl","model","pk","absolute","modelInfo","ModelInformationDict","undefined","url_detail","url","replace","toString","base","console","error","navigateToLink","link","navigate","event","cancelEvent","ctrlKey","shiftKey","startsWith","open"],"mappings":";;AAKO,MAAMA,aAAaA,MACvBC;;AAAAA,uBAAeC,uBAAfD,mBAAmCE,aAAY;AAAA;AAKlCC,SAAAA,aACdC,OACAC,IACAC,UACQ;AACFC,QAAAA,YAAYC,qBAAqBJ,KAAK;AAExCC,MAAAA,OAAOI,UAAaJ,OAAO,MAAM;AAC5B,WAAA;AAAA,EAAA;AAGT,MAAI,CAAC,CAACA,MAAME,aAAaA,UAAUG,YAAY;AAC7C,UAAMC,MAAMJ,UAAUG,WAAWE,QAAQ,OAAOP,GAAGQ,UAAU;AAC7D,UAAMC,OAAOf,WAAW;AAExB,QAAIO,YAAYQ,MAAM;AACb,aAAA,IAAIA,IAAI,GAAGH,GAAG;AAAA,IAAA,OAChB;AACEA,aAAAA;AAAAA,IAAAA;AAAAA,EACT;AAGFI,UAAQC,MAAM,iCAAiCZ,KAAK,KAAKC,EAAE,GAAG;AACvD,SAAA;AACT;AAOO,MAAMY,iBAAiBA,CAC5BC,MACAC,UACAC,UACG;AACHC,cAAYD,KAAK;AAEXN,QAAAA,OAAO,IAAIf,WAAY,CAAA;AAEzBqB,OAAAA,+BAAOE,aAAWF,+BAAOG,WAAU;AAErC,QAAIZ,MAAMO;AACNA,QAAAA,KAAKM,WAAW,GAAG,KAAK,CAACN,KAAKM,WAAWV,IAAI,GAAG;AAC5C,YAAA,GAAGA,IAAI,GAAGI,IAAI;AAAA,IAAA;AAEfO,WAAAA,KAAKd,KAAK,QAAQ;AAAA,EAAA,OACpB;AAEL,QAAIA,MAAMO;AAENA,QAAAA,KAAKM,WAAWV,IAAI,GAAG;AAEnBI,YAAAA,KAAKN,QAAQE,MAAM,EAAE;AAAA,IAAA;AAG7BK,aAASR,GAAG;AAAA,EAAA;AAEhB;"}
@@ -1,4 +1,4 @@
1
- const INVENTREE_PLUGIN_VERSION = "0.0.3";
1
+ const INVENTREE_PLUGIN_VERSION = "0.0.5";
2
2
  export {
3
3
  INVENTREE_PLUGIN_VERSION
4
4
  };
@@ -47,12 +47,24 @@ export const navigateToLink = (
47
47
  ) => {
48
48
  cancelEvent(event);
49
49
 
50
+ const base = `/${getBaseUrl()}`;
51
+
50
52
  if (event?.ctrlKey || event?.shiftKey) {
51
53
  // Open the link in a new tab
52
- const url = `/${getBaseUrl()}${link}`;
54
+ let url = link;
55
+ if (link.startsWith('/') && !link.startsWith(base)) {
56
+ url = `${base}${link}`;
57
+ }
53
58
  window.open(url, '_blank');
54
59
  } else {
55
60
  // Navigate internally
56
- navigate(link);
61
+ let url = link;
62
+
63
+ if (link.startsWith(base)) {
64
+ // Strip the base URL from the link
65
+ url = link.replace(base, '');
66
+ }
67
+
68
+ navigate(url);
57
69
  }
58
70
  };
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@inventreedb/ui",
3
3
  "description": "UI components for the InvenTree project",
4
- "version": "0.0.3",
4
+ "version": "0.0.5",
5
5
  "private": false,
6
6
  "type": "module",
7
7
  "license": "MIT",
8
+ "keywords": [
9
+ "inventree"
10
+ ],
8
11
  "main": "./dist/index.js",
9
12
  "types": "./dist/index.d.ts",
10
13
  "exports": {