@inventreedb/ui 1.4.0 → 1.4.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 (60) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/.vite/manifest.json +40 -1
  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/TableColumnSelect.js +1 -1
  8. package/dist/components/TableColumnSelect.js.map +1 -1
  9. package/dist/components/TagsList.d.ts +3 -0
  10. package/dist/components/TagsList.js +21 -0
  11. package/dist/components/TagsList.js.map +1 -0
  12. package/dist/enums/ApiEndpoints.d.ts +15 -4
  13. package/dist/enums/ApiEndpoints.js +15 -4
  14. package/dist/enums/ApiEndpoints.js.map +1 -1
  15. package/dist/enums/ModelInformation.d.ts +1 -0
  16. package/dist/enums/ModelInformation.js +54 -2
  17. package/dist/enums/ModelInformation.js.map +1 -1
  18. package/dist/enums/ModelType.d.ts +4 -1
  19. package/dist/enums/ModelType.js +3 -0
  20. package/dist/enums/ModelType.js.map +1 -1
  21. package/dist/enums/Roles.d.ts +1 -0
  22. package/dist/enums/Roles.js +1 -0
  23. package/dist/enums/Roles.js.map +1 -1
  24. package/dist/functions/Navigation.js +1 -1
  25. package/dist/functions/Navigation.js.map +1 -1
  26. package/dist/hooks/UseFilterSet.js +38 -1
  27. package/dist/hooks/UseFilterSet.js.map +1 -1
  28. package/dist/index.d.ts +3 -0
  29. package/dist/index.js +16 -10
  30. package/dist/index.js.map +1 -1
  31. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTag.js +14 -0
  32. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTag.js.map +1 -0
  33. package/dist/plugin/InventreeHmrPlugin.d.ts +8 -0
  34. package/dist/plugin/InventreeHmrPlugin.js +21 -0
  35. package/dist/plugin/InventreeHmrPlugin.js.map +1 -0
  36. package/dist/plugin/LocalizedComponent.d.ts +11 -0
  37. package/dist/plugin/LocalizedComponent.js +57 -0
  38. package/dist/plugin/LocalizedComponent.js.map +1 -0
  39. package/dist/types/Filters.d.ts +11 -0
  40. package/dist/types/Forms.d.ts +4 -1
  41. package/dist/types/Plugins.js +1 -1
  42. package/dist/types/Rendering.d.ts +1 -0
  43. package/dist/types/Tables.d.ts +4 -2
  44. package/lib/components/Boundary.tsx +7 -3
  45. package/lib/components/TableColumnSelect.tsx +1 -1
  46. package/lib/components/TagsList.tsx +27 -0
  47. package/lib/enums/ApiEndpoints.tsx +18 -4
  48. package/lib/enums/ModelInformation.tsx +25 -2
  49. package/lib/enums/ModelType.tsx +4 -1
  50. package/lib/enums/Roles.tsx +3 -0
  51. package/lib/functions/Navigation.tsx +1 -1
  52. package/lib/hooks/UseFilterSet.tsx +54 -3
  53. package/lib/index.ts +5 -0
  54. package/lib/plugin/InventreeHmrPlugin.tsx +40 -0
  55. package/lib/plugin/LocalizedComponent.tsx +87 -0
  56. package/lib/types/Filters.tsx +19 -0
  57. package/lib/types/Forms.tsx +5 -1
  58. package/lib/types/Rendering.tsx +1 -0
  59. package/lib/types/Tables.tsx +5 -2
  60. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ModelInformation.js","sources":["../../lib/enums/ModelInformation.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport type { InvenTreeIconType } from '../types/Icons';\nimport { ApiEndpoints } from './ApiEndpoints';\nimport type { ModelType } from './ModelType';\n\nexport interface ModelInformationInterface {\n label: string;\n label_multiple: string;\n url_overview?: string;\n url_detail?: string;\n api_endpoint: ApiEndpoints;\n admin_url?: string;\n supports_barcode?: boolean;\n icon: keyof InvenTreeIconType;\n}\n\nexport interface TranslatableModelInformationInterface\n extends Omit<ModelInformationInterface, 'label' | 'label_multiple'> {\n label: () => string;\n label_multiple: () => string;\n}\n\nexport type ModelDict = {\n [key in keyof typeof ModelType]: TranslatableModelInformationInterface;\n};\n\nexport const ModelInformationDict: ModelDict = {\n part: {\n label: () => t`Part`,\n label_multiple: () => t`Parts`,\n url_overview: '/part/category/index/parts',\n url_detail: '/part/:pk/',\n api_endpoint: ApiEndpoints.part_list,\n admin_url: '/part/part/',\n supports_barcode: true,\n icon: 'part'\n },\n parameter: {\n label: () => t`Parameter`,\n label_multiple: () => t`Parameters`,\n api_endpoint: ApiEndpoints.parameter_list,\n icon: 'list_details'\n },\n parametertemplate: {\n label: () => t`Parameter Template`,\n label_multiple: () => t`Parameter Templates`,\n api_endpoint: ApiEndpoints.parameter_template_list,\n admin_url: '/common/parametertemplate/',\n icon: 'list'\n },\n parttesttemplate: {\n label: () => t`Part Test Template`,\n label_multiple: () => t`Part Test Templates`,\n url_detail: '/parttesttemplate/:pk/',\n api_endpoint: ApiEndpoints.part_test_template_list,\n icon: 'test'\n },\n supplierpart: {\n label: () => t`Supplier Part`,\n label_multiple: () => t`Supplier Parts`,\n url_overview: '/purchasing/index/supplier-parts',\n url_detail: '/purchasing/supplier-part/:pk/',\n api_endpoint: ApiEndpoints.supplier_part_list,\n admin_url: '/company/supplierpart/',\n supports_barcode: true,\n icon: 'supplier_part'\n },\n manufacturerpart: {\n label: () => t`Manufacturer Part`,\n label_multiple: () => t`Manufacturer Parts`,\n url_overview: '/purchasing/index/manufacturer-parts',\n url_detail: '/purchasing/manufacturer-part/:pk/',\n api_endpoint: ApiEndpoints.manufacturer_part_list,\n admin_url: '/company/manufacturerpart/',\n supports_barcode: true,\n icon: 'manufacturers'\n },\n partcategory: {\n label: () => t`Part Category`,\n label_multiple: () => t`Part Categories`,\n url_overview: '/part/category/parts/subcategories',\n url_detail: '/part/category/:pk/',\n api_endpoint: ApiEndpoints.category_list,\n admin_url: '/part/partcategory/',\n icon: 'category'\n },\n stockitem: {\n label: () => t`Stock Item`,\n label_multiple: () => t`Stock Items`,\n url_overview: '/stock/location/index/stock-items',\n url_detail: '/stock/item/:pk/',\n api_endpoint: ApiEndpoints.stock_item_list,\n admin_url: '/stock/stockitem/',\n supports_barcode: true,\n icon: 'stock'\n },\n stocklocation: {\n label: () => t`Stock Location`,\n label_multiple: () => t`Stock Locations`,\n url_overview: '/stock/location',\n url_detail: '/stock/location/:pk/',\n api_endpoint: ApiEndpoints.stock_location_list,\n admin_url: '/stock/stocklocation/',\n supports_barcode: true,\n icon: 'location'\n },\n stocklocationtype: {\n label: () => t`Stock Location Type`,\n label_multiple: () => t`Stock Location Types`,\n api_endpoint: ApiEndpoints.stock_location_type_list,\n icon: 'location'\n },\n stockhistory: {\n label: () => t`Stock History`,\n label_multiple: () => t`Stock Histories`,\n api_endpoint: ApiEndpoints.stock_tracking_list,\n icon: 'history'\n },\n build: {\n label: () => t`Build`,\n label_multiple: () => t`Builds`,\n url_overview: '/manufacturing/index/buildorders/',\n url_detail: '/manufacturing/build-order/:pk/',\n api_endpoint: ApiEndpoints.build_order_list,\n admin_url: '/build/build/',\n supports_barcode: true,\n icon: 'build_order'\n },\n buildline: {\n label: () => t`Build Line`,\n label_multiple: () => t`Build Lines`,\n url_overview: '/build/line',\n url_detail: '/build/line/:pk/',\n api_endpoint: ApiEndpoints.build_line_list,\n icon: 'build_order'\n },\n builditem: {\n label: () => t`Build Item`,\n label_multiple: () => t`Build Items`,\n api_endpoint: ApiEndpoints.build_item_list,\n icon: 'build_order'\n },\n company: {\n label: () => t`Company`,\n label_multiple: () => t`Companies`,\n url_detail: '/company/:pk/',\n api_endpoint: ApiEndpoints.company_list,\n admin_url: '/company/company/',\n icon: 'building'\n },\n projectcode: {\n label: () => t`Project Code`,\n label_multiple: () => t`Project Codes`,\n url_detail: '/project-code/:pk/',\n api_endpoint: ApiEndpoints.project_code_list,\n icon: 'list_details'\n },\n purchaseorder: {\n label: () => t`Purchase Order`,\n label_multiple: () => t`Purchase Orders`,\n url_overview: '/purchasing/index/purchaseorders',\n url_detail: '/purchasing/purchase-order/:pk/',\n api_endpoint: ApiEndpoints.purchase_order_list,\n admin_url: '/order/purchaseorder/',\n supports_barcode: true,\n icon: 'purchase_orders'\n },\n purchaseorderlineitem: {\n label: () => t`Purchase Order Line`,\n label_multiple: () => t`Purchase Order Lines`,\n api_endpoint: ApiEndpoints.purchase_order_line_list,\n icon: 'purchase_orders'\n },\n salesorder: {\n label: () => t`Sales Order`,\n label_multiple: () => t`Sales Orders`,\n url_overview: '/sales/index/salesorders',\n url_detail: '/sales/sales-order/:pk/',\n api_endpoint: ApiEndpoints.sales_order_list,\n admin_url: '/order/salesorder/',\n supports_barcode: true,\n icon: 'sales_orders'\n },\n salesordershipment: {\n label: () => t`Sales Order Shipment`,\n label_multiple: () => t`Sales Order Shipments`,\n url_overview: '/sales/index/shipments',\n url_detail: '/sales/shipment/:pk/',\n admin_url: '/order/salesordershipment/',\n api_endpoint: ApiEndpoints.sales_order_shipment_list,\n supports_barcode: true,\n icon: 'shipment'\n },\n returnorder: {\n label: () => t`Return Order`,\n label_multiple: () => t`Return Orders`,\n url_overview: '/sales/index/returnorders',\n url_detail: '/sales/return-order/:pk/',\n api_endpoint: ApiEndpoints.return_order_list,\n admin_url: '/order/returnorder/',\n supports_barcode: true,\n icon: 'return_orders'\n },\n returnorderlineitem: {\n label: () => t`Return Order Line Item`,\n label_multiple: () => t`Return Order Line Items`,\n api_endpoint: ApiEndpoints.return_order_line_list,\n icon: 'return_orders'\n },\n address: {\n label: () => t`Address`,\n label_multiple: () => t`Addresses`,\n url_detail: '/address/:pk/',\n api_endpoint: ApiEndpoints.address_list,\n icon: 'address'\n },\n contact: {\n label: () => t`Contact`,\n label_multiple: () => t`Contacts`,\n url_detail: '/contact/:pk/',\n api_endpoint: ApiEndpoints.contact_list,\n icon: 'group'\n },\n owner: {\n label: () => t`Owner`,\n label_multiple: () => t`Owners`,\n url_detail: '/owner/:pk/',\n api_endpoint: ApiEndpoints.owner_list,\n icon: 'group'\n },\n user: {\n label: () => t`User`,\n label_multiple: () => t`Users`,\n url_detail: '/core/user/:pk/',\n api_endpoint: ApiEndpoints.user_list,\n icon: 'user'\n },\n group: {\n label: () => t`Group`,\n label_multiple: () => t`Groups`,\n url_detail: '/core/group/:pk/',\n api_endpoint: ApiEndpoints.group_list,\n admin_url: '/auth/group/',\n icon: 'group'\n },\n importsession: {\n label: () => t`Import Session`,\n label_multiple: () => t`Import Sessions`,\n url_overview: '/settings/admin/import',\n url_detail: '/import/:pk/',\n api_endpoint: ApiEndpoints.import_session_list,\n icon: 'import'\n },\n labeltemplate: {\n label: () => t`Label Template`,\n label_multiple: () => t`Label Templates`,\n url_overview: '/settings/admin/labels',\n url_detail: '/settings/admin/labels/:pk/',\n api_endpoint: ApiEndpoints.label_list,\n icon: 'labels'\n },\n reporttemplate: {\n label: () => t`Report Template`,\n label_multiple: () => t`Report Templates`,\n url_overview: '/settings/admin/reports',\n url_detail: '/settings/admin/reports/:pk/',\n api_endpoint: ApiEndpoints.report_list,\n icon: 'reports'\n },\n pluginconfig: {\n label: () => t`Plugin Configuration`,\n label_multiple: () => t`Plugin Configurations`,\n url_overview: '/settings/admin/plugin',\n url_detail: '/settings/admin/plugin/:pk/',\n api_endpoint: ApiEndpoints.plugin_list,\n icon: 'plugin'\n },\n contenttype: {\n label: () => t`Content Type`,\n label_multiple: () => t`Content Types`,\n api_endpoint: ApiEndpoints.content_type_list,\n icon: 'list_details'\n },\n selectionlist: {\n label: () => t`Selection List`,\n label_multiple: () => t`Selection Lists`,\n url_overview: '/settings/admin/part-parameters',\n api_endpoint: ApiEndpoints.selectionlist_list,\n icon: 'list_details'\n },\n selectionentry: {\n label: () => t`Selection Entry`,\n label_multiple: () => t`Selection Entries`,\n url_overview: '/settings/admin/part-parameters',\n api_endpoint: ApiEndpoints.selectionentry_list,\n icon: 'list_details'\n },\n error: {\n label: () => t`Error`,\n label_multiple: () => t`Errors`,\n api_endpoint: ApiEndpoints.error_report_list,\n url_overview: '/settings/admin/errors',\n url_detail: '/settings/admin/errors/:pk/',\n icon: 'exclamation'\n }\n};\n"],"names":["ModelInformationDict","part","label","_i18n","_","id","label_multiple","url_overview","url_detail","api_endpoint","ApiEndpoints","part_list","admin_url","supports_barcode","icon","parameter","parameter_list","parametertemplate","parameter_template_list","parttesttemplate","part_test_template_list","supplierpart","supplier_part_list","manufacturerpart","manufacturer_part_list","partcategory","category_list","stockitem","stock_item_list","stocklocation","stock_location_list","stocklocationtype","stock_location_type_list","stockhistory","stock_tracking_list","build","build_order_list","buildline","build_line_list","builditem","build_item_list","company","company_list","projectcode","project_code_list","purchaseorder","purchase_order_list","purchaseorderlineitem","purchase_order_line_list","salesorder","sales_order_list","salesordershipment","sales_order_shipment_list","returnorder","return_order_list","returnorderlineitem","return_order_line_list","address","address_list","contact","contact_list","owner","owner_list","user","user_list","group","group_list","importsession","import_session_list","labeltemplate","label_list","reporttemplate","report_list","pluginconfig","plugin_list","contenttype","content_type_list","selectionlist","selectionlist_list","selectionentry","selectionentry_list","error","error_report_list"],"mappings":"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"}
