@cratis/scene.blueprint.inventory 0.0.0-stage → 4.50.0

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 (138) hide show
  1. package/blueprint.ts +16 -0
  2. package/blueprintCatalog.json +190 -0
  3. package/dist/cjs/blueprint.js +19 -0
  4. package/dist/cjs/blueprint.js.map +1 -0
  5. package/dist/cjs/index.js +72 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/inventoryApplication.js +49 -0
  8. package/dist/cjs/inventoryApplication.js.map +1 -0
  9. package/dist/cjs/inventoryParts.js +131 -0
  10. package/dist/cjs/inventoryParts.js.map +1 -0
  11. package/dist/cjs/inventoryQueries.js +72 -0
  12. package/dist/cjs/inventoryQueries.js.map +1 -0
  13. package/dist/cjs/inventoryScreenSet.js +69 -0
  14. package/dist/cjs/inventoryScreenSet.js.map +1 -0
  15. package/dist/cjs/manifest.js +65 -0
  16. package/dist/cjs/manifest.js.map +1 -0
  17. package/dist/cjs/navigation.js +143 -0
  18. package/dist/cjs/navigation.js.map +1 -0
  19. package/dist/cjs/package.json +3 -0
  20. package/dist/cjs/packageName.js +8 -0
  21. package/dist/cjs/packageName.js.map +1 -0
  22. package/dist/cjs/screens/index.js +22 -0
  23. package/dist/cjs/screens/index.js.map +1 -0
  24. package/dist/cjs/templateProvenance.js +24 -0
  25. package/dist/cjs/templateProvenance.js.map +1 -0
  26. package/dist/cjs/templates/dashboardTemplate.js +92 -0
  27. package/dist/cjs/templates/dashboardTemplate.js.map +1 -0
  28. package/dist/cjs/templates/formTemplates.js +94 -0
  29. package/dist/cjs/templates/formTemplates.js.map +1 -0
  30. package/dist/cjs/templates/index.js +34 -0
  31. package/dist/cjs/templates/index.js.map +1 -0
  32. package/dist/cjs/templates/listTemplates.js +212 -0
  33. package/dist/cjs/templates/listTemplates.js.map +1 -0
  34. package/dist/cjs/templates/locationsTemplate.js +63 -0
  35. package/dist/cjs/templates/locationsTemplate.js.map +1 -0
  36. package/dist/cjs/templates/recordTemplates.js +111 -0
  37. package/dist/cjs/templates/recordTemplates.js.map +1 -0
  38. package/dist/esm/blueprint.d.ts +3 -0
  39. package/dist/esm/blueprint.d.ts.map +1 -0
  40. package/dist/esm/blueprint.js +17 -0
  41. package/dist/esm/blueprint.js.map +1 -0
  42. package/dist/esm/index.d.ts +12 -0
  43. package/dist/esm/index.d.ts.map +1 -0
  44. package/dist/esm/index.js +18 -0
  45. package/dist/esm/index.js.map +1 -0
  46. package/dist/esm/inventoryApplication.d.ts +10 -0
  47. package/dist/esm/inventoryApplication.d.ts.map +1 -0
  48. package/dist/esm/inventoryApplication.js +44 -0
  49. package/dist/esm/inventoryApplication.js.map +1 -0
  50. package/dist/esm/inventoryParts.d.ts +15 -0
  51. package/dist/esm/inventoryParts.d.ts.map +1 -0
  52. package/dist/esm/inventoryParts.js +114 -0
  53. package/dist/esm/inventoryParts.js.map +1 -0
  54. package/dist/esm/inventoryQueries.d.ts +44 -0
  55. package/dist/esm/inventoryQueries.d.ts.map +1 -0
  56. package/dist/esm/inventoryQueries.js +64 -0
  57. package/dist/esm/inventoryQueries.js.map +1 -0
  58. package/dist/esm/inventoryScreenSet.d.ts +7 -0
  59. package/dist/esm/inventoryScreenSet.d.ts.map +1 -0
  60. package/dist/esm/inventoryScreenSet.js +67 -0
  61. package/dist/esm/inventoryScreenSet.js.map +1 -0
  62. package/dist/esm/manifest.d.ts +3 -0
  63. package/dist/esm/manifest.d.ts.map +1 -0
  64. package/dist/esm/manifest.js +63 -0
  65. package/dist/esm/manifest.js.map +1 -0
  66. package/dist/esm/navigation.d.ts +5 -0
  67. package/dist/esm/navigation.d.ts.map +1 -0
  68. package/dist/esm/navigation.js +139 -0
  69. package/dist/esm/navigation.js.map +1 -0
  70. package/dist/esm/package.json +3 -0
  71. package/dist/esm/packageName.d.ts +2 -0
  72. package/dist/esm/packageName.d.ts.map +1 -0
  73. package/dist/esm/packageName.js +6 -0
  74. package/dist/esm/packageName.js.map +1 -0
  75. package/dist/esm/screens/index.d.ts +3 -0
  76. package/dist/esm/screens/index.d.ts.map +1 -0
  77. package/dist/esm/screens/index.js +20 -0
  78. package/dist/esm/screens/index.js.map +1 -0
  79. package/dist/esm/templateProvenance.d.ts +3 -0
  80. package/dist/esm/templateProvenance.d.ts.map +1 -0
  81. package/dist/esm/templateProvenance.js +22 -0
  82. package/dist/esm/templateProvenance.js.map +1 -0
  83. package/dist/esm/templates/dashboardTemplate.d.ts +3 -0
  84. package/dist/esm/templates/dashboardTemplate.d.ts.map +1 -0
  85. package/dist/esm/templates/dashboardTemplate.js +90 -0
  86. package/dist/esm/templates/dashboardTemplate.js.map +1 -0
  87. package/dist/esm/templates/formTemplates.d.ts +5 -0
  88. package/dist/esm/templates/formTemplates.d.ts.map +1 -0
  89. package/dist/esm/templates/formTemplates.js +90 -0
  90. package/dist/esm/templates/formTemplates.js.map +1 -0
  91. package/dist/esm/templates/index.d.ts +8 -0
  92. package/dist/esm/templates/index.d.ts.map +1 -0
  93. package/dist/esm/templates/index.js +22 -0
  94. package/dist/esm/templates/index.js.map +1 -0
  95. package/dist/esm/templates/listTemplates.d.ts +6 -0
  96. package/dist/esm/templates/listTemplates.d.ts.map +1 -0
  97. package/dist/esm/templates/listTemplates.js +207 -0
  98. package/dist/esm/templates/listTemplates.js.map +1 -0
  99. package/dist/esm/templates/locationsTemplate.d.ts +3 -0
  100. package/dist/esm/templates/locationsTemplate.d.ts.map +1 -0
  101. package/dist/esm/templates/locationsTemplate.js +61 -0
  102. package/dist/esm/templates/locationsTemplate.js.map +1 -0
  103. package/dist/esm/templates/recordTemplates.d.ts +3 -0
  104. package/dist/esm/templates/recordTemplates.d.ts.map +1 -0
  105. package/dist/esm/templates/recordTemplates.js +109 -0
  106. package/dist/esm/templates/recordTemplates.js.map +1 -0
  107. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  108. package/index.ts +14 -0
  109. package/inventoryApplication.ts +28 -0
  110. package/inventoryParts.ts +52 -0
  111. package/inventoryQueries.ts +64 -0
  112. package/inventoryScreenSet.ts +25 -0
  113. package/manifest.ts +41 -0
  114. package/navigation.ts +60 -0
  115. package/package.json +79 -5
  116. package/packageName.ts +5 -0
  117. package/sampleData/inventory-warehouse.json +1770 -0
  118. package/screens/index.ts +20 -0
  119. package/templateProvenance.ts +15 -0
  120. package/templates/dashboardTemplate.ts +45 -0
  121. package/templates/formTemplates.ts +60 -0
  122. package/templates/index.ts +25 -0
  123. package/templates/listTemplates.ts +109 -0
  124. package/templates/locationsTemplate.ts +36 -0
  125. package/templates/recordTemplates.ts +45 -0
  126. package/thumbnails/InventoryAdjustStock.svg +12 -0
  127. package/thumbnails/InventoryCheckInOut.svg +17 -0
  128. package/thumbnails/InventoryDashboard.svg +14 -0
  129. package/thumbnails/InventoryItemGallery.svg +29 -0
  130. package/thumbnails/InventoryItemList.svg +13 -0
  131. package/thumbnails/InventoryItemPage.svg +18 -0
  132. package/thumbnails/InventoryLocations.svg +20 -0
  133. package/thumbnails/InventoryMovementList.svg +13 -0
  134. package/thumbnails/InventoryQuickCreateItem.svg +12 -0
  135. package/thumbnails/InventoryQuickCreateSupplier.svg +12 -0
  136. package/thumbnails/InventorySupplierList.svg +13 -0
  137. package/thumbnails/inventory.svg +14 -0
  138. package/README.md +0 -3
