@cratis/scene.blueprint.default 4.38.0 → 4.40.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 (167) hide show
  1. package/ComponentName.ts +27 -0
  2. package/defaultBlueprintComponents.ts +10 -1
  3. package/dist/cjs/ComponentName.js +9 -0
  4. package/dist/cjs/ComponentName.js.map +1 -1
  5. package/dist/cjs/defaultBlueprintComponents.js +19 -1
  6. package/dist/cjs/defaultBlueprintComponents.js.map +1 -1
  7. package/dist/cjs/foundation/BulkBar.js +62 -0
  8. package/dist/cjs/foundation/BulkBar.js.map +1 -0
  9. package/dist/cjs/foundation/DataList.js +436 -0
  10. package/dist/cjs/foundation/DataList.js.map +1 -0
  11. package/dist/cjs/foundation/FormScreenBody.js +447 -0
  12. package/dist/cjs/foundation/FormScreenBody.js.map +1 -0
  13. package/dist/cjs/foundation/FoundationStates.js +2 -1
  14. package/dist/cjs/foundation/FoundationStates.js.map +1 -1
  15. package/dist/cjs/foundation/GlobalSearch.js +54 -0
  16. package/dist/cjs/foundation/GlobalSearch.js.map +1 -0
  17. package/dist/cjs/foundation/KanbanBoard.js +222 -0
  18. package/dist/cjs/foundation/KanbanBoard.js.map +1 -0
  19. package/dist/cjs/foundation/NotificationsButton.js +45 -0
  20. package/dist/cjs/foundation/NotificationsButton.js.map +1 -0
  21. package/dist/cjs/foundation/SubNavigation.js +72 -0
  22. package/dist/cjs/foundation/SubNavigation.js.map +1 -0
  23. package/dist/cjs/foundation/TabSet.js +101 -0
  24. package/dist/cjs/foundation/TabSet.js.map +1 -0
  25. package/dist/cjs/foundation/WizardProgress.js +185 -0
  26. package/dist/cjs/foundation/WizardProgress.js.map +1 -0
  27. package/dist/cjs/foundation/boardModel.js +67 -0
  28. package/dist/cjs/foundation/boardModel.js.map +1 -0
  29. package/dist/cjs/foundation/formModel.js +158 -0
  30. package/dist/cjs/foundation/formModel.js.map +1 -0
  31. package/dist/cjs/foundation/foundationComponentMetadata.js +54 -0
  32. package/dist/cjs/foundation/foundationComponentMetadata.js.map +1 -1
  33. package/dist/cjs/foundation/foundationDescriptors.js +400 -0
  34. package/dist/cjs/foundation/foundationDescriptors.js.map +1 -1
  35. package/dist/cjs/foundation/foundationSamples.js +303 -0
  36. package/dist/cjs/foundation/foundationSamples.js.map +1 -1
  37. package/dist/cjs/foundation/foundationStrings.js +72 -0
  38. package/dist/cjs/foundation/foundationStrings.js.map +1 -1
  39. package/dist/cjs/foundation/listModel.js +200 -0
  40. package/dist/cjs/foundation/listModel.js.map +1 -0
  41. package/dist/cjs/foundation/tabModel.js +41 -0
  42. package/dist/cjs/foundation/tabModel.js.map +1 -0
  43. package/dist/cjs/foundation/urlState.js +57 -0
  44. package/dist/cjs/foundation/urlState.js.map +1 -0
  45. package/dist/cjs/foundation/useCompactWidth.js +23 -0
  46. package/dist/cjs/foundation/useCompactWidth.js.map +1 -0
  47. package/dist/cjs/foundation/wizardModel.js +50 -0
  48. package/dist/cjs/foundation/wizardModel.js.map +1 -0
  49. package/dist/cjs/index.js +71 -0
  50. package/dist/cjs/index.js.map +1 -1
  51. package/dist/esm/ComponentName.d.ts +10 -1
  52. package/dist/esm/ComponentName.d.ts.map +1 -1
  53. package/dist/esm/ComponentName.js +9 -0
  54. package/dist/esm/ComponentName.js.map +1 -1
  55. package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -1
  56. package/dist/esm/defaultBlueprintComponents.js +19 -1
  57. package/dist/esm/defaultBlueprintComponents.js.map +1 -1
  58. package/dist/esm/foundation/BulkBar.d.ts +4 -0
  59. package/dist/esm/foundation/BulkBar.d.ts.map +1 -0
  60. package/dist/esm/foundation/BulkBar.js +59 -0
  61. package/dist/esm/foundation/BulkBar.js.map +1 -0
  62. package/dist/esm/foundation/DataList.d.ts +3 -0
  63. package/dist/esm/foundation/DataList.d.ts.map +1 -0
  64. package/dist/esm/foundation/DataList.js +434 -0
  65. package/dist/esm/foundation/DataList.js.map +1 -0
  66. package/dist/esm/foundation/FormScreenBody.d.ts +3 -0
  67. package/dist/esm/foundation/FormScreenBody.d.ts.map +1 -0
  68. package/dist/esm/foundation/FormScreenBody.js +445 -0
  69. package/dist/esm/foundation/FormScreenBody.js.map +1 -0
  70. package/dist/esm/foundation/FoundationStates.js +2 -1
  71. package/dist/esm/foundation/FoundationStates.js.map +1 -1
  72. package/dist/esm/foundation/GlobalSearch.d.ts +3 -0
  73. package/dist/esm/foundation/GlobalSearch.d.ts.map +1 -0
  74. package/dist/esm/foundation/GlobalSearch.js +52 -0
  75. package/dist/esm/foundation/GlobalSearch.js.map +1 -0
  76. package/dist/esm/foundation/KanbanBoard.d.ts +3 -0
  77. package/dist/esm/foundation/KanbanBoard.d.ts.map +1 -0
  78. package/dist/esm/foundation/KanbanBoard.js +220 -0
  79. package/dist/esm/foundation/KanbanBoard.js.map +1 -0
  80. package/dist/esm/foundation/NotificationsButton.d.ts +3 -0
  81. package/dist/esm/foundation/NotificationsButton.d.ts.map +1 -0
  82. package/dist/esm/foundation/NotificationsButton.js +43 -0
  83. package/dist/esm/foundation/NotificationsButton.js.map +1 -0
  84. package/dist/esm/foundation/SubNavigation.d.ts +3 -0
  85. package/dist/esm/foundation/SubNavigation.d.ts.map +1 -0
  86. package/dist/esm/foundation/SubNavigation.js +70 -0
  87. package/dist/esm/foundation/SubNavigation.js.map +1 -0
  88. package/dist/esm/foundation/TabSet.d.ts +3 -0
  89. package/dist/esm/foundation/TabSet.d.ts.map +1 -0
  90. package/dist/esm/foundation/TabSet.js +99 -0
  91. package/dist/esm/foundation/TabSet.js.map +1 -0
  92. package/dist/esm/foundation/WizardProgress.d.ts +3 -0
  93. package/dist/esm/foundation/WizardProgress.d.ts.map +1 -0
  94. package/dist/esm/foundation/WizardProgress.js +183 -0
  95. package/dist/esm/foundation/WizardProgress.js.map +1 -0
  96. package/dist/esm/foundation/boardModel.d.ts +22 -0
  97. package/dist/esm/foundation/boardModel.d.ts.map +1 -0
  98. package/dist/esm/foundation/boardModel.js +61 -0
  99. package/dist/esm/foundation/boardModel.js.map +1 -0
  100. package/dist/esm/foundation/formModel.d.ts +48 -0
  101. package/dist/esm/foundation/formModel.d.ts.map +1 -0
  102. package/dist/esm/foundation/formModel.js +147 -0
  103. package/dist/esm/foundation/formModel.js.map +1 -0
  104. package/dist/esm/foundation/foundationComponentMetadata.d.ts.map +1 -1
  105. package/dist/esm/foundation/foundationComponentMetadata.js +54 -0
  106. package/dist/esm/foundation/foundationComponentMetadata.js.map +1 -1
  107. package/dist/esm/foundation/foundationDescriptors.d.ts.map +1 -1
  108. package/dist/esm/foundation/foundationDescriptors.js +400 -0
  109. package/dist/esm/foundation/foundationDescriptors.js.map +1 -1
  110. package/dist/esm/foundation/foundationSamples.d.ts.map +1 -1
  111. package/dist/esm/foundation/foundationSamples.js +303 -0
  112. package/dist/esm/foundation/foundationSamples.js.map +1 -1
  113. package/dist/esm/foundation/foundationStrings.d.ts +72 -0
  114. package/dist/esm/foundation/foundationStrings.d.ts.map +1 -1
  115. package/dist/esm/foundation/foundationStrings.js +72 -0
  116. package/dist/esm/foundation/foundationStrings.js.map +1 -1
  117. package/dist/esm/foundation/index.d.ts +16 -0
  118. package/dist/esm/foundation/index.d.ts.map +1 -1
  119. package/dist/esm/foundation/index.js +16 -0
  120. package/dist/esm/foundation/index.js.map +1 -1
  121. package/dist/esm/foundation/listModel.d.ts +49 -0
  122. package/dist/esm/foundation/listModel.d.ts.map +1 -0
  123. package/dist/esm/foundation/listModel.js +183 -0
  124. package/dist/esm/foundation/listModel.js.map +1 -0
  125. package/dist/esm/foundation/tabModel.d.ts +10 -0
  126. package/dist/esm/foundation/tabModel.d.ts.map +1 -0
  127. package/dist/esm/foundation/tabModel.js +37 -0
  128. package/dist/esm/foundation/tabModel.js.map +1 -0
  129. package/dist/esm/foundation/urlState.d.ts +4 -0
  130. package/dist/esm/foundation/urlState.d.ts.map +1 -0
  131. package/dist/esm/foundation/urlState.js +53 -0
  132. package/dist/esm/foundation/urlState.js.map +1 -0
  133. package/dist/esm/foundation/useCompactWidth.d.ts +3 -0
  134. package/dist/esm/foundation/useCompactWidth.d.ts.map +1 -0
  135. package/dist/esm/foundation/useCompactWidth.js +20 -0
  136. package/dist/esm/foundation/useCompactWidth.js.map +1 -0
  137. package/dist/esm/foundation/wizardModel.d.ts +16 -0
  138. package/dist/esm/foundation/wizardModel.d.ts.map +1 -0
  139. package/dist/esm/foundation/wizardModel.js +43 -0
  140. package/dist/esm/foundation/wizardModel.js.map +1 -0
  141. package/dist/esm/index.js +16 -0
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  144. package/foundation/BulkBar.tsx +38 -0
  145. package/foundation/DataList.tsx +208 -0
  146. package/foundation/FormScreenBody.tsx +196 -0
  147. package/foundation/FoundationStates.tsx +1 -1
  148. package/foundation/GlobalSearch.tsx +33 -0
  149. package/foundation/KanbanBoard.tsx +97 -0
  150. package/foundation/NotificationsButton.tsx +28 -0
  151. package/foundation/SubNavigation.tsx +49 -0
  152. package/foundation/TabSet.tsx +65 -0
  153. package/foundation/WizardProgress.tsx +109 -0
  154. package/foundation/boardModel.ts +64 -0
  155. package/foundation/formModel.ts +146 -0
  156. package/foundation/foundationComponentMetadata.ts +9 -0
  157. package/foundation/foundationDescriptors.ts +195 -0
  158. package/foundation/foundationSamples.ts +56 -0
  159. package/foundation/foundationStrings.ts +72 -0
  160. package/foundation/index.ts +16 -0
  161. package/foundation/listModel.ts +190 -0
  162. package/foundation/tabModel.ts +41 -0
  163. package/foundation/urlState.ts +52 -0
  164. package/foundation/useCompactWidth.ts +23 -0
  165. package/foundation/wizardModel.ts +54 -0
  166. package/package.json +8 -8
  167. package/shell/layout.css +513 -0
