@cratis/scene.blueprint.default 4.39.0 → 4.41.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 (281) hide show
  1. package/ComponentName.ts +27 -0
  2. package/defaultBlueprint.ts +1 -0
  3. package/defaultBlueprintComponents.ts +10 -1
  4. package/dist/cjs/ComponentName.js +9 -0
  5. package/dist/cjs/ComponentName.js.map +1 -1
  6. package/dist/cjs/defaultBlueprint.js +18 -1
  7. package/dist/cjs/defaultBlueprint.js.map +1 -1
  8. package/dist/cjs/defaultBlueprintComponentMetadata.js +9 -0
  9. package/dist/cjs/defaultBlueprintComponentMetadata.js.map +1 -1
  10. package/dist/cjs/defaultBlueprintComponents.js +28 -1
  11. package/dist/cjs/defaultBlueprintComponents.js.map +1 -1
  12. package/dist/cjs/foundation/BulkBar.js +62 -0
  13. package/dist/cjs/foundation/BulkBar.js.map +1 -0
  14. package/dist/cjs/foundation/DataList.js +436 -0
  15. package/dist/cjs/foundation/DataList.js.map +1 -0
  16. package/dist/cjs/foundation/FormScreenBody.js +447 -0
  17. package/dist/cjs/foundation/FormScreenBody.js.map +1 -0
  18. package/dist/cjs/foundation/FoundationStates.js +2 -1
  19. package/dist/cjs/foundation/FoundationStates.js.map +1 -1
  20. package/dist/cjs/foundation/GlobalSearch.js +54 -0
  21. package/dist/cjs/foundation/GlobalSearch.js.map +1 -0
  22. package/dist/cjs/foundation/KanbanBoard.js +222 -0
  23. package/dist/cjs/foundation/KanbanBoard.js.map +1 -0
  24. package/dist/cjs/foundation/NotificationsButton.js +45 -0
  25. package/dist/cjs/foundation/NotificationsButton.js.map +1 -0
  26. package/dist/cjs/foundation/SubNavigation.js +72 -0
  27. package/dist/cjs/foundation/SubNavigation.js.map +1 -0
  28. package/dist/cjs/foundation/TabSet.js +101 -0
  29. package/dist/cjs/foundation/TabSet.js.map +1 -0
  30. package/dist/cjs/foundation/WizardProgress.js +185 -0
  31. package/dist/cjs/foundation/WizardProgress.js.map +1 -0
  32. package/dist/cjs/foundation/boardModel.js +67 -0
  33. package/dist/cjs/foundation/boardModel.js.map +1 -0
  34. package/dist/cjs/foundation/formModel.js +158 -0
  35. package/dist/cjs/foundation/formModel.js.map +1 -0
  36. package/dist/cjs/foundation/foundationComponentMetadata.js +54 -0
  37. package/dist/cjs/foundation/foundationComponentMetadata.js.map +1 -1
  38. package/dist/cjs/foundation/foundationDescriptors.js +400 -0
  39. package/dist/cjs/foundation/foundationDescriptors.js.map +1 -1
  40. package/dist/cjs/foundation/foundationSamples.js +303 -0
  41. package/dist/cjs/foundation/foundationSamples.js.map +1 -1
  42. package/dist/cjs/foundation/foundationStrings.js +72 -0
  43. package/dist/cjs/foundation/foundationStrings.js.map +1 -1
  44. package/dist/cjs/foundation/listModel.js +200 -0
  45. package/dist/cjs/foundation/listModel.js.map +1 -0
  46. package/dist/cjs/foundation/tabModel.js +41 -0
  47. package/dist/cjs/foundation/tabModel.js.map +1 -0
  48. package/dist/cjs/foundation/templates/boardScreenTemplate.js +76 -0
  49. package/dist/cjs/foundation/templates/boardScreenTemplate.js.map +1 -0
  50. package/dist/cjs/foundation/templates/dashboardScreenTemplate.js +128 -0
  51. package/dist/cjs/foundation/templates/dashboardScreenTemplate.js.map +1 -0
  52. package/dist/cjs/foundation/templates/formScreenTemplate.js +71 -0
  53. package/dist/cjs/foundation/templates/formScreenTemplate.js.map +1 -0
  54. package/dist/cjs/foundation/templates/index.js +39 -0
  55. package/dist/cjs/foundation/templates/index.js.map +1 -0
  56. package/dist/cjs/foundation/templates/listScreenTemplate.js +124 -0
  57. package/dist/cjs/foundation/templates/listScreenTemplate.js.map +1 -0
  58. package/dist/cjs/foundation/templates/masterDetailScreenTemplate.js +79 -0
  59. package/dist/cjs/foundation/templates/masterDetailScreenTemplate.js.map +1 -0
  60. package/dist/cjs/foundation/templates/recordPageTemplate.js +137 -0
  61. package/dist/cjs/foundation/templates/recordPageTemplate.js.map +1 -0
  62. package/dist/cjs/foundation/templates/templateParts.js +38 -0
  63. package/dist/cjs/foundation/templates/templateParts.js.map +1 -0
  64. package/dist/cjs/foundation/templates/wizardScreenTemplate.js +95 -0
  65. package/dist/cjs/foundation/templates/wizardScreenTemplate.js.map +1 -0
  66. package/dist/cjs/foundation/templates/workspaceScreenTemplate.js +62 -0
  67. package/dist/cjs/foundation/templates/workspaceScreenTemplate.js.map +1 -0
  68. package/dist/cjs/foundation/urlState.js +57 -0
  69. package/dist/cjs/foundation/urlState.js.map +1 -0
  70. package/dist/cjs/foundation/useCompactWidth.js +23 -0
  71. package/dist/cjs/foundation/useCompactWidth.js.map +1 -0
  72. package/dist/cjs/foundation/wizardModel.js +50 -0
  73. package/dist/cjs/foundation/wizardModel.js.map +1 -0
  74. package/dist/cjs/gallery/GalleryScreenPreview.js +76 -4
  75. package/dist/cjs/gallery/GalleryScreenPreview.js.map +1 -1
  76. package/dist/cjs/gallery/applicationChrome.js +18 -1
  77. package/dist/cjs/gallery/applicationChrome.js.map +1 -1
  78. package/dist/cjs/gallery/composeScreen.js +5 -3
  79. package/dist/cjs/gallery/composeScreen.js.map +1 -1
  80. package/dist/cjs/gallery/screens.js +83 -2
  81. package/dist/cjs/gallery/screens.js.map +1 -1
  82. package/dist/cjs/index.js +96 -0
  83. package/dist/cjs/index.js.map +1 -1
  84. package/dist/esm/ComponentName.d.ts +10 -1
  85. package/dist/esm/ComponentName.d.ts.map +1 -1
  86. package/dist/esm/ComponentName.js +9 -0
  87. package/dist/esm/ComponentName.js.map +1 -1
  88. package/dist/esm/defaultBlueprint.d.ts.map +1 -1
  89. package/dist/esm/defaultBlueprint.js +18 -1
  90. package/dist/esm/defaultBlueprint.js.map +1 -1
  91. package/dist/esm/defaultBlueprintComponentMetadata.js +9 -0
  92. package/dist/esm/defaultBlueprintComponentMetadata.js.map +1 -1
  93. package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -1
  94. package/dist/esm/defaultBlueprintComponents.js +28 -1
  95. package/dist/esm/defaultBlueprintComponents.js.map +1 -1
  96. package/dist/esm/foundation/BulkBar.d.ts +4 -0
  97. package/dist/esm/foundation/BulkBar.d.ts.map +1 -0
  98. package/dist/esm/foundation/BulkBar.js +59 -0
  99. package/dist/esm/foundation/BulkBar.js.map +1 -0
  100. package/dist/esm/foundation/DataList.d.ts +3 -0
  101. package/dist/esm/foundation/DataList.d.ts.map +1 -0
  102. package/dist/esm/foundation/DataList.js +434 -0
  103. package/dist/esm/foundation/DataList.js.map +1 -0
  104. package/dist/esm/foundation/FormScreenBody.d.ts +3 -0
  105. package/dist/esm/foundation/FormScreenBody.d.ts.map +1 -0
  106. package/dist/esm/foundation/FormScreenBody.js +445 -0
  107. package/dist/esm/foundation/FormScreenBody.js.map +1 -0
  108. package/dist/esm/foundation/FoundationStates.js +2 -1
  109. package/dist/esm/foundation/FoundationStates.js.map +1 -1
  110. package/dist/esm/foundation/GlobalSearch.d.ts +3 -0
  111. package/dist/esm/foundation/GlobalSearch.d.ts.map +1 -0
  112. package/dist/esm/foundation/GlobalSearch.js +52 -0
  113. package/dist/esm/foundation/GlobalSearch.js.map +1 -0
  114. package/dist/esm/foundation/KanbanBoard.d.ts +3 -0
  115. package/dist/esm/foundation/KanbanBoard.d.ts.map +1 -0
  116. package/dist/esm/foundation/KanbanBoard.js +220 -0
  117. package/dist/esm/foundation/KanbanBoard.js.map +1 -0
  118. package/dist/esm/foundation/NotificationsButton.d.ts +3 -0
  119. package/dist/esm/foundation/NotificationsButton.d.ts.map +1 -0
  120. package/dist/esm/foundation/NotificationsButton.js +43 -0
  121. package/dist/esm/foundation/NotificationsButton.js.map +1 -0
  122. package/dist/esm/foundation/SubNavigation.d.ts +3 -0
  123. package/dist/esm/foundation/SubNavigation.d.ts.map +1 -0
  124. package/dist/esm/foundation/SubNavigation.js +70 -0
  125. package/dist/esm/foundation/SubNavigation.js.map +1 -0
  126. package/dist/esm/foundation/TabSet.d.ts +3 -0
  127. package/dist/esm/foundation/TabSet.d.ts.map +1 -0
  128. package/dist/esm/foundation/TabSet.js +99 -0
  129. package/dist/esm/foundation/TabSet.js.map +1 -0
  130. package/dist/esm/foundation/WizardProgress.d.ts +3 -0
  131. package/dist/esm/foundation/WizardProgress.d.ts.map +1 -0
  132. package/dist/esm/foundation/WizardProgress.js +183 -0
  133. package/dist/esm/foundation/WizardProgress.js.map +1 -0
  134. package/dist/esm/foundation/boardModel.d.ts +22 -0
  135. package/dist/esm/foundation/boardModel.d.ts.map +1 -0
  136. package/dist/esm/foundation/boardModel.js +61 -0
  137. package/dist/esm/foundation/boardModel.js.map +1 -0
  138. package/dist/esm/foundation/formModel.d.ts +48 -0
  139. package/dist/esm/foundation/formModel.d.ts.map +1 -0
  140. package/dist/esm/foundation/formModel.js +147 -0
  141. package/dist/esm/foundation/formModel.js.map +1 -0
  142. package/dist/esm/foundation/foundationComponentMetadata.d.ts.map +1 -1
  143. package/dist/esm/foundation/foundationComponentMetadata.js +54 -0
  144. package/dist/esm/foundation/foundationComponentMetadata.js.map +1 -1
  145. package/dist/esm/foundation/foundationDescriptors.d.ts.map +1 -1
  146. package/dist/esm/foundation/foundationDescriptors.js +400 -0
  147. package/dist/esm/foundation/foundationDescriptors.js.map +1 -1
  148. package/dist/esm/foundation/foundationSamples.d.ts.map +1 -1
  149. package/dist/esm/foundation/foundationSamples.js +303 -0
  150. package/dist/esm/foundation/foundationSamples.js.map +1 -1
  151. package/dist/esm/foundation/foundationStrings.d.ts +72 -0
  152. package/dist/esm/foundation/foundationStrings.d.ts.map +1 -1
  153. package/dist/esm/foundation/foundationStrings.js +72 -0
  154. package/dist/esm/foundation/foundationStrings.js.map +1 -1
  155. package/dist/esm/foundation/index.d.ts +17 -0
  156. package/dist/esm/foundation/index.d.ts.map +1 -1
  157. package/dist/esm/foundation/index.js +17 -0
  158. package/dist/esm/foundation/index.js.map +1 -1
  159. package/dist/esm/foundation/listModel.d.ts +49 -0
  160. package/dist/esm/foundation/listModel.d.ts.map +1 -0
  161. package/dist/esm/foundation/listModel.js +183 -0
  162. package/dist/esm/foundation/listModel.js.map +1 -0
  163. package/dist/esm/foundation/tabModel.d.ts +10 -0
  164. package/dist/esm/foundation/tabModel.d.ts.map +1 -0
  165. package/dist/esm/foundation/tabModel.js +37 -0
  166. package/dist/esm/foundation/tabModel.js.map +1 -0
  167. package/dist/esm/foundation/templates/boardScreenTemplate.d.ts +3 -0
  168. package/dist/esm/foundation/templates/boardScreenTemplate.d.ts.map +1 -0
  169. package/dist/esm/foundation/templates/boardScreenTemplate.js +74 -0
  170. package/dist/esm/foundation/templates/boardScreenTemplate.js.map +1 -0
  171. package/dist/esm/foundation/templates/dashboardScreenTemplate.d.ts +3 -0
  172. package/dist/esm/foundation/templates/dashboardScreenTemplate.d.ts.map +1 -0
  173. package/dist/esm/foundation/templates/dashboardScreenTemplate.js +126 -0
  174. package/dist/esm/foundation/templates/dashboardScreenTemplate.js.map +1 -0
  175. package/dist/esm/foundation/templates/formScreenTemplate.d.ts +3 -0
  176. package/dist/esm/foundation/templates/formScreenTemplate.d.ts.map +1 -0
  177. package/dist/esm/foundation/templates/formScreenTemplate.js +69 -0
  178. package/dist/esm/foundation/templates/formScreenTemplate.js.map +1 -0
  179. package/dist/esm/foundation/templates/index.d.ts +11 -0
  180. package/dist/esm/foundation/templates/index.d.ts.map +1 -0
  181. package/dist/esm/foundation/templates/index.js +25 -0
  182. package/dist/esm/foundation/templates/index.js.map +1 -0
  183. package/dist/esm/foundation/templates/listScreenTemplate.d.ts +3 -0
  184. package/dist/esm/foundation/templates/listScreenTemplate.d.ts.map +1 -0
  185. package/dist/esm/foundation/templates/listScreenTemplate.js +122 -0
  186. package/dist/esm/foundation/templates/listScreenTemplate.js.map +1 -0
  187. package/dist/esm/foundation/templates/masterDetailScreenTemplate.d.ts +3 -0
  188. package/dist/esm/foundation/templates/masterDetailScreenTemplate.d.ts.map +1 -0
  189. package/dist/esm/foundation/templates/masterDetailScreenTemplate.js +77 -0
  190. package/dist/esm/foundation/templates/masterDetailScreenTemplate.js.map +1 -0
  191. package/dist/esm/foundation/templates/recordPageTemplate.d.ts +3 -0
  192. package/dist/esm/foundation/templates/recordPageTemplate.d.ts.map +1 -0
  193. package/dist/esm/foundation/templates/recordPageTemplate.js +135 -0
  194. package/dist/esm/foundation/templates/recordPageTemplate.js.map +1 -0
  195. package/dist/esm/foundation/templates/templateParts.d.ts +6 -0
  196. package/dist/esm/foundation/templates/templateParts.d.ts.map +1 -0
  197. package/dist/esm/foundation/templates/templateParts.js +33 -0
  198. package/dist/esm/foundation/templates/templateParts.js.map +1 -0
  199. package/dist/esm/foundation/templates/wizardScreenTemplate.d.ts +3 -0
  200. package/dist/esm/foundation/templates/wizardScreenTemplate.d.ts.map +1 -0
  201. package/dist/esm/foundation/templates/wizardScreenTemplate.js +93 -0
  202. package/dist/esm/foundation/templates/wizardScreenTemplate.js.map +1 -0
  203. package/dist/esm/foundation/templates/workspaceScreenTemplate.d.ts +3 -0
  204. package/dist/esm/foundation/templates/workspaceScreenTemplate.d.ts.map +1 -0
  205. package/dist/esm/foundation/templates/workspaceScreenTemplate.js +60 -0
  206. package/dist/esm/foundation/templates/workspaceScreenTemplate.js.map +1 -0
  207. package/dist/esm/foundation/urlState.d.ts +4 -0
  208. package/dist/esm/foundation/urlState.d.ts.map +1 -0
  209. package/dist/esm/foundation/urlState.js +53 -0
  210. package/dist/esm/foundation/urlState.js.map +1 -0
  211. package/dist/esm/foundation/useCompactWidth.d.ts +3 -0
  212. package/dist/esm/foundation/useCompactWidth.d.ts.map +1 -0
  213. package/dist/esm/foundation/useCompactWidth.js +20 -0
  214. package/dist/esm/foundation/useCompactWidth.js.map +1 -0
  215. package/dist/esm/foundation/wizardModel.d.ts +16 -0
  216. package/dist/esm/foundation/wizardModel.d.ts.map +1 -0
  217. package/dist/esm/foundation/wizardModel.js +43 -0
  218. package/dist/esm/foundation/wizardModel.js.map +1 -0
  219. package/dist/esm/gallery/GalleryScreenPreview.d.ts +13 -2
  220. package/dist/esm/gallery/GalleryScreenPreview.d.ts.map +1 -1
  221. package/dist/esm/gallery/GalleryScreenPreview.js +75 -5
  222. package/dist/esm/gallery/GalleryScreenPreview.js.map +1 -1
  223. package/dist/esm/gallery/applicationChrome.d.ts.map +1 -1
  224. package/dist/esm/gallery/applicationChrome.js +18 -1
  225. package/dist/esm/gallery/applicationChrome.js.map +1 -1
  226. package/dist/esm/gallery/composeScreen.d.ts.map +1 -1
  227. package/dist/esm/gallery/composeScreen.js +5 -3
  228. package/dist/esm/gallery/composeScreen.js.map +1 -1
  229. package/dist/esm/gallery/screens.d.ts.map +1 -1
  230. package/dist/esm/gallery/screens.js +83 -2
  231. package/dist/esm/gallery/screens.js.map +1 -1
  232. package/dist/esm/index.js +27 -1
  233. package/dist/esm/index.js.map +1 -1
  234. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  235. package/foundation/BulkBar.tsx +38 -0
  236. package/foundation/DataList.tsx +208 -0
  237. package/foundation/FormScreenBody.tsx +196 -0
  238. package/foundation/FoundationStates.tsx +1 -1
  239. package/foundation/GlobalSearch.tsx +33 -0
  240. package/foundation/KanbanBoard.tsx +97 -0
  241. package/foundation/NotificationsButton.tsx +28 -0
  242. package/foundation/SubNavigation.tsx +49 -0
  243. package/foundation/TabSet.tsx +65 -0
  244. package/foundation/WizardProgress.tsx +109 -0
  245. package/foundation/boardModel.ts +64 -0
  246. package/foundation/formModel.ts +146 -0
  247. package/foundation/foundationComponentMetadata.ts +9 -0
  248. package/foundation/foundationDescriptors.ts +195 -0
  249. package/foundation/foundationSamples.ts +56 -0
  250. package/foundation/foundationStrings.ts +72 -0
  251. package/foundation/index.ts +17 -0
  252. package/foundation/listModel.ts +190 -0
  253. package/foundation/tabModel.ts +41 -0
  254. package/foundation/templates/boardScreenTemplate.ts +28 -0
  255. package/foundation/templates/dashboardScreenTemplate.ts +37 -0
  256. package/foundation/templates/formScreenTemplate.ts +28 -0
  257. package/foundation/templates/index.ts +26 -0
  258. package/foundation/templates/listScreenTemplate.ts +37 -0
  259. package/foundation/templates/masterDetailScreenTemplate.ts +28 -0
  260. package/foundation/templates/recordPageTemplate.ts +36 -0
  261. package/foundation/templates/templateParts.ts +30 -0
  262. package/foundation/templates/wizardScreenTemplate.ts +33 -0
  263. package/foundation/templates/workspaceScreenTemplate.ts +27 -0
  264. package/foundation/urlState.ts +52 -0
  265. package/foundation/useCompactWidth.ts +23 -0
  266. package/foundation/wizardModel.ts +54 -0
  267. package/gallery/GalleryScreenPreview.tsx +64 -5
  268. package/gallery/applicationChrome.ts +6 -1
  269. package/gallery/composeScreen.ts +4 -2
  270. package/gallery/screens.ts +16 -1
  271. package/package.json +10 -8
  272. package/sampleData/foundation-en.json +512 -0
  273. package/shell/layout.css +513 -0
  274. package/thumbnails/BoardScreen.svg +15 -0
  275. package/thumbnails/DashboardScreen.svg +18 -0
  276. package/thumbnails/FormScreen.svg +14 -0
  277. package/thumbnails/ListScreen.svg +16 -0
  278. package/thumbnails/MasterDetailScreen.svg +22 -0
  279. package/thumbnails/RecordPage.svg +17 -0
  280. package/thumbnails/WizardScreen.svg +16 -0
  281. package/thumbnails/WorkspaceScreen.svg +12 -0