@@ -0,0 +1,3 @@
1
+ import { ScreenTemplate } from '@cratis/scene.model';
2
+ export declare const inventoryLocationsTemplate: ScreenTemplate;
3
+ //# sourceMappingURL=locationsTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locationsTemplate.d.ts","sourceRoot":"","sources":["../../../templates/locationsTemplate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AAWpE,eAAO,MAAM,0BAA0B,EAAE,cAqBxC,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { TemplateScope } from '@cratis/scene.model';
2
+ import { component, masterDetailScreenTemplate } from '@cratis/scene.blueprint.default';
3
+ import { localeOfData, fromQuery, InventoryQuery } from '../inventoryQueries.js';
4
+ import { inventoryMetadata, withBehaviors, opensDialog, actionButton } from '../inventoryParts.js';
5
+
6
+ // Copyright (c) Cratis. All rights reserved.
7
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
8
+ /**
9
+ * The locations: the foundation `MasterDetail` with the tree of locations - warehouse, aisle, shelf - on the left and, on the right, what is stored in the one
10
+ * chosen, or in everything beneath it. The tree keeps the chosen location in the address under the parameter the contents list searches by, and a
11
+ * location's id is its path, so the contents are every row whose location starts with it - and a link or a refresh restores the choice. On a phone the two become a navigation stack. It fills the shell's `content` slot itself
12
+ * rather than the module workspace's, so a module without a workspace can use it.
13
+ */ const inventoryLocationsTemplate = {
14
+ name: 'InventoryLocations',
15
+ fitsSlot: 'content',
16
+ slots: masterDetailScreenTemplate.slots,
17
+ arrangement: masterDetailScreenTemplate.arrangement,
18
+ content: {
19
+ list: [
20
+ component('inventory-locations-tree', 'orgTree', {
21
+ nodes: fromQuery(InventoryQuery.LocationNodes),
22
+ expandedDepth: 2,
23
+ urlKey: 'contentsq',
24
+ strings: {
25
+ orgTree: 'Locations',
26
+ orgReports: '{count} locations beneath'
27
+ },
28
+ ...localeOfData
29
+ })
30
+ ],
31
+ details: [
32
+ component('inventory-locations-header', 'pageHeader', {
33
+ title: 'Contents',
34
+ subtitle: 'What is stored in the chosen location and beneath it'
35
+ }, {
36
+ actions: [
37
+ withBehaviors(actionButton('inventory-locations-adjust', 'Adjust stock', 'primary'), opensDialog('InventoryAdjustStock'))
38
+ ]
39
+ }),
40
+ component('inventory-locations-contents', 'dataList', {
41
+ label: 'Location contents',
42
+ rows: fromQuery(InventoryQuery.LocationContents),
43
+ columns: fromQuery(InventoryQuery.LocationContentColumns),
44
+ titleField: 'name',
45
+ pageSize: 10,
46
+ toneField: 'tone',
47
+ urlKey: 'contents',
48
+ ...localeOfData
49
+ })
50
+ ]
51
+ },
52
+ displayName: 'Inventory locations',
53
+ description: 'The tree of locations beside what is stored in the chosen location.',
54
+ metadata: inventoryMetadata('InventoryLocations', 'Workspace', [
55
+ TemplateScope.Module,
56
+ TemplateScope.Feature
57
+ ])
58
+ };
59
+
60
+ export { inventoryLocationsTemplate };
61
+ //# sourceMappingURL=locationsTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locationsTemplate.js","sources":["../../../templates/locationsTemplate.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ScreenTemplate, TemplateScope } from '@cratis/scene.model';\nimport { masterDetailScreenTemplate } from '@cratis/scene.blueprint.default';\nimport { InventoryQuery, fromQuery, localeOfData } from '../inventoryQueries';\nimport { actionButton, component, inventoryMetadata, opensDialog, withBehaviors } from '../inventoryParts';\n\n/**\n * The locations: the foundation `MasterDetail` with the tree of locations - warehouse, aisle, shelf - on the left and, on the right, what is stored in the one\n * chosen, or in everything beneath it. The tree keeps the chosen location in the address under the parameter the contents list searches by, and a\n * location's id is its path, so the contents are every row whose location starts with it - and a link or a refresh restores the choice. On a phone the two become a navigation stack. It fills the shell's `content` slot itself\n * rather than the module workspace's, so a module without a workspace can use it.\n */\nexport const inventoryLocationsTemplate: ScreenTemplate = {\n name: 'InventoryLocations',\n fitsSlot: 'content',\n slots: masterDetailScreenTemplate.slots,\n arrangement: masterDetailScreenTemplate.arrangement,\n content: {\n list: [component('inventory-locations-tree', 'orgTree', {\n nodes: fromQuery(InventoryQuery.LocationNodes), expandedDepth: 2, urlKey: 'contentsq', strings: { orgTree: 'Locations', orgReports: '{count} locations beneath' }, ...localeOfData,\n })],\n details: [\n component('inventory-locations-header', 'pageHeader', { title: 'Contents', subtitle: 'What is stored in the chosen location and beneath it' }, {\n actions: [withBehaviors(actionButton('inventory-locations-adjust', 'Adjust stock', 'primary'), opensDialog('InventoryAdjustStock'))],\n }),\n component('inventory-locations-contents', 'dataList', {\n label: 'Location contents', rows: fromQuery(InventoryQuery.LocationContents), columns: fromQuery(InventoryQuery.LocationContentColumns), titleField: 'name', pageSize: 10, toneField: 'tone', urlKey: 'contents', ...localeOfData,\n }),\n ],\n },\n displayName: 'Inventory locations',\n description: 'The tree of locations beside what is stored in the chosen location.',\n metadata: inventoryMetadata('InventoryLocations', 'Workspace', [TemplateScope.Module, TemplateScope.Feature]),\n};\n"],"names":["inventoryLocationsTemplate","name","fitsSlot","slots","masterDetailScreenTemplate","arrangement","content","list","component","nodes","fromQuery","InventoryQuery","LocationNodes","expandedDepth","urlKey","strings","orgTree","orgReports","localeOfData","details","title","subtitle","actions","withBehaviors","actionButton","opensDialog","label","rows","LocationContents","columns","LocationContentColumns","titleField","pageSize","toneField","displayName","description","metadata","inventoryMetadata","TemplateScope","Module","Feature"],"mappings":";;;;;AAAA;AACA;AAOA;;;;;UAMaA,0BAAAA,GAA6C;IACtDC,IAAAA,EAAM,oBAAA;IACNC,QAAAA,EAAU,SAAA;AACVC,IAAAA,KAAAA,EAAOC,2BAA2BD,KAAK;AACvCE,IAAAA,WAAAA,EAAaD,2BAA2BC,WAAW;IACnDC,OAAAA,EAAS;QACLC,IAAAA,EAAM;AAACC,YAAAA,SAAAA,CAAU,4BAA4B,SAAA,EAAW;gBACpDC,KAAAA,EAAOC,SAAAA,CAAUC,eAAeC,aAAa,CAAA;gBAAGC,aAAAA,EAAe,CAAA;gBAAGC,MAAAA,EAAQ,WAAA;gBAAaC,OAAAA,EAAS;oBAAEC,OAAAA,EAAS,WAAA;oBAAaC,UAAAA,EAAY;AAA4B,iBAAA;AAAG,gBAAA,GAAGC;AAC1K,aAAA;AAAG,SAAA;QACHC,OAAAA,EAAS;AACLX,YAAAA,SAAAA,CAAU,8BAA8B,YAAA,EAAc;gBAAEY,KAAAA,EAAO,UAAA;gBAAYC,QAAAA,EAAU;aAAuD,EAAG;gBAC3IC,OAAAA,EAAS;AAACC,oBAAAA,aAAAA,CAAcC,YAAAA,CAAa,4BAAA,EAA8B,cAAA,EAAgB,SAAA,CAAA,EAAYC,WAAAA,CAAY,sBAAA,CAAA;AAAyB;AACxI,aAAA,CAAA;AACAjB,YAAAA,SAAAA,CAAU,gCAAgC,UAAA,EAAY;gBAClDkB,KAAAA,EAAO,mBAAA;gBAAqBC,IAAAA,EAAMjB,SAAAA,CAAUC,eAAeiB,gBAAgB,CAAA;gBAAGC,OAAAA,EAASnB,SAAAA,CAAUC,eAAemB,sBAAsB,CAAA;gBAAGC,UAAAA,EAAY,MAAA;gBAAQC,QAAAA,EAAU,EAAA;gBAAIC,SAAAA,EAAW,MAAA;gBAAQnB,MAAAA,EAAQ,UAAA;AAAY,gBAAA,GAAGI;AACzN,aAAA;AACH;AACL,KAAA;IACAgB,WAAAA,EAAa,qBAAA;IACbC,WAAAA,EAAa,qEAAA;IACbC,QAAAA,EAAUC,iBAAAA,CAAkB,sBAAsB,WAAA,EAAa;AAACC,QAAAA,aAAAA,CAAcC,MAAM;AAAED,QAAAA,aAAAA,CAAcE;AAAQ,KAAA;AAChH;;"}
@@ -0,0 +1,3 @@
1
+ import { ScreenTemplate } from '@cratis/scene.model';
2
+ export declare const inventoryItemPageTemplate: ScreenTemplate;
3
+ //# sourceMappingURL=recordTemplates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordTemplates.d.ts","sourceRoot":"","sources":["../../../templates/recordTemplates.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AAWpE,eAAO,MAAM,yBAAyB,EAAE,cA8BvC,CAAC"}
@@ -0,0 +1,109 @@
1
+ import { TemplateScope } from '@cratis/scene.model';
2
+ import { component, recordPageTemplate } from '@cratis/scene.blueprint.default';
3
+ import { localeOfData, fromQuery, inventoryQueriesOf, InventoryEntityKind, InventoryQuery, currencyOfData } from '../inventoryQueries.js';
4
+ import { inventoryMetadata, withBehaviors, goesTo, actionButton, opensDialog } from '../inventoryParts.js';
5
+
6
+ // Copyright (c) Cratis. All rights reserved.
7
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
8
+ const queries = inventoryQueriesOf(InventoryEntityKind.Item);
9
+ /**
10
+ * The item page: the foundation `RecordPage` with the item's name as its title, Adjust stock and Check out as its actions, its key facts under it, the record's
11
+ * fields with the supplier's details, the stock of the item in each location and its movement history as related lists, and the cycle counts to do beside it.
12
+ */ const inventoryItemPageTemplate = {
13
+ name: 'InventoryItemPage',
14
+ fitsSlot: 'content',
15
+ slots: recordPageTemplate.slots,
16
+ arrangement: recordPageTemplate.arrangement,
17
+ content: {
18
+ header: [
19
+ component('InventoryItemPage-header', 'pageHeader', {
20
+ title: fromQuery(queries.record, '0.name'),
21
+ subtitle: 'Item'
22
+ }, {
23
+ actions: [
24
+ withBehaviors(actionButton('InventoryItemPage-check', 'Check out', 'secondary'), goesTo('inventory.movements.check')),
25
+ withBehaviors(actionButton('InventoryItemPage-adjust', 'Adjust stock', 'primary'), opensDialog('InventoryAdjustStock'))
26
+ ]
27
+ })
28
+ ],
29
+ summary: [
30
+ component('InventoryItemPage-status', 'statusChip', {
31
+ status: fromQuery(queries.summary, '0.status'),
32
+ tone: fromQuery(queries.summary, '0.tone')
33
+ }),
34
+ component('InventoryItemPage-onhand', 'statCard', {
35
+ label: 'On hand',
36
+ value: fromQuery(queries.summary, '0.onHand'),
37
+ ...localeOfData
38
+ }),
39
+ component('InventoryItemPage-reorder', 'statCard', {
40
+ label: 'Reorder level',
41
+ value: fromQuery(queries.summary, '0.reorderLevel'),
42
+ ...localeOfData
43
+ }),
44
+ component('InventoryItemPage-value', 'statCard', {
45
+ label: 'Stock value',
46
+ value: fromQuery(queries.summary, '0.stockValue'),
47
+ format: 'currency',
48
+ fractionDigits: 0,
49
+ ...currencyOfData
50
+ })
51
+ ],
52
+ tabs: [
53
+ component('InventoryItemPage-tabs', 'tabSet', {
54
+ tabs: fromQuery(InventoryQuery.RecordTabs),
55
+ urlKey: 'tab',
56
+ label: 'Item sections'
57
+ })
58
+ ],
59
+ main: [
60
+ component('InventoryItemPage-form', 'formScreenBody', {
61
+ mode: 'readOnly',
62
+ sections: fromQuery(queries.sections),
63
+ values: fromQuery(queries.record, '0'),
64
+ ...localeOfData
65
+ })
66
+ ],
67
+ related: [
68
+ component('InventoryItemPage-stock', 'dataList', {
69
+ label: 'Stock by location',
70
+ rows: fromQuery(queries.stockByLocation),
71
+ columns: fromQuery('StockByLocationColumns'),
72
+ titleField: 'location',
73
+ pageSize: 5,
74
+ ...localeOfData
75
+ }),
76
+ component('InventoryItemPage-movements', 'dataList', {
77
+ label: 'Movement history',
78
+ rows: fromQuery(queries.movements),
79
+ columns: fromQuery(inventoryQueriesOf(InventoryEntityKind.Movement).columns),
80
+ titleField: 'item',
81
+ pageSize: 5,
82
+ ...localeOfData
83
+ })
84
+ ],
85
+ activity: [
86
+ component('InventoryItemPage-activity', 'activityFeed', {
87
+ label: 'Activity',
88
+ entries: fromQuery(queries.activity),
89
+ ...localeOfData
90
+ })
91
+ ],
92
+ aside: [
93
+ component('InventoryItemPage-tasks', 'checklistSection', {
94
+ label: 'Cycle counts',
95
+ sections: fromQuery(queries.tasks),
96
+ ...localeOfData
97
+ })
98
+ ]
99
+ },
100
+ displayName: 'Inventory item page',
101
+ description: 'One item: key facts, its fields and supplier, its stock by location and its movement history.',
102
+ metadata: inventoryMetadata('InventoryItemPage', 'Detail', [
103
+ TemplateScope.Feature,
104
+ TemplateScope.Subfeature
105
+ ])
106
+ };
107
+
108
+ export { inventoryItemPageTemplate };
109
+ //# sourceMappingURL=recordTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordTemplates.js","sources":["../../../templates/recordTemplates.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ScreenTemplate, TemplateScope } from '@cratis/scene.model';\nimport { recordPageTemplate } from '@cratis/scene.blueprint.default';\nimport { InventoryEntityKind, InventoryQuery, currencyOfData, fromQuery, inventoryQueriesOf, localeOfData } from '../inventoryQueries';\nimport { actionButton, component, goesTo, inventoryMetadata, opensDialog, withBehaviors } from '../inventoryParts';\n\nconst queries = inventoryQueriesOf(InventoryEntityKind.Item);\n\n/**\n * The item page: the foundation `RecordPage` with the item's name as its title, Adjust stock and Check out as its actions, its key facts under it, the record's\n * fields with the supplier's details, the stock of the item in each location and its movement history as related lists, and the cycle counts to do beside it.\n */\nexport const inventoryItemPageTemplate: ScreenTemplate = {\n name: 'InventoryItemPage',\n fitsSlot: 'content',\n slots: recordPageTemplate.slots,\n arrangement: recordPageTemplate.arrangement,\n content: {\n header: [component('InventoryItemPage-header', 'pageHeader', { title: fromQuery(queries.record, '0.name'), subtitle: 'Item' }, {\n actions: [\n withBehaviors(actionButton('InventoryItemPage-check', 'Check out', 'secondary'), goesTo('inventory.movements.check')),\n withBehaviors(actionButton('InventoryItemPage-adjust', 'Adjust stock', 'primary'), opensDialog('InventoryAdjustStock')),\n ],\n })],\n summary: [\n component('InventoryItemPage-status', 'statusChip', { status: fromQuery(queries.summary, '0.status'), tone: fromQuery(queries.summary, '0.tone') }),\n component('InventoryItemPage-onhand', 'statCard', { label: 'On hand', value: fromQuery(queries.summary, '0.onHand'), ...localeOfData }),\n component('InventoryItemPage-reorder', 'statCard', { label: 'Reorder level', value: fromQuery(queries.summary, '0.reorderLevel'), ...localeOfData }),\n component('InventoryItemPage-value', 'statCard', { label: 'Stock value', value: fromQuery(queries.summary, '0.stockValue'), format: 'currency', fractionDigits: 0, ...currencyOfData }),\n ],\n tabs: [component('InventoryItemPage-tabs', 'tabSet', { tabs: fromQuery(InventoryQuery.RecordTabs), urlKey: 'tab', label: 'Item sections' })],\n main: [component('InventoryItemPage-form', 'formScreenBody', { mode: 'readOnly', sections: fromQuery(queries.sections), values: fromQuery(queries.record, '0'), ...localeOfData })],\n related: [\n component('InventoryItemPage-stock', 'dataList', { label: 'Stock by location', rows: fromQuery(queries.stockByLocation), columns: fromQuery('StockByLocationColumns'), titleField: 'location', pageSize: 5, ...localeOfData }),\n component('InventoryItemPage-movements', 'dataList', { label: 'Movement history', rows: fromQuery(queries.movements), columns: fromQuery(inventoryQueriesOf(InventoryEntityKind.Movement).columns), titleField: 'item', pageSize: 5, ...localeOfData }),\n ],\n activity: [component('InventoryItemPage-activity', 'activityFeed', { label: 'Activity', entries: fromQuery(queries.activity), ...localeOfData })],\n aside: [component('InventoryItemPage-tasks', 'checklistSection', { label: 'Cycle counts', sections: fromQuery(queries.tasks), ...localeOfData })],\n },\n displayName: 'Inventory item page',\n description: 'One item: key facts, its fields and supplier, its stock by location and its movement history.',\n metadata: inventoryMetadata('InventoryItemPage', 'Detail', [TemplateScope.Feature, TemplateScope.Subfeature]),\n};\n"],"names":["queries","inventoryQueriesOf","InventoryEntityKind","Item","inventoryItemPageTemplate","name","fitsSlot","slots","recordPageTemplate","arrangement","content","header","component","title","fromQuery","record","subtitle","actions","withBehaviors","actionButton","goesTo","opensDialog","summary","status","tone","label","value","localeOfData","format","fractionDigits","currencyOfData","tabs","InventoryQuery","RecordTabs","urlKey","main","mode","sections","values","related","rows","stockByLocation","columns","titleField","pageSize","movements","Movement","activity","entries","aside","tasks","displayName","description","metadata","inventoryMetadata","TemplateScope","Feature","Subfeature"],"mappings":"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"}