@@ -1 +1 @@
1
- {"version":3,"file":"foundationSamples.js","sources":["../../../foundation/foundationSamples.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 { ExternalComponent } from '@cratis/scene.model';\nimport { componentRegistryKey } from '@cratis/scene.react';\nimport { ComponentName } from '../ComponentName';\nimport { defaultBlueprintName } from '../packageName';\nimport { ComponentState } from './ComponentState';\n\n/**\n * What a story or a specification feeds each foundation component to see it populated.\n *\n * These are design-time and test-time values, never part of what a component is: a component declares the shape of its data\n * and a screen binds it to a query (spec SD1). The domain blueprints supply real preview data as sample-data packs; this is\n * only enough to draw each component in each state.\n */\nexport interface FoundationSample {\n /** The properties that make the component populated. */\n properties: Record<string, unknown>;\n\n /** Text that only appears when the component shows its data, so a specification can prove the no-permission state shows none of it. */\n data: string[];\n\n /** Whether the component shows data and so owns the five standard states; chips and the empty state themselves do not. */\n stateful: boolean;\n}\n\nexport const foundationSamples: Record<string, FoundationSample> = {\n [ComponentName.EmptyState]: { properties: { headline: 'No invoices yet', hint: 'Invoices you create appear here.', icon: 'file', actionLabel: 'New invoice' }, data: [], stateful: false },\n [ComponentName.StatCard]: { properties: { label: 'Open pipeline', value: 1234567, format: 'currency', currency: 'USD', change: 12.5, comparison: 'last month', locale: 'en-US' }, data: ['$1,234,567'], stateful: true },\n [ComponentName.TrendChip]: { properties: { change: -3.2, goodDirection: 'down', comparison: 'last week', locale: 'en-US' }, data: [], stateful: false },\n [ComponentName.StatusChip]: { properties: { status: 'Awaiting approval', tone: 'warning' }, data: [], stateful: false },\n [ComponentName.ChartWrapper]: {\n properties: { title: 'Revenue by quarter', kind: 'line', categories: ['Q1', 'Q2', 'Q3', 'Q4'], series: [{ name: 'Revenue', values: [120, 180, 150, 240] }, { name: 'Target', values: [100, 150, 200, 220] }], locale: 'en-US' },\n data: ['Revenue by quarter'], stateful: true,\n },\n [ComponentName.FilterBuilder]: {\n properties: {\n fields: [{ name: 'owner', label: 'Owner', type: 'text' }, { name: 'status', label: 'Status', type: 'select', options: ['Open', 'Won', 'Lost'] }, { name: 'value', label: 'Value', type: 'number' }],\n filter: { operator: 'and', conditions: [{ field: 'status', operator: 'is', value: 'Open' }, { field: 'owner', operator: 'contains', value: 'Ada' }], groups: [] },\n },\n data: ['2 active filters'], stateful: true,\n },\n [ComponentName.ColumnChooser]: {\n properties: { columns: [{ id: 'name', label: 'Name', locked: true }, { id: 'owner', label: 'Owner' }, { id: 'status', label: 'Status', visible: false }] },\n data: ['3 shown'], stateful: true,\n },\n [ComponentName.SavedViewsMenu]: {\n properties: { views: [{ id: 'all', label: 'All leads' }, { id: 'mine', label: 'Mine' }, { id: 'overdue', label: 'Overdue' }], activeView: 'mine' },\n data: ['Mine'], stateful: true,\n },\n [ComponentName.ChecklistSection]: {\n properties: {\n today: '2026-03-10', locale: 'en-US',\n sections: [\n { title: 'Before day one', items: [{ id: 't1', label: 'Send the contract', owner: 'Grace', due: '2026-03-01', done: true }, { id: 't2', label: 'Order a laptop', owner: 'Linus', due: '2026-03-05' }] },\n { title: 'First week', items: [{ id: 't3', label: 'Security training', owner: 'Ada', due: '2026-03-20' }] },\n ],\n },\n data: ['Send the contract', '1 of 2 complete'], stateful: true,\n },\n [ComponentName.ActivityFeed]: {\n properties: {\n locale: 'en-US', timeZone: 'UTC',\n entries: [\n { id: 'a1', actor: 'Ada Lovelace', action: 'commented', kind: 'comment', at: '2026-03-10T09:30:00Z', body: 'Sent the revised quote.' },\n { id: 'a2', actor: 'Grace Hopper', action: 'changed the owner to Linus', kind: 'change', at: '2026-03-09T16:00:00Z' },\n { id: 'a3', actor: 'System', action: 'marked the deal as qualified', kind: 'status', at: '2026-03-09T08:00:00Z' },\n ],\n },\n data: ['Sent the revised quote.'], stateful: true,\n },\n [ComponentName.AvatarStack]: {\n properties: { people: [{ name: 'Ada Lovelace' }, { name: 'Grace Hopper' }, { name: 'Linus Torvalds' }, { name: 'Margaret Hamilton' }, { name: 'Alan Turing' }, { name: 'Barbara Liskov' }], max: 4 },\n data: ['+2'], stateful: true,\n },\n [ComponentName.FileUploader]: {\n properties: { accept: '.pdf, image/*', maxSizeMb: 10, multiple: true },\n data: [], stateful: true,\n },\n [ComponentName.ApprovalChainStepper]: {\n properties: {\n locale: 'en-US',\n steps: [\n { label: 'Team lead', approver: 'Grace Hopper', state: 'approved', at: '2026-03-09T10:00:00Z', comment: 'Looks fine.' },\n { label: 'Finance', approver: 'Linus Torvalds', state: 'current' },\n { label: 'Director', approver: 'Ada Lovelace', state: 'pending' },\n ],\n },\n data: ['Grace Hopper', 'Looks fine.'], stateful: true,\n },\n [ComponentName.OrgTree]: {\n properties: {\n nodes: [\n { id: 'ceo', label: 'Ada Lovelace', title: 'Chief executive' },\n { id: 'cto', label: 'Grace Hopper', title: 'Chief technology officer', parentId: 'ceo' },\n { id: 'cfo', label: 'Linus Torvalds', title: 'Chief financial officer', parentId: 'ceo' },\n { id: 'dev', label: 'Margaret Hamilton', title: 'Engineering manager', parentId: 'cto' },\n ],\n },\n data: ['Chief technology officer'], stateful: true,\n },\n [ComponentName.PermissionMatrix]: {\n properties: {\n roles: [{ id: 'admin', label: 'Administrator' }, { id: 'sales', label: 'Sales' }],\n permissions: [{ id: 'view', label: 'View deals', group: 'Deals' }, { id: 'edit', label: 'Edit deals', group: 'Deals' }, { id: 'users', label: 'Manage users', group: 'Administration' }],\n grants: [{ role: 'admin', permission: 'view' }, { role: 'admin', permission: 'edit' }, { role: 'admin', permission: 'users' }, { role: 'sales', permission: 'view' }],\n },\n data: ['Edit deals', 'Manage users'], stateful: true,\n },\n};\n\n/** A scene element for a foundation component, populated with its sample unless properties are given, with the state forced when asked. */\nexport function foundationElement(name: string, properties?: Record<string, unknown>, state?: ComponentState): ExternalComponent {\n const sample = foundationSamples[name];\n return {\n id: `${name}-sample`,\n componentName: componentRegistryKey(defaultBlueprintName, name),\n properties: { ...(properties ?? sample?.properties ?? {}), ...(state === undefined ? {} : { state }) },\n slots: {},\n } as unknown as ExternalComponent;\n}\n"],"names":["foundationSamples","ComponentName","EmptyState","properties","headline","hint","icon","actionLabel","data","stateful","StatCard","label","value","format","currency","change","comparison","locale","TrendChip","goodDirection","StatusChip","status","tone","ChartWrapper","title","kind","categories","series","name","values","FilterBuilder","fields","type","options","filter","operator","conditions","field","groups","ColumnChooser","columns","id","locked","visible","SavedViewsMenu","views","activeView","ChecklistSection","today","sections","items","owner","due","done","ActivityFeed","timeZone","entries","actor","action","at","body","AvatarStack","people","max","FileUploader","accept","maxSizeMb","multiple","ApprovalChainStepper","steps","approver","state","comment","OrgTree","nodes","parentId","PermissionMatrix","roles","permissions","group","grants","role","permission","foundationElement","sample","componentName","componentRegistryKey","defaultBlueprintName","undefined","slots"],"mappings":"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"}
1
+ {"version":3,"file":"foundationSamples.js","sources":["../../../foundation/foundationSamples.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 { ExternalComponent } from '@cratis/scene.model';\nimport { componentRegistryKey } from '@cratis/scene.react';\nimport { ComponentName } from '../ComponentName';\nimport { defaultBlueprintName } from '../packageName';\nimport { ComponentState } from './ComponentState';\n\n/**\n * What a story or a specification feeds each foundation component to see it populated.\n *\n * These are design-time and test-time values, never part of what a component is: a component declares the shape of its data\n * and a screen binds it to a query (spec SD1). The domain blueprints supply real preview data as sample-data packs; this is\n * only enough to draw each component in each state.\n */\nexport interface FoundationSample {\n /** The properties that make the component populated. */\n properties: Record<string, unknown>;\n\n /** Text that only appears when the component shows its data, so a specification can prove the no-permission state shows none of it. */\n data: string[];\n\n /** Whether the component shows data and so owns the five standard states; chips and the empty state themselves do not. */\n stateful: boolean;\n}\n\nexport const foundationSamples: Record<string, FoundationSample> = {\n [ComponentName.EmptyState]: { properties: { headline: 'No invoices yet', hint: 'Invoices you create appear here.', icon: 'file', actionLabel: 'New invoice' }, data: [], stateful: false },\n [ComponentName.StatCard]: { properties: { label: 'Open pipeline', value: 1234567, format: 'currency', currency: 'USD', change: 12.5, comparison: 'last month', locale: 'en-US' }, data: ['$1,234,567'], stateful: true },\n [ComponentName.TrendChip]: { properties: { change: -3.2, goodDirection: 'down', comparison: 'last week', locale: 'en-US' }, data: [], stateful: false },\n [ComponentName.StatusChip]: { properties: { status: 'Awaiting approval', tone: 'warning' }, data: [], stateful: false },\n [ComponentName.ChartWrapper]: {\n properties: { title: 'Revenue by quarter', kind: 'line', categories: ['Q1', 'Q2', 'Q3', 'Q4'], series: [{ name: 'Revenue', values: [120, 180, 150, 240] }, { name: 'Target', values: [100, 150, 200, 220] }], locale: 'en-US' },\n data: ['Revenue by quarter'], stateful: true,\n },\n [ComponentName.FilterBuilder]: {\n properties: {\n fields: [{ name: 'owner', label: 'Owner', type: 'text' }, { name: 'status', label: 'Status', type: 'select', options: ['Open', 'Won', 'Lost'] }, { name: 'value', label: 'Value', type: 'number' }],\n filter: { operator: 'and', conditions: [{ field: 'status', operator: 'is', value: 'Open' }, { field: 'owner', operator: 'contains', value: 'Ada' }], groups: [] },\n },\n data: ['2 active filters'], stateful: true,\n },\n [ComponentName.ColumnChooser]: {\n properties: { columns: [{ id: 'name', label: 'Name', locked: true }, { id: 'owner', label: 'Owner' }, { id: 'status', label: 'Status', visible: false }] },\n data: ['3 shown'], stateful: true,\n },\n [ComponentName.SavedViewsMenu]: {\n properties: { views: [{ id: 'all', label: 'All leads' }, { id: 'mine', label: 'Mine' }, { id: 'overdue', label: 'Overdue' }], activeView: 'mine' },\n data: ['Mine'], stateful: true,\n },\n [ComponentName.ChecklistSection]: {\n properties: {\n today: '2026-03-10', locale: 'en-US',\n sections: [\n { title: 'Before day one', items: [{ id: 't1', label: 'Send the contract', owner: 'Grace', due: '2026-03-01', done: true }, { id: 't2', label: 'Order a laptop', owner: 'Linus', due: '2026-03-05' }] },\n { title: 'First week', items: [{ id: 't3', label: 'Security training', owner: 'Ada', due: '2026-03-20' }] },\n ],\n },\n data: ['Send the contract', '1 of 2 complete'], stateful: true,\n },\n [ComponentName.ActivityFeed]: {\n properties: {\n locale: 'en-US', timeZone: 'UTC',\n entries: [\n { id: 'a1', actor: 'Ada Lovelace', action: 'commented', kind: 'comment', at: '2026-03-10T09:30:00Z', body: 'Sent the revised quote.' },\n { id: 'a2', actor: 'Grace Hopper', action: 'changed the owner to Linus', kind: 'change', at: '2026-03-09T16:00:00Z' },\n { id: 'a3', actor: 'System', action: 'marked the deal as qualified', kind: 'status', at: '2026-03-09T08:00:00Z' },\n ],\n },\n data: ['Sent the revised quote.'], stateful: true,\n },\n [ComponentName.AvatarStack]: {\n properties: { people: [{ name: 'Ada Lovelace' }, { name: 'Grace Hopper' }, { name: 'Linus Torvalds' }, { name: 'Margaret Hamilton' }, { name: 'Alan Turing' }, { name: 'Barbara Liskov' }], max: 4 },\n data: ['+2'], stateful: true,\n },\n [ComponentName.FileUploader]: {\n properties: { accept: '.pdf, image/*', maxSizeMb: 10, multiple: true },\n data: [], stateful: true,\n },\n [ComponentName.ApprovalChainStepper]: {\n properties: {\n locale: 'en-US',\n steps: [\n { label: 'Team lead', approver: 'Grace Hopper', state: 'approved', at: '2026-03-09T10:00:00Z', comment: 'Looks fine.' },\n { label: 'Finance', approver: 'Linus Torvalds', state: 'current' },\n { label: 'Director', approver: 'Ada Lovelace', state: 'pending' },\n ],\n },\n data: ['Grace Hopper', 'Looks fine.'], stateful: true,\n },\n [ComponentName.OrgTree]: {\n properties: {\n nodes: [\n { id: 'ceo', label: 'Ada Lovelace', title: 'Chief executive' },\n { id: 'cto', label: 'Grace Hopper', title: 'Chief technology officer', parentId: 'ceo' },\n { id: 'cfo', label: 'Linus Torvalds', title: 'Chief financial officer', parentId: 'ceo' },\n { id: 'dev', label: 'Margaret Hamilton', title: 'Engineering manager', parentId: 'cto' },\n ],\n },\n data: ['Chief technology officer'], stateful: true,\n },\n [ComponentName.PermissionMatrix]: {\n properties: {\n roles: [{ id: 'admin', label: 'Administrator' }, { id: 'sales', label: 'Sales' }],\n permissions: [{ id: 'view', label: 'View deals', group: 'Deals' }, { id: 'edit', label: 'Edit deals', group: 'Deals' }, { id: 'users', label: 'Manage users', group: 'Administration' }],\n grants: [{ role: 'admin', permission: 'view' }, { role: 'admin', permission: 'edit' }, { role: 'admin', permission: 'users' }, { role: 'sales', permission: 'view' }],\n },\n data: ['Edit deals', 'Manage users'], stateful: true,\n },\n [ComponentName.DataList]: {\n properties: {\n locale: 'en-US', idField: 'id', titleField: 'name', selectionMode: 'multiple', pageSize: 5, rowActions: ['Open', 'Archive'],\n columns: [\n { field: 'name', header: 'Account' }, { field: 'owner', header: 'Owner' }, { field: 'value', header: 'Value', kind: 'currency', currency: 'USD' },\n { field: 'status', header: 'Status', kind: 'status', tones: { Open: 'info', Won: 'success', Lost: 'danger' } }, { field: 'closes', header: 'Closes', kind: 'date' },\n ],\n rows: [\n { id: '1', name: 'Northgate Ltd', owner: 'Ada', value: 12000, status: 'Open', closes: '2026-04-01' },\n { id: '2', name: 'Harbour & Sons', owner: 'Grace', value: 8400.5, status: 'Won', closes: '2026-03-12' },\n { id: '3', name: 'Fjord Supply', owner: 'Linus', value: 560, status: 'Lost', closes: '2026-02-20' },\n ],\n },\n data: ['Northgate Ltd', '3 items'], stateful: true,\n },\n [ComponentName.TabSet]: {\n properties: { tabs: [{ id: 'overview', label: 'Overview' }, { id: 'related', label: 'Related', badge: '4' }, { id: 'files', label: 'Files' }, { id: 'history', label: 'History', disabled: true }] },\n data: ['Overview', 'Related'], stateful: true,\n },\n [ComponentName.SubNavigation]: {\n properties: { items: [{ id: 'accounts', label: 'Accounts' }, { id: 'contacts', label: 'Contacts', badge: '12' }, { id: 'deals', label: 'Deals' }] },\n data: ['Accounts', 'Contacts'], stateful: true,\n },\n [ComponentName.BulkBar]: { properties: { selection: ['1', '2'], actions: ['Assign', 'Archive'] }, data: [], stateful: false },\n [ComponentName.GlobalSearch]: { properties: { placeholder: 'Search accounts', label: 'Search accounts' }, data: [], stateful: false },\n [ComponentName.NotificationsButton]: { properties: { count: 3 }, data: [], stateful: false },\n [ComponentName.KanbanBoard]: {\n properties: {\n columns: [{ id: 'new', label: 'New', limit: 2 }, { id: 'qualified', label: 'Qualified' }, { id: 'won', label: 'Won' }],\n cards: [\n { id: 'c1', title: 'Acme renewal', column: 'new', assignee: 'Ada', fields: [{ label: 'Value', value: '$12,000' }], badges: ['Hot'] },\n { id: 'c2', title: 'Globex rollout', column: 'new', assignee: 'Grace' },\n { id: 'c3', title: 'Initech pilot', column: 'new' },\n { id: 'c4', title: 'Umbrella upgrade', column: 'qualified' },\n ],\n },\n data: ['Acme renewal'], stateful: true,\n },\n [ComponentName.WizardProgress]: {\n properties: { steps: [{ id: 'details', label: 'Details' }, { id: 'people', label: 'People' }, { id: 'review', label: 'Review' }] },\n data: ['Details', 'People'], stateful: true,\n },\n [ComponentName.FormScreenBody]: {\n properties: {\n mode: 'create', locale: 'en-US',\n sections: [\n { title: 'Account details', columns: 2, fields: [\n { name: 'name', label: 'Name', required: true }, { name: 'industry', label: 'Industry', type: 'select', options: ['Software', 'Retail'] },\n { name: 'revenue', label: 'Revenue', type: 'currency' }, { name: 'since', label: 'Customer since', type: 'date' },\n { name: 'notes', label: 'Notes', type: 'richText', span: 2 },\n ] },\n { title: 'Preferences', fields: [{ name: 'tags', label: 'Tags', type: 'multiSelect', options: ['VIP', 'Partner'] }, { name: 'active', label: 'Active', type: 'toggle' }] },\n ],\n },\n data: ['Account details'], stateful: true,\n },\n};\n\n/** A scene element for a foundation component, populated with its sample unless properties are given, with the state forced when asked. */\nexport function foundationElement(name: string, properties?: Record<string, unknown>, state?: ComponentState): ExternalComponent {\n const sample = foundationSamples[name];\n return {\n id: `${name}-sample`,\n componentName: componentRegistryKey(defaultBlueprintName, name),\n properties: { ...(properties ?? sample?.properties ?? {}), ...(state === undefined ? {} : { state }) },\n slots: {},\n } as unknown as ExternalComponent;\n}\n"],"names":["foundationSamples","ComponentName","EmptyState","properties","headline","hint","icon","actionLabel","data","stateful","StatCard","label","value","format","currency","change","comparison","locale","TrendChip","goodDirection","StatusChip","status","tone","ChartWrapper","title","kind","categories","series","name","values","FilterBuilder","fields","type","options","filter","operator","conditions","field","groups","ColumnChooser","columns","id","locked","visible","SavedViewsMenu","views","activeView","ChecklistSection","today","sections","items","owner","due","done","ActivityFeed","timeZone","entries","actor","action","at","body","AvatarStack","people","max","FileUploader","accept","maxSizeMb","multiple","ApprovalChainStepper","steps","approver","state","comment","OrgTree","nodes","parentId","PermissionMatrix","roles","permissions","group","grants","role","permission","DataList","idField","titleField","selectionMode","pageSize","rowActions","header","tones","Open","Won","Lost","rows","closes","TabSet","tabs","badge","disabled","SubNavigation","BulkBar","selection","actions","GlobalSearch","placeholder","NotificationsButton","count","KanbanBoard","limit","cards","column","assignee","badges","WizardProgress","FormScreenBody","mode","required","span","foundationElement","sample","componentName","componentRegistryKey","defaultBlueprintName","undefined","slots"],"mappings":"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"}
@@ -122,6 +122,78 @@
122
122
  orgReports: '{count} reports',
