@almadar/std 16.235.0 → 16.237.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 +5621 -1993
- package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +32 -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-migration-job.lolo +2 -2
- package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +40 -18
- package/behaviors/lolo/infra/atoms/std-notification-preferences.lolo +25 -11
- package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +0 -5
- package/behaviors/lolo/infra/atoms/std-permission-matrix.lolo +28 -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 +76 -33
- 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 +32 -5
- package/behaviors/lolo/ui/core/atoms/std-export.lolo +0 -10
- package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +15 -4
- package/behaviors/lolo/ui/core/atoms/std-form-advanced.lolo +1 -6
- package/behaviors/lolo/ui/core/atoms/std-gantt-schedule.lolo +8 -1
- 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-image-upload-multi.lolo +2 -2
- package/behaviors/lolo/ui/core/atoms/std-import.lolo +0 -5
- package/behaviors/lolo/ui/core/atoms/std-list.lolo +53 -32
- package/behaviors/lolo/ui/core/atoms/std-modal-editor.lolo +2 -2
- package/behaviors/lolo/ui/core/atoms/std-multi-party-flow.lolo +24 -0
- package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +12 -13
- package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +29 -13
- package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +14 -1
- package/behaviors/lolo/ui/core/atoms/std-role-gate.lolo +39 -0
- package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +84 -16
- package/behaviors/lolo/ui/core/atoms/std-selection.lolo +22 -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 +27 -12
- 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/atoms/ui-time-slot-cell.lolo +36 -0
- package/behaviors/lolo/ui/core/atoms/ui-typography.lolo +5 -0
- package/behaviors/lolo/ui/core/molecules/ui-alert.lolo +5 -0
- package/behaviors/lolo/ui/core/molecules/ui-animated-counter.lolo +1 -1
- 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 +11 -6
- 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 +60 -5
- package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +47 -3
- package/behaviors/lolo/ui/core/molecules/ui-date-range-picker.lolo +3 -3
- package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +31 -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-emoji-picker.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-feature-card.lolo +1 -1
- 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-gantt.lolo +9 -1
- package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +6 -1
- package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +3 -2
- package/behaviors/lolo/ui/core/molecules/ui-likert-scale.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +7 -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 +57 -5
- package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +8 -2
- package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +87 -16
- package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +37 -10
- package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +46 -8
- package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +36 -10
- package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +57 -10
- package/behaviors/lolo/ui/core/organisms/ui-form.lolo +57 -10
- package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +22 -3
- package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +6 -0
- package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +12 -0
- package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +38 -5
- package/behaviors/lolo/ui/core/templates/ui-auth-layout.lolo +1 -1
- package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +3 -45
- package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +7 -2
- package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +2 -37
- package/behaviors/lolo/ui/game/.hand-authored.json +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-dialogue-bubble.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +9 -3
- package/behaviors/lolo/ui/game/atoms/ui-score-display.lolo +1 -1
- 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 +194 -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-migration-job.orb +26 -1
- package/behaviors/registry/infra/atoms/std-mod-queue.orb +379 -103
- package/behaviors/registry/infra/atoms/std-notification-preferences.orb +135 -12
- package/behaviors/registry/infra/atoms/std-notify-on-event.orb +0 -11
- package/behaviors/registry/infra/atoms/std-permission-matrix.orb +137 -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 +499 -49
- 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 +42 -6
- package/behaviors/registry/ui/core/atoms/std-export.orb +0 -16
- package/behaviors/registry/ui/core/atoms/std-file-store.orb +121 -3
- package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -43
- package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +25 -1
- 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-image-upload-multi.orb +4 -0
- package/behaviors/registry/ui/core/atoms/std-import.orb +0 -8
- package/behaviors/registry/ui/core/atoms/std-list.orb +237 -34
- package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +10 -1
- package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +24 -0
- package/behaviors/registry/ui/core/atoms/std-rating-review.orb +37 -19
- package/behaviors/registry/ui/core/atoms/std-record-detail.orb +275 -14
- package/behaviors/registry/ui/core/atoms/std-recurrence.orb +93 -4
- package/behaviors/registry/ui/core/atoms/std-role-gate.orb +217 -0
- package/behaviors/registry/ui/core/atoms/std-saved-search.orb +473 -19
- package/behaviors/registry/ui/core/atoms/std-selection.orb +179 -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 +138 -14
- 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/atoms/ui-time-slot-cell.orb +132 -0
- package/behaviors/registry/ui/core/atoms/ui-typography.orb +7 -0
- package/behaviors/registry/ui/core/molecules/ui-alert.orb +7 -0
- package/behaviors/registry/ui/core/molecules/ui-animated-counter.orb +1 -1
- 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 +89 -6
- 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 +297 -5
- package/behaviors/registry/ui/core/molecules/ui-data-list.orb +261 -3
- package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +1 -3
- package/behaviors/registry/ui/core/molecules/ui-document-details.orb +93 -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-emoji-picker.orb +0 -1
- package/behaviors/registry/ui/core/molecules/ui-feature-card.orb +0 -1
- 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-gantt.orb +28 -1
- package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +53 -1
- package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +9 -2
- package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-menu.orb +74 -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 +337 -5
- package/behaviors/registry/ui/core/molecules/ui-tabs.orb +99 -2
- package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +415 -33
- package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +340 -29
- package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +296 -20
- package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +489 -9
- package/behaviors/registry/ui/core/organisms/ui-form-section.orb +132 -13
- package/behaviors/registry/ui/core/organisms/ui-form.orb +132 -13
- package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +141 -3
- package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +58 -0
- package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +82 -0
- package/behaviors/registry/ui/core/organisms/ui-timeline.orb +159 -8
- package/behaviors/registry/ui/core/templates/ui-auth-layout.orb +0 -1
- package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -173
- package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +53 -2
- package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -116
- package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +1 -2
- package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +100 -3
- package/behaviors/registry/ui/game/atoms/ui-score-display.orb +0 -1
- 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 +8942 -3946
- package/dist/behaviors/functions/index.d.ts +419 -132
- package/dist/behaviors/functions/index.js +8931 -3946
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +8943 -3947
- package/dist/behaviors/query.js +8942 -3946
- package/dist/behaviors-embeddings.hash.json +3 -3
- package/dist/behaviors-embeddings.json +49 -41
- package/dist/behaviors-registry.json +5621 -1993
- package/dist/index.d.ts +3 -3
- package/dist/index.js +8960 -3947
- package/dist/knob-embeddings.hash.json +3 -3
- package/dist/knob-embeddings.json +774 -374
- 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 +3 -3
|
@@ -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"
|
|
@@ -2,13 +2,15 @@ app ui-swipeable-row "1.0.0"
|
|
|
2
2
|
"SwipeableRow — UI factory (1:1 with the @almadar/ui swipeable-row pattern)."
|
|
3
3
|
;; @pattern "swipeable-row"
|
|
4
4
|
orbital SwipeableRowOrbital {
|
|
5
|
-
type SwipeableRowLoaded = Event { data :
|
|
5
|
+
type SwipeableRowLoaded = Event { data : SwipeableRowItem } "SwipeableRow row finished loading; payload.data holds the single row"
|
|
6
6
|
type SwipeableRowLeftActionsItem = {
|
|
7
7
|
label : string!
|
|
8
8
|
icon : icon
|
|
9
9
|
variant : "primary" | "secondary" | "danger" | "ghost"
|
|
10
10
|
event : event!
|
|
11
11
|
eventPayload : @payload event
|
|
12
|
+
when : SExpr
|
|
13
|
+
roles : [string]
|
|
12
14
|
}
|
|
13
15
|
type SwipeableRowRightActionsItem = {
|
|
14
16
|
label : string!
|
|
@@ -16,6 +18,8 @@ orbital SwipeableRowOrbital {
|
|
|
16
18
|
variant : "primary" | "secondary" | "danger" | "ghost"
|
|
17
19
|
event : event!
|
|
18
20
|
eventPayload : @payload event
|
|
21
|
+
when : SExpr
|
|
22
|
+
roles : [string]
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
entity SwipeableRowItem [runtime] {
|
|
@@ -23,24 +27,37 @@ orbital SwipeableRowOrbital {
|
|
|
23
27
|
}
|
|
24
28
|
|
|
25
29
|
trait SwipeableRowRender -> @rebindable SwipeableRowItem [interaction, instance] {
|
|
26
|
-
initial:
|
|
30
|
+
initial: resolving
|
|
27
31
|
|
|
28
|
-
state
|
|
29
|
-
INIT -> idle when @config.selfFetch
|
|
30
|
-
(fetch SwipeableRowItem { emit: { success: SwipeableRowLoaded } })
|
|
32
|
+
state resolving {
|
|
33
|
+
INIT -> idle when (and @config.selfFetch (!= (str/default ?id "") ""))
|
|
34
|
+
(fetch SwipeableRowItem { id: ?id, emit: { success: SwipeableRowLoaded } })
|
|
35
|
+
(render-ui main {
|
|
36
|
+
leftActions: (array/filter @config.leftActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
37
|
+
rightActions: (array/filter @config.rightActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
38
|
+
threshold: @config.threshold
|
|
39
|
+
children: @config.children
|
|
40
|
+
itemData: @entity
|
|
41
|
+
className: @config.className
|
|
42
|
+
type: swipeable-row
|
|
43
|
+
})
|
|
44
|
+
INIT -> idle when (not (and @config.selfFetch (!= (str/default ?id "") "")))
|
|
31
45
|
(render-ui main {
|
|
32
|
-
leftActions: @config.leftActions
|
|
33
|
-
rightActions: @config.rightActions
|
|
46
|
+
leftActions: (array/filter @config.leftActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
47
|
+
rightActions: (array/filter @config.rightActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
34
48
|
threshold: @config.threshold
|
|
35
49
|
children: @config.children
|
|
36
50
|
itemData: @entity
|
|
37
51
|
className: @config.className
|
|
38
52
|
type: swipeable-row
|
|
39
53
|
})
|
|
40
|
-
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
state idle {
|
|
57
|
+
INIT -> idle
|
|
41
58
|
(render-ui main {
|
|
42
|
-
leftActions: @config.leftActions
|
|
43
|
-
rightActions: @config.rightActions
|
|
59
|
+
leftActions: (array/filter @config.leftActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
60
|
+
rightActions: (array/filter @config.rightActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
44
61
|
threshold: @config.threshold
|
|
45
62
|
children: @config.children
|
|
46
63
|
itemData: @entity
|
|
@@ -49,8 +66,8 @@ orbital SwipeableRowOrbital {
|
|
|
49
66
|
})
|
|
50
67
|
SwipeableRowLoaded -> idle
|
|
51
68
|
(render-ui main {
|
|
52
|
-
leftActions: @config.leftActions
|
|
53
|
-
rightActions: @config.rightActions
|
|
69
|
+
leftActions: (array/filter @config.leftActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
70
|
+
rightActions: (array/filter @config.rightActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
54
71
|
threshold: @config.threshold
|
|
55
72
|
children: @config.children
|
|
56
73
|
itemData: @payload.data
|
|
@@ -61,11 +78,19 @@ orbital SwipeableRowOrbital {
|
|
|
61
78
|
|
|
62
79
|
emits {
|
|
63
80
|
SwipeableRowLoaded
|
|
64
|
-
@description "SwipeableRow
|
|
81
|
+
@description "SwipeableRow row finished loading; payload.data holds the single row."
|
|
65
82
|
@synonyms "loaded, fetched, retrieved"
|
|
66
83
|
@tier "essential"
|
|
67
84
|
}
|
|
68
85
|
|
|
86
|
+
listens {
|
|
87
|
+
INIT {
|
|
88
|
+
id : string
|
|
89
|
+
}
|
|
90
|
+
@description "Mount payload; a host that routes to this panel by id (a :id page param) passes it here."
|
|
91
|
+
@tier "internal"
|
|
92
|
+
}
|
|
93
|
+
|
|
69
94
|
config {
|
|
70
95
|
leftActions : [SwipeableRowLeftActionsItem] = []
|
|
71
96
|
@label "Left Actions"
|
|
@@ -87,9 +112,13 @@ orbital SwipeableRowOrbital {
|
|
|
87
112
|
@label "Class Name"
|
|
88
113
|
@description "className prop"
|
|
89
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"
|
|
90
119
|
selfFetch : boolean = true
|
|
91
|
-
@label "Fetch its own
|
|
92
|
-
@description "true (default) =
|
|
120
|
+
@label "Fetch its own row on mount?"
|
|
121
|
+
@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."
|
|
93
122
|
@tier "internal"
|
|
94
123
|
}
|
|
95
124
|
}
|
|
@@ -4,6 +4,10 @@ app ui-table-view "1.0.0"
|
|
|
4
4
|
;; @pattern "table-view"
|
|
5
5
|
orbital TableViewOrbital {
|
|
6
6
|
type TableViewLoaded = Event { data : [TableViewItem] } "TableView rows finished loading; payload.data holds the collection"
|
|
7
|
+
type TableViewEmptyAction = {
|
|
8
|
+
label : string!
|
|
9
|
+
event : event
|
|
10
|
+
}
|
|
7
11
|
type TableViewColumnsItem = {
|
|
8
12
|
key : string!
|
|
9
13
|
field : string
|
|
@@ -14,9 +18,13 @@ orbital TableViewOrbital {
|
|
|
14
18
|
className : string
|
|
15
19
|
weight : "normal" | "medium" | "semibold"
|
|
16
20
|
format : "badge" | "date" | "currency" | "number" | "percent" | "boolean"
|
|
21
|
+
colorMap : Map string TableViewColumnsItemColorMapValue
|
|
22
|
+
labels : Map string string
|
|
23
|
+
variant : "h3" | "h4"
|
|
17
24
|
icon : icon
|
|
18
25
|
sortable : boolean
|
|
19
26
|
}
|
|
27
|
+
type TableViewColumnsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
|
|
20
28
|
type TableViewFieldsItem = {
|
|
21
29
|
key : string!
|
|
22
30
|
field : string
|
|
@@ -27,14 +35,20 @@ orbital TableViewOrbital {
|
|
|
27
35
|
className : string
|
|
28
36
|
weight : "normal" | "medium" | "semibold"
|
|
29
37
|
format : "badge" | "date" | "currency" | "number" | "percent" | "boolean"
|
|
38
|
+
colorMap : Map string TableViewFieldsItemColorMapValue
|
|
39
|
+
labels : Map string string
|
|
40
|
+
variant : "h3" | "h4"
|
|
30
41
|
icon : icon
|
|
31
42
|
sortable : boolean
|
|
32
43
|
}
|
|
44
|
+
type TableViewFieldsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
|
|
33
45
|
type TableViewItemActionsItem = {
|
|
34
46
|
label : string!
|
|
35
47
|
event : event!
|
|
36
48
|
icon : icon
|
|
37
49
|
variant : "primary" | "secondary" | "ghost" | "danger"
|
|
50
|
+
when : SExpr
|
|
51
|
+
roles : [string]
|
|
38
52
|
}
|
|
39
53
|
type TableViewError = {
|
|
40
54
|
message : string!
|
|
@@ -68,10 +82,14 @@ orbital TableViewOrbital {
|
|
|
68
82
|
positionEvent: @config.positionEvent
|
|
69
83
|
dndItemIdField: @config.dndItemIdField
|
|
70
84
|
dndRoot: @config.dndRoot
|
|
85
|
+
emptyIcon: @config.emptyIcon
|
|
86
|
+
emptyTitle: @config.emptyTitle
|
|
87
|
+
emptyDescription: @config.emptyDescription
|
|
88
|
+
emptyAction: @config.emptyAction
|
|
71
89
|
entity: @entity
|
|
72
90
|
columns: @config.columns
|
|
73
91
|
fields: @config.fields
|
|
74
|
-
itemActions: @config.itemActions
|
|
92
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
75
93
|
maxInlineActions: @config.maxInlineActions
|
|
76
94
|
itemClickEvent: @config.itemClickEvent
|
|
77
95
|
selectable: @config.selectable
|
|
@@ -100,10 +118,14 @@ orbital TableViewOrbital {
|
|
|
100
118
|
positionEvent: @config.positionEvent
|
|
101
119
|
dndItemIdField: @config.dndItemIdField
|
|
102
120
|
dndRoot: @config.dndRoot
|
|
121
|
+
emptyIcon: @config.emptyIcon
|
|
122
|
+
emptyTitle: @config.emptyTitle
|
|
123
|
+
emptyDescription: @config.emptyDescription
|
|
124
|
+
emptyAction: @config.emptyAction
|
|
103
125
|
entity: @entity
|
|
104
126
|
columns: @config.columns
|
|
105
127
|
fields: @config.fields
|
|
106
|
-
itemActions: @config.itemActions
|
|
128
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
107
129
|
maxInlineActions: @config.maxInlineActions
|
|
108
130
|
itemClickEvent: @config.itemClickEvent
|
|
109
131
|
selectable: @config.selectable
|
|
@@ -132,10 +154,14 @@ orbital TableViewOrbital {
|
|
|
132
154
|
positionEvent: @config.positionEvent
|
|
133
155
|
dndItemIdField: @config.dndItemIdField
|
|
134
156
|
dndRoot: @config.dndRoot
|
|
157
|
+
emptyIcon: @config.emptyIcon
|
|
158
|
+
emptyTitle: @config.emptyTitle
|
|
159
|
+
emptyDescription: @config.emptyDescription
|
|
160
|
+
emptyAction: @config.emptyAction
|
|
135
161
|
entity: @payload.data
|
|
136
162
|
columns: @config.columns
|
|
137
163
|
fields: @config.fields
|
|
138
|
-
itemActions: @config.itemActions
|
|
164
|
+
itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
139
165
|
maxInlineActions: @config.maxInlineActions
|
|
140
166
|
itemClickEvent: @config.itemClickEvent
|
|
141
167
|
selectable: @config.selectable
|
|
@@ -157,6 +183,12 @@ orbital TableViewOrbital {
|
|
|
157
183
|
}
|
|
158
184
|
|
|
159
185
|
emits {
|
|
186
|
+
@config.itemClickEvent -> external {
|
|
187
|
+
id : string!
|
|
188
|
+
row : @entity!
|
|
189
|
+
}
|
|
190
|
+
@description "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract. Omit = rows are not clickable."
|
|
191
|
+
@tier "essential"
|
|
160
192
|
@config.selectEvent -> external {
|
|
161
193
|
selectedIds : [string]!
|
|
162
194
|
}
|
|
@@ -213,6 +245,22 @@ orbital TableViewOrbital {
|
|
|
213
245
|
@label "Dnd Root"
|
|
214
246
|
@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."
|
|
215
247
|
@tier "presentation"
|
|
248
|
+
emptyIcon : icon
|
|
249
|
+
@label "Empty Icon"
|
|
250
|
+
@description "Domain icon for the empty state."
|
|
251
|
+
@tier "presentation"
|
|
252
|
+
emptyTitle : string
|
|
253
|
+
@label "Empty Title"
|
|
254
|
+
@description "Specific title ('No orders yet')."
|
|
255
|
+
@tier "presentation"
|
|
256
|
+
emptyDescription : string
|
|
257
|
+
@label "Empty Description"
|
|
258
|
+
@description "What will appear here once rows exist."
|
|
259
|
+
@tier "presentation"
|
|
260
|
+
emptyAction : TableViewEmptyAction
|
|
261
|
+
@label "Empty Action"
|
|
262
|
+
@description "Create-the-first-item action."
|
|
263
|
+
@tier "presentation"
|
|
216
264
|
columns : [TableViewColumnsItem] = []
|
|
217
265
|
@label "Columns"
|
|
218
266
|
@description "Column definitions. The compiler emits `columns`; `fields` is the alias."
|
|
@@ -229,9 +277,9 @@ orbital TableViewOrbital {
|
|
|
229
277
|
@label "Max Inline Actions"
|
|
230
278
|
@description "maxInlineActions prop"
|
|
231
279
|
@tier "presentation"
|
|
232
|
-
itemClickEvent : event = ""
|
|
280
|
+
itemClickEvent : event = "ITEM_CLICK"
|
|
233
281
|
@label "Item Click Event"
|
|
234
|
-
@description "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract.
|
|
282
|
+
@description "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract. Omit = rows are not clickable."
|
|
235
283
|
@tier "presentation"
|
|
236
284
|
selectable : boolean = false
|
|
237
285
|
@label "Selectable"
|
|
@@ -289,6 +337,10 @@ orbital TableViewOrbital {
|
|
|
289
337
|
@label "Relations Data"
|
|
290
338
|
@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 column whose field is relation-typed. Same contract DetailPanel takes."
|
|
291
339
|
@tier "presentation"
|
|
340
|
+
viewerRole : string = ""
|
|
341
|
+
@label "Viewer's role"
|
|
342
|
+
@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."
|
|
343
|
+
@tier "policy"
|
|
292
344
|
selfFetch : boolean = true
|
|
293
345
|
@label "Fetch its own rows on mount?"
|
|
294
346
|
@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."
|
|
@@ -13,6 +13,7 @@ orbital TabsOrbital {
|
|
|
13
13
|
disabled : boolean
|
|
14
14
|
event : event
|
|
15
15
|
active : boolean
|
|
16
|
+
roles : [string]
|
|
16
17
|
}
|
|
17
18
|
type TabsItemsItemIconAsset = {
|
|
18
19
|
url : asset!
|
|
@@ -39,6 +40,7 @@ orbital TabsOrbital {
|
|
|
39
40
|
disabled : boolean
|
|
40
41
|
event : event
|
|
41
42
|
active : boolean
|
|
43
|
+
roles : [string]
|
|
42
44
|
}
|
|
43
45
|
type TabsTabsItemIconAsset = {
|
|
44
46
|
url : asset!
|
|
@@ -65,8 +67,8 @@ orbital TabsOrbital {
|
|
|
65
67
|
state idle {
|
|
66
68
|
INIT -> idle
|
|
67
69
|
(render-ui main {
|
|
68
|
-
items: @config.items
|
|
69
|
-
tabs: @config.tabs
|
|
70
|
+
items: (array/filter @config.items (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
71
|
+
tabs: (array/filter @config.tabs (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
70
72
|
defaultActiveTab: @config.defaultActiveTab
|
|
71
73
|
activeTab: @config.activeTab
|
|
72
74
|
onTabChange: @config.onTabChange
|
|
@@ -123,6 +125,10 @@ orbital TabsOrbital {
|
|
|
123
125
|
@label "Class Name"
|
|
124
126
|
@description "Additional CSS classes"
|
|
125
127
|
@tier "presentation"
|
|
128
|
+
viewerRole : string = ""
|
|
129
|
+
@label "Viewer's role"
|
|
130
|
+
@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."
|
|
131
|
+
@tier "policy"
|
|
126
132
|
}
|
|
127
133
|
}
|
|
128
134
|
|
|
@@ -2,7 +2,7 @@ app ui-detail-panel "1.0.0"
|
|
|
2
2
|
"DetailPanel — UI factory (1:1 with the @almadar/ui detail-panel pattern)."
|
|
3
3
|
;; @pattern "detail-panel"
|
|
4
4
|
orbital DetailPanelOrbital {
|
|
5
|
-
type DetailPanelLoaded = Event { data :
|
|
5
|
+
type DetailPanelLoaded = Event { data : DetailPanelItem } "DetailPanel row finished loading; payload.data holds the single row"
|
|
6
6
|
type DetailPanelError = {
|
|
7
7
|
message : string!
|
|
8
8
|
name : string
|
|
@@ -29,6 +29,8 @@ orbital DetailPanelOrbital {
|
|
|
29
29
|
event : event
|
|
30
30
|
navigatesTo : string
|
|
31
31
|
variant : "primary" | "secondary" | "ghost" | "danger"
|
|
32
|
+
when : SExpr
|
|
33
|
+
roles : [string]
|
|
32
34
|
}
|
|
33
35
|
type DetailPanelBackAction = {
|
|
34
36
|
label : string!
|
|
@@ -36,14 +38,21 @@ orbital DetailPanelOrbital {
|
|
|
36
38
|
event : event
|
|
37
39
|
navigatesTo : string
|
|
38
40
|
variant : "primary" | "secondary" | "ghost" | "danger"
|
|
41
|
+
when : SExpr
|
|
39
42
|
}
|
|
40
43
|
type DetailPanelFieldsItem = {
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
name : string!
|
|
45
|
+
label : string
|
|
46
|
+
icon : icon
|
|
47
|
+
variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
|
|
48
|
+
format : "date" | "currency" | "number" | "boolean" | "percent"
|
|
49
|
+
colorMap : Map string DetailPanelFieldsItemColorMapValue
|
|
50
|
+
labels : Map string string
|
|
43
51
|
type : string
|
|
44
52
|
values : [string]
|
|
45
53
|
relation : DetailPanelFieldsItemRelation
|
|
46
54
|
}
|
|
55
|
+
type DetailPanelFieldsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
|
|
47
56
|
type DetailPanelFieldsItemRelation = {
|
|
48
57
|
entity : string!
|
|
49
58
|
cardinality : "one" | "many" | "one-to-many" | "many-to-one" | "many-to-many"
|
|
@@ -60,11 +69,48 @@ orbital DetailPanelOrbital {
|
|
|
60
69
|
}
|
|
61
70
|
|
|
62
71
|
trait DetailPanelRender -> @rebindable DetailPanelItem [interaction, instance] {
|
|
63
|
-
initial:
|
|
72
|
+
initial: resolving
|
|
64
73
|
|
|
65
|
-
state
|
|
66
|
-
INIT -> idle when @config.selfFetch
|
|
67
|
-
(fetch DetailPanelItem { emit: { success: DetailPanelLoaded } })
|
|
74
|
+
state resolving {
|
|
75
|
+
INIT -> idle when (and @config.selfFetch (!= (str/default ?id "") "") (!= @config.mode "create"))
|
|
76
|
+
(fetch DetailPanelItem { id: ?id, emit: { success: DetailPanelLoaded } })
|
|
77
|
+
(render-ui main {
|
|
78
|
+
className: @config.className
|
|
79
|
+
isLoading: @config.isLoading
|
|
80
|
+
error: @config.error
|
|
81
|
+
sortBy: @config.sortBy
|
|
82
|
+
sortDirection: @config.sortDirection
|
|
83
|
+
searchValue: @config.searchValue
|
|
84
|
+
page: @config.pageProp
|
|
85
|
+
pageSize: @config.pageSize
|
|
86
|
+
totalCount: @config.totalCount
|
|
87
|
+
activeFilters: @config.activeFilters
|
|
88
|
+
selectedIds: @config.selectedIds
|
|
89
|
+
entity: @entity
|
|
90
|
+
title: @config.title
|
|
91
|
+
onTitleCommit: @config.onTitleCommit
|
|
92
|
+
subtitle: @config.subtitle
|
|
93
|
+
status: @config.status
|
|
94
|
+
avatar: @config.avatar
|
|
95
|
+
sections: @config.sections
|
|
96
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
97
|
+
maxInlineActions: @config.maxInlineActions
|
|
98
|
+
backAction: @config.backAction
|
|
99
|
+
closeEvent: @config.closeEvent
|
|
100
|
+
footer: @config.footer
|
|
101
|
+
slideOver: @config.slideOver
|
|
102
|
+
fields: @config.fields
|
|
103
|
+
fieldNames: @config.fieldNames
|
|
104
|
+
initialData: @entity
|
|
105
|
+
mode: @config.mode
|
|
106
|
+
position: @config.position
|
|
107
|
+
width: @config.width
|
|
108
|
+
displayFields: @config.displayFields
|
|
109
|
+
showActions: @config.showActions
|
|
110
|
+
relationsData: @config.relationsData
|
|
111
|
+
type: detail-panel
|
|
112
|
+
})
|
|
113
|
+
INIT -> idle when (not (and @config.selfFetch (!= (str/default ?id "") "") (!= @config.mode "create")))
|
|
68
114
|
(render-ui main {
|
|
69
115
|
className: @config.className
|
|
70
116
|
isLoading: @config.isLoading
|
|
@@ -84,9 +130,10 @@ orbital DetailPanelOrbital {
|
|
|
84
130
|
status: @config.status
|
|
85
131
|
avatar: @config.avatar
|
|
86
132
|
sections: @config.sections
|
|
87
|
-
actions: @config.actions
|
|
133
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
88
134
|
maxInlineActions: @config.maxInlineActions
|
|
89
135
|
backAction: @config.backAction
|
|
136
|
+
closeEvent: @config.closeEvent
|
|
90
137
|
footer: @config.footer
|
|
91
138
|
slideOver: @config.slideOver
|
|
92
139
|
fields: @config.fields
|
|
@@ -100,7 +147,10 @@ orbital DetailPanelOrbital {
|
|
|
100
147
|
relationsData: @config.relationsData
|
|
101
148
|
type: detail-panel
|
|
102
149
|
})
|
|
103
|
-
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
state idle {
|
|
153
|
+
INIT -> idle
|
|
104
154
|
(render-ui main {
|
|
105
155
|
className: @config.className
|
|
106
156
|
isLoading: @config.isLoading
|
|
@@ -120,9 +170,10 @@ orbital DetailPanelOrbital {
|
|
|
120
170
|
status: @config.status
|
|
121
171
|
avatar: @config.avatar
|
|
122
172
|
sections: @config.sections
|
|
123
|
-
actions: @config.actions
|
|
173
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
124
174
|
maxInlineActions: @config.maxInlineActions
|
|
125
175
|
backAction: @config.backAction
|
|
176
|
+
closeEvent: @config.closeEvent
|
|
126
177
|
footer: @config.footer
|
|
127
178
|
slideOver: @config.slideOver
|
|
128
179
|
fields: @config.fields
|
|
@@ -156,9 +207,10 @@ orbital DetailPanelOrbital {
|
|
|
156
207
|
status: @config.status
|
|
157
208
|
avatar: @config.avatar
|
|
158
209
|
sections: @config.sections
|
|
159
|
-
actions: @config.actions
|
|
210
|
+
actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
|
|
160
211
|
maxInlineActions: @config.maxInlineActions
|
|
161
212
|
backAction: @config.backAction
|
|
213
|
+
closeEvent: @config.closeEvent
|
|
162
214
|
footer: @config.footer
|
|
163
215
|
slideOver: @config.slideOver
|
|
164
216
|
fields: @config.fields
|
|
@@ -175,12 +227,23 @@ orbital DetailPanelOrbital {
|
|
|
175
227
|
}
|
|
176
228
|
|
|
177
229
|
emits {
|
|
230
|
+
@config.closeEvent -> external { }
|
|
231
|
+
@description "The event of the declared action that dismisses the panel. The matching action renders as the header close ×; omitted, no × is drawn."
|
|
232
|
+
@tier "essential"
|
|
178
233
|
DetailPanelLoaded
|
|
179
|
-
@description "DetailPanel
|
|
234
|
+
@description "DetailPanel row finished loading; payload.data holds the single row."
|
|
180
235
|
@synonyms "loaded, fetched, retrieved"
|
|
181
236
|
@tier "essential"
|
|
182
237
|
}
|
|
183
238
|
|
|
239
|
+
listens {
|
|
240
|
+
INIT {
|
|
241
|
+
id : string
|
|
242
|
+
}
|
|
243
|
+
@description "Mount payload; a host that routes to this panel by id (a :id page param) passes it here."
|
|
244
|
+
@tier "internal"
|
|
245
|
+
}
|
|
246
|
+
|
|
184
247
|
config {
|
|
185
248
|
className : string
|
|
186
249
|
@label "Class Name"
|
|
@@ -263,6 +326,10 @@ orbital DetailPanelOrbital {
|
|
|
263
326
|
@label "Back Action"
|
|
264
327
|
@description "Navigation-back affordance. Renders top-LEFT before the title (OS/back convention — Almadar_UX §8.4), spatially separated from the right-aligned action buttons + close X. Never inferred from actions[] labels."
|
|
265
328
|
@tier "presentation"
|
|
329
|
+
closeEvent : event = "CLOSE"
|
|
330
|
+
@label "Close Event"
|
|
331
|
+
@description "The event of the declared action that dismisses the panel. The matching action renders as the header close ×; omitted, no × is drawn."
|
|
332
|
+
@tier "presentation"
|
|
266
333
|
footer : node
|
|
267
334
|
@label "Footer"
|
|
268
335
|
@description "footer prop"
|
|
@@ -271,9 +338,9 @@ orbital DetailPanelOrbital {
|
|
|
271
338
|
@label "Slide Over"
|
|
272
339
|
@description "slideOver prop"
|
|
273
340
|
@tier "presentation"
|
|
274
|
-
fields : [DetailPanelFieldsItem] = [{
|
|
341
|
+
fields : [DetailPanelFieldsItem] = [{ name: "Name", label: "Label", icon: "circle", variant: h3, format: date, type: "Type", values: ["Item", "Item 2"], relation: { entity: "Entity", cardinality: one } }, { name: "Name 2", label: "Label 2", icon: "circle", variant: h4, format: currency, type: "Type 2", values: ["Item", "Item 2"], relation: { entity: "Entity 2", cardinality: many } }]
|
|
275
342
|
@label "Fields"
|
|
276
|
-
@description "Fields to display
|
|
343
|
+
@description "Fields to display: field names, or declared fields ({ name, label, variant, format, colorMap, labels })"
|
|
277
344
|
@tier "presentation"
|
|
278
345
|
fieldNames : [string] = []
|
|
279
346
|
@label "Field Names"
|
|
@@ -303,9 +370,13 @@ orbital DetailPanelOrbital {
|
|
|
303
370
|
@label "Relations Data"
|
|
304
371
|
@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."
|
|
305
372
|
@tier "presentation"
|
|
373
|
+
viewerRole : string = ""
|
|
374
|
+
@label "Viewer's role"
|
|
375
|
+
@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."
|
|
376
|
+
@tier "policy"
|
|
306
377
|
selfFetch : boolean = true
|
|
307
|
-
@label "Fetch its own
|
|
308
|
-
@description "true (default) =
|
|
378
|
+
@label "Fetch its own row on mount?"
|
|
379
|
+
@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."
|
|
309
380
|
@tier "internal"
|
|
310
381
|
}
|
|
311
382
|
}
|