@almadar/std 16.235.0 → 16.236.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.
- package/behaviors/behaviors-registry.json +4402 -1898
- package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +25 -41
- package/behaviors/lolo/infra/atoms/std-audit-capture.lolo +0 -5
- package/behaviors/lolo/infra/atoms/std-cache-aside.lolo +0 -24
- package/behaviors/lolo/infra/atoms/std-circuit-breaker.lolo +1 -17
- package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +17 -24
- package/behaviors/lolo/infra/atoms/std-data-import.lolo +8 -11
- package/behaviors/lolo/infra/atoms/std-game-clock.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-knowledge-loop.lolo +0 -5
- package/behaviors/lolo/infra/atoms/std-lifecycle.lolo +3 -1
- package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +40 -18
- package/behaviors/lolo/infra/atoms/std-notification-preferences.lolo +20 -11
- package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +0 -5
- package/behaviors/lolo/infra/atoms/std-permission-matrix.lolo +23 -11
- package/behaviors/lolo/infra/atoms/std-rate-limiter.lolo +84 -22
- package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +1 -6
- package/behaviors/lolo/ml/atoms/std-graph-builder.lolo +3 -1
- package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +0 -4
- package/behaviors/lolo/ml/atoms/std-ml-similarity.lolo +0 -4
- package/behaviors/lolo/ui/avl/atoms/ui-avl-state-machine.lolo +12 -0
- package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +55 -9
- package/behaviors/lolo/ui/core/atoms/std-app-search.lolo +6 -2
- package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +19 -14
- package/behaviors/lolo/ui/core/atoms/std-board.lolo +77 -27
- package/behaviors/lolo/ui/core/atoms/std-browse.lolo +44 -28
- package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +7 -3
- package/behaviors/lolo/ui/core/atoms/std-esign-flow.lolo +25 -13
- package/behaviors/lolo/ui/core/atoms/std-esign-request.lolo +5 -0
- package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +0 -5
- package/behaviors/lolo/ui/core/atoms/std-export.lolo +0 -10
- package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +7 -3
- package/behaviors/lolo/ui/core/atoms/std-form-advanced.lolo +1 -6
- package/behaviors/lolo/ui/core/atoms/std-geosearch.lolo +1 -0
- package/behaviors/lolo/ui/core/atoms/std-graphs.lolo +20 -4
- package/behaviors/lolo/ui/core/atoms/std-import.lolo +0 -5
- package/behaviors/lolo/ui/core/atoms/std-list.lolo +46 -32
- package/behaviors/lolo/ui/core/atoms/std-modal-editor.lolo +2 -2
- package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +12 -13
- package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +16 -12
- package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +10 -1
- package/behaviors/lolo/ui/core/atoms/std-role-gate.lolo +39 -0
- package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +78 -16
- package/behaviors/lolo/ui/core/atoms/std-selection.lolo +15 -10
- package/behaviors/lolo/ui/core/atoms/std-stats.lolo +5 -5
- package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +3 -0
- package/behaviors/lolo/ui/core/atoms/std-thread.lolo +41 -73
- package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +20 -11
- package/behaviors/lolo/ui/core/atoms/std-vote.lolo +0 -4
- package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +3 -3
- package/behaviors/lolo/ui/core/atoms/ui-presence.lolo +21 -0
- package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-chart.lolo +11 -1
- package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +13 -8
- package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +7 -2
- package/behaviors/lolo/ui/core/molecules/ui-commit-row.lolo +2 -2
- package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +8 -0
- package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +41 -3
- package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +41 -3
- package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +30 -9
- package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +8 -3
- package/behaviors/lolo/ui/core/molecules/ui-document-viewer.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +13 -0
- package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-form-actions.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-meter.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +5 -0
- package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +11 -1
- package/behaviors/lolo/ui/core/molecules/ui-page-transition.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +44 -15
- package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +41 -3
- package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +8 -2
- package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +66 -12
- package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +9 -3
- package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +9 -3
- package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +18 -9
- package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +55 -10
- package/behaviors/lolo/ui/core/organisms/ui-form.lolo +55 -10
- package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +8 -3
- package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +12 -0
- package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +8 -3
- package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +2 -44
- package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +6 -1
- package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +2 -37
- package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +8 -2
- package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +2 -2
- package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +0 -4
- package/behaviors/lolo/ui/game/organisms/std-platformer-puzzle.lolo +2 -66
- package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +0 -4
- package/behaviors/lolo/ui/game/organisms/std-worldmap-board-2d.lolo +0 -4
- package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +6 -6
- package/behaviors/lolo-behavior-contracts.json +1 -1
- package/behaviors/registry/factory-signatures.json +1 -1
- package/behaviors/registry/infra/atoms/std-approval-gate.orb +124 -67
- package/behaviors/registry/infra/atoms/std-audit-capture.orb +0 -8
- package/behaviors/registry/infra/atoms/std-cache-aside.orb +0 -84
- package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -44
- package/behaviors/registry/infra/atoms/std-data-erasure.orb +124 -55
- package/behaviors/registry/infra/atoms/std-data-import.orb +12 -11
- package/behaviors/registry/infra/atoms/std-game-clock.orb +31 -0
- package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +0 -57
- package/behaviors/registry/infra/atoms/std-lifecycle.orb +43 -0
- package/behaviors/registry/infra/atoms/std-mod-queue.orb +379 -103
- package/behaviors/registry/infra/atoms/std-notification-preferences.orb +126 -12
- package/behaviors/registry/infra/atoms/std-notify-on-event.orb +0 -11
- package/behaviors/registry/infra/atoms/std-permission-matrix.orb +128 -12
- package/behaviors/registry/infra/atoms/std-rate-limiter.orb +287 -72
- package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +5 -8
- package/behaviors/registry/ml/atoms/std-graph-builder.orb +11 -0
- package/behaviors/registry/ml/atoms/std-ml-classify.orb +0 -7
- package/behaviors/registry/ml/atoms/std-ml-similarity.orb +0 -7
- package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +82 -0
- package/behaviors/registry/ui/core/atoms/std-app-layout.orb +417 -9
- package/behaviors/registry/ui/core/atoms/std-app-search.orb +53 -1
- package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +209 -19
- package/behaviors/registry/ui/core/atoms/std-board.orb +242 -61
- package/behaviors/registry/ui/core/atoms/std-browse.orb +295 -41
- package/behaviors/registry/ui/core/atoms/std-calendar.orb +96 -2
- package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +122 -15
- package/behaviors/registry/ui/core/atoms/std-esign-request.orb +11 -0
- package/behaviors/registry/ui/core/atoms/std-event-log.orb +0 -8
- package/behaviors/registry/ui/core/atoms/std-export.orb +0 -16
- package/behaviors/registry/ui/core/atoms/std-file-store.orb +109 -2
- package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -43
- package/behaviors/registry/ui/core/atoms/std-geosearch.orb +5 -0
- package/behaviors/registry/ui/core/atoms/std-graphs.orb +173 -66
- package/behaviors/registry/ui/core/atoms/std-import.orb +0 -8
- package/behaviors/registry/ui/core/atoms/std-list.orb +226 -34
- package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +10 -1
- package/behaviors/registry/ui/core/atoms/std-rating-review.orb +37 -19
- package/behaviors/registry/ui/core/atoms/std-record-detail.orb +204 -11
- package/behaviors/registry/ui/core/atoms/std-recurrence.orb +89 -4
- package/behaviors/registry/ui/core/atoms/std-role-gate.orb +217 -0
- package/behaviors/registry/ui/core/atoms/std-saved-search.orb +419 -19
- package/behaviors/registry/ui/core/atoms/std-selection.orb +140 -10
- package/behaviors/registry/ui/core/atoms/std-stats.orb +73 -1
- package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +3 -0
- package/behaviors/registry/ui/core/atoms/std-thread.orb +190 -115
- package/behaviors/registry/ui/core/atoms/std-version-history.orb +127 -13
- package/behaviors/registry/ui/core/atoms/std-vote.orb +0 -9
- package/behaviors/registry/ui/core/atoms/std-wizard.orb +33 -3
- package/behaviors/registry/ui/core/atoms/ui-presence.orb +59 -0
- package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-chart.orb +68 -1
- package/behaviors/registry/ui/core/molecules/ui-code-block.orb +291 -8
- package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +87 -2
- package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +3 -2
- package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +32 -0
- package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +189 -3
- package/behaviors/registry/ui/core/molecules/ui-data-list.orb +189 -3
- package/behaviors/registry/ui/core/molecules/ui-document-details.orb +81 -24
- package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +121 -3
- package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-drawer.orb +40 -0
- package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-menu.orb +57 -1
- package/behaviors/registry/ui/core/molecules/ui-meter.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-modal.orb +8 -0
- package/behaviors/registry/ui/core/molecules/ui-page-header.orb +60 -1
- package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +393 -23
- package/behaviors/registry/ui/core/molecules/ui-table-view.orb +189 -3
- package/behaviors/registry/ui/core/molecules/ui-tabs.orb +99 -2
- package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +282 -20
- package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +130 -3
- package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +130 -3
- package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +367 -9
- package/behaviors/registry/ui/core/organisms/ui-form-section.orb +104 -13
- package/behaviors/registry/ui/core/organisms/ui-form.orb +104 -13
- package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +121 -3
- package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +82 -0
- package/behaviors/registry/ui/core/organisms/ui-timeline.orb +121 -3
- package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -172
- package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +53 -1
- package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -116
- package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +99 -2
- package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +10 -0
- package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +0 -7
- package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -807
- package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +0 -7
- package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +0 -7
- package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +6 -0
- package/canonical-operators.json +18 -1
- package/dist/behaviors/exports-reader.js +7662 -3762
- package/dist/behaviors/functions/index.d.ts +309 -104
- package/dist/behaviors/functions/index.js +7651 -3762
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +7663 -3763
- package/dist/behaviors/query.js +7662 -3762
- package/dist/behaviors-embeddings.hash.json +3 -3
- package/dist/behaviors-embeddings.json +35 -27
- package/dist/behaviors-registry.json +4402 -1898
- package/dist/index.d.ts +3 -3
- package/dist/index.js +7680 -3763
- package/dist/knob-embeddings.hash.json +3 -3
- package/dist/knob-embeddings.json +612 -352
- package/dist/modules/anim.d.ts +1 -1
- package/dist/modules/array.d.ts +1 -1
- package/dist/modules/array.js +15 -0
- package/dist/modules/async.d.ts +1 -1
- package/dist/modules/behavior.d.ts +1 -1
- package/dist/modules/browser.d.ts +1 -1
- package/dist/modules/composition.d.ts +1 -1
- package/dist/modules/contract.d.ts +1 -1
- package/dist/modules/core.d.ts +1 -1
- package/dist/modules/core.js +2 -0
- package/dist/modules/data.d.ts +1 -1
- package/dist/modules/ease.d.ts +1 -1
- package/dist/modules/format.d.ts +1 -1
- package/dist/modules/geo.d.ts +1 -1
- package/dist/modules/graph.d.ts +1 -1
- package/dist/modules/grid.d.ts +1 -1
- package/dist/modules/index.d.ts +1 -1
- package/dist/modules/index.js +17 -0
- package/dist/modules/integration.d.ts +1 -1
- package/dist/modules/json.d.ts +1 -1
- package/dist/modules/llm.d.ts +1 -1
- package/dist/modules/math.d.ts +1 -1
- package/dist/modules/memory.d.ts +1 -1
- package/dist/modules/nn.d.ts +1 -1
- package/dist/modules/noise.d.ts +1 -1
- package/dist/modules/object.d.ts +1 -1
- package/dist/modules/os.d.ts +1 -1
- package/dist/modules/path.d.ts +1 -1
- package/dist/modules/prob.d.ts +1 -1
- package/dist/modules/session.d.ts +1 -1
- package/dist/modules/str.d.ts +1 -1
- package/dist/modules/tensor.d.ts +1 -1
- package/dist/modules/time.d.ts +1 -1
- package/dist/modules/trace.d.ts +1 -1
- package/dist/modules/train.d.ts +1 -1
- package/dist/modules/validate.d.ts +1 -1
- package/dist/modules/vector.d.ts +1 -1
- package/dist/modules/workspace.d.ts +1 -1
- package/dist/registry/factory-signatures.json +1 -1
- package/dist/registry.d.ts +2 -2
- package/dist/registry.js +17 -0
- package/dist/{types-Ggla7OK7.d.ts → types-DLx38UFZ.d.ts} +23 -3
- package/package.json +2 -2
|
@@ -4,6 +4,10 @@ app ui-data-grid "1.0.0"
|
|
|
4
4
|
;; @pattern "data-grid"
|
|
5
5
|
orbital DataGridOrbital {
|
|
6
6
|
type DataGridLoaded = Event { data : [DataGridItem] } "DataGrid rows finished loading; payload.data holds the collection"
|
|
7
|
+
type DataGridEmptyAction = {
|
|
8
|
+
label : string!
|
|
9
|
+
event : event
|
|
10
|
+
}
|
|
7
11
|
type DataGridFieldsItem = {
|
|
8
12
|
name : string!
|
|
9
13
|
label : string
|
|
@@ -26,6 +30,8 @@ orbital DataGridOrbital {
|
|
|
26
30
|
navigatesTo : string
|
|
27
31
|
icon : icon
|
|
28
32
|
variant : "primary" | "secondary" | "ghost" | "danger"
|
|
33
|
+
when : SExpr
|
|
34
|
+
roles : [string]
|
|
29
35
|
}
|
|
30
36
|
type DataGridError = {
|
|
31
37
|
message : string!
|
|
@@ -59,10 +65,14 @@ orbital DataGridOrbital {
|
|
|
59
65
|
positionEvent: @config.positionEvent
|
|
60
66
|
dndItemIdField: @config.dndItemIdField
|
|
61
67
|
dndRoot: @config.dndRoot
|
|
68
|
+
emptyIcon: @config.emptyIcon
|
|
69
|
+
emptyTitle: @config.emptyTitle
|
|
70
|
+
emptyDescription: @config.emptyDescription
|
|
71
|
+
emptyAction: @config.emptyAction
|
|
62
72
|
entity: @entity
|
|
63
73
|
fields: @config.fields
|
|
64
74
|
columns: @config.columns
|
|
65
|
-
itemActions: @config.itemActions
|
|
75
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
66
76
|
maxInlineActions: @config.maxInlineActions
|
|
67
77
|
scrollX: @config.scrollX
|
|
68
78
|
cols: @config.cols
|
|
@@ -92,10 +102,14 @@ orbital DataGridOrbital {
|
|
|
92
102
|
positionEvent: @config.positionEvent
|
|
93
103
|
dndItemIdField: @config.dndItemIdField
|
|
94
104
|
dndRoot: @config.dndRoot
|
|
105
|
+
emptyIcon: @config.emptyIcon
|
|
106
|
+
emptyTitle: @config.emptyTitle
|
|
107
|
+
emptyDescription: @config.emptyDescription
|
|
108
|
+
emptyAction: @config.emptyAction
|
|
95
109
|
entity: @entity
|
|
96
110
|
fields: @config.fields
|
|
97
111
|
columns: @config.columns
|
|
98
|
-
itemActions: @config.itemActions
|
|
112
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
99
113
|
maxInlineActions: @config.maxInlineActions
|
|
100
114
|
scrollX: @config.scrollX
|
|
101
115
|
cols: @config.cols
|
|
@@ -125,10 +139,14 @@ orbital DataGridOrbital {
|
|
|
125
139
|
positionEvent: @config.positionEvent
|
|
126
140
|
dndItemIdField: @config.dndItemIdField
|
|
127
141
|
dndRoot: @config.dndRoot
|
|
142
|
+
emptyIcon: @config.emptyIcon
|
|
143
|
+
emptyTitle: @config.emptyTitle
|
|
144
|
+
emptyDescription: @config.emptyDescription
|
|
145
|
+
emptyAction: @config.emptyAction
|
|
128
146
|
entity: @payload.data
|
|
129
147
|
fields: @config.fields
|
|
130
148
|
columns: @config.columns
|
|
131
|
-
itemActions: @config.itemActions
|
|
149
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
132
150
|
maxInlineActions: @config.maxInlineActions
|
|
133
151
|
scrollX: @config.scrollX
|
|
134
152
|
cols: @config.cols
|
|
@@ -204,6 +222,22 @@ orbital DataGridOrbital {
|
|
|
204
222
|
@label "Dnd Root"
|
|
205
223
|
@description "Mark this container as the DnD root for its subtree — descendant zones share one DndContext (cross-container drag). Use on an outer container whose own items are not draggable."
|
|
206
224
|
@tier "presentation"
|
|
225
|
+
emptyIcon : icon
|
|
226
|
+
@label "Empty Icon"
|
|
227
|
+
@description "Domain icon for the empty state."
|
|
228
|
+
@tier "presentation"
|
|
229
|
+
emptyTitle : string
|
|
230
|
+
@label "Empty Title"
|
|
231
|
+
@description "Specific title ('No orders yet')."
|
|
232
|
+
@tier "presentation"
|
|
233
|
+
emptyDescription : string
|
|
234
|
+
@label "Empty Description"
|
|
235
|
+
@description "What will appear here once rows exist."
|
|
236
|
+
@tier "presentation"
|
|
237
|
+
emptyAction : DataGridEmptyAction
|
|
238
|
+
@label "Empty Action"
|
|
239
|
+
@description "Create-the-first-item action."
|
|
240
|
+
@tier "presentation"
|
|
207
241
|
fields : [DataGridFieldsItem] = []
|
|
208
242
|
@label "Fields"
|
|
209
243
|
@description "Field definitions for rendering each card. The pattern contract in `@almadar/core/patterns` documents `columns` as the wire-format alias the compiler emits — both names resolve to the same shape here. Pass either."
|
|
@@ -284,6 +318,10 @@ orbital DataGridOrbital {
|
|
|
284
318
|
@label "Relations Data"
|
|
285
319
|
@description "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a field whose type is relation. Same contract DetailPanel takes."
|
|
286
320
|
@tier "presentation"
|
|
321
|
+
viewerRole : string = ""
|
|
322
|
+
@label "Viewer's role"
|
|
323
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
324
|
+
@tier "policy"
|
|
287
325
|
selfFetch : boolean = true
|
|
288
326
|
@label "Fetch its own rows on mount?"
|
|
289
327
|
@description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
|
|
@@ -3,6 +3,10 @@ app ui-data-list "1.0.0"
|
|
|
3
3
|
;; @pattern "data-list"
|
|
4
4
|
orbital DataListOrbital {
|
|
5
5
|
type DataListLoaded = Event { data : [DataListItem] } "DataList rows finished loading; payload.data holds the collection"
|
|
6
|
+
type DataListEmptyAction = {
|
|
7
|
+
label : string!
|
|
8
|
+
event : event
|
|
9
|
+
}
|
|
6
10
|
type DataListFieldsItem = {
|
|
7
11
|
name : string!
|
|
8
12
|
label : string
|
|
@@ -22,6 +26,8 @@ orbital DataListOrbital {
|
|
|
22
26
|
event : event!
|
|
23
27
|
icon : icon
|
|
24
28
|
variant : "primary" | "secondary" | "ghost" | "danger"
|
|
29
|
+
when : SExpr
|
|
30
|
+
roles : [string]
|
|
25
31
|
}
|
|
26
32
|
type DataListError = {
|
|
27
33
|
message : string!
|
|
@@ -65,10 +71,14 @@ orbital DataListOrbital {
|
|
|
65
71
|
positionEvent: @config.positionEvent
|
|
66
72
|
dndItemIdField: @config.dndItemIdField
|
|
67
73
|
dndRoot: @config.dndRoot
|
|
74
|
+
emptyIcon: @config.emptyIcon
|
|
75
|
+
emptyTitle: @config.emptyTitle
|
|
76
|
+
emptyDescription: @config.emptyDescription
|
|
77
|
+
emptyAction: @config.emptyAction
|
|
68
78
|
entity: @entity
|
|
69
79
|
fields: @config.fields
|
|
70
80
|
columns: @config.columns
|
|
71
|
-
itemActions: @config.itemActions
|
|
81
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
72
82
|
maxInlineActions: @config.maxInlineActions
|
|
73
83
|
itemClickEvent: @config.itemClickEvent
|
|
74
84
|
gap: @config.gap
|
|
@@ -107,10 +117,14 @@ orbital DataListOrbital {
|
|
|
107
117
|
positionEvent: @config.positionEvent
|
|
108
118
|
dndItemIdField: @config.dndItemIdField
|
|
109
119
|
dndRoot: @config.dndRoot
|
|
120
|
+
emptyIcon: @config.emptyIcon
|
|
121
|
+
emptyTitle: @config.emptyTitle
|
|
122
|
+
emptyDescription: @config.emptyDescription
|
|
123
|
+
emptyAction: @config.emptyAction
|
|
110
124
|
entity: @entity
|
|
111
125
|
fields: @config.fields
|
|
112
126
|
columns: @config.columns
|
|
113
|
-
itemActions: @config.itemActions
|
|
127
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
114
128
|
maxInlineActions: @config.maxInlineActions
|
|
115
129
|
itemClickEvent: @config.itemClickEvent
|
|
116
130
|
gap: @config.gap
|
|
@@ -149,10 +163,14 @@ orbital DataListOrbital {
|
|
|
149
163
|
positionEvent: @config.positionEvent
|
|
150
164
|
dndItemIdField: @config.dndItemIdField
|
|
151
165
|
dndRoot: @config.dndRoot
|
|
166
|
+
emptyIcon: @config.emptyIcon
|
|
167
|
+
emptyTitle: @config.emptyTitle
|
|
168
|
+
emptyDescription: @config.emptyDescription
|
|
169
|
+
emptyAction: @config.emptyAction
|
|
152
170
|
entity: @payload.data
|
|
153
171
|
fields: @config.fields
|
|
154
172
|
columns: @config.columns
|
|
155
|
-
itemActions: @config.itemActions
|
|
173
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
156
174
|
maxInlineActions: @config.maxInlineActions
|
|
157
175
|
itemClickEvent: @config.itemClickEvent
|
|
158
176
|
gap: @config.gap
|
|
@@ -250,6 +268,22 @@ orbital DataListOrbital {
|
|
|
250
268
|
@label "Dnd Root"
|
|
251
269
|
@description "Mark this container as the DnD root for its subtree — descendant zones share one DndContext (cross-container drag). Use on an outer container whose own items are not draggable."
|
|
252
270
|
@tier "presentation"
|
|
271
|
+
emptyIcon : icon
|
|
272
|
+
@label "Empty Icon"
|
|
273
|
+
@description "Domain icon for the empty state."
|
|
274
|
+
@tier "presentation"
|
|
275
|
+
emptyTitle : string
|
|
276
|
+
@label "Empty Title"
|
|
277
|
+
@description "Specific title ('No orders yet')."
|
|
278
|
+
@tier "presentation"
|
|
279
|
+
emptyDescription : string
|
|
280
|
+
@label "Empty Description"
|
|
281
|
+
@description "What will appear here once rows exist."
|
|
282
|
+
@tier "presentation"
|
|
283
|
+
emptyAction : DataListEmptyAction
|
|
284
|
+
@label "Empty Action"
|
|
285
|
+
@description "Create-the-first-item action."
|
|
286
|
+
@tier "presentation"
|
|
253
287
|
fields : [DataListFieldsItem] = []
|
|
254
288
|
@label "Fields"
|
|
255
289
|
@description "Field definitions for rendering each row. The pattern contract in `@almadar/core/patterns` documents `columns` as the wire-format alias the compiler emits — both names resolve to the same shape here. Pass either."
|
|
@@ -366,6 +400,10 @@ orbital DataListOrbital {
|
|
|
366
400
|
@label "Relations Data"
|
|
367
401
|
@description "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a field whose type is relation. Same contract DetailPanel takes."
|
|
368
402
|
@tier "presentation"
|
|
403
|
+
viewerRole : string = ""
|
|
404
|
+
@label "Viewer's role"
|
|
405
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
406
|
+
@tier "policy"
|
|
369
407
|
selfFetch : boolean = true
|
|
370
408
|
@label "Fetch its own rows on mount?"
|
|
371
409
|
@description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
|
|
@@ -3,7 +3,7 @@ app ui-document-details "1.0.0"
|
|
|
3
3
|
;; @capabilities "document settings, page details, post settings sidebar, metadata panel, document properties, publish settings"
|
|
4
4
|
;; @pattern "document-details"
|
|
5
5
|
orbital DocumentDetailsOrbital {
|
|
6
|
-
type DocumentDetailsLoaded = Event { data :
|
|
6
|
+
type DocumentDetailsLoaded = Event { data : DocumentDetailsItem } "DocumentDetails row finished loading; payload.data holds the single row"
|
|
7
7
|
type DocumentDetailsFieldsItem = {
|
|
8
8
|
name : string
|
|
9
9
|
key : string
|
|
@@ -28,11 +28,11 @@ orbital DocumentDetailsOrbital {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
trait DocumentDetailsRender -> @rebindable DocumentDetailsItem [interaction, instance] {
|
|
31
|
-
initial:
|
|
31
|
+
initial: resolving
|
|
32
32
|
|
|
33
|
-
state
|
|
34
|
-
INIT -> idle when @config.selfFetch
|
|
35
|
-
(fetch DocumentDetailsItem { emit: { success: DocumentDetailsLoaded } })
|
|
33
|
+
state resolving {
|
|
34
|
+
INIT -> idle when (and @config.selfFetch (!= (str/default ?id "") ""))
|
|
35
|
+
(fetch DocumentDetailsItem { id: ?id, emit: { success: DocumentDetailsLoaded } })
|
|
36
36
|
(render-ui main {
|
|
37
37
|
entity: @entity
|
|
38
38
|
fields: @config.fields
|
|
@@ -42,7 +42,20 @@ orbital DocumentDetailsOrbital {
|
|
|
42
42
|
className: @config.className
|
|
43
43
|
type: document-details
|
|
44
44
|
})
|
|
45
|
-
INIT -> idle when (not @config.selfFetch)
|
|
45
|
+
INIT -> idle when (not (and @config.selfFetch (!= (str/default ?id "") "")))
|
|
46
|
+
(render-ui main {
|
|
47
|
+
entity: @entity
|
|
48
|
+
fields: @config.fields
|
|
49
|
+
metaCommitEvent: @config.metaCommitEvent
|
|
50
|
+
relationEvent: @config.relationEvent
|
|
51
|
+
title: @config.title
|
|
52
|
+
className: @config.className
|
|
53
|
+
type: document-details
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
state idle {
|
|
58
|
+
INIT -> idle
|
|
46
59
|
(render-ui main {
|
|
47
60
|
entity: @entity
|
|
48
61
|
fields: @config.fields
|
|
@@ -79,11 +92,19 @@ orbital DocumentDetailsOrbital {
|
|
|
79
92
|
@description "Makes relation chips clickable: emitted with { field, id, name } when a hydrated relation value (or one row of a many-relation) is clicked — the host routes it to the linked record's own surface."
|
|
80
93
|
@tier "essential"
|
|
81
94
|
DocumentDetailsLoaded
|
|
82
|
-
@description "DocumentDetails
|
|
95
|
+
@description "DocumentDetails row finished loading; payload.data holds the single row."
|
|
83
96
|
@synonyms "loaded, fetched, retrieved"
|
|
84
97
|
@tier "essential"
|
|
85
98
|
}
|
|
86
99
|
|
|
100
|
+
listens {
|
|
101
|
+
INIT {
|
|
102
|
+
id : string
|
|
103
|
+
}
|
|
104
|
+
@description "Mount payload; a host that routes to this panel by id (a :id page param) passes it here."
|
|
105
|
+
@tier "internal"
|
|
106
|
+
}
|
|
107
|
+
|
|
87
108
|
config {
|
|
88
109
|
fields : [DocumentDetailsFieldsItem] = []
|
|
89
110
|
@label "Fields"
|
|
@@ -106,8 +127,8 @@ orbital DocumentDetailsOrbital {
|
|
|
106
127
|
@description "className prop"
|
|
107
128
|
@tier "presentation"
|
|
108
129
|
selfFetch : boolean = true
|
|
109
|
-
@label "Fetch its own
|
|
110
|
-
@description "true (default) =
|
|
130
|
+
@label "Fetch its own row on mount?"
|
|
131
|
+
@description "true (default) = a mount that carries an id loads that one row (never the collection); a create-mode mount skips the load. false = a composing atom owns the load."
|
|
111
132
|
@tier "internal"
|
|
112
133
|
}
|
|
113
134
|
}
|
|
@@ -8,6 +8,7 @@ orbital DocumentPanelOrbital {
|
|
|
8
8
|
event : event
|
|
9
9
|
icon : icon
|
|
10
10
|
variant : "primary" | "secondary" | "ghost" | "danger"
|
|
11
|
+
roles : [string]
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
entity DocumentPanelItem [runtime] {
|
|
@@ -29,7 +30,7 @@ orbital DocumentPanelOrbital {
|
|
|
29
30
|
coverImage: @config.coverImage
|
|
30
31
|
icon: @config.icon
|
|
31
32
|
value: @entity.value
|
|
32
|
-
actions: @config.actions
|
|
33
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
33
34
|
maxInlineActions: @config.maxInlineActions
|
|
34
35
|
editing: @config.editing
|
|
35
36
|
titleCommitEvent: @config.titleCommitEvent
|
|
@@ -51,7 +52,7 @@ orbital DocumentPanelOrbital {
|
|
|
51
52
|
coverImage: @config.coverImage
|
|
52
53
|
icon: @config.icon
|
|
53
54
|
value: @entity.value
|
|
54
|
-
actions: @config.actions
|
|
55
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
55
56
|
maxInlineActions: @config.maxInlineActions
|
|
56
57
|
editing: @config.editing
|
|
57
58
|
titleCommitEvent: @config.titleCommitEvent
|
|
@@ -73,7 +74,7 @@ orbital DocumentPanelOrbital {
|
|
|
73
74
|
coverImage: @config.coverImage
|
|
74
75
|
icon: @config.icon
|
|
75
76
|
value: @entity.value
|
|
76
|
-
actions: @config.actions
|
|
77
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
77
78
|
maxInlineActions: @config.maxInlineActions
|
|
78
79
|
editing: @config.editing
|
|
79
80
|
titleCommitEvent: @config.titleCommitEvent
|
|
@@ -192,6 +193,10 @@ orbital DocumentPanelOrbital {
|
|
|
192
193
|
@label "Class Name"
|
|
193
194
|
@description "className prop"
|
|
194
195
|
@tier "presentation"
|
|
196
|
+
viewerRole : string = ""
|
|
197
|
+
@label "Viewer's role"
|
|
198
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
199
|
+
@tier "policy"
|
|
195
200
|
}
|
|
196
201
|
}
|
|
197
202
|
|
|
@@ -7,6 +7,7 @@ orbital DocumentViewerOrbital {
|
|
|
7
7
|
event : event
|
|
8
8
|
navigatesTo : string
|
|
9
9
|
variant : "primary" | "secondary" | "ghost"
|
|
10
|
+
roles : [string]
|
|
10
11
|
}
|
|
11
12
|
type DocumentViewerDocumentsItem = {
|
|
12
13
|
label : string!
|
|
@@ -41,7 +42,7 @@ orbital DocumentViewerOrbital {
|
|
|
41
42
|
showToolbar: @config.showToolbar
|
|
42
43
|
showDownload: @config.showDownload
|
|
43
44
|
showPrint: @config.showPrint
|
|
44
|
-
actions: @config.actions
|
|
45
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
45
46
|
documents: @config.documents
|
|
46
47
|
isLoading: @config.isLoading
|
|
47
48
|
error: @config.error
|
|
@@ -111,6 +112,10 @@ orbital DocumentViewerOrbital {
|
|
|
111
112
|
@label "Class Name"
|
|
112
113
|
@description "Additional CSS classes"
|
|
113
114
|
@tier "presentation"
|
|
115
|
+
viewerRole : string = ""
|
|
116
|
+
@label "Viewer's role"
|
|
117
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
118
|
+
@tier "policy"
|
|
114
119
|
}
|
|
115
120
|
}
|
|
116
121
|
|
|
@@ -19,6 +19,8 @@ orbital DrawerOrbital {
|
|
|
19
19
|
OPEN -> open
|
|
20
20
|
(render-ui drawer {
|
|
21
21
|
isOpen: @config.isOpen
|
|
22
|
+
onExited: @config.onExited
|
|
23
|
+
contained: @config.contained
|
|
22
24
|
onClose: @config.onClose
|
|
23
25
|
title: @config.title
|
|
24
26
|
children: @config.children
|
|
@@ -45,6 +47,9 @@ orbital DrawerOrbital {
|
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
emits {
|
|
50
|
+
@config.onExited -> external { }
|
|
51
|
+
@description "Fires after the exit animation completes (the drawer is about to unmount)."
|
|
52
|
+
@tier "essential"
|
|
48
53
|
@config.onClose -> external { }
|
|
49
54
|
@description "Callback when drawer should close (injected by slot wrapper)"
|
|
50
55
|
@tier "essential"
|
|
@@ -60,6 +65,14 @@ orbital DrawerOrbital {
|
|
|
60
65
|
@label "Is Open"
|
|
61
66
|
@description "Whether the drawer is open (defaults to true when rendered by slot wrapper)"
|
|
62
67
|
@tier "presentation"
|
|
68
|
+
onExited : event = "EXITED"
|
|
69
|
+
@label "On Exited"
|
|
70
|
+
@description "Fires after the exit animation completes (the drawer is about to unmount)."
|
|
71
|
+
@tier "presentation"
|
|
72
|
+
contained : boolean = false
|
|
73
|
+
@label "Contained"
|
|
74
|
+
@description "Render inside the nearest positioned ancestor (a preview frame) instead of over the window."
|
|
75
|
+
@tier "presentation"
|
|
63
76
|
onClose : event = "CLOSE"
|
|
64
77
|
@label "On Close"
|
|
65
78
|
@description "Callback when drawer should close (injected by slot wrapper)"
|
|
@@ -8,6 +8,7 @@ orbital FloatingActionButtonOrbital {
|
|
|
8
8
|
icon : icon!
|
|
9
9
|
event : event
|
|
10
10
|
variant : "primary" | "secondary" | "success" | "danger" | "warning"
|
|
11
|
+
roles : [string]
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
entity FloatingActionButtonItem [runtime] {
|
|
@@ -22,7 +23,7 @@ orbital FloatingActionButtonOrbital {
|
|
|
22
23
|
(render-ui main {
|
|
23
24
|
action: @config.action
|
|
24
25
|
actionPayload: @config.actionPayload
|
|
25
|
-
actions: @config.actions
|
|
26
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
26
27
|
icon: @config.icon
|
|
27
28
|
onClick: @config.onClick
|
|
28
29
|
variant: @config.variant
|
|
@@ -79,6 +80,10 @@ orbital FloatingActionButtonOrbital {
|
|
|
79
80
|
@label "Class Name"
|
|
80
81
|
@description "Additional CSS classes"
|
|
81
82
|
@tier "presentation"
|
|
83
|
+
viewerRole : string = ""
|
|
84
|
+
@label "Viewer's role"
|
|
85
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
86
|
+
@tier "policy"
|
|
82
87
|
}
|
|
83
88
|
}
|
|
84
89
|
|
|
@@ -12,6 +12,7 @@ orbital FloatingToolbarOrbital {
|
|
|
12
12
|
active : boolean
|
|
13
13
|
disabled : boolean
|
|
14
14
|
testId : string
|
|
15
|
+
roles : [string]
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
entity FloatingToolbarItem [runtime] {
|
|
@@ -24,7 +25,7 @@ orbital FloatingToolbarOrbital {
|
|
|
24
25
|
state idle {
|
|
25
26
|
INIT -> idle
|
|
26
27
|
(render-ui main {
|
|
27
|
-
items: @config.items
|
|
28
|
+
items: (array/filter @config.items (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
28
29
|
position: @config.position
|
|
29
30
|
children: @config.children
|
|
30
31
|
className: @config.className
|
|
@@ -49,6 +50,10 @@ orbital FloatingToolbarOrbital {
|
|
|
49
50
|
@label "Class Name"
|
|
50
51
|
@description "Additional CSS classes on the positioned root"
|
|
51
52
|
@tier "presentation"
|
|
53
|
+
viewerRole : string = ""
|
|
54
|
+
@label "Viewer's role"
|
|
55
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
56
|
+
@tier "policy"
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
|
|
@@ -15,6 +15,7 @@ orbital FormActionsOrbital {
|
|
|
15
15
|
event : event
|
|
16
16
|
navigatesTo : string
|
|
17
17
|
variant : string
|
|
18
|
+
roles : [string]
|
|
18
19
|
}
|
|
19
20
|
type FormActionsFiltersItem = {
|
|
20
21
|
field : string!
|
|
@@ -40,7 +41,7 @@ orbital FormActionsOrbital {
|
|
|
40
41
|
(render-ui main {
|
|
41
42
|
children: @config.children
|
|
42
43
|
primary: @config.primary
|
|
43
|
-
secondary: @config.secondary
|
|
44
|
+
secondary: (array/filter @config.secondary (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
44
45
|
variant: @config.variant
|
|
45
46
|
orientation: @config.orientation
|
|
46
47
|
className: @config.className
|
|
@@ -84,6 +85,10 @@ orbital FormActionsOrbital {
|
|
|
84
85
|
@label "Look"
|
|
85
86
|
@description "Layer 2 visual treatment for the action-cluster (form-actions) pattern."
|
|
86
87
|
@tier "presentation"
|
|
88
|
+
viewerRole : string = ""
|
|
89
|
+
@label "Viewer's role"
|
|
90
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
91
|
+
@tier "policy"
|
|
87
92
|
}
|
|
88
93
|
}
|
|
89
94
|
|
|
@@ -41,6 +41,7 @@ orbital GraphCanvasOrbital {
|
|
|
41
41
|
event : event
|
|
42
42
|
navigatesTo : string
|
|
43
43
|
variant : "primary" | "secondary" | "ghost"
|
|
44
|
+
roles : [string]
|
|
44
45
|
}
|
|
45
46
|
type GraphCanvasError = {
|
|
46
47
|
message : string!
|
|
@@ -128,7 +129,7 @@ orbital GraphCanvasOrbital {
|
|
|
128
129
|
showLabels: @config.showLabels
|
|
129
130
|
interactive: @config.interactive
|
|
130
131
|
draggable: @config.draggable
|
|
131
|
-
actions: @config.actions
|
|
132
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
132
133
|
onNodeClick: @config.onNodeClick
|
|
133
134
|
onMarkClick: @config.onMarkClick
|
|
134
135
|
onNodeDoubleClick: @config.onNodeDoubleClick
|
|
@@ -268,6 +269,10 @@ orbital GraphCanvasOrbital {
|
|
|
268
269
|
@label "Class Name"
|
|
269
270
|
@description "Additional CSS classes"
|
|
270
271
|
@tier "presentation"
|
|
272
|
+
viewerRole : string = ""
|
|
273
|
+
@label "Viewer's role"
|
|
274
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
275
|
+
@tier "policy"
|
|
271
276
|
}
|
|
272
277
|
}
|
|
273
278
|
|
|
@@ -14,6 +14,7 @@ orbital MenuOrbital {
|
|
|
14
14
|
url : string
|
|
15
15
|
variant : "default" | "danger"
|
|
16
16
|
subMenu : [MenuItemsItem]
|
|
17
|
+
roles : [string]
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
entity MenuItem [runtime] {
|
|
@@ -27,7 +28,7 @@ orbital MenuOrbital {
|
|
|
27
28
|
INIT -> idle
|
|
28
29
|
(render-ui main {
|
|
29
30
|
trigger: @config.trigger
|
|
30
|
-
items: @config.items
|
|
31
|
+
items: (array/filter @config.items (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
31
32
|
position: @config.position
|
|
32
33
|
className: @config.className
|
|
33
34
|
header: @config.header
|
|
@@ -61,6 +62,10 @@ orbital MenuOrbital {
|
|
|
61
62
|
@label "Footer"
|
|
62
63
|
@description "Optional slot rendered below the items."
|
|
63
64
|
@tier "presentation"
|
|
65
|
+
viewerRole : string = ""
|
|
66
|
+
@label "Viewer's role"
|
|
67
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
68
|
+
@tier "policy"
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
71
|
|
|
@@ -12,6 +12,7 @@ orbital MeterOrbital {
|
|
|
12
12
|
event : event
|
|
13
13
|
navigatesTo : string
|
|
14
14
|
variant : "primary" | "secondary" | "ghost"
|
|
15
|
+
roles : [string]
|
|
15
16
|
}
|
|
16
17
|
type MeterError = {
|
|
17
18
|
message : string!
|
|
@@ -40,7 +41,7 @@ orbital MeterOrbital {
|
|
|
40
41
|
segments: @config.segments
|
|
41
42
|
showValue: @config.showValue
|
|
42
43
|
size: @config.size
|
|
43
|
-
actions: @config.actions
|
|
44
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
44
45
|
isLoading: @config.isLoading
|
|
45
46
|
error: @config.error
|
|
46
47
|
className: @config.className
|
|
@@ -105,6 +106,10 @@ orbital MeterOrbital {
|
|
|
105
106
|
@label "Class Name"
|
|
106
107
|
@description "Additional CSS classes"
|
|
107
108
|
@tier "presentation"
|
|
109
|
+
viewerRole : string = ""
|
|
110
|
+
@label "Viewer's role"
|
|
111
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
112
|
+
@tier "policy"
|
|
108
113
|
}
|
|
109
114
|
}
|
|
110
115
|
|
|
@@ -32,6 +32,7 @@ orbital ModalOrbital {
|
|
|
32
32
|
closeEvent: @config.closeEvent
|
|
33
33
|
swipeDownToClose: @config.swipeDownToClose
|
|
34
34
|
look: @config.look
|
|
35
|
+
contained: @config.contained
|
|
35
36
|
type: modal
|
|
36
37
|
})
|
|
37
38
|
}
|
|
@@ -117,6 +118,10 @@ orbital ModalOrbital {
|
|
|
117
118
|
@label "Look"
|
|
118
119
|
@description "Layer 2 visual treatment — orthogonal to the semantic variant."
|
|
119
120
|
@tier "presentation"
|
|
121
|
+
contained : boolean = false
|
|
122
|
+
@label "Contained"
|
|
123
|
+
@description "Render inside the nearest positioned ancestor (a preview frame) instead of portaling over the whole window; page scroll is left alone."
|
|
124
|
+
@tier "presentation"
|
|
120
125
|
}
|
|
121
126
|
}
|
|
122
127
|
|
|
@@ -18,6 +18,7 @@ orbital PageHeaderOrbital {
|
|
|
18
18
|
icon : icon
|
|
19
19
|
loading : boolean
|
|
20
20
|
disabled : boolean
|
|
21
|
+
roles : [string]
|
|
21
22
|
}
|
|
22
23
|
type PageHeaderError = {
|
|
23
24
|
message : string!
|
|
@@ -42,12 +43,13 @@ orbital PageHeaderOrbital {
|
|
|
42
43
|
INIT -> idle
|
|
43
44
|
(render-ui main {
|
|
44
45
|
title: @config.title
|
|
46
|
+
icon: @config.icon
|
|
45
47
|
subtitle: @config.subtitle
|
|
46
48
|
showBack: @config.showBack
|
|
47
49
|
backEvent: @config.backEvent
|
|
48
50
|
breadcrumbs: @config.breadcrumbs
|
|
49
51
|
status: @config.status
|
|
50
|
-
actions: @config.actions
|
|
52
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
51
53
|
isLoading: @config.isLoading
|
|
52
54
|
error: @config.error
|
|
53
55
|
tabs: @config.tabs
|
|
@@ -75,6 +77,10 @@ orbital PageHeaderOrbital {
|
|
|
75
77
|
@label "Title"
|
|
76
78
|
@description "Page title - accepts string or number from generated code accessing dynamic entity data"
|
|
77
79
|
@tier "presentation"
|
|
80
|
+
icon : icon
|
|
81
|
+
@label "Icon"
|
|
82
|
+
@description "Icon shown before the title."
|
|
83
|
+
@tier "presentation"
|
|
78
84
|
subtitle : scalar
|
|
79
85
|
@label "Subtitle"
|
|
80
86
|
@description "Optional subtitle/description"
|
|
@@ -127,6 +133,10 @@ orbital PageHeaderOrbital {
|
|
|
127
133
|
@label "Class Name"
|
|
128
134
|
@description "className prop"
|
|
129
135
|
@tier "presentation"
|
|
136
|
+
viewerRole : string = ""
|
|
137
|
+
@label "Viewer's role"
|
|
138
|
+
@description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show."
|
|
139
|
+
@tier "policy"
|
|
130
140
|
}
|
|
131
141
|
}
|
|
132
142
|
|
|
@@ -22,7 +22,7 @@ orbital PageTransitionOrbital {
|
|
|
22
22
|
config {
|
|
23
23
|
locationKey : string = ""
|
|
24
24
|
@label "Location Key"
|
|
25
|
-
@description "Value that changes on navigation (
|
|
25
|
+
@description "Value that changes on navigation (a page path)."
|
|
26
26
|
@tier "presentation"
|
|
27
27
|
children : node
|
|
28
28
|
@label "Children"
|