123
123
  orgTree: 'Organization',
124
124
  orgNone: 'There is nobody in the organization yet',
125
+ listCount: '{count} items',
126
+ listCountFiltered: '{shown} of {total} items',
127
+ listSelectAll: 'Select all rows on this page',
128
+ listSelectRow: 'Select {name}',
129
+ listRowActions: 'Actions for {name}',
130
+ listActions: 'Actions',
131
+ listSortBy: 'Sort by {column}',
132
+ listSortedAscending: 'sorted ascending',
133
+ listSortedDescending: 'sorted descending',
134
+ listPage: 'Page {page} of {pages}',
135
+ listPrevious: 'Previous page',
136
+ listNext: 'Next page',
137
+ listNoMatches: 'Nothing matches your search or filters',
138
+ listClearSearch: 'Clear search and filters',
139
+ listGroupCollapse: 'Collapse {group}',
140
+ listGroupExpand: 'Expand {group}',
141
+ listGroupSubtotal: '{count} items, {total}',
142
+ listCards: 'Items as cards',
143
+ listTable: 'Items as a table',
144
+ listBack: 'Back to the list',
145
+ viewTable: 'Table',
146
+ viewCards: 'Cards',
147
+ viewGrouped: 'Grouped',
148
+ densityComfortable: 'Comfortable',
149
+ densityCompact: 'Compact',
150
+ formRequired: 'required',
151
+ formRequiredField: '{label} is required',
152
+ formInvalidField: '{label} is not valid',
153
+ formSummary: 'Fix {count} fields before saving',
154
+ formSummaryOne: 'Fix 1 field before saving',
155
+ formSave: 'Save',
156
+ formSaveAndNew: 'Save and new',
157
+ formCancel: 'Cancel',
158
+ formEdit: 'Edit',
159
+ formUnsaved: 'You have unsaved changes',
160
+ formDiscard: 'Discard changes',
161
+ formSaved: 'Saved',
162
+ formSectionSave: 'Save {section}',
163
+ formReadOnly: 'This form is read-only',
164
+ formChoose: 'Choose…',
165
+ summaryLabel: 'Key facts',
166
+ tabsLabel: 'Sections',
167
+ subNavLabel: 'Module sections',
168
+ bulkSelected: '{count} selected',
169
+ bulkClear: 'Clear selection',
170
+ bulkActions: 'Actions for the selection',
171
+ searchLabel: 'Search',
172
+ searchPlaceholder: 'Search',
173
+ searchClear: 'Clear search',
174
+ notificationsLabel: 'Notifications',
175
+ notificationsCount: '{count} unread',
176
+ notificationsNone: 'No new notifications',
177
+ boardMoveTo: 'Move to…',
178
+ boardMoveCard: 'Move {title}',
179
+ boardMoved: '{title} moved to {column}',
180
+ boardColumn: '{column}, {count} cards',
181
+ boardCollapse: 'Collapse {column}',
182
+ boardExpand: 'Expand {column}',
183
+ boardWip: 'Limit {limit}',
184
+ boardWipExceeded: 'Over the limit of {limit}',
185
+ boardNoCards: 'No cards',
186
+ wizardStep: 'Step {n} of {total}',
187
+ wizardBack: 'Back',
188
+ wizardNext: 'Next',
189
+ wizardFinish: 'Finish',
190
+ wizardSaveDraft: 'Save draft',
191
+ wizardDraftSaved: 'Draft saved',
192
+ wizardReview: 'Review',
193
+ wizardComplete: 'Completed',
194
+ wizardCurrent: 'Current step',
195
+ wizardUpcoming: 'Not started',
196
+ wizardProgress: 'Wizard progress',
125
197
  matrixAllowed: 'Allowed',