@@ -6,6 +6,8 @@ var ComponentName = require('../ComponentName.js');
6
6
  var packageName = require('../packageName.js');
7
7
  var activityModel = require('./activityModel.js');
8
8
  var approvalModel = require('./approvalModel.js');
9
+ var listModel = require('./listModel.js');
10
+ var formModel = require('./formModel.js');
9
11
  var chartGeometry = require('./chartGeometry.js');
10
12
  var ComponentState = require('./ComponentState.js');
11
13
  var filterModel = require('./filterModel.js');
@@ -621,6 +623,404 @@ const formats = {
621
623
  scene_react.valueOutputProperty(scene_model.PropertyValueType.Json, 'The grants as the user has changed them: rows of role and permission, published as they change.'),
622
624
  ...standardStateProperties
623
625
  ]
626
+ },
627
+ {
628
+ component: key(ComponentName.ComponentName.DataList),
629
+ displayName: 'Data list',
630
+ description: 'The records of a collection as a table, as cards or grouped with subtotals, with search, sort, paging and selection that live in the address. On a phone a table becomes cards.',
631
+ properties: [
632
+ {
633
+ path: 'rows',
634
+ label: 'Rows',
635
+ group: 'Data',
636
+ valueType: scene_model.PropertyValueType.Json,
637
+ acceptedBindingKinds: bindable,
638
+ default: [],
639
+ description: 'The records; bind to a query result.'
640
+ },
641
+ {
642
+ ...list('columns', 'Columns', 'Data', 'Column', [
643
+ text('field', 'Field', 'Data', 'The result field the column shows.', {
644
+ constraints: {
645
+ required: true
646
+ },
647
+ editorKind: scene_model.PropertyEditorKind.Field
648
+ }),
649
+ text('header', 'Header', 'Content'),
650
+ choice('kind', 'Kind', 'Appearance', {
651
+ [listModel.CellKind.Text]: 'Text',
652
+ [listModel.CellKind.Number]: 'Number',
653
+ [listModel.CellKind.Currency]: 'Currency',
654
+ [listModel.CellKind.Date]: 'Date',
655
+ [listModel.CellKind.Status]: 'Status'
656
+ }, listModel.CellKind.Text),
657
+ flag('sortable', 'Sortable', 'Behavior', undefined, {
658
+ default: true
659
+ }),
660
+ text('currency', 'Currency', 'Appearance'),
661
+ {
662
+ path: 'tones',
663
+ label: 'Status tones',
664
+ group: 'Appearance',
665
+ valueType: scene_model.PropertyValueType.Object,
666
+ editorKind: scene_model.PropertyEditorKind.StringMap,
667
+ description: 'The tone (success, warning, danger, info, neutral) of each status value.'
668
+ }
669
+ ], 'What is shown.'),
670
+ acceptedBindingKinds: bindable
671
+ },
672
+ choice('variant', 'Layout', 'Appearance', {
673
+ [listModel.ListVariant.Table]: 'Table',
674
+ [listModel.ListVariant.Cards]: 'Cards',
675
+ [listModel.ListVariant.Grouped]: 'Grouped'
676
+ }, listModel.ListVariant.Table),
677
+ flag('collapse', 'Cards on a phone', 'Appearance', 'A table becomes cards on a phone-wide screen; nothing is hidden.', {
678
+ default: true
679
+ }),
680
+ text('idField', 'Id field', 'Data', undefined, {
681
+ default: 'id',
682
+ editorKind: scene_model.PropertyEditorKind.Field
683
+ }),
684
+ text('titleField', 'Title field', 'Data', 'The field that names a row for assistive technology and a card.', {
685
+ editorKind: scene_model.PropertyEditorKind.Field
686
+ }),
687
+ text('groupBy', 'Group by', 'Data', undefined, {
688
+ editorKind: scene_model.PropertyEditorKind.Field
689
+ }),
690
+ text('totalField', 'Subtotal field', 'Data', undefined, {
691
+ editorKind: scene_model.PropertyEditorKind.Field
692
+ }),
693
+ number('pageSize', 'Rows per page', 'Behavior', '0 shows every row.', {
694
+ default: 0,
695
+ constraints: {
696
+ minimum: 0,
697
+ integer: true
698
+ }
699
+ }),
700
+ choice('selectionMode', 'Selection', 'Behavior', {
701
+ none: 'None',
702
+ single: 'One row',
703
+ multiple: 'Many rows'
704
+ }, 'none'),
705
+ {
706
+ path: 'rowActions',
707
+ label: 'Row actions',
708
+ group: 'Behavior',
709
+ valueType: scene_model.PropertyValueType.Json,
710
+ editorKind: scene_model.PropertyEditorKind.StringList,
711
+ default: [],
712
+ description: 'The actions in each row\'s menu; each is the action output.'
713
+ },
714
+ rule('actionPermission', 'Row action permission', 'Whether row actions work, refuse with a reason or are not shown.'),
715
+ text('search', 'Search', 'Data', 'The search text; bind to the search box output.', {
716
+ acceptedBindingKinds: bindable
717
+ }),
718
+ {
719
+ path: 'filter',
720
+ label: 'Filter',
721
+ group: 'Data',
722
+ valueType: scene_model.PropertyValueType.Object,
723
+ acceptedBindingKinds: bindable,
724
+ description: 'The filter builder\'s value.'
725
+ },
726
+ text('sort', 'Sort', 'Data', 'The sorted field; a leading - is descending.'),
727
+ text('urlKey', 'Address prefix', 'Behavior', 'Keeps search, sort, page and selection in the address under this prefix.'),
728
+ scene_react.valueOutputProperty(scene_model.PropertyValueType.Json, 'The selected row id (single) or ids (many).'),
729
+ {
730
+ path: 'action',
731
+ label: 'Requested action',
732
+ group: 'Outputs',
733
+ valueType: scene_model.PropertyValueType.Json,
734
+ readOnly: true,
735
+ output: true,
736
+ description: 'The row action the user chose, with its row id.'
737
+ },
738
+ ...standardStateProperties.filter((property)=>property.path !== 'actionPermission')
739
+ ]
740
+ },
741
+ {
742
+ component: key(ComponentName.ComponentName.TabSet),
743
+ displayName: 'Tab set',
744
+ description: 'Tabs with a panel for each: the content of tab `overview` is the slot `overview`. The active tab is kept in the address.',
745
+ properties: [
746
+ {
747
+ ...list('tabs', 'Tabs', 'Data', 'Tab', [
748
+ text('id', 'Id', 'Data', 'Also the name of the slot that holds the tab\'s content.', {
749
+ constraints: {
750
+ required: true
751
+ }
752
+ }),
753
+ text('label', 'Label', 'Content'),
754
+ text('badge', 'Count', 'Content'),
755
+ flag('disabled', 'Disabled', 'Behavior')
756
+ ], 'The tabs a record page offers.'),
757
+ acceptedBindingKinds: bindable
758
+ },
759
+ text('activeTab', 'Active tab', 'Behavior'),
760
+ text('urlKey', 'Address parameter', 'Behavior', 'Keeps the active tab in the address under this name.'),
761
+ text('label', 'Label', 'Accessibility'),
762
+ scene_react.valueOutputProperty(scene_model.PropertyValueType.String, 'The id of the active tab.'),
763
+ ...standardStateProperties.filter((property)=>property.path !== 'label')
764
+ ]
765
+ },
766
+ {
767
+ component: key(ComponentName.ComponentName.SubNavigation),
768
+ displayName: 'Sub-navigation',
769
+ description: 'A module\'s own sections as a tab bar or a left rail. Choosing one changes only the section.',
770
+ properties: [
771
+ {
772
+ ...list('items', 'Sections', 'Data', 'Section', [
773
+ text('id', 'Id', 'Data', undefined, {
774
+ constraints: {
775
+ required: true
776
+ }
777
+ }),
778
+ text('label', 'Label', 'Content'),
779
+ text('badge', 'Count', 'Content'),
780
+ flag('disabled', 'Disabled', 'Behavior')
781
+ ], 'The sections.'),
782
+ acceptedBindingKinds: bindable
783
+ },
784
+ choice('orientation', 'Orientation', 'Appearance', {
785
+ horizontal: 'Tabs',
786
+ vertical: 'Left rail'
787
+ }, 'horizontal'),
788
+ text('activeItem', 'Active section', 'Behavior'),
789
+ text('urlKey', 'Address parameter', 'Behavior'),
790
+ text('label', 'Label', 'Accessibility'),
791
+ scene_react.valueOutputProperty(scene_model.PropertyValueType.String, 'The id of the active section.'),
792
+ ...standardStateProperties.filter((property)=>property.path !== 'label')
793
+ ]
794
+ },
795
+ {
796
+ component: key(ComponentName.ComponentName.BulkBar),
797
+ displayName: 'Bulk bar',
798
+ description: 'Appears when records are selected, says how many, offers the bulk actions and clears the selection.',
799
+ properties: [
800
+ {
801
+ path: 'selection',
802
+ label: 'Selection',
803
+ group: 'Data',
804
+ valueType: scene_model.PropertyValueType.Json,
805
+ acceptedBindingKinds: bindable,
806
+ description: 'The selected records or their count; bind to the list\'s value.'
807
+ },
808
+ {
809
+ path: 'actions',
810
+ label: 'Actions',
811
+ group: 'Behavior',
812
+ valueType: scene_model.PropertyValueType.Json,
813
+ editorKind: scene_model.PropertyEditorKind.StringList,
814
+ default: []
815
+ },
816
+ rule('actionPermission', 'Action permission', 'Whether the bulk actions work, refuse with a reason or are not shown.'),
817
+ text('locale', 'Locale', 'Content'),
818
+ {
819
+ path: 'strings',
820
+ label: 'Text overrides',
821
+ group: 'Content',
822
+ valueType: scene_model.PropertyValueType.Object,
823
+ editorKind: scene_model.PropertyEditorKind.StringMap
824
+ }
825
+ ]
826
+ },
827
+ {
828
+ component: key(ComponentName.ComponentName.GlobalSearch),
829
+ displayName: 'Search',
830
+ description: 'A search box for the topbar or a list\'s toolbar. The text is the value output and can live in the address.',
831
+ properties: [
832
+ text('text', 'Initial text', 'Data'),
833
+ text('placeholder', 'Placeholder', 'Content'),
834
+ text('label', 'Label', 'Accessibility'),
835
+ text('urlKey', 'Address parameter', 'Behavior'),
836
+ scene_react.valueOutputProperty(scene_model.PropertyValueType.String, 'The search text.'),
837
+ {
838
+ path: 'strings',
839
+ label: 'Text overrides',
840
+ group: 'Content',
841
+ valueType: scene_model.PropertyValueType.Object,
842
+ editorKind: scene_model.PropertyEditorKind.StringMap
843
+ }
844
+ ]
845
+ },
846
+ {
847
+ component: key(ComponentName.ComponentName.NotificationsButton),
848
+ displayName: 'Notifications button',
849
+ description: 'The bell of the topbar with the unread count, said in words as well as in the badge.',
850
+ properties: [
851
+ number('count', 'Unread', 'Data', 'Bind to a query result.', {
852
+ constraints: {
853
+ minimum: 0,
854
+ integer: true
855
+ }
856
+ }),
857
+ text('locale', 'Locale', 'Content'),
858
+ {
859
+ path: 'strings',
860
+ label: 'Text overrides',
861
+ group: 'Content',
862
+ valueType: scene_model.PropertyValueType.Object,
863
+ editorKind: scene_model.PropertyEditorKind.StringMap
864
+ }
865
+ ]
866
+ },
867
+ {
868
+ component: key(ComponentName.ComponentName.KanbanBoard),
869
+ displayName: 'Kanban board',
870
+ description: 'Columns mapped to a status, with cards that move by dragging or by their own Move-to menu. The new arrangement is the value output.',
871
+ properties: [
872
+ {
873
+ ...list('columns', 'Columns', 'Data', 'Column', [
874
+ text('id', 'Id', 'Data', 'The status or stage value.', {
875
+ constraints: {
876
+ required: true
877
+ }
878
+ }),
879
+ text('label', 'Label', 'Content'),
880
+ number('limit', 'Limit', 'Behavior', 'The most cards the stage should hold; 0 is no limit.', {
881
+ constraints: {
882
+ minimum: 0,
883
+ integer: true
884
+ }
885
+ })
886
+ ], 'The stages.'),
887
+ acceptedBindingKinds: bindable
888
+ },
889
+ {
890
+ ...list('cards', 'Cards', 'Data', 'Card', [
891
+ text('id', 'Id', 'Data', undefined, {
892
+ constraints: {
893
+ required: true
894
+ }
895
+ }),
896
+ text('title', 'Title', 'Data', undefined, {
897
+ constraints: {
898
+ required: true
899
+ }
900
+ }),
901
+ text('column', 'Column', 'Data', 'The id of the column the card is in.'),
902
+ text('assignee', 'Assignee', 'Data'),
903
+ {
904
+ path: 'badges',
905
+ label: 'Badges',
906
+ group: 'Data',
907
+ valueType: scene_model.PropertyValueType.Json,
908
+ editorKind: scene_model.PropertyEditorKind.StringList,
909
+ default: []
910
+ }
911
+ ], 'The cards, from a query.'),
912
+ acceptedBindingKinds: bindable
913
+ },
914
+ rule('editPermission', 'Move permission', 'Enabled lets cards move; otherwise the board is read-only.'),
915
+ scene_react.valueOutputProperty(scene_model.PropertyValueType.Json, 'Each card\'s id and column, published as cards move.'),
916
+ ...standardStateProperties
917
+ ]
918
+ },
919
+ {
920
+ component: key(ComponentName.ComponentName.WizardProgress),
921
+ displayName: 'Wizard',
922
+ description: 'A linear wizard: the steps, back/next/finish and the draft save. The content of step `details` is the slot `details`; the last step is the review.',
923
+ properties: [
924
+ {
925
+ ...list('steps', 'Steps', 'Data', 'Step', [
926
+ text('id', 'Id', 'Data', 'Also the name of the slot that holds the step\'s content.', {
927
+ constraints: {
928
+ required: true
929
+ }
930
+ }),
931
+ text('label', 'Label', 'Content'),
932
+ flag('valid', 'Valid', 'Data', 'Whether the step\'s fields are valid; an invalid step blocks Next.', {
933
+ default: true,
934
+ acceptedBindingKinds: bindable
935
+ })
936
+ ], 'The steps in order.'),
937
+ acceptedBindingKinds: bindable
938
+ },
939
+ text('currentStep', 'Current step', 'Behavior'),
940
+ text('urlKey', 'Address parameter', 'Behavior', 'Keeps the current step in the address so a refresh resumes.'),
941
+ scene_react.valueOutputProperty(scene_model.PropertyValueType.String, 'The id of the current step.'),
942
+ ...standardStateProperties
943
+ ]
944
+ },
945
+ {
946
+ component: key(ComponentName.ComponentName.FormScreenBody),
947
+ displayName: 'Form',
948
+ description: 'Titled sections of fields in a one-to-three column grid, with inline validation, a save bar, the unsaved-changes guard and four modes.',
949
+ properties: [
950
+ {
951
+ ...list('sections', 'Sections', 'Data', 'Section', [
952
+ text('id', 'Id', 'Data'),
953
+ text('title', 'Title', 'Content'),
954
+ number('columns', 'Columns', 'Appearance', undefined, {
955
+ default: 1,
956
+ constraints: {
957
+ minimum: 1,
958
+ maximum: 3,
959
+ integer: true
960
+ }
961
+ }),
962
+ list('fields', 'Fields', 'Data', 'Field', [
963
+ text('name', 'Name', 'Data', undefined, {
964
+ constraints: {
965
+ required: true
966
+ },
967
+ editorKind: scene_model.PropertyEditorKind.Field
968
+ }),
969
+ text('label', 'Label', 'Content'),
970
+ choice('type', 'Type', 'Data', Object.fromEntries(Object.values(formModel.FormFieldType).map((type)=>[
971
+ type,
972
+ type
973
+ ])), formModel.FormFieldType.Text),
974
+ flag('required', 'Required', 'Data'),
975
+ {
976
+ path: 'options',
977
+ label: 'Options',
978
+ group: 'Data',
979
+ valueType: scene_model.PropertyValueType.Json,
980
+ editorKind: scene_model.PropertyEditorKind.StringList,
981
+ default: []
982
+ },
983
+ number('span', 'Columns spanned', 'Appearance', undefined, {
984
+ default: 1,
985
+ constraints: {
986
+ minimum: 1,
987
+ maximum: 3,
988
+ integer: true
989
+ }
990
+ }),
991
+ text('placeholder', 'Placeholder', 'Content'),
992
+ text('help', 'Help text', 'Content')
993
+ ])
994
+ ], 'The groups of fields.'),
995
+ acceptedBindingKinds: bindable
996
+ },
997
+ {
998
+ path: 'values',
999
+ label: 'Values',
1000
+ group: 'Data',
1001
+ valueType: scene_model.PropertyValueType.Object,
1002
+ acceptedBindingKinds: bindable,
1003
+ description: 'The record being edited; empty when creating.'
1004
+ },
1005
+ {
1006
+ path: 'errors',
1007
+ label: 'Server errors',
1008
+ group: 'Data',
1009
+ valueType: scene_model.PropertyValueType.Json,
1010
+ acceptedBindingKinds: bindable,
1011
+ description: 'Field errors from the server, as { field: message }; one for an unknown field is shown as a general error.'
1012
+ },
1013
+ choice('mode', 'Mode', 'Behavior', {
1014
+ [formModel.FormMode.Create]: 'Create',
1015
+ [formModel.FormMode.Edit]: 'Edit',
1016
+ [formModel.FormMode.ReadOnly]: 'Read-only',
1017
+ [formModel.FormMode.Settings]: 'Settings (a save for each section)'
1018
+ }, formModel.FormMode.Create),
1019
+ rule('editPermission', 'Edit permission', 'Enabled lets the user change fields; otherwise the form is read-only.'),
1020
+ rule('savePermission', 'Save permission', 'Whether Save works, refuses with a reason or is not shown.'),
1021
+ scene_react.valueOutputProperty(scene_model.PropertyValueType.Object, 'The values as the user has edited them.'),
1022
+ ...standardStateProperties
1023
+ ]
624
1024
  }
625
1025
  ];
626
1026