1
+ {"version":3,"file":"ModelInformation.js","sources":["../../lib/enums/ModelInformation.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\nimport type { InvenTreeIconType } from '../types/Icons';\nimport { ApiEndpoints } from './ApiEndpoints';\nimport type { ModelType } from './ModelType';\n\nexport interface ModelInformationInterface {\n label: string;\n label_multiple: string;\n url_overview?: string;\n url_detail?: string;\n api_endpoint: ApiEndpoints;\n admin_url?: string;\n pk_field?: string;\n supports_barcode?: boolean;\n icon: keyof InvenTreeIconType;\n}\n\nexport interface TranslatableModelInformationInterface\n extends Omit<ModelInformationInterface, 'label' | 'label_multiple'> {\n label: () => string;\n label_multiple: () => string;\n}\n\nexport type ModelDict = {\n [key in keyof typeof ModelType]: TranslatableModelInformationInterface;\n};\n\nexport const ModelInformationDict: ModelDict = {\n part: {\n label: () => t`Part`,\n label_multiple: () => t`Parts`,\n url_overview: '/part/category/index/parts',\n url_detail: '/part/:pk/',\n api_endpoint: ApiEndpoints.part_list,\n admin_url: '/part/part/',\n supports_barcode: true,\n icon: 'part'\n },\n parameter: {\n label: () => t`Parameter`,\n label_multiple: () => t`Parameters`,\n api_endpoint: ApiEndpoints.parameter_list,\n icon: 'list_details'\n },\n parametertemplate: {\n label: () => t`Parameter Template`,\n label_multiple: () => t`Parameter Templates`,\n api_endpoint: ApiEndpoints.parameter_template_list,\n admin_url: '/common/parametertemplate/',\n icon: 'list'\n },\n parttesttemplate: {\n label: () => t`Part Test Template`,\n label_multiple: () => t`Part Test Templates`,\n url_detail: '/parttesttemplate/:pk/',\n api_endpoint: ApiEndpoints.part_test_template_list,\n icon: 'test'\n },\n supplierpart: {\n label: () => t`Supplier Part`,\n label_multiple: () => t`Supplier Parts`,\n url_overview: '/purchasing/index/supplier-parts',\n url_detail: '/purchasing/supplier-part/:pk/',\n api_endpoint: ApiEndpoints.supplier_part_list,\n admin_url: '/company/supplierpart/',\n supports_barcode: true,\n icon: 'supplier_part'\n },\n manufacturerpart: {\n label: () => t`Manufacturer Part`,\n label_multiple: () => t`Manufacturer Parts`,\n url_overview: '/purchasing/index/manufacturer-parts',\n url_detail: '/purchasing/manufacturer-part/:pk/',\n api_endpoint: ApiEndpoints.manufacturer_part_list,\n admin_url: '/company/manufacturerpart/',\n supports_barcode: true,\n icon: 'manufacturers'\n },\n partcategory: {\n label: () => t`Part Category`,\n label_multiple: () => t`Part Categories`,\n url_overview: '/part/category/parts/subcategories',\n url_detail: '/part/category/:pk/',\n api_endpoint: ApiEndpoints.category_list,\n admin_url: '/part/partcategory/',\n icon: 'category'\n },\n stockitem: {\n label: () => t`Stock Item`,\n label_multiple: () => t`Stock Items`,\n url_overview: '/stock/location/index/stock-items',\n url_detail: '/stock/item/:pk/',\n api_endpoint: ApiEndpoints.stock_item_list,\n admin_url: '/stock/stockitem/',\n supports_barcode: true,\n icon: 'stock'\n },\n stocklocation: {\n label: () => t`Stock Location`,\n label_multiple: () => t`Stock Locations`,\n url_overview: '/stock/location',\n url_detail: '/stock/location/:pk/',\n api_endpoint: ApiEndpoints.stock_location_list,\n admin_url: '/stock/stocklocation/',\n supports_barcode: true,\n icon: 'location'\n },\n stocklocationtype: {\n label: () => t`Stock Location Type`,\n label_multiple: () => t`Stock Location Types`,\n api_endpoint: ApiEndpoints.stock_location_type_list,\n icon: 'location'\n },\n stockhistory: {\n label: () => t`Stock History`,\n label_multiple: () => t`Stock Histories`,\n api_endpoint: ApiEndpoints.stock_tracking_list,\n icon: 'history'\n },\n build: {\n label: () => t`Build Order`,\n label_multiple: () => t`Build Orders`,\n url_overview: '/manufacturing/index/buildorders/',\n url_detail: '/manufacturing/build-order/:pk/',\n api_endpoint: ApiEndpoints.build_order_list,\n admin_url: '/build/build/',\n supports_barcode: true,\n icon: 'build_order'\n },\n buildline: {\n label: () => t`Build Line`,\n label_multiple: () => t`Build Lines`,\n url_overview: '/build/line',\n url_detail: '/build/line/:pk/',\n api_endpoint: ApiEndpoints.build_line_list,\n icon: 'build_order'\n },\n builditem: {\n label: () => t`Build Item`,\n label_multiple: () => t`Build Items`,\n api_endpoint: ApiEndpoints.build_item_list,\n icon: 'build_order'\n },\n company: {\n label: () => t`Company`,\n label_multiple: () => t`Companies`,\n url_detail: '/company/:pk/',\n api_endpoint: ApiEndpoints.company_list,\n admin_url: '/company/company/',\n icon: 'building'\n },\n projectcode: {\n label: () => t`Project Code`,\n label_multiple: () => t`Project Codes`,\n url_detail: '/project-code/:pk/',\n api_endpoint: ApiEndpoints.project_code_list,\n icon: 'list_details'\n },\n purchaseorder: {\n label: () => t`Purchase Order`,\n label_multiple: () => t`Purchase Orders`,\n url_overview: '/purchasing/index/purchaseorders',\n url_detail: '/purchasing/purchase-order/:pk/',\n api_endpoint: ApiEndpoints.purchase_order_list,\n admin_url: '/order/purchaseorder/',\n supports_barcode: true,\n icon: 'purchase_orders'\n },\n purchaseorderlineitem: {\n label: () => t`Purchase Order Line`,\n label_multiple: () => t`Purchase Order Lines`,\n api_endpoint: ApiEndpoints.purchase_order_line_list,\n icon: 'purchase_orders'\n },\n salesorder: {\n label: () => t`Sales Order`,\n label_multiple: () => t`Sales Orders`,\n url_overview: '/sales/index/salesorders',\n url_detail: '/sales/sales-order/:pk/',\n api_endpoint: ApiEndpoints.sales_order_list,\n admin_url: '/order/salesorder/',\n supports_barcode: true,\n icon: 'sales_orders'\n },\n salesordershipment: {\n label: () => t`Sales Order Shipment`,\n label_multiple: () => t`Sales Order Shipments`,\n url_overview: '/sales/index/shipments',\n url_detail: '/sales/shipment/:pk/',\n admin_url: '/order/salesordershipment/',\n api_endpoint: ApiEndpoints.sales_order_shipment_list,\n supports_barcode: true,\n icon: 'shipment'\n },\n returnorder: {\n label: () => t`Return Order`,\n label_multiple: () => t`Return Orders`,\n url_overview: '/sales/index/returnorders',\n url_detail: '/sales/return-order/:pk/',\n api_endpoint: ApiEndpoints.return_order_list,\n admin_url: '/order/returnorder/',\n supports_barcode: true,\n icon: 'return_orders'\n },\n returnorderlineitem: {\n label: () => t`Return Order Line Item`,\n label_multiple: () => t`Return Order Line Items`,\n api_endpoint: ApiEndpoints.return_order_line_list,\n icon: 'return_orders'\n },\n transferorder: {\n label: () => t`Transfer Order`,\n label_multiple: () => t`Transfer Orders`,\n url_overview: '/stock/location/index/transfer-orders',\n url_detail: '/stock/transfer-order/:pk/',\n api_endpoint: ApiEndpoints.transfer_order_list,\n admin_url: '/order/transferorder/',\n supports_barcode: true,\n icon: 'transfer_orders'\n },\n transferorderlineitem: {\n label: () => t`Transfer Order Line Item`,\n label_multiple: () => t`Transfer Order Line Items`,\n api_endpoint: ApiEndpoints.transfer_order_line_list,\n icon: 'transfer-orders'\n },\n address: {\n label: () => t`Address`,\n label_multiple: () => t`Addresses`,\n url_detail: '/address/:pk/',\n api_endpoint: ApiEndpoints.address_list,\n icon: 'address'\n },\n contact: {\n label: () => t`Contact`,\n label_multiple: () => t`Contacts`,\n url_detail: '/contact/:pk/',\n api_endpoint: ApiEndpoints.contact_list,\n icon: 'group'\n },\n owner: {\n label: () => t`Owner`,\n label_multiple: () => t`Owners`,\n url_detail: '/owner/:pk/',\n api_endpoint: ApiEndpoints.owner_list,\n icon: 'group'\n },\n user: {\n label: () => t`User`,\n label_multiple: () => t`Users`,\n url_detail: '/core/user/:pk/',\n api_endpoint: ApiEndpoints.user_list,\n icon: 'user'\n },\n group: {\n label: () => t`Group`,\n label_multiple: () => t`Groups`,\n url_detail: '/core/group/:pk/',\n api_endpoint: ApiEndpoints.group_list,\n admin_url: '/auth/group/',\n icon: 'group'\n },\n importsession: {\n label: () => t`Import Session`,\n label_multiple: () => t`Import Sessions`,\n url_overview: '/settings/admin/import',\n url_detail: '/import/:pk/',\n api_endpoint: ApiEndpoints.import_session_list,\n icon: 'import'\n },\n labeltemplate: {\n label: () => t`Label Template`,\n label_multiple: () => t`Label Templates`,\n url_overview: '/settings/admin/labels',\n url_detail: '/settings/admin/labels/:pk/',\n api_endpoint: ApiEndpoints.label_list,\n icon: 'labels'\n },\n reporttemplate: {\n label: () => t`Report Template`,\n label_multiple: () => t`Report Templates`,\n url_overview: '/settings/admin/reports',\n url_detail: '/settings/admin/reports/:pk/',\n api_endpoint: ApiEndpoints.report_list,\n icon: 'reports'\n },\n pluginconfig: {\n label: () => t`Plugin Configuration`,\n label_multiple: () => t`Plugin Configurations`,\n url_overview: '/settings/admin/plugin',\n url_detail: '/settings/admin/plugin/:pk/',\n api_endpoint: ApiEndpoints.plugin_list,\n icon: 'plugin'\n },\n contenttype: {\n label: () => t`Content Type`,\n label_multiple: () => t`Content Types`,\n api_endpoint: ApiEndpoints.content_type_list,\n icon: 'list_details'\n },\n selectionlist: {\n label: () => t`Selection List`,\n label_multiple: () => t`Selection Lists`,\n url_overview: '/settings/admin/part-parameters',\n api_endpoint: ApiEndpoints.selectionlist_list,\n icon: 'list_details'\n },\n selectionentry: {\n label: () => t`Selection Entry`,\n label_multiple: () => t`Selection Entries`,\n url_overview: '/settings/admin/part-parameters',\n api_endpoint: ApiEndpoints.selectionentry_list,\n icon: 'list_details'\n },\n error: {\n label: () => t`Error`,\n label_multiple: () => t`Errors`,\n api_endpoint: ApiEndpoints.error_report_list,\n url_overview: '/settings/admin/errors',\n url_detail: '/settings/admin/errors/:pk/',\n icon: 'exclamation'\n },\n tag: {\n label: () => t`Tag`,\n label_multiple: () => t`Tags`,\n api_endpoint: ApiEndpoints.tag_list,\n icon: 'tag'\n }\n};\n"],"names":["ModelInformationDict","part","label","_i18n","_","id","label_multiple","url_overview","url_detail","api_endpoint","ApiEndpoints","part_list","admin_url","supports_barcode","icon","parameter","parameter_list","parametertemplate","parameter_template_list","parttesttemplate","part_test_template_list","supplierpart","supplier_part_list","manufacturerpart","manufacturer_part_list","partcategory","category_list","stockitem","stock_item_list","stocklocation","stock_location_list","stocklocationtype","stock_location_type_list","stockhistory","stock_tracking_list","build","build_order_list","buildline","build_line_list","builditem","build_item_list","company","company_list","projectcode","project_code_list","purchaseorder","purchase_order_list","purchaseorderlineitem","purchase_order_line_list","salesorder","sales_order_list","salesordershipment","sales_order_shipment_list","returnorder","return_order_list","returnorderlineitem","return_order_line_list","transferorder","transfer_order_list","transferorderlineitem","transfer_order_line_list","address","address_list","contact","contact_list","owner","owner_list","user","user_list","group","group_list","importsession","import_session_list","labeltemplate","label_list","reporttemplate","report_list","pluginconfig","plugin_list","contenttype","content_type_list","selectionlist","selectionlist_list","selectionentry","selectionentry_list","error","error_report_list","tag","tag_list"],"mappings":";AAAA,MAAA,QAAA,OAAA,YAAA,EAAA;AA2BO,MAAMA,uBAAkC;AAAA,EAC7CC,MAAM;AAAA,IACJC,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAM;AAAA,IACnBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAO;AAAA,IAC7BE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAaC;AAAAA,IAC3BC,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERC,WAAW;AAAA,IACTb,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAW;AAAA,IACxBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAY;AAAA,IAClCI,cAAcC,aAAaM;AAAAA,IAC3BF,MAAM;AAAA,EAAA;AAAA,EAERG,mBAAmB;AAAA,IACjBf,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAoB;AAAA,IACjCC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAqB;AAAA,IAC3CI,cAAcC,aAAaQ;AAAAA,IAC3BN,WAAW;AAAA,IACXE,MAAM;AAAA,EAAA;AAAA,EAERK,kBAAkB;AAAA,IAChBjB,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAoB;AAAA,IACjCC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAqB;AAAA,IAC3CG,YAAY;AAAA,IACZC,cAAcC,aAAaU;AAAAA,IAC3BN,MAAM;AAAA,EAAA;AAAA,EAERO,cAAc;AAAA,IACZnB,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAe;AAAA,IAC5BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgB;AAAA,IACtCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAaY;AAAAA,IAC3BV,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERS,kBAAkB;AAAA,IAChBrB,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAmB;AAAA,IAChCC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAoB;AAAA,IAC1CE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAac;AAAAA,IAC3BZ,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERW,cAAc;AAAA,IACZvB,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAe;AAAA,IAC5BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IACvCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAagB;AAAAA,IAC3Bd,WAAW;AAAA,IACXE,MAAM;AAAA,EAAA;AAAA,EAERa,WAAW;AAAA,IACTzB,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAY;AAAA,IACzBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAa;AAAA,IACnCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAakB;AAAAA,IAC3BhB,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERe,eAAe;AAAA,IACb3B,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgB;AAAA,IAC7BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IACvCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAaoB;AAAAA,IAC3BlB,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERiB,mBAAmB;AAAA,IACjB7B,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAqB;AAAA,IAClCC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAsB;AAAA,IAC5CI,cAAcC,aAAasB;AAAAA,IAC3BlB,MAAM;AAAA,EAAA;AAAA,EAERmB,cAAc;AAAA,IACZ/B,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAe;AAAA,IAC5BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IACvCI,cAAcC,aAAawB;AAAAA,IAC3BpB,MAAM;AAAA,EAAA;AAAA,EAERqB,OAAO;AAAA,IACLjC,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAa;AAAA,IAC1BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAc;AAAA,IACpCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAa0B;AAAAA,IAC3BxB,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERuB,WAAW;AAAA,IACTnC,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAY;AAAA,IACzBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAa;AAAA,IACnCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAa4B;AAAAA,IAC3BxB,MAAM;AAAA,EAAA;AAAA,EAERyB,WAAW;AAAA,IACTrC,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAY;AAAA,IACzBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAa;AAAA,IACnCI,cAAcC,aAAa8B;AAAAA,IAC3B1B,MAAM;AAAA,EAAA;AAAA,EAER2B,SAAS;AAAA,IACPvC,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAS;AAAA,IACtBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAW;AAAA,IACjCG,YAAY;AAAA,IACZC,cAAcC,aAAagC;AAAAA,IAC3B9B,WAAW;AAAA,IACXE,MAAM;AAAA,EAAA;AAAA,EAER6B,aAAa;AAAA,IACXzC,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAc;AAAA,IAC3BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAe;AAAA,IACrCG,YAAY;AAAA,IACZC,cAAcC,aAAakC;AAAAA,IAC3B9B,MAAM;AAAA,EAAA;AAAA,EAER+B,eAAe;AAAA,IACb3C,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgB;AAAA,IAC7BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IACvCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAaoC;AAAAA,IAC3BlC,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERiC,uBAAuB;AAAA,IACrB7C,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAqB;AAAA,IAClCC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAsB;AAAA,IAC5CI,cAAcC,aAAasC;AAAAA,IAC3BlC,MAAM;AAAA,EAAA;AAAA,EAERmC,YAAY;AAAA,IACV/C,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAa;AAAA,IAC1BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAc;AAAA,IACpCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAawC;AAAAA,IAC3BtC,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERqC,oBAAoB;AAAA,IAClBjD,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAsB;AAAA,IACnCC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAuB;AAAA,IAC7CE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZI,WAAW;AAAA,IACXH,cAAcC,aAAa0C;AAAAA,IAC3BvC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERuC,aAAa;AAAA,IACXnD,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAc;AAAA,IAC3BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAe;AAAA,IACrCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAa4C;AAAAA,IAC3B1C,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAERyC,qBAAqB;AAAA,IACnBrD,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAwB;AAAA,IACrCC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAyB;AAAA,IAC/CI,cAAcC,aAAa8C;AAAAA,IAC3B1C,MAAM;AAAA,EAAA;AAAA,EAER2C,eAAe;AAAA,IACbvD,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgB;AAAA,IAC7BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IACvCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAagD;AAAAA,IAC3B9C,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,MAAM;AAAA,EAAA;AAAA,EAER6C,uBAAuB;AAAA,IACrBzD,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAA0B;AAAA,IACvCC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAA2B;AAAA,IACjDI,cAAcC,aAAakD;AAAAA,IAC3B9C,MAAM;AAAA,EAAA;AAAA,EAER+C,SAAS;AAAA,IACP3D,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAS;AAAA,IACtBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAW;AAAA,IACjCG,YAAY;AAAA,IACZC,cAAcC,aAAaoD;AAAAA,IAC3BhD,MAAM;AAAA,EAAA;AAAA,EAERiD,SAAS;AAAA,IACP7D,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAS;AAAA,IACtBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAU;AAAA,IAChCG,YAAY;AAAA,IACZC,cAAcC,aAAasD;AAAAA,IAC3BlD,MAAM;AAAA,EAAA;AAAA,EAERmD,OAAO;AAAA,IACL/D,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAO;AAAA,IACpBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAQ;AAAA,IAC9BG,YAAY;AAAA,IACZC,cAAcC,aAAawD;AAAAA,IAC3BpD,MAAM;AAAA,EAAA;AAAA,EAERqD,MAAM;AAAA,IACJjE,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAM;AAAA,IACnBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAO;AAAA,IAC7BG,YAAY;AAAA,IACZC,cAAcC,aAAa0D;AAAAA,IAC3BtD,MAAM;AAAA,EAAA;AAAA,EAERuD,OAAO;AAAA,IACLnE,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAO;AAAA,IACpBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAQ;AAAA,IAC9BG,YAAY;AAAA,IACZC,cAAcC,aAAa4D;AAAAA,IAC3B1D,WAAW;AAAA,IACXE,MAAM;AAAA,EAAA;AAAA,EAERyD,eAAe;AAAA,IACbrE,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgB;AAAA,IAC7BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IACvCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAa8D;AAAAA,IAC3B1D,MAAM;AAAA,EAAA;AAAA,EAER2D,eAAe;AAAA,IACbvE,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgB;AAAA,IAC7BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IACvCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAagE;AAAAA,IAC3B5D,MAAM;AAAA,EAAA;AAAA,EAER6D,gBAAgB;AAAA,IACdzE,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IAC9BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAkB;AAAA,IACxCE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAakE;AAAAA,IAC3B9D,MAAM;AAAA,EAAA;AAAA,EAER+D,cAAc;AAAA,IACZ3E,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAsB;AAAA,IACnCC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAuB;AAAA,IAC7CE,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,cAAcC,aAAaoE;AAAAA,IAC3BhE,MAAM;AAAA,EAAA;AAAA,EAERiE,aAAa;AAAA,IACX7E,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAc;AAAA,IAC3BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAe;AAAA,IACrCI,cAAcC,aAAasE;AAAAA,IAC3BlE,MAAM;AAAA,EAAA;AAAA,EAERmE,eAAe;AAAA,IACb/E,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAgB;AAAA,IAC7BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IACvCE,cAAc;AAAA,IACdE,cAAcC,aAAawE;AAAAA,IAC3BpE,MAAM;AAAA,EAAA;AAAA,EAERqE,gBAAgB;AAAA,IACdjF,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAiB;AAAA,IAC9BC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAmB;AAAA,IACzCE,cAAc;AAAA,IACdE,cAAcC,aAAa0E;AAAAA,IAC3BtE,MAAM;AAAA,EAAA;AAAA,EAERuE,OAAO;AAAA,IACLnF,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAO;AAAA,IACpBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAQ;AAAA,IAC9BI,cAAcC,aAAa4E;AAAAA,IAC3B/E,cAAc;AAAA,IACdC,YAAY;AAAA,IACZM,MAAM;AAAA,EAAA;AAAA,EAERyE,KAAK;AAAA,IACHrF,OAAOA,MAAAC,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAK;AAAA,IAClBC,gBAAgBA,MAAAH,MAAAC;AAAAA;AAAAA,MAAM;AAAA,QAAAC,IAAA;AAAA,MAAA;AAAA,IAAM;AAAA,IAC5BI,cAAcC,aAAa8E;AAAAA,IAC3B1E,MAAM;AAAA,EAAA;AAEV;"}
@@ -21,6 +21,8 @@ export declare enum ModelType {
21
21
  salesordershipment = "salesordershipment",
22
22
  returnorder = "returnorder",
23
23
  returnorderlineitem = "returnorderlineitem",
24
+ transferorder = "transferorder",
25
+ transferorderlineitem = "transferorderlineitem",
24
26
  importsession = "importsession",
25
27
  address = "address",
26
28
  contact = "contact",
@@ -33,7 +35,8 @@ export declare enum ModelType {
33
35
  contenttype = "contenttype",
34
36
  selectionlist = "selectionlist",
35
37
  selectionentry = "selectionentry",
36
- error = "error"
38
+ error = "error",
39
+ tag = "tag"
37
40
  }
38
41
  export declare enum PluginPanelKey {
39
42
  admincenter = "admincenter",
@@ -21,6 +21,8 @@ var ModelType = /* @__PURE__ */ ((ModelType2) => {
21
21
  ModelType2["salesordershipment"] = "salesordershipment";
22
22
  ModelType2["returnorder"] = "returnorder";
23
23
  ModelType2["returnorderlineitem"] = "returnorderlineitem";
24
+ ModelType2["transferorder"] = "transferorder";
25
+ ModelType2["transferorderlineitem"] = "transferorderlineitem";
24
26
  ModelType2["importsession"] = "importsession";
25
27
  ModelType2["address"] = "address";
26
28
  ModelType2["contact"] = "contact";
@@ -34,6 +36,7 @@ var ModelType = /* @__PURE__ */ ((ModelType2) => {
34
36
  ModelType2["selectionlist"] = "selectionlist";
35
37
  ModelType2["selectionentry"] = "selectionentry";
36
38
  ModelType2["error"] = "error";
39
+ ModelType2["tag"] = "tag";
37
40
  return ModelType2;
38
41
  })(ModelType || {});
39
42
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"ModelType.js","sources":["../../lib/enums/ModelType.tsx"],"sourcesContent":["/*\n * Enumeration of available API model types\n */\nexport enum ModelType {\n part = 'part',\n supplierpart = 'supplierpart',\n manufacturerpart = 'manufacturerpart',\n partcategory = 'partcategory',\n parttesttemplate = 'parttesttemplate',\n projectcode = 'projectcode',\n stockitem = 'stockitem',\n stocklocation = 'stocklocation',\n stocklocationtype = 'stocklocationtype',\n stockhistory = 'stockhistory',\n build = 'build',\n buildline = 'buildline',\n builditem = 'builditem',\n company = 'company',\n parameter = 'parameter',\n parametertemplate = 'parametertemplate',\n purchaseorder = 'purchaseorder',\n purchaseorderlineitem = 'purchaseorderlineitem',\n salesorder = 'salesorder',\n salesordershipment = 'salesordershipment',\n returnorder = 'returnorder',\n returnorderlineitem = 'returnorderlineitem',\n importsession = 'importsession',\n address = 'address',\n contact = 'contact',\n owner = 'owner',\n user = 'user',\n group = 'group',\n reporttemplate = 'reporttemplate',\n labeltemplate = 'labeltemplate',\n pluginconfig = 'pluginconfig',\n contenttype = 'contenttype',\n selectionlist = 'selectionlist',\n selectionentry = 'selectionentry',\n error = 'error'\n}\n\nexport enum PluginPanelKey {\n // settings / admin\n admincenter = 'admincenter',\n systemsettings = 'systemsettings',\n usersettings = 'usersettings',\n // generic\n core = 'core',\n // landing pages\n purchasing = 'purchasing',\n sales = 'sales',\n manufacturing = 'manufacturing'\n}\n"],"names":["ModelType","part","supplierpart","manufacturerpart","partcategory","parttesttemplate","projectcode","stockitem","stocklocation","stocklocationtype","stockhistory","build","buildline","builditem","company","parameter","parametertemplate","purchaseorder","purchaseorderlineitem","salesorder","salesordershipment","returnorder","returnorderlineitem","importsession","address","contact","owner","user","group","reporttemplate","labeltemplate","pluginconfig","contenttype","selectionlist","selectionentry","error"],"mappings":"AAGO,IAAKA,8BAAAA,eAAL;AACLC,aAAAA,MAAAA,IAAO;AACPC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,kBAAAA,IAAmB;AACnBC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,kBAAAA,IAAmB;AACnBC,aAAAA,aAAAA,IAAc;AACdC,aAAAA,WAAAA,IAAY;AACZC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,mBAAAA,IAAoB;AACpBC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,WAAAA,IAAY;AACZC,aAAAA,WAAAA,IAAY;AACZC,aAAAA,SAAAA,IAAU;AACVC,aAAAA,WAAAA,IAAY;AACZC,aAAAA,mBAAAA,IAAoB;AACpBC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,uBAAAA,IAAwB;AACxBC,aAAAA,YAAAA,IAAa;AACbC,aAAAA,oBAAAA,IAAqB;AACrBC,aAAAA,aAAAA,IAAc;AACdC,aAAAA,qBAAAA,IAAsB;AACtBC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,SAAAA,IAAU;AACVC,aAAAA,SAAAA,IAAU;AACVC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,MAAAA,IAAO;AACPC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,gBAAAA,IAAiB;AACjBC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,aAAAA,IAAc;AACdC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,gBAAAA,IAAiB;AACjBC,aAAAA,OAAAA,IAAQ;AAnCEnC,SAAAA;AAAAA,GAAAA,aAAAA,CAAAA,CAAAA;"}
1
+ {"version":3,"file":"ModelType.js","sources":["../../lib/enums/ModelType.tsx"],"sourcesContent":["/*\n * Enumeration of available API model types\n */\nexport enum ModelType {\n part = 'part',\n supplierpart = 'supplierpart',\n manufacturerpart = 'manufacturerpart',\n partcategory = 'partcategory',\n parttesttemplate = 'parttesttemplate',\n projectcode = 'projectcode',\n stockitem = 'stockitem',\n stocklocation = 'stocklocation',\n stocklocationtype = 'stocklocationtype',\n stockhistory = 'stockhistory',\n build = 'build',\n buildline = 'buildline',\n builditem = 'builditem',\n company = 'company',\n parameter = 'parameter',\n parametertemplate = 'parametertemplate',\n purchaseorder = 'purchaseorder',\n purchaseorderlineitem = 'purchaseorderlineitem',\n salesorder = 'salesorder',\n salesordershipment = 'salesordershipment',\n returnorder = 'returnorder',\n returnorderlineitem = 'returnorderlineitem',\n transferorder = 'transferorder',\n transferorderlineitem = 'transferorderlineitem',\n importsession = 'importsession',\n address = 'address',\n contact = 'contact',\n owner = 'owner',\n user = 'user',\n group = 'group',\n reporttemplate = 'reporttemplate',\n labeltemplate = 'labeltemplate',\n pluginconfig = 'pluginconfig',\n contenttype = 'contenttype',\n selectionlist = 'selectionlist',\n selectionentry = 'selectionentry',\n error = 'error',\n tag = 'tag'\n}\n\nexport enum PluginPanelKey {\n // settings / admin\n admincenter = 'admincenter',\n systemsettings = 'systemsettings',\n usersettings = 'usersettings',\n // generic\n core = 'core',\n // landing pages\n purchasing = 'purchasing',\n sales = 'sales',\n manufacturing = 'manufacturing'\n}\n"],"names":["ModelType","part","supplierpart","manufacturerpart","partcategory","parttesttemplate","projectcode","stockitem","stocklocation","stocklocationtype","stockhistory","build","buildline","builditem","company","parameter","parametertemplate","purchaseorder","purchaseorderlineitem","salesorder","salesordershipment","returnorder","returnorderlineitem","transferorder","transferorderlineitem","importsession","address","contact","owner","user","group","reporttemplate","labeltemplate","pluginconfig","contenttype","selectionlist","selectionentry","error","tag"],"mappings":"AAGO,IAAKA,8BAAAA,eAAL;AACLC,aAAAA,MAAAA,IAAO;AACPC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,kBAAAA,IAAmB;AACnBC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,kBAAAA,IAAmB;AACnBC,aAAAA,aAAAA,IAAc;AACdC,aAAAA,WAAAA,IAAY;AACZC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,mBAAAA,IAAoB;AACpBC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,WAAAA,IAAY;AACZC,aAAAA,WAAAA,IAAY;AACZC,aAAAA,SAAAA,IAAU;AACVC,aAAAA,WAAAA,IAAY;AACZC,aAAAA,mBAAAA,IAAoB;AACpBC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,uBAAAA,IAAwB;AACxBC,aAAAA,YAAAA,IAAa;AACbC,aAAAA,oBAAAA,IAAqB;AACrBC,aAAAA,aAAAA,IAAc;AACdC,aAAAA,qBAAAA,IAAsB;AACtBC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,uBAAAA,IAAwB;AACxBC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,SAAAA,IAAU;AACVC,aAAAA,SAAAA,IAAU;AACVC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,MAAAA,IAAO;AACPC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,gBAAAA,IAAiB;AACjBC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,aAAAA,IAAc;AACdC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,gBAAAA,IAAiB;AACjBC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,KAAAA,IAAM;AAtCItC,SAAAA;AAAAA,GAAAA,aAAAA,CAAAA,CAAAA;"}
@@ -6,6 +6,7 @@ export declare enum UserRoles {
6
6
  part_category = "part_category",
7
7
  purchase_order = "purchase_order",
8
8
  return_order = "return_order",
9
+ transfer_order = "transfer_order",
9
10
  sales_order = "sales_order",
10
11
  stock = "stock",
11
12
  stock_location = "stock_location"
@@ -7,6 +7,7 @@ var UserRoles = /* @__PURE__ */ ((UserRoles2) => {
7
7
  UserRoles2["part_category"] = "part_category";
8
8
  UserRoles2["purchase_order"] = "purchase_order";
9
9
  UserRoles2["return_order"] = "return_order";
10
+ UserRoles2["transfer_order"] = "transfer_order";
10
11
  UserRoles2["sales_order"] = "sales_order";
11
12
  UserRoles2["stock"] = "stock";
12
13
  UserRoles2["stock_location"] = "stock_location";
@@ -1 +1 @@
1
- {"version":3,"file":"Roles.js","sources":["../../lib/enums/Roles.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\n\n/*\n * Enumeration of available user role groups\n */\nexport enum UserRoles {\n admin = 'admin',\n bom = 'bom',\n build = 'build',\n part = 'part',\n part_category = 'part_category',\n purchase_order = 'purchase_order',\n return_order = 'return_order',\n sales_order = 'sales_order',\n stock = 'stock',\n stock_location = 'stock_location'\n}\n\n/*\n * Enumeration of available user permissions within each role group\n */\nexport enum UserPermissions {\n view = 'view',\n add = 'add',\n change = 'change',\n delete = 'delete'\n}\n\nexport function userRoleLabel(role: UserRoles): string {\n switch (role) {\n case UserRoles.admin:\n return t`Admin`;\n case UserRoles.build:\n return t`Build Orders`;\n case UserRoles.part:\n return t`Parts`;\n case UserRoles.part_category:\n return t`Part Categories`;\n case UserRoles.purchase_order:\n return t`Purchase Orders`;\n case UserRoles.return_order:\n return t`Return Orders`;\n case UserRoles.sales_order:\n return t`Sales Orders`;\n case UserRoles.stock:\n return t`Stock Items`;\n case UserRoles.stock_location:\n return t`Stock Location`;\n default:\n return role as string;\n }\n}\n"],"names":["UserRoles","admin","bom","build","part","part_category","purchase_order","return_order","sales_order","stock","stock_location","UserPermissions","view","add","change","delete"],"mappings":"AAAA,OAAA,YAAA,EAAA;AAKO,IAAKA,8BAAAA,eAAL;AACLC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,KAAAA,IAAM;AACNC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,MAAAA,IAAO;AACPC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,gBAAAA,IAAiB;AACjBC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,aAAAA,IAAc;AACdC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,gBAAAA,IAAiB;AAVPV,SAAAA;AAAAA,GAAAA,aAAAA,CAAAA,CAAAA;AAgBL,IAAKW,oCAAAA,qBAAL;AACLC,mBAAAA,MAAAA,IAAO;AACPC,mBAAAA,KAAAA,IAAM;AACNC,mBAAAA,QAAAA,IAAS;AACTC,mBAAAA,QAAAA,IAAS;AAJCJ,SAAAA;AAAAA,GAAAA,mBAAAA,CAAAA,CAAAA;"}
1
+ {"version":3,"file":"Roles.js","sources":["../../lib/enums/Roles.tsx"],"sourcesContent":["import { t } from '@lingui/core/macro';\n\n/*\n * Enumeration of available user role groups\n */\nexport enum UserRoles {\n admin = 'admin',\n bom = 'bom',\n build = 'build',\n part = 'part',\n part_category = 'part_category',\n purchase_order = 'purchase_order',\n return_order = 'return_order',\n transfer_order = 'transfer_order',\n sales_order = 'sales_order',\n stock = 'stock',\n stock_location = 'stock_location'\n}\n\n/*\n * Enumeration of available user permissions within each role group\n */\nexport enum UserPermissions {\n view = 'view',\n add = 'add',\n change = 'change',\n delete = 'delete'\n}\n\nexport function userRoleLabel(role: UserRoles): string {\n switch (role) {\n case UserRoles.admin:\n return t`Admin`;\n case UserRoles.build:\n return t`Build Orders`;\n case UserRoles.part:\n return t`Parts`;\n case UserRoles.part_category:\n return t`Part Categories`;\n case UserRoles.purchase_order:\n return t`Purchase Orders`;\n case UserRoles.return_order:\n return t`Return Orders`;\n case UserRoles.transfer_order:\n return t`Transfer Orders`;\n case UserRoles.sales_order:\n return t`Sales Orders`;\n case UserRoles.stock:\n return t`Stock Items`;\n case UserRoles.stock_location:\n return t`Stock Location`;\n default:\n return role as string;\n }\n}\n"],"names":["UserRoles","admin","bom","build","part","part_category","purchase_order","return_order","transfer_order","sales_order","stock","stock_location","UserPermissions","view","add","change","delete"],"mappings":"AAAA,OAAA,YAAA,EAAA;AAKO,IAAKA,8BAAAA,eAAL;AACLC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,KAAAA,IAAM;AACNC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,MAAAA,IAAO;AACPC,aAAAA,eAAAA,IAAgB;AAChBC,aAAAA,gBAAAA,IAAiB;AACjBC,aAAAA,cAAAA,IAAe;AACfC,aAAAA,gBAAAA,IAAiB;AACjBC,aAAAA,aAAAA,IAAc;AACdC,aAAAA,OAAAA,IAAQ;AACRC,aAAAA,gBAAAA,IAAiB;AAXPX,SAAAA;AAAAA,GAAAA,aAAAA,CAAAA,CAAAA;AAiBL,IAAKY,oCAAAA,qBAAL;AACLC,mBAAAA,MAAAA,IAAO;AACPC,mBAAAA,KAAAA,IAAM;AACNC,mBAAAA,QAAAA,IAAS;AACTC,mBAAAA,QAAAA,IAAS;AAJCJ,SAAAA;AAAAA,GAAAA,mBAAAA,CAAAA,CAAAA;"}
@@ -18,7 +18,7 @@ function getDetailUrl(model, pk, absolute) {
18
18
  return url;
19
19
  }
20
20
  }
21
- console.error(`No detail URL found for model ${model} <${pk}>`);
21
+ console.warn(`No detail URL found for model ${model} <${pk}>`);
22
22
  return "";
23
23
  }
24
24
  const navigateToLink = (link, navigate, event) => {
@@ -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 { apiUrl } from './Api';\nimport { cancelEvent } from './Events';\n\nexport const getBaseUrl = (): string =>\n (window as any).INVENTREE_SETTINGS?.base_url || 'web';\n\n/**\n * Returns the overview URL for a given model type.\n * This is the UI URL, not the API URL.\n */\nexport function getOverviewUrl(model: ModelType, absolute?: boolean): string {\n const modelInfo = ModelInformationDict[model];\n\n if (modelInfo?.url_overview) {\n const url = modelInfo.url_overview;\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 overview URL found for model ${model}`);\n return '';\n}\n\n/**\n * Returns the detail view URL for a given model type.\n * This is the UI URL, not the API URL.\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 * Returns the API detail URL for a given model type.\n */\nexport function getApiUrl(\n model: ModelType,\n pk: number | string\n): string | undefined {\n const modelInfo = ModelInformationDict[model];\n\n if (pk === undefined || pk === null) {\n return '';\n }\n\n if (!!pk && modelInfo && modelInfo.api_endpoint) {\n return apiUrl(modelInfo.api_endpoint, pk);\n }\n\n console.error(`No API detail URL found for model ${model} <${pk}>`);\n return undefined;\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 (eventModified(event)) {\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\n/**\n * Check if the event is modified (e.g. ctrl, shift, or meta key pressed)\n * @param event - The event to check\n * @returns true if the event was modified\n */\nexport const eventModified = (\n event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n) => {\n return event?.ctrlKey || event?.shiftKey || event?.metaKey;\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","eventModified","startsWith","open","ctrlKey","shiftKey","metaKey"],"mappings":";;AAMO,MAAMA,aAAaA,MAAAA;;AACvBC,uBAAeC,uBAAfD,mBAAmCE,aAAY;AAAA;AA4B3C,SAASC,aACdC,OACAC,IACAC,UACQ;AACR,QAAMC,YAAYC,qBAAqBJ,KAAK;AAE5C,MAAIC,OAAOI,UAAaJ,OAAO,MAAM;AACnC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,CAACA,MAAME,aAAaA,UAAUG,YAAY;AAC7C,UAAMC,MAAMJ,UAAUG,WAAWE,QAAQ,OAAOP,GAAGQ,UAAU;AAC7D,UAAMC,OAAOf,WAAAA;AAEb,QAAIO,YAAYQ,MAAM;AACpB,aAAO,IAAIA,IAAI,GAAGH,GAAG;AAAA,IACvB,OAAO;AACL,aAAOA;AAAAA,IACT;AAAA,EACF;AAEAI,UAAQC,MAAM,iCAAiCZ,KAAK,KAAKC,EAAE,GAAG;AAC9D,SAAO;AACT;AA4BO,MAAMY,iBAAiBA,CAC5BC,MACAC,UACAC,UACG;AACHC,cAAYD,KAAK;AAEjB,QAAMN,OAAO,IAAIf,WAAAA,CAAY;AAE7B,MAAIuB,cAAcF,KAAK,GAAG;AAExB,QAAIT,MAAMO;AACV,QAAIA,KAAKK,WAAW,GAAG,KAAK,CAACL,KAAKK,WAAWT,IAAI,GAAG;AAClDH,YAAM,GAAGG,IAAI,GAAGI,IAAI;AAAA,IACtB;AACAlB,WAAOwB,KAAKb,KAAK,QAAQ;AAAA,EAC3B,OAAO;AAEL,QAAIA,MAAMO;AAEV,QAAIA,KAAKK,WAAWT,IAAI,GAAG;AAEzBH,YAAMO,KAAKN,QAAQE,MAAM,EAAE;AAAA,IAC7B;AAEAK,aAASR,GAAG;AAAA,EACd;AACF;AAOO,MAAMW,gBAAgBA,CAC3BF,UACG;AACH,UAAOA,+BAAOK,aAAWL,+BAAOM,cAAYN,+BAAOO;AACrD;"}
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 { apiUrl } from './Api';\nimport { cancelEvent } from './Events';\n\nexport const getBaseUrl = (): string =>\n (window as any).INVENTREE_SETTINGS?.base_url || 'web';\n\n/**\n * Returns the overview URL for a given model type.\n * This is the UI URL, not the API URL.\n */\nexport function getOverviewUrl(model: ModelType, absolute?: boolean): string {\n const modelInfo = ModelInformationDict[model];\n\n if (modelInfo?.url_overview) {\n const url = modelInfo.url_overview;\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 overview URL found for model ${model}`);\n return '';\n}\n\n/**\n * Returns the detail view URL for a given model type.\n * This is the UI URL, not the API URL.\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.warn(`No detail URL found for model ${model} <${pk}>`);\n return '';\n}\n\n/**\n * Returns the API detail URL for a given model type.\n */\nexport function getApiUrl(\n model: ModelType,\n pk: number | string\n): string | undefined {\n const modelInfo = ModelInformationDict[model];\n\n if (pk === undefined || pk === null) {\n return '';\n }\n\n if (!!pk && modelInfo && modelInfo.api_endpoint) {\n return apiUrl(modelInfo.api_endpoint, pk);\n }\n\n console.error(`No API detail URL found for model ${model} <${pk}>`);\n return undefined;\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 (eventModified(event)) {\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\n/**\n * Check if the event is modified (e.g. ctrl, shift, or meta key pressed)\n * @param event - The event to check\n * @returns true if the event was modified\n */\nexport const eventModified = (\n event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n) => {\n return event?.ctrlKey || event?.shiftKey || event?.metaKey;\n};\n"],"names":["getBaseUrl","window","INVENTREE_SETTINGS","base_url","getDetailUrl","model","pk","absolute","modelInfo","ModelInformationDict","undefined","url_detail","url","replace","toString","base","console","warn","navigateToLink","link","navigate","event","cancelEvent","eventModified","startsWith","open","ctrlKey","shiftKey","metaKey"],"mappings":";;AAMO,MAAMA,aAAaA,MAAAA;;AACvBC,uBAAeC,uBAAfD,mBAAmCE,aAAY;AAAA;AA4B3C,SAASC,aACdC,OACAC,IACAC,UACQ;AACR,QAAMC,YAAYC,qBAAqBJ,KAAK;AAE5C,MAAIC,OAAOI,UAAaJ,OAAO,MAAM;AACnC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,CAACA,MAAME,aAAaA,UAAUG,YAAY;AAC7C,UAAMC,MAAMJ,UAAUG,WAAWE,QAAQ,OAAOP,GAAGQ,UAAU;AAC7D,UAAMC,OAAOf,WAAAA;AAEb,QAAIO,YAAYQ,MAAM;AACpB,aAAO,IAAIA,IAAI,GAAGH,GAAG;AAAA,IACvB,OAAO;AACL,aAAOA;AAAAA,IACT;AAAA,EACF;AAEAI,UAAQC,KAAK,iCAAiCZ,KAAK,KAAKC,EAAE,GAAG;AAC7D,SAAO;AACT;AA4BO,MAAMY,iBAAiBA,CAC5BC,MACAC,UACAC,UACG;AACHC,cAAYD,KAAK;AAEjB,QAAMN,OAAO,IAAIf,WAAAA,CAAY;AAE7B,MAAIuB,cAAcF,KAAK,GAAG;AAExB,QAAIT,MAAMO;AACV,QAAIA,KAAKK,WAAW,GAAG,KAAK,CAACL,KAAKK,WAAWT,IAAI,GAAG;AAClDH,YAAM,GAAGG,IAAI,GAAGI,IAAI;AAAA,IACtB;AACAlB,WAAOwB,KAAKb,KAAK,QAAQ;AAAA,EAC3B,OAAO;AAEL,QAAIA,MAAMO;AAEV,QAAIA,KAAKK,WAAWT,IAAI,GAAG;AAEzBH,YAAMO,KAAKN,QAAQE,MAAM,EAAE;AAAA,IAC7B;AAEAK,aAASR,GAAG;AAAA,EACd;AACF;AAOO,MAAMW,gBAAgBA,CAC3BF,UACG;AACH,UAAOA,+BAAOK,aAAWL,+BAAOM,cAAYN,+BAAOO;AACrD;"}
@@ -9,6 +9,12 @@ function useFilterSet(filterKey, initialFilters) {
9
9
  sync: false,
10
10
  getInitialValueInEffect: false
11
11
  });
12
+ const [storedNamedSets, setStoredNamedSets] = useLocalStorage({
13
+ key: `inventree-filtersets-${filterKey}`,
14
+ defaultValue: [],
15
+ sync: false,
16
+ getInitialValueInEffect: false
17
+ });
12
18
  useEffect(() => {
13
19
  if (storedFilters == null) {
14
20
  setStoredFilters(initialFilters || []);
@@ -23,11 +29,42 @@ function useFilterSet(filterKey, initialFilters) {
23
29
  const setActiveFilters = useCallback((filters) => {
24
30
  setStoredFilters(filters);
25
31
  }, [setStoredFilters]);
32
+ const saveFilterSet = useCallback((name) => {
33
+ const snapshot = activeFilters.map(({
34
+ name: n,
35
+ value,
36
+ displayValue
37
+ }) => ({
38
+ name: n,
39
+ value,
40
+ displayValue
41
+ }));
42
+ setStoredNamedSets((prev) => {
43
+ const without = (prev ?? []).filter((s) => s.name !== name);
44
+ return [...without, {
45
+ name,
46
+ filters: snapshot
47
+ }];
48
+ });
49
+ }, [activeFilters, setStoredNamedSets]);
50
+ const loadFilterSet = useCallback((name) => {
51
+ const saved = (storedNamedSets ?? []).find((s) => s.name === name);
52
+ if (saved) {
53
+ setStoredFilters(saved.filters);
54
+ }
55
+ }, [storedNamedSets, setStoredFilters]);
56
+ const deleteFilterSet = useCallback((name) => {
57
+ setStoredNamedSets((prev) => (prev ?? []).filter((s) => s.name !== name));
58
+ }, [setStoredNamedSets]);
26
59
  return {
27
60
  filterKey,
28
61
  activeFilters,
29
62
  setActiveFilters,
30
- clearActiveFilters
63
+ clearActiveFilters,
64
+ savedFilterSets: storedNamedSets ?? [],
65
+ saveFilterSet,
66
+ loadFilterSet,
67
+ deleteFilterSet
31
68
  };
32
69
  }
33
70
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"UseFilterSet.js","sources":["../../lib/hooks/UseFilterSet.tsx"],"sourcesContent":["import { useLocalStorage } from '@mantine/hooks';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport type { FilterSetState, TableFilter } from '../types/Filters';\n\nexport default function useFilterSet(\n filterKey: string,\n initialFilters?: TableFilter[]\n): FilterSetState {\n // Array of active filters (saved to local storage)\n const [storedFilters, setStoredFilters] = useLocalStorage<\n TableFilter[] | null\n >({\n key: `inventree-filterset-${filterKey}`,\n defaultValue: null,\n sync: false,\n getInitialValueInEffect: false\n });\n\n useEffect(() => {\n if (storedFilters == null) {\n setStoredFilters(initialFilters || []);\n }\n }, [storedFilters, initialFilters, setStoredFilters]);\n\n const activeFilters: TableFilter[] = useMemo(() => {\n return storedFilters ?? initialFilters ?? [];\n }, [storedFilters, initialFilters]);\n\n // Callback to clear all active filters from the table\n const clearActiveFilters = useCallback(() => {\n setStoredFilters([]);\n }, []);\n\n const setActiveFilters = useCallback(\n (filters: TableFilter[]) => {\n setStoredFilters(filters);\n },\n [setStoredFilters]\n );\n\n return {\n filterKey,\n activeFilters,\n setActiveFilters,\n clearActiveFilters\n };\n}\n"],"names":["useFilterSet","filterKey","initialFilters","storedFilters","setStoredFilters","useLocalStorage","key","defaultValue","sync","getInitialValueInEffect","useEffect","activeFilters","useMemo","clearActiveFilters","useCallback","setActiveFilters","filters"],"mappings":";AACA,MAAA,cAAA,OAAA,OAAA,EAAA;;;AAGA,SAAwBA,aACtBC,WACAC,gBACgB;AAEhB,QAAM,CAACC,eAAeC,gBAAgB,IAAIC,gBAExC;AAAA,IACAC,KAAK,uBAAuBL,SAAS;AAAA,IACrCM,cAAc;AAAA,IACdC,MAAM;AAAA,IACNC,yBAAyB;AAAA,EAAA,CAC1B;AAEDC,YAAU,MAAM;AACd,QAAIP,iBAAiB,MAAM;AACzBC,uBAAiBF,kBAAkB,EAAE;AAAA,IACvC;AAAA,EACF,GAAG,CAACC,eAAeD,gBAAgBE,gBAAgB,CAAC;AAEpD,QAAMO,gBAA+BC,QAAQ,MAAM;AACjD,WAAOT,iBAAiBD,kBAAkB,CAAA;AAAA,EAC5C,GAAG,CAACC,eAAeD,cAAc,CAAC;AAGlC,QAAMW,qBAAqBC,YAAY,MAAM;AAC3CV,qBAAiB,CAAA,CAAE;AAAA,EACrB,GAAG,CAAA,CAAE;AAEL,QAAMW,mBAAmBD,YACvB,CAACE,YAA2B;AAC1BZ,qBAAiBY,OAAO;AAAA,EAC1B,GACA,CAACZ,gBAAgB,CACnB;AAEA,SAAO;AAAA,IACLH;AAAAA,IACAU;AAAAA,IACAI;AAAAA,IACAF;AAAAA,EAAAA;AAEJ;"}
1
+ {"version":3,"file":"UseFilterSet.js","sources":["../../lib/hooks/UseFilterSet.tsx"],"sourcesContent":["import { useLocalStorage } from '@mantine/hooks';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport type {\n FilterSetState,\n NamedFilterSet,\n TableFilter\n} from '../types/Filters';\n\nexport default function useFilterSet(\n filterKey: string,\n initialFilters?: TableFilter[]\n): FilterSetState {\n // Array of active filters (saved to local storage)\n const [storedFilters, setStoredFilters] = useLocalStorage<\n TableFilter[] | null\n >({\n key: `inventree-filterset-${filterKey}`,\n defaultValue: null,\n sync: false,\n getInitialValueInEffect: false\n });\n\n // Named filter set snapshots (saved to local storage, separate key)\n const [storedNamedSets, setStoredNamedSets] = useLocalStorage<\n NamedFilterSet[]\n >({\n key: `inventree-filtersets-${filterKey}`,\n defaultValue: [],\n sync: false,\n getInitialValueInEffect: false\n });\n\n useEffect(() => {\n if (storedFilters == null) {\n setStoredFilters(initialFilters || []);\n }\n }, [storedFilters, initialFilters, setStoredFilters]);\n\n const activeFilters: TableFilter[] = useMemo(() => {\n return storedFilters ?? initialFilters ?? [];\n }, [storedFilters, initialFilters]);\n\n const clearActiveFilters = useCallback(() => {\n setStoredFilters([]);\n }, []);\n\n const setActiveFilters = useCallback(\n (filters: TableFilter[]) => {\n setStoredFilters(filters);\n },\n [setStoredFilters]\n );\n\n const saveFilterSet = useCallback(\n (name: string) => {\n const snapshot = activeFilters.map(\n ({ name: n, value, displayValue }) => ({\n name: n,\n value,\n displayValue\n })\n );\n setStoredNamedSets((prev) => {\n const without = (prev ?? []).filter((s) => s.name !== name);\n return [...without, { name, filters: snapshot }];\n });\n },\n [activeFilters, setStoredNamedSets]\n );\n\n const loadFilterSet = useCallback(\n (name: string) => {\n const saved = (storedNamedSets ?? []).find((s) => s.name === name);\n if (saved) {\n setStoredFilters(saved.filters as TableFilter[]);\n }\n },\n [storedNamedSets, setStoredFilters]\n );\n\n const deleteFilterSet = useCallback(\n (name: string) => {\n setStoredNamedSets((prev) => (prev ?? []).filter((s) => s.name !== name));\n },\n [setStoredNamedSets]\n );\n\n return {\n filterKey,\n activeFilters,\n setActiveFilters,\n clearActiveFilters,\n savedFilterSets: storedNamedSets ?? [],\n saveFilterSet,\n loadFilterSet,\n deleteFilterSet\n };\n}\n"],"names":["useFilterSet","filterKey","initialFilters","storedFilters","setStoredFilters","useLocalStorage","key","defaultValue","sync","getInitialValueInEffect","storedNamedSets","setStoredNamedSets","useEffect","activeFilters","useMemo","clearActiveFilters","useCallback","setActiveFilters","filters","saveFilterSet","name","snapshot","map","n","value","displayValue","prev","without","filter","s","loadFilterSet","saved","find","deleteFilterSet","savedFilterSets"],"mappings":";AACA,MAAA,cAAA,OAAA,OAAA,EAAA;;;AAOA,SAAwBA,aACtBC,WACAC,gBACgB;AAEhB,QAAM,CAACC,eAAeC,gBAAgB,IAAIC,gBAExC;AAAA,IACAC,KAAK,uBAAuBL,SAAS;AAAA,IACrCM,cAAc;AAAA,IACdC,MAAM;AAAA,IACNC,yBAAyB;AAAA,EAAA,CAC1B;AAGD,QAAM,CAACC,iBAAiBC,kBAAkB,IAAIN,gBAE5C;AAAA,IACAC,KAAK,wBAAwBL,SAAS;AAAA,IACtCM,cAAc,CAAA;AAAA,IACdC,MAAM;AAAA,IACNC,yBAAyB;AAAA,EAAA,CAC1B;AAEDG,YAAU,MAAM;AACd,QAAIT,iBAAiB,MAAM;AACzBC,uBAAiBF,kBAAkB,EAAE;AAAA,IACvC;AAAA,EACF,GAAG,CAACC,eAAeD,gBAAgBE,gBAAgB,CAAC;AAEpD,QAAMS,gBAA+BC,QAAQ,MAAM;AACjD,WAAOX,iBAAiBD,kBAAkB,CAAA;AAAA,EAC5C,GAAG,CAACC,eAAeD,cAAc,CAAC;AAElC,QAAMa,qBAAqBC,YAAY,MAAM;AAC3CZ,qBAAiB,CAAA,CAAE;AAAA,EACrB,GAAG,CAAA,CAAE;AAEL,QAAMa,mBAAmBD,YACvB,CAACE,YAA2B;AAC1Bd,qBAAiBc,OAAO;AAAA,EAC1B,GACA,CAACd,gBAAgB,CACnB;AAEA,QAAMe,gBAAgBH,YACpB,CAACI,SAAiB;AAChB,UAAMC,WAAWR,cAAcS,IAC7B,CAAC;AAAA,MAAEF,MAAMG;AAAAA,MAAGC;AAAAA,MAAOC;AAAAA,IAAAA,OAAoB;AAAA,MACrCL,MAAMG;AAAAA,MACNC;AAAAA,MACAC;AAAAA,IAAAA,EAEJ;AACAd,uBAAoBe,CAAAA,SAAS;AAC3B,YAAMC,WAAWD,QAAQ,IAAIE,OAAQC,CAAAA,MAAMA,EAAET,SAASA,IAAI;AAC1D,aAAO,CAAC,GAAGO,SAAS;AAAA,QAAEP;AAAAA,QAAMF,SAASG;AAAAA,MAAAA,CAAU;AAAA,IACjD,CAAC;AAAA,EACH,GACA,CAACR,eAAeF,kBAAkB,CACpC;AAEA,QAAMmB,gBAAgBd,YACpB,CAACI,SAAiB;AAChB,UAAMW,SAASrB,mBAAmB,IAAIsB,KAAMH,CAAAA,MAAMA,EAAET,SAASA,IAAI;AACjE,QAAIW,OAAO;AACT3B,uBAAiB2B,MAAMb,OAAwB;AAAA,IACjD;AAAA,EACF,GACA,CAACR,iBAAiBN,gBAAgB,CACpC;AAEA,QAAM6B,kBAAkBjB,YACtB,CAACI,SAAiB;AAChBT,uBAAoBe,CAAAA,UAAUA,QAAQ,CAAA,GAAIE,OAAQC,CAAAA,MAAMA,EAAET,SAASA,IAAI,CAAC;AAAA,EAC1E,GACA,CAACT,kBAAkB,CACrB;AAEA,SAAO;AAAA,IACLV;AAAAA,IACAY;AAAAA,IACAI;AAAAA,IACAF;AAAAA,IACAmB,iBAAiBxB,mBAAmB,CAAA;AAAA,IACpCS;AAAAA,IACAW;AAAAA,IACAG;AAAAA,EAAAA;AAEJ;"}
package/dist/index.d.ts CHANGED
@@ -26,6 +26,7 @@ export { ProgressBar } from './components/ProgressBar';
26
26
  export { PassFailButton, YesNoButton } from './components/YesNoButton';
27
27
  export { SearchInput } from './components/SearchInput';
28
28
  export { TableColumnSelect } from './components/TableColumnSelect';
29
+ export { default as TagsList } from './components/TagsList';
29
30
  export { default as InvenTreeTable } from './components/InvenTreeTable';
30
31
  export { RowViewAction, RowDuplicateAction, RowEditAction, RowDeleteAction, RowCancelAction, RowActions } from './components/RowActions';
31
32
  export { default as useMonitorDataOutput, type MonitorDataOutputProps } from './hooks/MonitorDataOutput';
@@ -36,3 +37,5 @@ export { type DrawerProps, DetailDrawer, DetailDrawerLink, DetailDrawerComponent
36
37
  export { StylishText } from './components/StylishText';
37
38
  export { type StoredTableStateProps, useStoredTableState } from './states/StoredTableState';
38
39
  export { useLocalLibState } from './states/LocalLibState';
40
+ export { default as InventreeHmrPlugin } from './plugin/InventreeHmrPlugin';
41
+ export { default as LocalizedComponent } from './plugin/LocalizedComponent';
package/dist/index.js CHANGED
@@ -19,16 +19,19 @@ import { ProgressBar } from "./components/ProgressBar.js";
19
19
  import { PassFailButton, YesNoButton } from "./components/YesNoButton.js";
20
20
  import { SearchInput } from "./components/SearchInput.js";
21
21
  import { TableColumnSelect } from "./components/TableColumnSelect.js";
22
- import { default as default2 } from "./components/InvenTreeTable.js";
22
+ import { default as default2 } from "./components/TagsList.js";
23
+ import { default as default3 } from "./components/InvenTreeTable.js";
23
24
  import { RowActions, RowCancelAction, RowDeleteAction, RowDuplicateAction, RowEditAction, RowViewAction } from "./components/RowActions.js";
24
- import { default as default3 } from "./hooks/MonitorDataOutput.js";
25
- import { default as default4 } from "./hooks/MonitorBackgroundTask.js";
26
- import { default as default5 } from "./hooks/UseFilterSet.js";
27
- import { default as default6 } from "./hooks/UseTable.js";
25
+ import { default as default4 } from "./hooks/MonitorDataOutput.js";
26
+ import { default as default5 } from "./hooks/MonitorBackgroundTask.js";
27
+ import { default as default6 } from "./hooks/UseFilterSet.js";
28
+ import { default as default7 } from "./hooks/UseTable.js";
28
29
  import { DetailDrawer, DetailDrawerComponent, DetailDrawerLink } from "./components/nav/DetailDrawer.js";
29
30
  import { StylishText } from "./components/StylishText.js";
30
31
  import { useStoredTableState } from "./states/StoredTableState.js";
31
32
  import { useLocalLibState } from "./states/LocalLibState.js";
33
+ import { default as default8 } from "./plugin/InventreeHmrPlugin.js";
34
+ import { default as default9 } from "./plugin/LocalizedComponent.js";
32
35
  export {
33
36
  ActionButton,
34
37
  AddItemButton,
@@ -45,7 +48,9 @@ export {
45
48
  INVENTREE_PLUGIN_VERSION,
46
49
  INVENTREE_REACT_DOM_VERSION,
47
50
  INVENTREE_REACT_VERSION,
48
- default2 as InvenTreeTable,
51
+ default3 as InvenTreeTable,
52
+ default8 as InventreeHmrPlugin,
53
+ default9 as LocalizedComponent,
49
54
  ModelType,
50
55
  PassFailButton,
51
56
  ProgressBar,
@@ -58,6 +63,7 @@ export {
58
63
  SearchInput,
59
64
  StylishText,
60
65
  TableColumnSelect,
66
+ default2 as TagsList,
61
67
  UserPermissions,
62
68
  UserRoles,
63
69
  YesNoButton,
@@ -78,11 +84,11 @@ export {
78
84
  permissionDenied,
79
85
  shortenString,
80
86
  showTimeoutNotification,
81
- default5 as useFilterSet,
87
+ default6 as useFilterSet,
82
88
  useLocalLibState,
83
- default4 as useMonitorBackgroundTask,
84
- default3 as useMonitorDataOutput,
89
+ default5 as useMonitorBackgroundTask,
90
+ default4 as useMonitorDataOutput,
85
91
  useStoredTableState,
86
- default6 as useTable
92
+ default7 as useTable
87
93
  };
88
94
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,14 @@
1
+ import createReactComponent from "../createReactComponent.js";
2
+ /**
3
+ * @license @tabler/icons-react v3.40.0 - MIT
4
+ *
5
+ * This source code is licensed under the MIT license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const __iconNode = [["path", { "d": "M6.5 7.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-0" }], ["path", { "d": "M3 6v5.172a2 2 0 0 0 .586 1.414l7.71 7.71a2.41 2.41 0 0 0 3.408 0l5.592 -5.592a2.41 2.41 0 0 0 0 -3.408l-7.71 -7.71a2 2 0 0 0 -1.414 -.586h-5.172a3 3 0 0 0 -3 3", "key": "svg-1" }]];
9
+ const IconTag = createReactComponent("outline", "tag", "Tag", __iconNode);
10
+ export {
11
+ __iconNode,
12
+ IconTag as default
13
+ };
14
+ //# sourceMappingURL=IconTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconTag.js","sources":["../../../../../../../node_modules/@tabler/icons-react/dist/esm/icons/IconTag.mjs"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.40.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M6.5 7.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M3 6v5.172a2 2 0 0 0 .586 1.414l7.71 7.71a2.41 2.41 0 0 0 3.408 0l5.592 -5.592a2.41 2.41 0 0 0 0 -3.408l-7.71 -7.71a2 2 0 0 0 -1.414 -.586h-5.172a3 3 0 0 0 -3 3\", \"key\": \"svg-1\" }]];\nconst IconTag = createReactComponent(\"outline\", \"tag\", \"Tag\", __iconNode);\n\nexport { __iconNode, IconTag as default };\n//# sourceMappingURL=IconTag.mjs.map\n"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASK,MAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,KAAK,yCAAyC,OAAO,QAAO,CAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,oKAAoK,OAAO,SAAS,CAAC;AAChS,MAAC,UAAU,qBAAqB,WAAW,OAAO,OAAO,UAAU;","x_google_ignoreList":[0]}
@@ -0,0 +1,8 @@
1
+ import { Plugin } from 'vite';
2
+ /**
3
+ * Vite plugin which enables hot module replacement (HMR) for InvenTree plugin development.
4
+ *
5
+ * This is for use with the InvenTree plugin creator tool,
6
+ * allowing frontend plugin code to be "live reloaded" during development.
7
+ */
8
+ export default function InventreeHmrPlugin(): Plugin;
@@ -0,0 +1,21 @@
1
+ function InventreeHmrPlugin() {
2
+ const fileRegex = /\.(js|jsx|ts|tsx)(\?|$)/;
3
+ const hmrBlock = ["", "// __inventree_hmr_injected__", "if (import.meta.hot) {", " import.meta.hot.accept((newModule) => {", " const key = new URL(import.meta.url).origin + new URL(import.meta.url).pathname;", " window.__plugin_hmr_callbacks?.[key]?.forEach(callback => {", " callback(newModule);", " });", " })", "}"];
4
+ return {
5
+ name: "inventree-hmr-plugin",
6
+ enforce: "post",
7
+ transform(code, id) {
8
+ if (!fileRegex.test(id)) return;
9
+ if (id.includes("node_modules")) return;
10
+ if (code.includes("__inventree_hmr_injected__")) return;
11
+ return {
12
+ code: code + hmrBlock.join("\n"),
13
+ map: null
14
+ };
15
+ }
16
+ };
17
+ }
18
+ export {
19
+ InventreeHmrPlugin as default
20
+ };
21
+ //# sourceMappingURL=InventreeHmrPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InventreeHmrPlugin.js","sources":["../../lib/plugin/InventreeHmrPlugin.tsx"],"sourcesContent":["import type { Plugin } from 'vite';\n\n/**\n * Vite plugin which enables hot module replacement (HMR) for InvenTree plugin development.\n *\n * This is for use with the InvenTree plugin creator tool,\n * allowing frontend plugin code to be \"live reloaded\" during development.\n */\nexport default function InventreeHmrPlugin(): Plugin {\n const fileRegex = /\\.(js|jsx|ts|tsx)(\\?|$)/;\n\n const hmrBlock = [\n '',\n '// __inventree_hmr_injected__',\n 'if (import.meta.hot) {',\n ' import.meta.hot.accept((newModule) => {',\n ' const key = new URL(import.meta.url).origin + new URL(import.meta.url).pathname;',\n ' window.__plugin_hmr_callbacks?.[key]?.forEach(callback => {',\n ' callback(newModule);',\n ' });',\n ' })',\n '}'\n ];\n\n return {\n name: 'inventree-hmr-plugin',\n enforce: 'post',\n\n transform(code, id) {\n if (!fileRegex.test(id)) return;\n if (id.includes('node_modules')) return;\n if (code.includes('__inventree_hmr_injected__')) return;\n\n return {\n code: code + hmrBlock.join('\\n'),\n map: null\n };\n }\n };\n}\n"],"names":["InventreeHmrPlugin","fileRegex","hmrBlock","name","enforce","transform","code","id","test","includes","join","map"],"mappings":"AAQA,SAAwBA,qBAA6B;AACnD,QAAMC,YAAY;AAElB,QAAMC,WAAW,CACf,IACA,iCACA,0BACA,6CACA,wFACA,mEACA,8BACA,WACA,QACA,GAAG;AAGL,SAAO;AAAA,IACLC,MAAM;AAAA,IACNC,SAAS;AAAA,IAETC,UAAUC,MAAMC,IAAI;AAClB,UAAI,CAACN,UAAUO,KAAKD,EAAE,EAAG;AACzB,UAAIA,GAAGE,SAAS,cAAc,EAAG;AACjC,UAAIH,KAAKG,SAAS,4BAA4B,EAAG;AAEjD,aAAO;AAAA,QACLH,MAAMA,OAAOJ,SAASQ,KAAK,IAAI;AAAA,QAC/BC,KAAK;AAAA,MAAA;AAAA,IAET;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,11 @@
1
+ import { I18n } from '@lingui/core';
2
+ /**
3
+ * Wrapper function for a plugin-defined component which needs to support dynamic locale loading.
4
+ *
5
+ * This is primarily designed for usage by the InvenTree plugin creator tool
6
+ */
7
+ export default function LocalizedComponent({ i18n, locale, children }: {
8
+ i18n: I18n;
9
+ locale: string;
10
+ children: React.ReactNode;
11
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,57 @@
1
+ import __variableDynamicImportRuntimeHelper from "../_virtual/dynamic-import-helper.js";
2
+ import { j as jsxRuntimeExports } from "../_virtual/jsx-runtime.js";
3
+ const I18nProvider = window["LinguiReact"].I18nProvider;
4
+ const Skeleton = window["MantineCore"].Skeleton;
5
+ const useEffect = window["React"].useEffect;
6
+ const useState = window["React"].useState;
7
+ async function tryLoadLocale(locale) {
8
+ try {
9
+ const messages = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({}), `./locales/${locale}/messages.ts`, 4);
10
+ return messages;
11
+ } catch (error) {
12
+ console.warn(`Failed to load locale ${locale}`);
13
+ return null;
14
+ }
15
+ }
16
+ async function loadPluginLocale(i18n, locale) {
17
+ let messages = null;
18
+ messages = await tryLoadLocale(locale);
19
+ if (!messages && locale.includes("-")) {
20
+ const fallbackLocale = locale.split("-")[0];
21
+ console.debug(`Locale ${locale} not found, trying fallback locale ${fallbackLocale}`);
22
+ messages = await tryLoadLocale(fallbackLocale);
23
+ }
24
+ if (!messages && locale.includes("_")) {
25
+ const fallbackLocale = locale.split("_")[0];
26
+ console.debug(`Locale ${locale} not found, trying fallback locale ${fallbackLocale}`);
27
+ messages = await tryLoadLocale(fallbackLocale);
28
+ }
29
+ if (!messages && locale !== "en") {
30
+ console.debug(`Locale ${locale} not found, trying fallback locale en`);
31
+ messages = await tryLoadLocale("en");
32
+ }
33
+ if (messages == null ? void 0 : messages.messages) {
34
+ i18n.load(locale, messages.messages);
35
+ i18n.activate(locale);
36
+ } else {
37
+ console.error(`Failed to load any locale for ${locale}`);
38
+ }
39
+ }
40
+ function LocalizedComponent({
41
+ i18n,
42
+ locale,
43
+ children
44
+ }) {
45
+ const [loaded, setLoaded] = useState(false);
46
+ useEffect(() => {
47
+ setLoaded(false);
48
+ loadPluginLocale(i18n, locale).then(() => {
49
+ setLoaded(true);
50
+ });
51
+ }, [i18n, locale]);
52
+ return loaded ? /* @__PURE__ */ jsxRuntimeExports.jsx(I18nProvider, { i18n, children }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Skeleton, { w: "100%", animate: true });
53
+ }
54
+ export {
55
+ LocalizedComponent as default
56
+ };
57
+ //# sourceMappingURL=LocalizedComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalizedComponent.js","sources":["../../lib/plugin/LocalizedComponent.tsx"],"sourcesContent":["import { I18n } from '@lingui/core';\nimport { I18nProvider } from '@lingui/react';\nimport { Skeleton } from '@mantine/core';\nimport { useEffect, useState } from 'react';\n\n/**\n * Attempt to load the locale file for the given locale, returning null if it fails\n */\nasync function tryLoadLocale(locale: string): Promise<any> {\n try {\n const messages = await import(`./locales/${locale}/messages.ts`);\n return messages;\n } catch (error) {\n console.warn(`Failed to load locale ${locale}`);\n return null;\n }\n}\n\n/**\n * Helper function to dynamically load frontend translations,\n * based on the provided locale.\n */\nasync function loadPluginLocale(i18n: I18n, locale: string) {\n let messages = null;\n\n // Find the most specific locale file possible, with fallbacks to less specific locales if necessary\n messages = await tryLoadLocale(locale);\n\n if (!messages && locale.includes('-')) {\n const fallbackLocale = locale.split('-')[0];\n console.debug(\n `Locale ${locale} not found, trying fallback locale ${fallbackLocale}`\n );\n messages = await tryLoadLocale(fallbackLocale);\n }\n\n if (!messages && locale.includes('_')) {\n const fallbackLocale = locale.split('_')[0];\n console.debug(\n `Locale ${locale} not found, trying fallback locale ${fallbackLocale}`\n );\n messages = await tryLoadLocale(fallbackLocale);\n }\n\n if (!messages && locale !== 'en') {\n console.debug(`Locale ${locale} not found, trying fallback locale en`);\n messages = await tryLoadLocale('en');\n }\n\n if (messages?.messages) {\n i18n.load(locale, messages.messages);\n i18n.activate(locale);\n } else {\n console.error(`Failed to load any locale for ${locale}`);\n }\n}\n\n/**\n * Wrapper function for a plugin-defined component which needs to support dynamic locale loading.\n *\n * This is primarily designed for usage by the InvenTree plugin creator tool\n */\nexport default function LocalizedComponent({\n i18n,\n locale,\n children\n}: {\n i18n: I18n;\n locale: string;\n children: React.ReactNode;\n}) {\n const [loaded, setLoaded] = useState(false);\n\n // Reload the component when the locale changes\n useEffect(() => {\n setLoaded(false);\n loadPluginLocale(i18n, locale).then(() => {\n setLoaded(true);\n });\n }, [i18n, locale]);\n\n return loaded ? (\n <I18nProvider i18n={i18n}>{children}</I18nProvider>\n ) : (\n <Skeleton w='100%' animate />\n );\n}\n"],"names":["tryLoadLocale","locale","messages","error","console","warn","loadPluginLocale","i18n","includes","fallbackLocale","split","debug","load","activate","LocalizedComponent","children","loaded","setLoaded","useState","useEffect","then","jsx"],"mappings":";;AACA,MAAA,eAAA,OAAA,aAAA,EAAA;AACA,MAAA,WAAA,OAAA,aAAA,EAAA;AACA,MAAA,YAAA,OAAA,OAAA,EAAA;;AAKA,eAAeA,cAAcC,QAA8B;AACzD,MAAI;AACF,UAAMC,WAAW,MAAM,wEAAA,aAAA,MAAA,gBAAA,CAAA;AACvB,WAAOA;AAAAA,EACT,SAASC,OAAO;AACdC,YAAQC,KAAK,yBAAyBJ,MAAM,EAAE;AAC9C,WAAO;AAAA,EACT;AACF;AAMA,eAAeK,iBAAiBC,MAAYN,QAAgB;AAC1D,MAAIC,WAAW;AAGfA,aAAW,MAAMF,cAAcC,MAAM;AAErC,MAAI,CAACC,YAAYD,OAAOO,SAAS,GAAG,GAAG;AACrC,UAAMC,iBAAiBR,OAAOS,MAAM,GAAG,EAAE,CAAC;AAC1CN,YAAQO,MACN,UAAUV,MAAM,sCAAsCQ,cAAc,EACtE;AACAP,eAAW,MAAMF,cAAcS,cAAc;AAAA,EAC/C;AAEA,MAAI,CAACP,YAAYD,OAAOO,SAAS,GAAG,GAAG;AACrC,UAAMC,iBAAiBR,OAAOS,MAAM,GAAG,EAAE,CAAC;AAC1CN,YAAQO,MACN,UAAUV,MAAM,sCAAsCQ,cAAc,EACtE;AACAP,eAAW,MAAMF,cAAcS,cAAc;AAAA,EAC/C;AAEA,MAAI,CAACP,YAAYD,WAAW,MAAM;AAChCG,YAAQO,MAAM,UAAUV,MAAM,uCAAuC;AACrEC,eAAW,MAAMF,cAAc,IAAI;AAAA,EACrC;AAEA,MAAIE,qCAAUA,UAAU;AACtBK,SAAKK,KAAKX,QAAQC,SAASA,QAAQ;AACnCK,SAAKM,SAASZ,MAAM;AAAA,EACtB,OAAO;AACLG,YAAQD,MAAM,iCAAiCF,MAAM,EAAE;AAAA,EACzD;AACF;AAOA,SAAwBa,mBAAmB;AAAA,EACzCP;AAAAA,EACAN;AAAAA,EACAc;AAKF,GAAG;AACD,QAAM,CAACC,QAAQC,SAAS,IAAIC,SAAS,KAAK;AAG1CC,YAAU,MAAM;AACdF,cAAU,KAAK;AACfX,qBAAiBC,MAAMN,MAAM,EAAEmB,KAAK,MAAM;AACxCH,gBAAU,IAAI;AAAA,IAChB,CAAC;AAAA,EACH,GAAG,CAACV,MAAMN,MAAM,CAAC;AAEjB,SAAOe,SACLK,kCAAAA,IAAC,cAAA,EAAa,MAAaN,SAAAA,CAAS,IAEpCM,kCAAAA,IAAC,UAAA,EAAS,GAAE,QAAO,SAAO,KAAA,CAAA;AAE9B;"}
@@ -38,6 +38,7 @@ export type TableFilter = {
38
38
  name: string;
39
39
  label?: string;
40
40
  description?: string;
41
+ placeholder?: string;
41
42
  type?: TableFilterType;
42
43
  choices?: TableFilterChoice[];
43
44
  choiceFunction?: () => TableFilterChoice[];
@@ -49,10 +50,20 @@ export type TableFilter = {
49
50
  apiFilter?: Record<string, any>;
50
51
  model?: ModelType;
51
52
  modelRenderer?: (instance: any) => string;
53
+ transform?: (item: any) => TableFilterChoice;
54
+ multi?: boolean;
55
+ };
56
+ export type NamedFilterSet = {
57
+ name: string;
58
+ filters: Pick<TableFilter, 'name' | 'value' | 'displayValue'>[];
52
59
  };
53
60
  export type FilterSetState = {
54
61
  filterKey: string;
55
62
  activeFilters: TableFilter[];
56
63
  setActiveFilters: (filters: TableFilter[]) => void;
57
64
  clearActiveFilters: () => void;
65
+ savedFilterSets: NamedFilterSet[];
66
+ saveFilterSet: (name: string) => void;
67
+ loadFilterSet: (name: string) => void;
68
+ deleteFilterSet: (name: string) => void;
58
69
  };
@@ -2,6 +2,7 @@ import { DefaultMantineColor, MantineStyleProp } from '@mantine/core';
2
2
  import { UseFormReturnType } from '@mantine/form';
3
3
  import { JSX, ReactNode } from 'react';
4
4
  import { FieldValues, UseFormReturn } from 'react-hook-form';
5
+ import { NavigateFunction } from 'react-router-dom';
5
6
  import { ApiEndpoints } from '../enums/ApiEndpoints';
6
7
  import { ModelType } from '../enums/ModelType';
7
8
  import { PathParams, UiSizeType } from './Core';
@@ -73,7 +74,7 @@ export type ApiFormFieldType = {
73
74
  value?: any;
74
75
  default?: any;
75
76
  icon?: ReactNode;
76
- field_type?: 'related field' | 'email' | 'url' | 'string' | 'password' | 'icon' | 'boolean' | 'date' | 'datetime' | 'integer' | 'decimal' | 'float' | 'number' | 'choice' | 'file upload' | 'nested object' | 'dependent field' | 'table';
77
+ field_type?: 'related field' | 'email' | 'url' | 'string' | 'password' | 'icon' | 'boolean' | 'date' | 'datetime' | 'integer' | 'decimal' | 'float' | 'number' | 'choice' | 'file upload' | 'nested object' | 'dependent field' | 'table' | 'tags';
77
78
  api_url?: string;
78
79
  pk_field?: string;
79
80
  model?: ModelType;
@@ -135,6 +136,7 @@ export type ApiFormFieldSet = Record<string, ApiFormFieldType>;
135
136
  * @param modelType : Define a model type for this form
136
137
  * @param follow : Boolean, follow the result of the form (if possible)
137
138
  * @param table : Table to update on success (if provided)
139
+ * @param navigate : Optional navigate function to use for following results (if follow is true)
138
140
  */
139
141
  export interface ApiFormProps {
140
142
  url: ApiEndpoints | string;
@@ -164,6 +166,7 @@ export interface ApiFormProps {
164
166
  follow?: boolean;
165
167
  actions?: ApiFormAction[];
166
168
  timeout?: number;
169
+ navigate?: NavigateFunction;
167
170
  keepOpenOption?: boolean;
168
171
  onKeepOpenChange?: (keepOpen: boolean) => void;
169
172
  }
@@ -1,4 +1,4 @@
1
- const INVENTREE_PLUGIN_VERSION = "1.4.0";
1
+ const INVENTREE_PLUGIN_VERSION = "1.4.2";
2
2
  const INVENTREE_REACT_VERSION = "19.2.4";
3
3
  const INVENTREE_REACT_DOM_VERSION = (
4
4
  // @ts-ignore