126
198
  matrixDenied: 'Not allowed',
127
199
  matrixGrant: 'Grant {permission} to {role}',
@@ -1 +1 @@
1
- {"version":3,"file":"foundationStrings.js","sources":["../../../foundation/foundationStrings.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 { ExternalComponent } from '@cratis/scene.model';\n\n/**\n * Every piece of text the foundation components say themselves, as opposed to text a screen author or a bound query\n * supplies. Nothing is hard-coded in a component (spec Part B 1.5): a component reads its text from here, merged with\n * the `strings` property of the element, so an application localizes by supplying a table - and a bound string\n * (a `{name}` placeholder is replaced by the values the component passes) arrives the same way any other property does.\n */\nexport const foundationStrings = {\n loading: 'Loading',\n emptyHeadline: 'Nothing here yet',\n emptyHint: 'There is nothing to show for now.',\n errorHeadline: 'This could not be loaded',\n errorHint: 'Something went wrong while loading. Try again in a moment.',\n retry: 'Try again',\n noPermissionHeadline: 'You do not have access',\n noPermissionHint: 'Ask an administrator to grant you access to {subject}.',\n noPermissionSubject: 'this content',\n partialHeadline: 'Some parts could not be loaded',\n partialHint: 'The unavailable parts are: {regions}.',\n disabledNoPermission: 'You do not have permission to do this',\n trendUp: 'up {value}',\n trendDown: 'down {value}',\n trendFlat: 'unchanged',\n trendComparison: 'compared to {period}',\n statusSuccess: 'Success',\n statusWarning: 'Warning',\n statusDanger: 'Problem',\n statusInfo: 'Information',\n statusNeutral: 'Status',\n chartNoData: 'No data to chart',\n chartDataTable: 'Chart data',\n chartSeries: 'Series',\n chartCategory: 'Category',\n filterAdd: 'Add condition',\n filterAddGroup: 'Add group',\n filterRemove: 'Remove condition',\n filterRemoveGroup: 'Remove group',\n filterMatchAll: 'Match all (AND)',\n filterMatchAny: 'Match any (OR)',\n filterField: 'Field',\n filterOperator: 'Operator',\n filterValue: 'Value',\n filterClear: 'Clear filters',\n filterCondition: 'Condition {n}',\n filterGroup: 'Group {n}',\n filterNoFields: 'There are no fields to filter on',\n opContains: 'contains',\n opEquals: 'equals',\n opNotEquals: 'does not equal',\n opStartsWith: 'starts with',\n opIsEmpty: 'is empty',\n opGreater: 'is greater than',\n opGreaterOrEqual: 'is at least',\n opLess: 'is less than',\n opLessOrEqual: 'is at most',\n opBefore: 'is before',\n opAfter: 'is after',\n opOn: 'is on',\n opIs: 'is',\n opIsNot: 'is not',\n opTrue: 'is yes',\n opFalse: 'is no',\n filterSummary: '{count} active filters',\n filterSummaryOne: '1 active filter',\n columnsChoose: 'Columns',\n columnsLocked: 'always shown',\n columnsReset: 'Show all columns',\n columnsMoveUp: 'Move {name} up',\n columnsMoveDown: 'Move {name} down',\n columnsShown: '{shown} of {total} shown',\n columnsNone: 'There are no columns to choose from',\n viewsLabel: 'Saved views',\n viewsDefault: 'All items',\n viewsSave: 'Save current view',\n viewsManage: 'Manage views',\n viewsNone: 'There are no saved views',\n checklistProgress: '{done} of {total} complete',\n checklistOwner: 'Owner',\n checklistOverdue: 'Overdue',\n checklistDone: 'Done',\n checklistOpen: 'Open',\n checklistItemProgress: 'Progress of {title}',\n checklistNone: 'This checklist has no tasks',\n checklistDue: 'Due',\n activityEmpty: 'No activity yet',\n activityComment: 'Comment',\n activityChange: 'Change',\n activityStatus: 'Status',\n activitySystem: 'System',\n activityBy: 'by {actor}',\n avatarOverflow: '{count} more',\n avatarPeople: '{count} people',\n uploadDrop: 'Drop files here or',\n uploadLimits: 'Up to {limit} each',\n uploadAccepts: 'Accepts {types}',\n uploadSelected: 'Selected files',\n uploadQueued: 'Ready to upload',\n uploadSingle: 'Only one file can be uploaded at a time',\n uploadBrowse: 'Browse files',\n uploadRemove: 'Remove {name}',\n uploadTooLarge: '{name} is larger than {limit}',\n uploadWrongType: '{name} is not an accepted file type',\n uploadUploading: 'Uploading',\n uploadDone: 'Uploaded',\n uploadFailed: 'Upload failed',\n approvalPending: 'Pending',\n approvalCurrent: 'Awaiting decision',\n approvalApproved: 'Approved',\n approvalRejected: 'Rejected',\n approvalSkipped: 'Skipped',\n approvalChain: 'Approval chain',\n approvalStep: 'Step {n} of {total}',\n approvalNotReached: 'Not reached',\n approvalOutcomeApproved: 'Approved by everyone',\n approvalOutcomeRejected: 'Rejected',\n approvalOutcomeInProgress: 'Waiting for a decision',\n approvalOutcomePending: 'Not started',\n orgExpand: 'Expand {name}',\n orgCollapse: 'Collapse {name}',\n orgReports: '{count} reports',\n orgTree: 'Organization',\n orgNone: 'There is nobody in the organization yet',\n matrixAllowed: 'Allowed',\n matrixDenied: 'Not allowed',\n matrixGrant: 'Grant {permission} to {role}',\n matrixReadOnly: 'Read-only',\n matrixPermission: 'Permission',\n matrixScroll: 'Permission matrix, scrolls sideways',\n matrixGroupAll: 'Other',\n} as const;\n\n/** The name of one of the foundation strings. */\nexport type FoundationStringName = keyof typeof foundationStrings;\n\n/** The text table a foundation component works with. */\nexport type FoundationStrings = Record<FoundationStringName, string>;\n\n/**\n * The foundation strings with the element's own `strings` property laid over them.\n *\n * Only string values of known names are taken, so a typo in an application's table falls back to the default text\n * rather than rendering nothing.\n */\nexport function readFoundationStrings(element: ExternalComponent): FoundationStrings {\n const supplied = element.properties.strings;\n const result: FoundationStrings = { ...foundationStrings };\n if (typeof supplied !== 'object' || supplied === null || Array.isArray(supplied)) return result;\n\n for (const [name, value] of Object.entries(supplied as Record<string, unknown>)) {\n if (name in foundationStrings && typeof value === 'string') result[name as FoundationStringName] = value;\n }\n\n return result;\n}\n\n/** Replaces each `{name}` in a string with the value of the same name, leaving an unknown placeholder visible rather than blank. */\nexport function formatText(text: string, values: Record<string, string | number> = {}): string {\n return text.replace(/\\{(\\w+)\\}/g, (placeholder, name: string) => (name in values ? String(values[name]) : placeholder));\n}\n"],"names":["foundationStrings","loading","emptyHeadline","emptyHint","errorHeadline","errorHint","retry","noPermissionHeadline","noPermissionHint","noPermissionSubject","partialHeadline","partialHint","disabledNoPermission","trendUp","trendDown","trendFlat","trendComparison","statusSuccess","statusWarning","statusDanger","statusInfo","statusNeutral","chartNoData","chartDataTable","chartSeries","chartCategory","filterAdd","filterAddGroup","filterRemove","filterRemoveGroup","filterMatchAll","filterMatchAny","filterField","filterOperator","filterValue","filterClear","filterCondition","filterGroup","filterNoFields","opContains","opEquals","opNotEquals","opStartsWith","opIsEmpty","opGreater","opGreaterOrEqual","opLess","opLessOrEqual","opBefore","opAfter","opOn","opIs","opIsNot","opTrue","opFalse","filterSummary","filterSummaryOne","columnsChoose","columnsLocked","columnsReset","columnsMoveUp","columnsMoveDown","columnsShown","columnsNone","viewsLabel","viewsDefault","viewsSave","viewsManage","viewsNone","checklistProgress","checklistOwner","checklistOverdue","checklistDone","checklistOpen","checklistItemProgress","checklistNone","checklistDue","activityEmpty","activityComment","activityChange","activityStatus","activitySystem","activityBy","avatarOverflow","avatarPeople","uploadDrop","uploadLimits","uploadAccepts","uploadSelected","uploadQueued","uploadSingle","uploadBrowse","uploadRemove","uploadTooLarge","uploadWrongType","uploadUploading","uploadDone","uploadFailed","approvalPending","approvalCurrent","approvalApproved","approvalRejected","approvalSkipped","approvalChain","approvalStep","approvalNotReached","approvalOutcomeApproved","approvalOutcomeRejected","approvalOutcomeInProgress","approvalOutcomePending","orgExpand","orgCollapse","orgReports","orgTree","orgNone","matrixAllowed","matrixDenied","matrixGrant","matrixReadOnly","matrixPermission","matrixScroll","matrixGroupAll","readFoundationStrings","element","supplied","properties","strings","result","Array","isArray","name","value","Object","entries","formatText","text","values","replace","placeholder","String"],"mappings":"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"}
1
+ {"version":3,"file":"foundationStrings.js","sources":["../../../foundation/foundationStrings.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 { ExternalComponent } from '@cratis/scene.model';\n\n/**\n * Every piece of text the foundation components say themselves, as opposed to text a screen author or a bound query\n * supplies. Nothing is hard-coded in a component (spec Part B 1.5): a component reads its text from here, merged with\n * the `strings` property of the element, so an application localizes by supplying a table - and a bound string\n * (a `{name}` placeholder is replaced by the values the component passes) arrives the same way any other property does.\n */\nexport const foundationStrings = {\n loading: 'Loading',\n emptyHeadline: 'Nothing here yet',\n emptyHint: 'There is nothing to show for now.',\n errorHeadline: 'This could not be loaded',\n errorHint: 'Something went wrong while loading. Try again in a moment.',\n retry: 'Try again',\n noPermissionHeadline: 'You do not have access',\n noPermissionHint: 'Ask an administrator to grant you access to {subject}.',\n noPermissionSubject: 'this content',\n partialHeadline: 'Some parts could not be loaded',\n partialHint: 'The unavailable parts are: {regions}.',\n disabledNoPermission: 'You do not have permission to do this',\n trendUp: 'up {value}',\n trendDown: 'down {value}',\n trendFlat: 'unchanged',\n trendComparison: 'compared to {period}',\n statusSuccess: 'Success',\n statusWarning: 'Warning',\n statusDanger: 'Problem',\n statusInfo: 'Information',\n statusNeutral: 'Status',\n chartNoData: 'No data to chart',\n chartDataTable: 'Chart data',\n chartSeries: 'Series',\n chartCategory: 'Category',\n filterAdd: 'Add condition',\n filterAddGroup: 'Add group',\n filterRemove: 'Remove condition',\n filterRemoveGroup: 'Remove group',\n filterMatchAll: 'Match all (AND)',\n filterMatchAny: 'Match any (OR)',\n filterField: 'Field',\n filterOperator: 'Operator',\n filterValue: 'Value',\n filterClear: 'Clear filters',\n filterCondition: 'Condition {n}',\n filterGroup: 'Group {n}',\n filterNoFields: 'There are no fields to filter on',\n opContains: 'contains',\n opEquals: 'equals',\n opNotEquals: 'does not equal',\n opStartsWith: 'starts with',\n opIsEmpty: 'is empty',\n opGreater: 'is greater than',\n opGreaterOrEqual: 'is at least',\n opLess: 'is less than',\n opLessOrEqual: 'is at most',\n opBefore: 'is before',\n opAfter: 'is after',\n opOn: 'is on',\n opIs: 'is',\n opIsNot: 'is not',\n opTrue: 'is yes',\n opFalse: 'is no',\n filterSummary: '{count} active filters',\n filterSummaryOne: '1 active filter',\n columnsChoose: 'Columns',\n columnsLocked: 'always shown',\n columnsReset: 'Show all columns',\n columnsMoveUp: 'Move {name} up',\n columnsMoveDown: 'Move {name} down',\n columnsShown: '{shown} of {total} shown',\n columnsNone: 'There are no columns to choose from',\n viewsLabel: 'Saved views',\n viewsDefault: 'All items',\n viewsSave: 'Save current view',\n viewsManage: 'Manage views',\n viewsNone: 'There are no saved views',\n checklistProgress: '{done} of {total} complete',\n checklistOwner: 'Owner',\n checklistOverdue: 'Overdue',\n checklistDone: 'Done',\n checklistOpen: 'Open',\n checklistItemProgress: 'Progress of {title}',\n checklistNone: 'This checklist has no tasks',\n checklistDue: 'Due',\n activityEmpty: 'No activity yet',\n activityComment: 'Comment',\n activityChange: 'Change',\n activityStatus: 'Status',\n activitySystem: 'System',\n activityBy: 'by {actor}',\n avatarOverflow: '{count} more',\n avatarPeople: '{count} people',\n uploadDrop: 'Drop files here or',\n uploadLimits: 'Up to {limit} each',\n uploadAccepts: 'Accepts {types}',\n uploadSelected: 'Selected files',\n uploadQueued: 'Ready to upload',\n uploadSingle: 'Only one file can be uploaded at a time',\n uploadBrowse: 'Browse files',\n uploadRemove: 'Remove {name}',\n uploadTooLarge: '{name} is larger than {limit}',\n uploadWrongType: '{name} is not an accepted file type',\n uploadUploading: 'Uploading',\n uploadDone: 'Uploaded',\n uploadFailed: 'Upload failed',\n approvalPending: 'Pending',\n approvalCurrent: 'Awaiting decision',\n approvalApproved: 'Approved',\n approvalRejected: 'Rejected',\n approvalSkipped: 'Skipped',\n approvalChain: 'Approval chain',\n approvalStep: 'Step {n} of {total}',\n approvalNotReached: 'Not reached',\n approvalOutcomeApproved: 'Approved by everyone',\n approvalOutcomeRejected: 'Rejected',\n approvalOutcomeInProgress: 'Waiting for a decision',\n approvalOutcomePending: 'Not started',\n orgExpand: 'Expand {name}',\n orgCollapse: 'Collapse {name}',\n orgReports: '{count} reports',\n orgTree: 'Organization',\n orgNone: 'There is nobody in the organization yet',\n listCount: '{count} items',\n listCountFiltered: '{shown} of {total} items',\n listSelectAll: 'Select all rows on this page',\n listSelectRow: 'Select {name}',\n listRowActions: 'Actions for {name}',\n listActions: 'Actions',\n listSortBy: 'Sort by {column}',\n listSortedAscending: 'sorted ascending',\n listSortedDescending: 'sorted descending',\n listPage: 'Page {page} of {pages}',\n listPrevious: 'Previous page',\n listNext: 'Next page',\n listNoMatches: 'Nothing matches your search or filters',\n listClearSearch: 'Clear search and filters',\n listGroupCollapse: 'Collapse {group}',\n listGroupExpand: 'Expand {group}',\n listGroupSubtotal: '{count} items, {total}',\n listCards: 'Items as cards',\n listTable: 'Items as a table',\n listBack: 'Back to the list',\n viewTable: 'Table',\n viewCards: 'Cards',\n viewGrouped: 'Grouped',\n densityComfortable: 'Comfortable',\n densityCompact: 'Compact',\n formRequired: 'required',\n formRequiredField: '{label} is required',\n formInvalidField: '{label} is not valid',\n formSummary: 'Fix {count} fields before saving',\n formSummaryOne: 'Fix 1 field before saving',\n formSave: 'Save',\n formSaveAndNew: 'Save and new',\n formCancel: 'Cancel',\n formEdit: 'Edit',\n formUnsaved: 'You have unsaved changes',\n formDiscard: 'Discard changes',\n formSaved: 'Saved',\n formSectionSave: 'Save {section}',\n formReadOnly: 'This form is read-only',\n formChoose: 'Choose…',\n summaryLabel: 'Key facts',\n tabsLabel: 'Sections',\n subNavLabel: 'Module sections',\n bulkSelected: '{count} selected',\n bulkClear: 'Clear selection',\n bulkActions: 'Actions for the selection',\n searchLabel: 'Search',\n searchPlaceholder: 'Search',\n searchClear: 'Clear search',\n notificationsLabel: 'Notifications',\n notificationsCount: '{count} unread',\n notificationsNone: 'No new notifications',\n boardMoveTo: 'Move to…',\n boardMoveCard: 'Move {title}',\n boardMoved: '{title} moved to {column}',\n boardColumn: '{column}, {count} cards',\n boardCollapse: 'Collapse {column}',\n boardExpand: 'Expand {column}',\n boardWip: 'Limit {limit}',\n boardWipExceeded: 'Over the limit of {limit}',\n boardNoCards: 'No cards',\n wizardStep: 'Step {n} of {total}',\n wizardBack: 'Back',\n wizardNext: 'Next',\n wizardFinish: 'Finish',\n wizardSaveDraft: 'Save draft',\n wizardDraftSaved: 'Draft saved',\n wizardReview: 'Review',\n wizardComplete: 'Completed',\n wizardCurrent: 'Current step',\n wizardUpcoming: 'Not started',\n wizardProgress: 'Wizard progress',\n matrixAllowed: 'Allowed',\n matrixDenied: 'Not allowed',\n matrixGrant: 'Grant {permission} to {role}',\n matrixReadOnly: 'Read-only',\n matrixPermission: 'Permission',\n matrixScroll: 'Permission matrix, scrolls sideways',\n matrixGroupAll: 'Other',\n} as const;\n\n/** The name of one of the foundation strings. */\nexport type FoundationStringName = keyof typeof foundationStrings;\n\n/** The text table a foundation component works with. */\nexport type FoundationStrings = Record<FoundationStringName, string>;\n\n/**\n * The foundation strings with the element's own `strings` property laid over them.\n *\n * Only string values of known names are taken, so a typo in an application's table falls back to the default text\n * rather than rendering nothing.\n */\nexport function readFoundationStrings(element: ExternalComponent): FoundationStrings {\n const supplied = element.properties.strings;\n const result: FoundationStrings = { ...foundationStrings };\n if (typeof supplied !== 'object' || supplied === null || Array.isArray(supplied)) return result;\n\n for (const [name, value] of Object.entries(supplied as Record<string, unknown>)) {\n if (name in foundationStrings && typeof value === 'string') result[name as FoundationStringName] = value;\n }\n\n return result;\n}\n\n/** Replaces each `{name}` in a string with the value of the same name, leaving an unknown placeholder visible rather than blank. */\nexport function formatText(text: string, values: Record<string, string | number> = {}): string {\n return text.replace(/\\{(\\w+)\\}/g, (placeholder, name: string) => (name in values ? String(values[name]) : placeholder));\n}\n"],"names":["foundationStrings","loading","emptyHeadline","emptyHint","errorHeadline","errorHint","retry","noPermissionHeadline","noPermissionHint","noPermissionSubject","partialHeadline","partialHint","disabledNoPermission","trendUp","trendDown","trendFlat","trendComparison","statusSuccess","statusWarning","statusDanger","statusInfo","statusNeutral","chartNoData","chartDataTable","chartSeries","chartCategory","filterAdd","filterAddGroup","filterRemove","filterRemoveGroup","filterMatchAll","filterMatchAny","filterField","filterOperator","filterValue","filterClear","filterCondition","filterGroup","filterNoFields","opContains","opEquals","opNotEquals","opStartsWith","opIsEmpty","opGreater","opGreaterOrEqual","opLess","opLessOrEqual","opBefore","opAfter","opOn","opIs","opIsNot","opTrue","opFalse","filterSummary","filterSummaryOne","columnsChoose","columnsLocked","columnsReset","columnsMoveUp","columnsMoveDown","columnsShown","columnsNone","viewsLabel","viewsDefault","viewsSave","viewsManage","viewsNone","checklistProgress","checklistOwner","checklistOverdue","checklistDone","checklistOpen","checklistItemProgress","checklistNone","checklistDue","activityEmpty","activityComment","activityChange","activityStatus","activitySystem","activityBy","avatarOverflow","avatarPeople","uploadDrop","uploadLimits","uploadAccepts","uploadSelected","uploadQueued","uploadSingle","uploadBrowse","uploadRemove","uploadTooLarge","uploadWrongType","uploadUploading","uploadDone","uploadFailed","approvalPending","approvalCurrent","approvalApproved","approvalRejected","approvalSkipped","approvalChain","approvalStep","approvalNotReached","approvalOutcomeApproved","approvalOutcomeRejected","approvalOutcomeInProgress","approvalOutcomePending","orgExpand","orgCollapse","orgReports","orgTree","orgNone","listCount","listCountFiltered","listSelectAll","listSelectRow","listRowActions","listActions","listSortBy","listSortedAscending","listSortedDescending","listPage","listPrevious","listNext","listNoMatches","listClearSearch","listGroupCollapse","listGroupExpand","listGroupSubtotal","listCards","listTable","listBack","viewTable","viewCards","viewGrouped","densityComfortable","densityCompact","formRequired","formRequiredField","formInvalidField","formSummary","formSummaryOne","formSave","formSaveAndNew","formCancel","formEdit","formUnsaved","formDiscard","formSaved","formSectionSave","formReadOnly","formChoose","summaryLabel","tabsLabel","subNavLabel","bulkSelected","bulkClear","bulkActions","searchLabel","searchPlaceholder","searchClear","notificationsLabel","notificationsCount","notificationsNone","boardMoveTo","boardMoveCard","boardMoved","boardColumn","boardCollapse","boardExpand","boardWip","boardWipExceeded","boardNoCards","wizardStep","wizardBack","wizardNext","wizardFinish","wizardSaveDraft","wizardDraftSaved","wizardReview","wizardComplete","wizardCurrent","wizardUpcoming","wizardProgress","matrixAllowed","matrixDenied","matrixGrant","matrixReadOnly","matrixPermission","matrixScroll","matrixGroupAll","readFoundationStrings","element","supplied","properties","strings","result","Array","isArray","name","value","Object","entries","formatText","text","values","replace","placeholder","String"],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ 'use strict';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /** How a column's cell is drawn. */ var CellKind = /*#__PURE__*/ function(CellKind) {
6
+ CellKind["Text"] = "text";
7
+ CellKind["Number"] = "number";
8
+ CellKind["Currency"] = "currency";
9
+ CellKind["Date"] = "date";
10
+ CellKind["Status"] = "status";
11
+ return CellKind;
12
+ }({});
13
+ /** The ways the same records can be laid out. */ var ListVariant = /*#__PURE__*/ function(ListVariant) {
14
+ ListVariant["Table"] = "table";
15
+ ListVariant["Cards"] = "cards";
16
+ ListVariant["Grouped"] = "grouped";
17
+ return ListVariant;
18
+ }({});
19
+ const records = (value)=>Array.isArray(value) ? value.filter((entry)=>typeof entry === 'object' && entry !== null && !Array.isArray(entry)) : [];
20
+ /** Reads columns, dropping those without a field and repeated fields. */ function readListColumns(value) {
21
+ const seen = new Set();
22
+ return records(value).flatMap((entry)=>{
23
+ if (typeof entry.field !== 'string' || entry.field.length === 0 || seen.has(entry.field)) return [];
24
+ seen.add(entry.field);
25
+ const tones = typeof entry.tones === 'object' && entry.tones !== null && !Array.isArray(entry.tones) ? Object.fromEntries(Object.entries(entry.tones).filter((pair)=>typeof pair[1] === 'string')) : {};
26
+ return [
27
+ {
28
+ field: entry.field,
29
+ header: typeof entry.header === 'string' && entry.header.length > 0 ? entry.header : entry.field,
30
+ kind: Object.values(CellKind).includes(entry.kind) ? entry.kind : "text",
31
+ sortable: entry.sortable !== false,
32
+ tones,
33
+ ...typeof entry.currency === 'string' ? {
34
+ currency: entry.currency
35
+ } : {}
36
+ }
37
+ ];
38
+ });
39
+ }
40
+ /** Reads the variant, defaulting to the table. */ const readListVariant = (value)=>Object.values(ListVariant).includes(value) ? value : "table";
41
+ /** The value of a row's field as text for searching and display: a primitive as itself, anything else empty. */ const textOf = (row, field)=>{
42
+ const value = row[field];
43
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' ? String(value) : '';
44
+ };
45
+ /** The id of a row: its `idField`, else its position, so a list without ids still selects and keys sensibly. */ const rowId = (row, index, idField)=>{
46
+ const value = row[idField];
47
+ return typeof value === 'string' || typeof value === 'number' ? String(value) : `row-${index}`;
48
+ };
49
+ /** Rows that contain the search text in any shown column, without regard to case or accents; empty search keeps every row. */ function searchRows(rows, columns, search) {
50
+ const needle = normalize(search);
51
+ if (needle.length === 0) return rows;
52
+ return rows.filter((row)=>columns.some((column)=>normalize(textOf(row, column.field)).includes(needle)));
53
+ }
54
+ /** Rows that satisfy a filter of conditions joined by AND or OR, in nested groups - the value the filter builder publishes. */ function filterRows(rows, filter) {
55
+ if (typeof filter !== 'object' || filter === null) return rows;
56
+ const group = filter;
57
+ const tests = [
58
+ ...(group.conditions ?? []).filter((condition)=>typeof condition?.field === 'string').filter(active).map((condition)=>(row)=>satisfies(row, condition)),
59
+ ...(group.groups ?? []).filter((nested)=>hasConditions(nested)).map((nested)=>(row)=>filterRows([
60
+ row
61
+ ], nested).length === 1)
62
+ ];
63
+ if (tests.length === 0) return rows;
64
+ return rows.filter((row)=>group.operator === 'or' ? tests.some((test)=>test(row)) : tests.every((test)=>test(row)));
65
+ }
66
+ const active = (condition)=>[
67
+ 'isEmpty',
68
+ 'true',
69
+ 'false'
70
+ ].includes(condition.operator) || (condition.value ?? '').trim().length > 0;
71
+ const hasConditions = (group)=>{
72
+ const candidate = group;
73
+ return (candidate?.conditions ?? []).some(active) || (candidate?.groups ?? []).some(hasConditions);
74
+ };
75
+ function satisfies(row, condition) {
76
+ const raw = row[condition.field];
77
+ const text = normalize(typeof raw === 'string' || typeof raw === 'number' || typeof raw === 'boolean' ? String(raw) : '');
78
+ const value = normalize(condition.value ?? '');
79
+ const number = Number(raw);
80
+ const wanted = Number(condition.value);
81
+ switch(condition.operator){
82
+ case 'contains':
83
+ return text.includes(value);
84
+ case 'equals':
85
+ case 'is':
86
+ case 'on':
87
+ return typeof raw === 'number' ? number === wanted : text === value;
88
+ case 'notEquals':
89
+ case 'isNot':
90
+ return typeof raw === 'number' ? number !== wanted : text !== value;
91
+ case 'startsWith':
92
+ return text.startsWith(value);
93
+ case 'isEmpty':
94
+ return text.length === 0;
95
+ case 'greater':
96
+ return number > wanted;
97
+ case 'greaterOrEqual':
98
+ return number >= wanted;
99
+ case 'less':
100
+ return number < wanted;
101
+ case 'lessOrEqual':
102
+ return number <= wanted;
103
+ case 'before':
104
+ return text < value;
105
+ case 'after':
106
+ return text > value;
107
+ case 'true':
108
+ return raw === true || text === 'true';
109
+ case 'false':
110
+ return raw === false || text === 'false';
111
+ default:
112
+ return true;
113
+ }
114
+ }
115
+ function normalize(text) {
116
+ return text.normalize('NFD').replace(/\p{Diacritic}/gu, '').toLocaleLowerCase();
117
+ }
118
+ /** Reads a sort from its address form, `field` or `-field` for descending; a field that is not a sortable column is no sort at all. */ function parseSort(text, columns) {
119
+ if (!text) return undefined;
120
+ const descending = text.startsWith('-');
121
+ const field = descending ? text.slice(1) : text;
122
+ return columns.some((column)=>column.field === field && column.sortable) ? {
123
+ field,
124
+ descending
125
+ } : undefined;
126
+ }
127
+ /** A sort in its address form. */ const formatSort = (sort)=>sort === undefined ? undefined : `${sort.descending ? '-' : ''}${sort.field}`;
128
+ /** The next sort when a header is pressed: ascending, then descending, then none. */ const nextSort = (current, field)=>current?.field !== field ? {
129
+ field,
130
+ descending: false
131
+ } : current.descending ? undefined : {
132
+ field,
133
+ descending: true
134
+ };
135
+ /** Rows in order of a column, numbers as numbers and text by the locale, with ties kept in their original order. */ function sortRows(rows, sort, locale) {
136
+ if (!sort) return rows;
137
+ const collator = new Intl.Collator(locale, {
138
+ numeric: true,
139
+ sensitivity: 'base'
140
+ });
141
+ return rows.map((row, index)=>({
142
+ row,
143
+ index
144
+ })).sort((left, right)=>{
145
+ const a = left.row[sort.field];
146
+ const b = right.row[sort.field];
147
+ const order = typeof a === 'number' && typeof b === 'number' ? a - b : collator.compare(textOf(left.row, sort.field), textOf(right.row, sort.field));
148
+ return order === 0 ? left.index - right.index : sort.descending ? -order : order;
149
+ }).map((entry)=>entry.row);
150
+ }
151
+ /** The slice of rows on a page (1-based), and how many pages there are; a page out of range is clamped rather than empty. */ function paginate(rows, page, pageSize) {
152
+ const size = pageSize > 0 ? Math.floor(pageSize) : rows.length || 1;
153
+ const pages = Math.max(1, Math.ceil(rows.length / size));
154
+ const clamped = Math.min(Math.max(1, Math.floor(Number.isFinite(page) ? page : 1)), pages);
155
+ return {
156
+ rows: rows.slice((clamped - 1) * size, clamped * size),
157
+ page: clamped,
158
+ pages
159
+ };
160
+ }
161
+ /** Groups rows by a field in the order the groups are first seen, with the sum of a numeric field as the subtotal when one is named. */ function groupRows(rows, groupBy, totalField) {
162
+ const groups = [];
163
+ for (const row of rows){
164
+ const key = textOf(row, groupBy);
165
+ const group = groups.find((candidate)=>candidate.key === key) ?? (groups.push({
166
+ key,
167
+ rows: []
168
+ }), groups[groups.length - 1]);
169
+ group.rows.push(row);
170
+ }
171
+ return totalField === undefined ? groups : groups.map((group)=>({
172
+ ...group,
173
+ subtotal: group.rows.reduce((sum, row)=>sum + (typeof row[totalField] === 'number' ? row[totalField] : 0), 0)
174
+ }));
175
+ }
176
+ /** Toggles an id in a selection that allows one or many. */ const toggleSelection = (selected, id, multiple)=>selected.includes(id) ? selected.filter((candidate)=>candidate !== id) : multiple ? [
177
+ ...selected,
178
+ id
179
+ ] : [
180
+ id
181
+ ];
182
+ /** Reads a selection from its address form: ids separated by commas. */ const parseSelection = (text)=>text ? text.split(',').filter((id)=>id.length > 0) : [];
183
+
184
+ exports.CellKind = CellKind;
185
+ exports.ListVariant = ListVariant;
186
+ exports.filterRows = filterRows;
187
+ exports.formatSort = formatSort;
188
+ exports.groupRows = groupRows;
189
+ exports.nextSort = nextSort;
190
+ exports.paginate = paginate;
191
+ exports.parseSelection = parseSelection;
192
+ exports.parseSort = parseSort;
193
+ exports.readListColumns = readListColumns;
194
+ exports.readListVariant = readListVariant;
195
+ exports.rowId = rowId;
196
+ exports.searchRows = searchRows;
197
+ exports.sortRows = sortRows;
198
+ exports.textOf = textOf;
199
+ exports.toggleSelection = toggleSelection;
200
+ //# sourceMappingURL=listModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listModel.js","sources":["../../../foundation/listModel.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\n/** How a column's cell is drawn. */\nexport enum CellKind {\n Text = 'text',\n Number = 'number',\n Currency = 'currency',\n Date = 'date',\n Status = 'status',\n}\n\n/** One column of a list. */\nexport interface ListColumn {\n field: string;\n header: string;\n kind: CellKind;\n sortable: boolean;\n /** For a status column: the tone of each value (`success`, `warning`, `danger`, `info`, `neutral`). */\n tones: Record<string, string>;\n /** For a currency column: the ISO 4217 code. */\n currency?: string;\n}\n\n/** One record of a list, with the field values as the query returned them. */\nexport type ListRow = Record<string, unknown>;\n\n/** How the list is sorted. */\nexport interface ListSort {\n field: string;\n descending: boolean;\n}\n\n/** The ways the same records can be laid out. */\nexport enum ListVariant {\n Table = 'table',\n Cards = 'cards',\n Grouped = 'grouped',\n}\n\nconst records = (value: unknown): Record<string, unknown>[] =>\n Array.isArray(value) ? value.filter((entry): entry is Record<string, unknown> => typeof entry === 'object' && entry !== null && !Array.isArray(entry)) : [];\n\n/** Reads columns, dropping those without a field and repeated fields. */\nexport function readListColumns(value: unknown): ListColumn[] {\n const seen = new Set<string>();\n return records(value).flatMap(entry => {\n if (typeof entry.field !== 'string' || entry.field.length === 0 || seen.has(entry.field)) return [];\n seen.add(entry.field);\n const tones = typeof entry.tones === 'object' && entry.tones !== null && !Array.isArray(entry.tones)\n ? Object.fromEntries(Object.entries(entry.tones as Record<string, unknown>).filter((pair): pair is [string, string] => typeof pair[1] === 'string')) : {};\n return [{\n field: entry.field,\n header: typeof entry.header === 'string' && entry.header.length > 0 ? entry.header : entry.field,\n kind: (Object.values(CellKind) as string[]).includes(entry.kind as string) ? (entry.kind as CellKind) : CellKind.Text,\n sortable: entry.sortable !== false,\n tones,\n ...(typeof entry.currency === 'string' ? { currency: entry.currency } : {}),\n }];\n });\n}\n\n/** Reads the variant, defaulting to the table. */\nexport const readListVariant = (value: unknown): ListVariant => ((Object.values(ListVariant) as string[]).includes(value as string) ? (value as ListVariant) : ListVariant.Table);\n\n/** The value of a row's field as text for searching and display: a primitive as itself, anything else empty. */\nexport const textOf = (row: ListRow, field: string): string => {\n const value = row[field];\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' ? String(value) : '';\n};\n\n/** The id of a row: its `idField`, else its position, so a list without ids still selects and keys sensibly. */\nexport const rowId = (row: ListRow, index: number, idField: string): string => {\n const value = row[idField];\n return typeof value === 'string' || typeof value === 'number' ? String(value) : `row-${index}`;\n};\n\n/** Rows that contain the search text in any shown column, without regard to case or accents; empty search keeps every row. */\nexport function searchRows(rows: ListRow[], columns: ListColumn[], search: string): ListRow[] {\n const needle = normalize(search);\n if (needle.length === 0) return rows;\n return rows.filter(row => columns.some(column => normalize(textOf(row, column.field)).includes(needle)));\n}\n\n/** Rows that satisfy a filter of conditions joined by AND or OR, in nested groups - the value the filter builder publishes. */\nexport function filterRows(rows: ListRow[], filter: unknown): ListRow[] {\n if (typeof filter !== 'object' || filter === null) return rows;\n const group = filter as { operator?: string; conditions?: { field: string; operator: string; value: string }[]; groups?: unknown[] };\n const tests = [\n ...(group.conditions ?? []).filter(condition => typeof condition?.field === 'string').filter(active).map(condition => (row: ListRow) => satisfies(row, condition)),\n ...(group.groups ?? []).filter(nested => hasConditions(nested)).map(nested => (row: ListRow) => filterRows([row], nested).length === 1),\n ];\n if (tests.length === 0) return rows;\n return rows.filter(row => (group.operator === 'or' ? tests.some(test => test(row)) : tests.every(test => test(row))));\n}\n\nconst active = (condition: { operator: string; value: string }) => ['isEmpty', 'true', 'false'].includes(condition.operator) || (condition.value ?? '').trim().length > 0;\nconst hasConditions = (group: unknown): boolean => {\n const candidate = group as { conditions?: { operator: string; value: string }[]; groups?: unknown[] } | null;\n return (candidate?.conditions ?? []).some(active) || (candidate?.groups ?? []).some(hasConditions);\n};\n\nfunction satisfies(row: ListRow, condition: { field: string; operator: string; value: string }): boolean {\n const raw = row[condition.field];\n const text = normalize(typeof raw === 'string' || typeof raw === 'number' || typeof raw === 'boolean' ? String(raw) : '');\n const value = normalize(condition.value ?? '');\n const number = Number(raw);\n const wanted = Number(condition.value);\n switch (condition.operator) {\n case 'contains': return text.includes(value);\n case 'equals': case 'is': case 'on': return typeof raw === 'number' ? number === wanted : text === value;\n case 'notEquals': case 'isNot': return typeof raw === 'number' ? number !== wanted : text !== value;\n case 'startsWith': return text.startsWith(value);\n case 'isEmpty': return text.length === 0;\n case 'greater': return number > wanted;\n case 'greaterOrEqual': return number >= wanted;\n case 'less': return number < wanted;\n case 'lessOrEqual': return number <= wanted;\n case 'before': return text < value;\n case 'after': return text > value;\n case 'true': return raw === true || text === 'true';\n case 'false': return raw === false || text === 'false';\n default: return true;\n }\n}\n\nfunction normalize(text: string): string {\n return text.normalize('NFD').replace(/\\p{Diacritic}/gu, '').toLocaleLowerCase();\n}\n\n/** Reads a sort from its address form, `field` or `-field` for descending; a field that is not a sortable column is no sort at all. */\nexport function parseSort(text: string | undefined, columns: ListColumn[]): ListSort | undefined {\n if (!text) return undefined;\n const descending = text.startsWith('-');\n const field = descending ? text.slice(1) : text;\n return columns.some(column => column.field === field && column.sortable) ? { field, descending } : undefined;\n}\n\n/** A sort in its address form. */\nexport const formatSort = (sort: ListSort | undefined): string | undefined => (sort === undefined ? undefined : `${sort.descending ? '-' : ''}${sort.field}`);\n\n/** The next sort when a header is pressed: ascending, then descending, then none. */\nexport const nextSort = (current: ListSort | undefined, field: string): ListSort | undefined =>\n current?.field !== field ? { field, descending: false } : current.descending ? undefined : { field, descending: true };\n\n/** Rows in order of a column, numbers as numbers and text by the locale, with ties kept in their original order. */\nexport function sortRows(rows: ListRow[], sort: ListSort | undefined, locale: string): ListRow[] {\n if (!sort) return rows;\n const collator = new Intl.Collator(locale, { numeric: true, sensitivity: 'base' });\n return rows.map((row, index) => ({ row, index })).sort((left, right) => {\n const a = left.row[sort.field];\n const b = right.row[sort.field];\n const order = typeof a === 'number' && typeof b === 'number' ? a - b : collator.compare(textOf(left.row, sort.field), textOf(right.row, sort.field));\n return (order === 0 ? left.index - right.index : sort.descending ? -order : order);\n }).map(entry => entry.row);\n}\n\n/** The slice of rows on a page (1-based), and how many pages there are; a page out of range is clamped rather than empty. */\nexport function paginate<T>(rows: T[], page: number, pageSize: number): { rows: T[]; page: number; pages: number } {\n const size = pageSize > 0 ? Math.floor(pageSize) : rows.length || 1;\n const pages = Math.max(1, Math.ceil(rows.length / size));\n const clamped = Math.min(Math.max(1, Math.floor(Number.isFinite(page) ? page : 1)), pages);\n return { rows: rows.slice((clamped - 1) * size, clamped * size), page: clamped, pages };\n}\n\n/** A group of rows with a subtotal, for the grouped variant. */\nexport interface ListGroup {\n key: string;\n rows: ListRow[];\n subtotal?: number;\n}\n\n/** Groups rows by a field in the order the groups are first seen, with the sum of a numeric field as the subtotal when one is named. */\nexport function groupRows(rows: ListRow[], groupBy: string, totalField?: string): ListGroup[] {\n const groups: ListGroup[] = [];\n for (const row of rows) {\n const key = textOf(row, groupBy);\n const group = groups.find(candidate => candidate.key === key) ?? (groups.push({ key, rows: [] }), groups[groups.length - 1]);\n group.rows.push(row);\n }\n\n return totalField === undefined ? groups : groups.map(group => ({ ...group, subtotal: group.rows.reduce((sum, row) => sum + (typeof row[totalField] === 'number' ? (row[totalField] as number) : 0), 0) }));\n}\n\n/** Toggles an id in a selection that allows one or many. */\nexport const toggleSelection = (selected: string[], id: string, multiple: boolean): string[] =>\n selected.includes(id) ? selected.filter(candidate => candidate !== id) : multiple ? [...selected, id] : [id];\n\n/** Reads a selection from its address form: ids separated by commas. */\nexport const parseSelection = (text: string | undefined): string[] => (text ? text.split(',').filter(id => id.length > 0) : []);\n"],"names":["CellKind","ListVariant","records","value","Array","isArray","filter","entry","readListColumns","seen","Set","flatMap","field","length","has","add","tones","Object","fromEntries","entries","pair","header","kind","values","includes","sortable","currency","readListVariant","textOf","row","String","rowId","index","idField","searchRows","rows","columns","search","needle","normalize","some","column","filterRows","group","tests","conditions","condition","active","map","satisfies","groups","nested","hasConditions","operator","test","every","trim","candidate","raw","text","number","Number","wanted","startsWith","replace","toLocaleLowerCase","parseSort","undefined","descending","slice","formatSort","sort","nextSort","current","sortRows","locale","collator","Intl","Collator","numeric","sensitivity","left","right","a","b","order","compare","paginate","page","pageSize","size","Math","floor","pages","max","ceil","clamped","min","isFinite","groupRows","groupBy","totalField","key","find","push","subtotal","reduce","sum","toggleSelection","selected","id","multiple","parseSelection","split"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /** One tab or sub-section: an id the address and the slot content use, a label, and an optional count badge. */ /** Reads tabs out of a property value; entries without an id are dropped and a repeated id keeps its first. */ function readTabs(value) {
6
+ if (!Array.isArray(value)) return [];
7
+ const seen = new Set();
8
+ return value.flatMap((entry)=>{
9
+ if (typeof entry !== 'object' || entry === null || Array.isArray(entry)) return [];
10
+ const { id, label, badge, disabled } = entry;
11
+ if (typeof id !== 'string' || id.length === 0 || seen.has(id)) return [];
12
+ seen.add(id);
13
+ return [
14
+ {
15
+ id,
16
+ label: typeof label === 'string' && label.length > 0 ? label : id,
17
+ disabled: disabled === true,
18
+ ...typeof badge === 'string' || typeof badge === 'number' ? {
19
+ badge: String(badge)
20
+ } : {}
21
+ }
22
+ ];
23
+ });
24
+ }
25
+ /** The active tab: the requested one when it exists and is enabled, else the first enabled one. Deep links to a tab that was removed fall back instead of showing nothing. */ function activeTab(tabs, requested) {
26
+ const wanted = tabs.find((tab)=>tab.id === requested && !tab.disabled);
27
+ return (wanted ?? tabs.find((tab)=>!tab.disabled))?.id;
28
+ }
29
+ /** The enabled tab one step from the current one, wrapping, or the first/last for Home and End. */ function stepTab(tabs, current, direction) {
30
+ const enabled = tabs.filter((tab)=>!tab.disabled);
31
+ if (enabled.length === 0) return undefined;
32
+ if (direction === 'first') return enabled[0].id;
33
+ if (direction === 'last') return enabled[enabled.length - 1].id;
34
+ const index = Math.max(0, enabled.findIndex((tab)=>tab.id === current));
35
+ return enabled[(index + (direction === 'next' ? 1 : -1) + enabled.length) % enabled.length].id;
36
+ }
37
+
38
+ exports.activeTab = activeTab;
39
+ exports.readTabs = readTabs;
40
+ exports.stepTab = stepTab;
41
+ //# sourceMappingURL=tabModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabModel.js","sources":["../../../foundation/tabModel.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\n/** One tab or sub-section: an id the address and the slot content use, a label, and an optional count badge. */\nexport interface TabItem {\n id: string;\n label: string;\n badge?: string;\n disabled: boolean;\n}\n\n/** Reads tabs out of a property value; entries without an id are dropped and a repeated id keeps its first. */\nexport function readTabs(value: unknown): TabItem[] {\n if (!Array.isArray(value)) return [];\n\n const seen = new Set<string>();\n return value.flatMap((entry): TabItem[] => {\n if (typeof entry !== 'object' || entry === null || Array.isArray(entry)) return [];\n const { id, label, badge, disabled } = entry as Record<string, unknown>;\n if (typeof id !== 'string' || id.length === 0 || seen.has(id)) return [];\n seen.add(id);\n return [{ id, label: typeof label === 'string' && label.length > 0 ? label : id, disabled: disabled === true, ...(typeof badge === 'string' || typeof badge === 'number' ? { badge: String(badge) } : {}) }];\n });\n}\n\n/** The active tab: the requested one when it exists and is enabled, else the first enabled one. Deep links to a tab that was removed fall back instead of showing nothing. */\nexport function activeTab(tabs: TabItem[], requested: string | undefined): string | undefined {\n const wanted = tabs.find(tab => tab.id === requested && !tab.disabled);\n return (wanted ?? tabs.find(tab => !tab.disabled))?.id;\n}\n\n/** The enabled tab one step from the current one, wrapping, or the first/last for Home and End. */\nexport function stepTab(tabs: TabItem[], current: string | undefined, direction: 'next' | 'previous' | 'first' | 'last'): string | undefined {\n const enabled = tabs.filter(tab => !tab.disabled);\n if (enabled.length === 0) return undefined;\n if (direction === 'first') return enabled[0].id;\n if (direction === 'last') return enabled[enabled.length - 1].id;\n\n const index = Math.max(0, enabled.findIndex(tab => tab.id === current));\n return enabled[(index + (direction === 'next' ? 1 : -1) + enabled.length) % enabled.length].id;\n}\n"],"names":["readTabs","value","Array","isArray","seen","Set","flatMap","entry","id","label","badge","disabled","length","has","add","String","activeTab","tabs","requested","wanted","find","tab","stepTab","current","direction","enabled","filter","undefined","index","Math","max","findIndex"],"mappings":";;AAAA;AACA;AAEA,iOASO,SAASA,SAASC,KAAc,EAAA;AACnC,IAAA,IAAI,CAACC,KAAAA,CAAMC,OAAO,CAACF,KAAAA,CAAAA,EAAQ,OAAO,EAAE;AAEpC,IAAA,MAAMG,OAAO,IAAIC,GAAAA,EAAAA;IACjB,OAAOJ,KAAAA,CAAMK,OAAO,CAAC,CAACC,KAAAA,GAAAA;QAClB,IAAI,OAAOA,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,IAAA,IAAQL,MAAMC,OAAO,CAACI,KAAAA,CAAAA,EAAQ,OAAO,EAAE;QAClF,MAAM,EAAEC,EAAE,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGJ,KAAAA;AACvC,QAAA,IAAI,OAAOC,EAAAA,KAAO,QAAA,IAAYA,EAAAA,CAAGI,MAAM,KAAK,CAAA,IAAKR,IAAAA,CAAKS,GAAG,CAACL,EAAAA,CAAAA,EAAK,OAAO,EAAE;AACxEJ,QAAAA,IAAAA,CAAKU,GAAG,CAACN,EAAAA,CAAAA;QACT,OAAO;AAAC,YAAA;AAAEA,gBAAAA,EAAAA;AAAIC,gBAAAA,KAAAA,EAAO,OAAOA,KAAAA,KAAU,QAAA,IAAYA,MAAMG,MAAM,GAAG,IAAIH,KAAAA,GAAQD,EAAAA;AAAIG,gBAAAA,QAAAA,EAAUA,QAAAA,KAAa,IAAA;AAAM,gBAAA,GAAI,OAAOD,KAAAA,KAAU,QAAA,IAAY,OAAOA,UAAU,QAAA,GAAW;AAAEA,oBAAAA,KAAAA,EAAOK,MAAAA,CAAOL,KAAAA;AAAO,iBAAA,GAAI;AAAI;AAAE,SAAA;AAChN,IAAA,CAAA,CAAA;AACJ;AAEA,+KACO,SAASM,SAAAA,CAAUC,IAAe,EAAEC,SAA6B,EAAA;AACpE,IAAA,MAAMC,MAAAA,GAASF,IAAAA,CAAKG,IAAI,CAACC,CAAAA,GAAAA,GAAOA,GAAAA,CAAIb,EAAE,KAAKU,SAAAA,IAAa,CAACG,GAAAA,CAAIV,QAAQ,CAAA;IACrE,OAAQQ,CAAAA,MAAAA,IAAUF,IAAAA,CAAKG,IAAI,CAACC,CAAAA,GAAAA,GAAO,CAACA,GAAAA,CAAIV,QAAQ,CAAA,GAAIH,EAAAA;AACxD;AAEA,oGACO,SAASc,OAAAA,CAAQL,IAAe,EAAEM,OAA2B,EAAEC,SAAiD,EAAA;IACnH,MAAMC,OAAAA,GAAUR,KAAKS,MAAM,CAACL,CAAAA,GAAAA,GAAO,CAACA,IAAIV,QAAQ,CAAA;AAChD,IAAA,IAAIc,OAAAA,CAAQb,MAAM,KAAK,CAAA,EAAG,OAAOe,SAAAA;AACjC,IAAA,IAAIH,cAAc,OAAA,EAAS,OAAOC,OAAO,CAAC,CAAA,CAAE,CAACjB,EAAE;IAC/C,IAAIgB,SAAAA,KAAc,MAAA,EAAQ,OAAOC,OAAO,CAACA,QAAQb,MAAM,GAAG,CAAA,CAAE,CAACJ,EAAE;AAE/D,IAAA,MAAMoB,KAAAA,GAAQC,IAAAA,CAAKC,GAAG,CAAC,CAAA,EAAGL,OAAAA,CAAQM,SAAS,CAACV,CAAAA,GAAAA,GAAOA,GAAAA,CAAIb,EAAE,KAAKe,OAAAA,CAAAA,CAAAA;IAC9D,OAAOE,OAAO,CAAC,CAACG,SAASJ,SAAAA,KAAc,SAAS,CAAA,GAAI,EAAC,CAAA,GAAKC,OAAAA,CAAQb,MAAM,IAAIa,QAAQb,MAAM,CAAC,CAACJ,EAAE;AAClG;;;;"}