pi-apexlang 0.2.2 → 0.4.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/README.md +22 -5
- package/THIRD_PARTY_NOTICES.md +2 -2
- package/UPSTREAM.json +2 -2
- package/docs/assets/overview.en.png +0 -0
- package/docs/assets/overview.en.svg +89 -0
- package/docs/assets/overview.uk.png +0 -0
- package/docs/assets/overview.uk.svg +89 -0
- package/docs/en/README.md +41 -0
- package/docs/en/architecture.md +73 -0
- package/docs/en/getting-started.md +77 -0
- package/docs/en/maintenance.md +83 -0
- package/docs/en/tool-reference.md +85 -0
- package/docs/uk/README.md +41 -0
- package/docs/uk/architecture.md +73 -0
- package/docs/uk/getting-started.md +77 -0
- package/docs/uk/maintenance.md +83 -0
- package/docs/uk/tool-reference.md +85 -0
- package/extensions/apexlang/index.ts +19 -10
- package/extensions/lib/apexlang-cli.d.mts +1 -2
- package/extensions/lib/apexlang-cli.mjs +18 -13
- package/extensions/lib/apexlang-local-validate.mjs +83 -0
- package/extensions/lib/apexlang-local-validator.py +116 -0
- package/extensions/lib/apexlang-runtime-validate.mjs +76 -0
- package/package.json +2 -1
- package/skills/apexlang/APEXlang Skills and Workflows.md +325 -0
- package/skills/apexlang/README.md +6 -6
- package/skills/apexlang/RELEASE-NOTES.md +2 -2
- package/skills/apexlang/SKILL.md +24 -19
- package/skills/apexlang/agents/openai.yaml +4 -3
- package/skills/apexlang/assets/apex-generation/components.registry.json +1001 -16
- package/skills/apexlang/assets/apexlang/domains-catalog.json +6 -1
- package/skills/apexlang/assets/component-attributes.json +1924 -180
- package/skills/apexlang/assets/component-policies.json +19 -10
- package/skills/apexlang/assets/contracts/grammar-semantic-rules.json +134 -0
- package/skills/apexlang/assets/contracts/package-layers.json +56 -0
- package/skills/apexlang/assets/contracts/page-construction-packs.json +154 -0
- package/skills/apexlang/assets/contracts/page-patterns.json +119 -0
- package/skills/apexlang/assets/grammar/apexlang.ebnf +11743 -0
- package/skills/apexlang/assets/indexes/font-apex-icon-index.json +1699 -0
- package/skills/apexlang/assets/routing-catalog-main.json +11 -10
- package/skills/apexlang/assets/routing-load-policy.json +35 -9
- package/skills/apexlang/assets/rules-mapping.json +110 -2
- package/skills/apexlang/assets/rules.catalog.json +1298 -0
- package/skills/apexlang/assets/validator-fix-recipes.json +372 -17
- package/skills/apexlang/assets/workspace-intelligence.json +7 -10
- package/skills/apexlang/manifest.json +268 -12
- package/skills/apexlang/references/domains/README.md +1 -1
- package/skills/apexlang/references/domains/page-components/buttons.md +2 -2
- package/skills/apexlang/references/domains/page-components/page-items.md +3 -3
- package/skills/apexlang/references/domains/page-components/regions/region-display-selector/workflow-region-display-selector.md +69 -0
- package/skills/apexlang/references/domains/page-components/regions.md +1 -0
- package/skills/apexlang/references/domains/template-components/comments.md +61 -0
- package/skills/apexlang/references/domains/template-components/registry.md +2 -0
- package/skills/apexlang/references/domains/template-components/templates.md +47 -0
- package/skills/apexlang/references/domains/template-components/timeline.md +51 -0
- package/skills/apexlang/references/ops/one-message-router-contract.md +2 -2
- package/skills/apexlang/references/ops/runtime-gates/01-direct-sqlcl-import.md +1 -1
- package/skills/apexlang/references/ops/runtime-gates/02-direct-sqlcl-validate-gate.md +1 -1
- package/skills/apexlang/references/ops/runtime-gates.md +17 -16
- package/skills/apexlang/references/ops/sqlcl-agents/00-connection-gate.md +7 -7
- package/skills/apexlang/references/ops/sqlcl.md +7 -8
- package/skills/apexlang/references/policies/compiler-prop-map.md +6 -4
- package/skills/apexlang/references/policies/governance/00-governance.md +2 -2
- package/skills/apexlang/references/policies/memory-bank/00-guard/ai.guard.md +126 -922
- package/skills/apexlang/references/policies/memory-bank/20-data/apex.logic.md +3 -3
- package/skills/apexlang/references/policies/memory-bank/20-data/db.connection.md +9 -11
- package/skills/apexlang/references/policies/memory-bank/30-pages/apex.cards-page.md +95 -0
- package/skills/apexlang/references/policies/memory-bank/30-pages/apex.page.md +2 -2
- package/skills/apexlang/references/policies/memory-bank/30-pages/apex.smart-filter-search.md +145 -74
- package/skills/apexlang/references/policies/memory-bank/40-components/apex.region-interactions.md +9 -2
- package/skills/apexlang/references/policies/memory-bank/40-components/apex.region-media.md +6 -5
- package/skills/apexlang/references/policies/memory-bank/systemPatterns.md +9 -1
- package/skills/apexlang/references/workflows/apex-generation/agents/20-agent-draft.md +51 -232
- package/skills/apexlang/references/workflows/apex-generation/agents/30-agent-critique.md +49 -449
- package/skills/apexlang/references/workflows/apex-generation/agents/40-agent-revision.md +38 -238
- package/skills/apexlang/references/workflows/apex-generation/nlu/nlu-routing-test-matrix.md +8 -2
- package/skills/apexlang/references/workflows/apex-generation/nlu/nlu-routing-validation-notes.md +19 -3
- package/skills/apexlang/references/workflows/apex-generation/registry.md +15 -1
- package/skills/apexlang/references/workflows/apex-generation/templates.md +1 -1
- package/skills/apexlang/references/workflows/apex-generation.md +1 -1
- package/skills/apexlang/references/workflows/apexlang/apexlang-execution-model.md +5 -5
- package/skills/apexlang/references/workflows/apexlang/prompt-contracts.md +81 -10
- package/skills/apexlang/references/workflows/apexlang/workflow-create-app-from-fr-and-model.md +18 -7
- package/skills/apexlang/release-notes.json +156 -0
- package/skills/apexlang/runtime/grammar_contract.mjs +1166 -0
- package/skills/apexlang/runtime/internal/python/format_apexlang.py +210 -0
- package/skills/apexlang/runtime/internal/python/validate_apexlang.py +14142 -5843
- package/skills/apexlang/runtime/internal/python/validator_common.py +2 -0
- package/skills/apexlang/runtime/lib/catalogs.mjs +1026 -0
- package/skills/apexlang/runtime/lib/common.mjs +35 -0
- package/skills/apexlang/runtime/runtime.bundle.mjs +457 -57
- package/skills/apexlang/templates/items/combobox/combobox.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/date-picker/date-picker._common.md +1 -1
- package/skills/apexlang/templates/items/date-picker/date-picker.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/file-upload/file-upload._common.md +30 -24
- package/skills/apexlang/templates/items/file-upload/file-upload.compact-template.md +6 -0
- package/skills/apexlang/templates/items/file-upload/file-upload.explicit-defaults.md +23 -8
- package/skills/apexlang/templates/items/file-upload/file-upload.minimal.md +6 -0
- package/skills/apexlang/templates/items/hidden-item/hidden-item._common.md +1 -1
- package/skills/apexlang/templates/items/hidden-item/hidden-item.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/items._common.md +3 -2
- package/skills/apexlang/templates/items/list-manager/list-manager.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/markdown-editor/markdown-editor._common.md +1 -1
- package/skills/apexlang/templates/items/markdown-editor/markdown-editor.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/number-field/number-field._common.md +8 -6
- package/skills/apexlang/templates/items/number-field/number-field.explicit-defaults.md +12 -2
- package/skills/apexlang/templates/items/popup-lov/popup-lov.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/rich-text-editor/rich-text-editor._common.md +1 -1
- package/skills/apexlang/templates/items/rich-text-editor/rich-text-editor.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/select-many/standard.md +1 -1
- package/skills/apexlang/templates/items/shuttle/shuttle.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/switch/switch._common.md +8 -8
- package/skills/apexlang/templates/items/switch/switch.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/text-area/text-area._common.md +2 -3
- package/skills/apexlang/templates/items/text-area/text-area.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/text-area/text-area.required-length.md +1 -3
- package/skills/apexlang/templates/items/text-autocomplete/text-autocomplete.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/text-autocomplete/text-autocomplete.required-length.md +1 -3
- package/skills/apexlang/templates/items/text-field/text-field._common.md +2 -3
- package/skills/apexlang/templates/items/text-field/text-field.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/text-field/text-field.required-length.md +1 -3
- package/skills/apexlang/templates/page-examples/faceted-search/faceted-search.example.md +0 -5
- package/skills/apexlang/templates/page-examples/form-page/form-page.example.md +0 -9
- package/skills/apexlang/templates/page-examples/interactive-report-page/interactive-report-page.example.md +2 -2
- package/skills/apexlang/templates/page-examples/login-page/login-page.example.md +0 -8
- package/skills/apexlang/templates/page-examples/task-definition-initiated-tasks-page/task-definition-initiated-tasks-page.example.md +7 -17
- package/skills/apexlang/templates/page-examples/task-definition-my-tasks-page/task-definition-my-tasks-page.example.md +7 -65
- package/skills/apexlang/templates/page-examples/task-definition-task-details/task-definition-task-details.example.md +38 -201
- package/skills/apexlang/templates/region-components/calendar/calendar.custom-styling.md +3 -1
- package/skills/apexlang/templates/region-components/calendar/calendar.faceted-search.md +3 -2
- package/skills/apexlang/templates/region-components/cards/README.md +12 -4
- package/skills/apexlang/templates/region-components/cards/cards._common.md +176 -37
- package/skills/apexlang/templates/region-components/cards/cards._index.md +2 -1
- package/skills/apexlang/templates/region-components/cards/cards.refresh-after-dialog.md +46 -0
- package/skills/apexlang/templates/region-components/cards/cards.refresh-on-change.md +58 -0
- package/skills/apexlang/templates/region-components/cards/cards.rest-source.md +54 -18
- package/skills/apexlang/templates/region-components/cards/cards.standard.md +37 -21
- package/skills/apexlang/templates/region-components/chart/chart._series._common.md +1 -4
- package/skills/apexlang/templates/region-components/chart/chart.pie.md +6 -2
- package/skills/apexlang/templates/region-components/chart/chart.status-meter-gauge.md +1 -1
- package/skills/apexlang/templates/region-components/chart/chart.stock.md +2 -0
- package/skills/apexlang/templates/region-components/chart/features/chart.feature-chart-links.md +9 -7
- package/skills/apexlang/templates/region-components/faceted-search/faceted-search._common.md +1 -14
- package/skills/apexlang/templates/region-components/form/form._items._common.md +1 -5
- package/skills/apexlang/templates/region-components/interactive-report/interactive-report._columns._common.md +2 -6
- package/skills/apexlang/templates/region-components/interactive-report/interactive-report.page-header-actions.md +1 -7
- package/skills/apexlang/templates/region-components/list/README.md +1 -1
- package/skills/apexlang/templates/region-components/list/list._common.md +1 -1
- package/skills/apexlang/templates/region-components/map/map.backgrounds.md +12 -10
- package/skills/apexlang/templates/region-components/map/map.layer.extruded-polygons.md +16 -12
- package/skills/apexlang/templates/region-components/map/map.layer.heat-map.md +10 -7
- package/skills/apexlang/templates/region-components/map/map.layer.lines.md +10 -8
- package/skills/apexlang/templates/region-components/map/map.layer.polygons.md +21 -18
- package/skills/apexlang/templates/region-components/map/map.region.background-custom.md +25 -19
- package/skills/apexlang/templates/region-components/map/map.region.background-shared.md +19 -13
- package/skills/apexlang/templates/region-components/map/map.region.bbox-sql.md +13 -13
- package/skills/apexlang/templates/region-components/map/map.region.bbox-static.md +2 -2
- package/skills/apexlang/templates/region-components/map/map.region.browser-location.md +3 -7
- package/skills/apexlang/templates/region-components/map/map.region.init-position-sql.md +7 -7
- package/skills/apexlang/templates/region-components/region-display-selector/README.md +5 -2
- package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector._common.md +60 -7
- package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector._index.md +4 -1
- package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector.permutations.md +55 -0
- package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector.standard.md +91 -5
- package/skills/apexlang/templates/region-components/smart-filter-search/README.md +6 -2
- package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search._common.md +107 -46
- package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search._index.md +4 -3
- package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search.standard.md +33 -17
- package/skills/apexlang/templates/shared-components/component-settings/component-settings._common.md +1 -0
- package/skills/apexlang/templates/shared-components/component-settings.example.md +1 -0
- package/skills/apexlang/templates/shared-components/email-templates.example.md +1 -1
- package/skills/apexlang/templates/shared-components/rest-data-sources/example_rest_data_source.example.md +40 -46
- package/skills/apexlang/templates/shared-components/task-definitions/action-task.example.md +2 -30
- package/skills/apexlang/templates/shared-components/task-definitions/approve-request.example.md +3 -31
- package/skills/apexlang/templates/template-components/README.md +27 -15
- package/skills/apexlang/templates/template-components/avatar/README.md +56 -0
- package/skills/apexlang/templates/template-components/avatar/avatar._common.md +149 -0
- package/skills/apexlang/templates/template-components/avatar/avatar._index.md +42 -0
- package/skills/apexlang/templates/template-components/{avatar._template_options.md → avatar/avatar._template_options.md} +1 -1
- package/skills/apexlang/templates/template-components/avatar/avatar.report-icon.md +48 -0
- package/skills/apexlang/templates/template-components/avatar/avatar.report-image-url-column.md +62 -0
- package/skills/apexlang/templates/template-components/avatar/avatar.report-initials.md +54 -0
- package/skills/apexlang/templates/template-components/badge/README.md +38 -0
- package/skills/apexlang/templates/template-components/badge/badge._common.md +183 -0
- package/skills/apexlang/templates/template-components/badge/badge._index.md +20 -0
- package/skills/apexlang/templates/template-components/badge/badge.report-link.md +66 -0
- package/skills/apexlang/templates/template-components/badge/badge.report-minimal.md +76 -0
- package/skills/apexlang/templates/template-components/comments/README.md +20 -0
- package/skills/apexlang/templates/template-components/comments/comments._common.md +43 -0
- package/skills/apexlang/templates/template-components/comments/comments._index.md +25 -0
- package/skills/apexlang/templates/template-components/{comments._template_options.md → comments/comments._template_options.md} +2 -1
- package/skills/apexlang/templates/template-components/comments/comments.apex-task-comments.md +77 -0
- package/skills/apexlang/templates/template-components/comments/comments.partial-column.md +120 -0
- package/skills/apexlang/templates/template-components/comments/comments.permutations.md +425 -0
- package/skills/apexlang/templates/template-components/content-row/README.md +1 -1
- package/skills/apexlang/templates/template-components/content-row/content-row._common.md +1 -1
- package/skills/apexlang/templates/template-components/content-row/content-row._index.md +1 -1
- package/skills/apexlang/templates/template-components/content-row/content-row._template_options.md +1 -1
- package/skills/apexlang/templates/template-components/flexbox-container/README.md +9 -0
- package/skills/apexlang/templates/template-components/flexbox-container/flexbox-container._index.md +13 -0
- package/skills/apexlang/templates/template-components/media-list/README.md +100 -0
- package/skills/apexlang/templates/template-components/media-list/media-list._common.md +174 -0
- package/skills/apexlang/templates/template-components/media-list/media-list._index.md +50 -0
- package/skills/apexlang/templates/template-components/{media-list._template_options.md → media-list/media-list._template_options.md} +8 -2
- package/skills/apexlang/templates/template-components/media-list/media-list.partial.md +50 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-avatar-badge.md +76 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-base.md +71 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-grouped.md +40 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-layouts.md +50 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-link.md +53 -0
- package/skills/apexlang/templates/template-components/metric-card/README.md +19 -4
- package/skills/apexlang/templates/template-components/metric-card/metric-card._common.md +122 -29
- package/skills/apexlang/templates/template-components/metric-card/metric-card._index.md +6 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card._template_options.md +47 -2
- package/skills/apexlang/templates/template-components/metric-card/metric-card.partial-minimal.md +51 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.permutations.md +56 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.report-avatar-badge.md +98 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.report-grouping-selection.md +131 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.report-link.md +66 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.report-minimal.md +97 -0
- package/skills/apexlang/templates/template-components/template-components.registry.json +90 -1
- package/skills/apexlang/templates/template-components/timeline/README.md +19 -0
- package/skills/apexlang/templates/template-components/timeline/timeline._common.md +43 -0
- package/skills/apexlang/templates/template-components/timeline/timeline._index.md +24 -0
- package/skills/apexlang/templates/template-components/{timeline._template_options.md → timeline/timeline._template_options.md} +2 -1
- package/skills/apexlang/templates/template-components/timeline/timeline.permutations.md +399 -0
- package/skills/apexlang/templates/template-components/timeline/timeline.report-sample-data.md +168 -0
- package/skills/apexlang/templates/workspace-components/credentials/credentials-for-open-ai.example.md +1 -1
- package/skills/apexlang/templates/workspace-components/generative-ai-services/open-ai.example.md +8 -6
- package/skills/apexlang/tools/apexctl.mjs +167 -4
- package/skills/apexlang/tools/compiler-truth-audit.mjs +95 -63
- package/skills/apexlang/tools/query-valid-props-context.mjs +30 -0
- package/skills/apexlang/tools/query-valid-props-normalize.mjs +1 -0
- package/skills/apexlang/tools/query-valid-props-runtime.mjs +13 -8
- package/skills/apexlang/tools/query-valid-props-semantics.mjs +391 -0
- package/skills/apexlang/tools/query-valid-props-template-components.mjs +15 -1
- package/skills/apexlang/tools/query-valid-props.mjs +198 -216
- /package/skills/apexlang/templates/template-components/{badge._template_options.md → badge/badge._template_options.md} +0 -0
- /package/skills/apexlang/templates/template-components/{flexbox-container._template_options.md → flexbox-container/flexbox-container._template_options.md} +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
templateId: metric-card.report-grouping-selection
|
|
3
|
+
componentType: templateComponent
|
|
4
|
+
imports:
|
|
5
|
+
- metric-card.common
|
|
6
|
+
- metric-card.report-minimal
|
|
7
|
+
version: 1.0
|
|
8
|
+
description: Report-mode Metric Card with deterministic grouping and optional native row selection.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Purpose
|
|
12
|
+
|
|
13
|
+
Generate grouped Metric Cards or selection-enabled Metric Cards with stable row identity and correctly typed same-page items.
|
|
14
|
+
|
|
15
|
+
# Grouped Output Template
|
|
16
|
+
|
|
17
|
+
```apx
|
|
18
|
+
region {{regionStaticId}} (
|
|
19
|
+
type: themeTemplateComponent/metricCard
|
|
20
|
+
orderBy {
|
|
21
|
+
type: staticValue
|
|
22
|
+
orderByClause: {{groupColumn}} asc, {{primaryKeyColumn}} asc
|
|
23
|
+
}
|
|
24
|
+
componentAppearance {
|
|
25
|
+
display: report
|
|
26
|
+
}
|
|
27
|
+
settings {
|
|
28
|
+
title: &{{settings.titleColumn}}.
|
|
29
|
+
metric: &{{settings.metricColumn}}.
|
|
30
|
+
}
|
|
31
|
+
plugin-grouping {
|
|
32
|
+
groupTitle: {{grouping.title}}
|
|
33
|
+
groupIcon: {{grouping.icon}}
|
|
34
|
+
}
|
|
35
|
+
column {{groupColumn}} (
|
|
36
|
+
layout {
|
|
37
|
+
sequence: 10
|
|
38
|
+
}
|
|
39
|
+
appearance {
|
|
40
|
+
group: true
|
|
41
|
+
}
|
|
42
|
+
source {
|
|
43
|
+
databaseColumn: {{groupColumn}}
|
|
44
|
+
dataType: varchar2
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
# Selection Templates
|
|
51
|
+
|
|
52
|
+
```apx
|
|
53
|
+
rowSelection {
|
|
54
|
+
type: focusOnly
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
```apx
|
|
59
|
+
rowSelection {
|
|
60
|
+
type: singleSelection
|
|
61
|
+
currentSelectionPageItem: {{selection.currentItem}}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
pageItem {{selection.currentItem}} (
|
|
65
|
+
type: hidden
|
|
66
|
+
layout {
|
|
67
|
+
sequence: {{selection.currentItemSequence}}
|
|
68
|
+
slot: regionBody
|
|
69
|
+
}
|
|
70
|
+
security {
|
|
71
|
+
sessionStateProtection: unrestricted
|
|
72
|
+
}
|
|
73
|
+
comments {
|
|
74
|
+
comments: Same-page dynamic-action ownership: native Metric Card selection updates this client-owned UI state after render, so checksum-based SSP would block the intended flow.
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```apx
|
|
80
|
+
rowSelection {
|
|
81
|
+
type: multipleSelection
|
|
82
|
+
currentSelectionPageItem: {{selection.currentItem}}
|
|
83
|
+
selectAllPageItem: {{selection.selectAllItem}}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
pageItem {{selection.currentItem}} (
|
|
87
|
+
type: hidden
|
|
88
|
+
layout {
|
|
89
|
+
sequence: {{selection.currentItemSequence}}
|
|
90
|
+
slot: regionBody
|
|
91
|
+
}
|
|
92
|
+
security {
|
|
93
|
+
sessionStateProtection: unrestricted
|
|
94
|
+
}
|
|
95
|
+
comments {
|
|
96
|
+
comments: Same-page dynamic-action ownership: native Metric Card selection updates this client-owned UI state after render, so checksum-based SSP would block the intended flow.
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
pageItem {{selection.selectAllItem}} (
|
|
101
|
+
type: checkbox
|
|
102
|
+
label {
|
|
103
|
+
label: Select All
|
|
104
|
+
alignment: left
|
|
105
|
+
}
|
|
106
|
+
help {
|
|
107
|
+
helpText: Select or clear all metric cards.
|
|
108
|
+
}
|
|
109
|
+
layout {
|
|
110
|
+
sequence: {{selection.selectAllItemSequence}}
|
|
111
|
+
region: @{{selection.toolbarRegion}}
|
|
112
|
+
slot: regionBody
|
|
113
|
+
}
|
|
114
|
+
)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
# Conditional Rendering Rules
|
|
118
|
+
|
|
119
|
+
- Use grouping and selection only when requested; they are independent features.
|
|
120
|
+
- Grouping requires at least one child column with `appearance.group: true` and top-level static ordering beginning with every grouped column in declaration order. The `plugin-grouping` block is optional when no custom group title/icon is needed.
|
|
121
|
+
- `groupIcon` requires `groupTitle`.
|
|
122
|
+
- Every selection mode requires a child column with `source.primaryKey: true`.
|
|
123
|
+
- `focusOnly` emits no page-item bindings.
|
|
124
|
+
- `singleSelection` uses a same-page hidden current-selection item with documented `sessionStateProtection: unrestricted` and no select-all item.
|
|
125
|
+
- `multipleSelection` uses the same protected-by-classification hidden current-selection item plus a checkbox or switch select-all item.
|
|
126
|
+
|
|
127
|
+
# Validation Checklist
|
|
128
|
+
|
|
129
|
+
- Group columns lead deterministic ordering.
|
|
130
|
+
- Selection item names resolve to page items of the required types.
|
|
131
|
+
- Exactly one stable identity column is marked as the primary key for ordinary single-key sources.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
templateId: metric-card.report-link
|
|
3
|
+
componentType: templateComponent
|
|
4
|
+
imports:
|
|
5
|
+
- metric-card.common
|
|
6
|
+
- metric-card.report-minimal
|
|
7
|
+
version: 1.0
|
|
8
|
+
description: Report-mode Metric Card with a declarative row link.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Purpose
|
|
12
|
+
|
|
13
|
+
Add compiler-backed row navigation to each Metric Card.
|
|
14
|
+
|
|
15
|
+
# Output Template
|
|
16
|
+
|
|
17
|
+
```apx
|
|
18
|
+
region {{regionStaticId}} (
|
|
19
|
+
type: themeTemplateComponent/metricCard
|
|
20
|
+
componentAppearance {
|
|
21
|
+
display: report
|
|
22
|
+
}
|
|
23
|
+
settings {
|
|
24
|
+
title: &{{settings.titleColumn}}.
|
|
25
|
+
metric: &{{settings.metricColumn}}.
|
|
26
|
+
}
|
|
27
|
+
action open-details (
|
|
28
|
+
position: link
|
|
29
|
+
layout {
|
|
30
|
+
sequence: 10
|
|
31
|
+
}
|
|
32
|
+
behavior {
|
|
33
|
+
type: redirectThisApp
|
|
34
|
+
target: {
|
|
35
|
+
page: {{target.pageId}}
|
|
36
|
+
items: {
|
|
37
|
+
{{target.itemName}}: &{{target.sourceKeyColumn}}.
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
security {
|
|
42
|
+
authorizationScheme: {{action.authorizationScheme}}
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
# Conditional Rendering Rules
|
|
49
|
+
|
|
50
|
+
- Use only `position: link`.
|
|
51
|
+
- Omit `template` and `label`; Metric Card exposes no action templates and the link position does not request a label.
|
|
52
|
+
- Include the source key in the query and child columns. Mark it as `source.primaryKey: true` when stable row identity is required.
|
|
53
|
+
- Omit action security when page authentication is sufficient. Otherwise reference an existing authorization scheme.
|
|
54
|
+
- Use a declarative target for same-app navigation. Do not build `f?p=` strings or inline JavaScript URLs.
|
|
55
|
+
- Use `redirectOtherApp` with a declarative `target` for a different APEX application.
|
|
56
|
+
- Use `redirectUrl` only with a reviewed safe `targetUrl`; omit `target`. Reject dangerous schemes, protocol-relative URLs, control characters, wholly dynamic destinations, and substitutions outside query parameters. Keep the scheme, host, path, and fragment static.
|
|
57
|
+
- Optional `linkAttributes` must be static and must not contain inline event handlers, URL-bearing attributes, scriptable CSS, or unsafe URL schemes. A new-window target also requires `rel="noopener"` or `rel="noreferrer"`.
|
|
58
|
+
- Use `triggerAction` only when a matching event consumer/dynamic action exists; omit both `target` and `targetUrl`.
|
|
59
|
+
|
|
60
|
+
# Validation Checklist
|
|
61
|
+
|
|
62
|
+
- Target page and item mappings are explicit.
|
|
63
|
+
- Every `&COLUMN.` action mapping is projected by the source.
|
|
64
|
+
- Action has deterministic layout sequence and declarative behavior.
|
|
65
|
+
- Any `targetUrl` is reviewed and safe, with substitutions limited to query parameters; any `linkAttributes` are static and contain no inline handlers or URL override.
|
|
66
|
+
- Authorization alias, when present, already exists in the target application.
|
package/skills/apexlang/templates/template-components/metric-card/metric-card.report-minimal.md
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
templateId: metric-card.report-minimal
|
|
3
|
+
componentType: templateComponent
|
|
4
|
+
imports:
|
|
5
|
+
- metric-card.common
|
|
6
|
+
version: 1.0
|
|
7
|
+
description: Minimal report-mode Metric Card with source-backed title and metric values.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Purpose
|
|
11
|
+
|
|
12
|
+
Render one or more Metric Cards from a normalized report source using native title, metric, and meta attributes.
|
|
13
|
+
|
|
14
|
+
# Output Template
|
|
15
|
+
|
|
16
|
+
````apx
|
|
17
|
+
region {{regionStaticId}} (
|
|
18
|
+
name: {{name}}
|
|
19
|
+
type: themeTemplateComponent/metricCard
|
|
20
|
+
source {
|
|
21
|
+
location: localDatabase
|
|
22
|
+
type: sqlQuery
|
|
23
|
+
sqlQuery:
|
|
24
|
+
```sql
|
|
25
|
+
{{source.sqlQuery}}
|
|
26
|
+
```
|
|
27
|
+
}
|
|
28
|
+
layout {
|
|
29
|
+
sequence: {{layout.sequence}}
|
|
30
|
+
slot: body
|
|
31
|
+
}
|
|
32
|
+
appearance {
|
|
33
|
+
template: @/blank-with-attributes
|
|
34
|
+
templateOptions: #DEFAULT#
|
|
35
|
+
}
|
|
36
|
+
componentAppearance {
|
|
37
|
+
display: report
|
|
38
|
+
}
|
|
39
|
+
settings {
|
|
40
|
+
title: &{{settings.titleColumn}}.
|
|
41
|
+
metric: &{{settings.metricColumn}}.
|
|
42
|
+
meta: &{{settings.metaColumn}}.
|
|
43
|
+
layout: {{settings.layout}}
|
|
44
|
+
}
|
|
45
|
+
column {{settings.titleColumn}} (
|
|
46
|
+
layout {
|
|
47
|
+
sequence: 10
|
|
48
|
+
}
|
|
49
|
+
appearance {
|
|
50
|
+
group: false
|
|
51
|
+
}
|
|
52
|
+
source {
|
|
53
|
+
databaseColumn: {{settings.titleColumn}}
|
|
54
|
+
dataType: varchar2
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
column {{settings.metricColumn}} (
|
|
58
|
+
layout {
|
|
59
|
+
sequence: 20
|
|
60
|
+
}
|
|
61
|
+
appearance {
|
|
62
|
+
group: false
|
|
63
|
+
}
|
|
64
|
+
source {
|
|
65
|
+
databaseColumn: {{settings.metricColumn}}
|
|
66
|
+
dataType: {{metricColumn.dataType}}
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
column {{settings.metaColumn}} (
|
|
70
|
+
layout {
|
|
71
|
+
sequence: 30
|
|
72
|
+
}
|
|
73
|
+
appearance {
|
|
74
|
+
group: false
|
|
75
|
+
}
|
|
76
|
+
source {
|
|
77
|
+
databaseColumn: {{settings.metaColumn}}
|
|
78
|
+
dataType: varchar2
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
)
|
|
82
|
+
````
|
|
83
|
+
|
|
84
|
+
# Conditional Rendering Rules
|
|
85
|
+
|
|
86
|
+
- `settings.metric` is required.
|
|
87
|
+
- Omit `settings.title`, `settings.meta`, and their columns when the design does not need them.
|
|
88
|
+
- Use `&COLUMN.` substitution for query-backed title, metric, and meta text.
|
|
89
|
+
- Use one source row per card. Normalize independent metrics into the same aliases, typically with `UNION ALL`.
|
|
90
|
+
- Replace the SQL metavariable only after every referenced database object and column has authoritative evidence. A literal `dual` smoke test is valid only for explicit test fixtures.
|
|
91
|
+
|
|
92
|
+
# Validation Checklist
|
|
93
|
+
|
|
94
|
+
- Every projected alias has a child column.
|
|
95
|
+
- Metric data type matches the delivered projection.
|
|
96
|
+
- Layout uses a supported Metric Card layout token.
|
|
97
|
+
- SQL returns raw values and contains no presentation HTML.
|
|
@@ -4,19 +4,36 @@
|
|
|
4
4
|
{
|
|
5
5
|
"slug": "actions",
|
|
6
6
|
"kind": "helper",
|
|
7
|
+
"readme": "actions/README.md",
|
|
7
8
|
"index": "actions/actions._index.md",
|
|
8
9
|
"common": "actions/actions._common.md",
|
|
10
|
+
"files": ["actions/actions._template_options.md"],
|
|
9
11
|
"scenarios": [
|
|
10
12
|
"actions/actions.inline-button.md",
|
|
11
13
|
"actions/actions.menu-trigger.md",
|
|
12
14
|
"actions/actions.nested-group.md"
|
|
13
15
|
]
|
|
14
16
|
},
|
|
17
|
+
{
|
|
18
|
+
"slug": "avatar",
|
|
19
|
+
"kind": "template-component",
|
|
20
|
+
"readme": "avatar/README.md",
|
|
21
|
+
"index": "avatar/avatar._index.md",
|
|
22
|
+
"common": "avatar/avatar._common.md",
|
|
23
|
+
"files": ["avatar/avatar._template_options.md"],
|
|
24
|
+
"scenarios": [
|
|
25
|
+
"avatar/avatar.report-initials.md",
|
|
26
|
+
"avatar/avatar.report-icon.md",
|
|
27
|
+
"avatar/avatar.report-image-url-column.md"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
15
30
|
{
|
|
16
31
|
"slug": "button",
|
|
17
32
|
"kind": "helper",
|
|
33
|
+
"readme": "button/README.md",
|
|
18
34
|
"index": "button/button._index.md",
|
|
19
35
|
"common": "button/button._common.md",
|
|
36
|
+
"files": ["button/button._template_options.md"],
|
|
20
37
|
"scenarios": [
|
|
21
38
|
"button/button.navigation.md",
|
|
22
39
|
"button/button.hot-icon.md",
|
|
@@ -26,8 +43,10 @@
|
|
|
26
43
|
{
|
|
27
44
|
"slug": "content-row",
|
|
28
45
|
"kind": "template-component",
|
|
46
|
+
"readme": "content-row/README.md",
|
|
29
47
|
"index": "content-row/content-row._index.md",
|
|
30
48
|
"common": "content-row/content-row._common.md",
|
|
49
|
+
"files": ["content-row/content-row._template_options.md"],
|
|
31
50
|
"scenarios": [
|
|
32
51
|
"content-row/content-row.partial-minimal.md",
|
|
33
52
|
"content-row/content-row.partial-rich-content.md",
|
|
@@ -43,8 +62,78 @@
|
|
|
43
62
|
{
|
|
44
63
|
"slug": "metric-card",
|
|
45
64
|
"kind": "template-component",
|
|
65
|
+
"readme": "metric-card/README.md",
|
|
46
66
|
"index": "metric-card/metric-card._index.md",
|
|
47
|
-
"common": "metric-card/metric-card._common.md"
|
|
67
|
+
"common": "metric-card/metric-card._common.md",
|
|
68
|
+
"files": ["metric-card/metric-card._template_options.md"],
|
|
69
|
+
"scenarios": [
|
|
70
|
+
"metric-card/metric-card.partial-minimal.md",
|
|
71
|
+
"metric-card/metric-card.report-minimal.md",
|
|
72
|
+
"metric-card/metric-card.report-avatar-badge.md",
|
|
73
|
+
"metric-card/metric-card.report-link.md",
|
|
74
|
+
"metric-card/metric-card.report-grouping-selection.md",
|
|
75
|
+
"metric-card/metric-card.permutations.md"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"slug": "badge",
|
|
80
|
+
"kind": "template-component",
|
|
81
|
+
"readme": "badge/README.md",
|
|
82
|
+
"index": "badge/badge._index.md",
|
|
83
|
+
"common": "badge/badge._common.md",
|
|
84
|
+
"files": ["badge/badge._template_options.md"],
|
|
85
|
+
"scenarios": [
|
|
86
|
+
"badge/badge.report-minimal.md",
|
|
87
|
+
"badge/badge.report-link.md"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"slug": "comments",
|
|
92
|
+
"kind": "template-component",
|
|
93
|
+
"readme": "comments/README.md",
|
|
94
|
+
"index": "comments/comments._index.md",
|
|
95
|
+
"common": "comments/comments._common.md",
|
|
96
|
+
"files": ["comments/comments._template_options.md"],
|
|
97
|
+
"scenarios": [
|
|
98
|
+
"comments/comments.apex-task-comments.md",
|
|
99
|
+
"comments/comments.partial-column.md",
|
|
100
|
+
"comments/comments.permutations.md"
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"slug": "flexbox-container",
|
|
105
|
+
"kind": "template-component",
|
|
106
|
+
"readme": "flexbox-container/README.md",
|
|
107
|
+
"index": "flexbox-container/flexbox-container._index.md",
|
|
108
|
+
"files": ["flexbox-container/flexbox-container._template_options.md"]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"slug": "media-list",
|
|
112
|
+
"kind": "template-component",
|
|
113
|
+
"readme": "media-list/README.md",
|
|
114
|
+
"index": "media-list/media-list._index.md",
|
|
115
|
+
"common": "media-list/media-list._common.md",
|
|
116
|
+
"files": ["media-list/media-list._template_options.md"],
|
|
117
|
+
"scenarios": [
|
|
118
|
+
"media-list/media-list.partial.md",
|
|
119
|
+
"media-list/media-list.report-base.md",
|
|
120
|
+
"media-list/media-list.report-avatar-badge.md",
|
|
121
|
+
"media-list/media-list.report-link.md",
|
|
122
|
+
"media-list/media-list.report-grouped.md",
|
|
123
|
+
"media-list/media-list.report-layouts.md"
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"slug": "timeline",
|
|
128
|
+
"kind": "template-component",
|
|
129
|
+
"readme": "timeline/README.md",
|
|
130
|
+
"index": "timeline/timeline._index.md",
|
|
131
|
+
"common": "timeline/timeline._common.md",
|
|
132
|
+
"files": [
|
|
133
|
+
"timeline/timeline._template_options.md",
|
|
134
|
+
"timeline/timeline.report-sample-data.md",
|
|
135
|
+
"timeline/timeline.permutations.md"
|
|
136
|
+
]
|
|
48
137
|
}
|
|
49
138
|
]
|
|
50
139
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Timeline Templates
|
|
2
|
+
|
|
3
|
+
Canonical Universal Theme Timeline template-component guidance.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
- Load `timeline._index.md` first.
|
|
8
|
+
- Load `timeline._common.md` for the shared generation contract.
|
|
9
|
+
- Load `timeline._template_options.md` only when validating Timeline attributes or enum values.
|
|
10
|
+
- Choose the report sample or a single permutation branch after the source mappings are proven.
|
|
11
|
+
- Follow `references/domains/template-components/timeline.md` for compiler authority and unsupported metadata.
|
|
12
|
+
|
|
13
|
+
## Template Catalog
|
|
14
|
+
|
|
15
|
+
- `timeline._index.md`
|
|
16
|
+
- `timeline._common.md`
|
|
17
|
+
- `timeline._template_options.md`
|
|
18
|
+
- `timeline.report-sample-data.md`
|
|
19
|
+
- `timeline.permutations.md`
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
templateId: timeline.common
|
|
3
|
+
componentType: templateComponent
|
|
4
|
+
version: 1.0
|
|
5
|
+
description: Shared canonical contract for Timeline template-component generation.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Purpose
|
|
9
|
+
|
|
10
|
+
Define the shared source, appearance, settings, nested-component, and column contract for Timeline regions.
|
|
11
|
+
|
|
12
|
+
# Generation Rules (MANDATORY)
|
|
13
|
+
|
|
14
|
+
1. Use `type: themeTemplateComponent/timeline` and `componentAppearance.display: partial` or `report`.
|
|
15
|
+
2. Every Timeline region must include `source`, `componentAppearance`, and `settings`.
|
|
16
|
+
3. Map the required `settings.userName`, `settings.date`, and `settings.title` values to verified source columns. `settings.description` is optional.
|
|
17
|
+
4. Keep explicit child `column (...)` declarations aligned with every projected report source column and its data type.
|
|
18
|
+
5. Enable Avatar and Badge rendering only through `settings.displayAvatar` and `settings.displayBadge`; keep each flag synchronized with its nested block.
|
|
19
|
+
6. When Avatar is enabled, emit `plugin-avatar.type` and `plugin-avatar.shape`, plus exactly one payload matching `icon`, `image`, or `initials`.
|
|
20
|
+
7. Use a dedicated projected initials column, not the full user-name column. URL-column images must use a declared varchar2 column containing only an application-managed static-file URL.
|
|
21
|
+
8. When Badge is enabled, emit `plugin-badge.label` and `plugin-badge.value`; optional state, icon, display, style, and shape values must come from the family-local inventories.
|
|
22
|
+
9. Do not emit report-level `applyThemeColors`, `style`, grouping, pagination type/count, messages, or actions until a target-build compiler contract proves those structures.
|
|
23
|
+
10. Use `timeline._template_options.md` as attribute inventory only. Compiler-backed APEXlang legality remains authoritative.
|
|
24
|
+
|
|
25
|
+
# Variable Contract
|
|
26
|
+
|
|
27
|
+
| Name | Required | Type | Notes |
|
|
28
|
+
|------|----------|------|-------|
|
|
29
|
+
| source | yes | block | Use a supported source mode with verified mappings. |
|
|
30
|
+
| componentAppearance.display | yes | enum | `partial` or `report`. |
|
|
31
|
+
| settings.userName | yes | column | Verified user-name column. |
|
|
32
|
+
| settings.date | yes | column | Verified event date or date-range column. |
|
|
33
|
+
| settings.title | yes | column | Verified event title column. |
|
|
34
|
+
| settings.description | optional | column | Verified description column. |
|
|
35
|
+
| settings.displayAvatar | optional | boolean | Must agree with `plugin-avatar` presence. |
|
|
36
|
+
| settings.displayBadge | optional | boolean | Must agree with `plugin-badge` presence. |
|
|
37
|
+
| plugin-avatar | conditional | block | Required only when Avatar display is enabled. |
|
|
38
|
+
| plugin-badge | conditional | block | Required only when Badge display is enabled. |
|
|
39
|
+
| column | conditional | child component | Required for report projections and every referenced mapping. |
|
|
40
|
+
|
|
41
|
+
# Authority Boundary
|
|
42
|
+
|
|
43
|
+
The Universal Theme export includes metadata that the current APEXlang compiler rejects. Follow the Timeline workflow and target-build compiler validation for any structure not shown by the canonical fixtures.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
templateId: region.timeline.index
|
|
3
|
+
componentType: region
|
|
4
|
+
version: 1.0
|
|
5
|
+
imports:
|
|
6
|
+
- timeline._common.md
|
|
7
|
+
- timeline._template_options.md
|
|
8
|
+
description: Routing entrypoint for Timeline template-component regions.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Purpose
|
|
12
|
+
|
|
13
|
+
Select the narrowest supported Timeline report or partial configuration.
|
|
14
|
+
|
|
15
|
+
# Load Order
|
|
16
|
+
|
|
17
|
+
1. Load `timeline._common.md`.
|
|
18
|
+
2. Load `timeline._template_options.md` when attribute or enum evidence is required.
|
|
19
|
+
3. Load exactly one matching example: `timeline.report-sample-data.md` for the canonical report shape or `timeline.permutations.md` for conditional branches.
|
|
20
|
+
4. Load the shared Avatar or Badge inventory only when the requested nested component is enabled.
|
|
21
|
+
|
|
22
|
+
# Authority
|
|
23
|
+
|
|
24
|
+
Use the Timeline workflow for compiler-backed legality. Theme-export `REPORT` and `REPORT_GROUP` metadata is inventory evidence only.
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
These entries come from `create_plugin_attribute` and `create_plugin_attr_value`, not from `wwv_flow_template_options`.
|
|
4
4
|
|
|
5
5
|
Apply these values through the owning component's settings plus the shared avatar and badge owner files when those substructures are enabled.
|
|
6
|
-
Load
|
|
6
|
+
Load `../avatar/avatar._template_options.md` and `../badge/badge._template_options.md` for the shared substructures used by Timeline.
|
|
7
7
|
Emit only exact accepted values from this inventory. Do not concatenate adjacent values into one token and do not substitute labels or implementation details.
|
|
8
|
+
Rows scoped to `REPORT` or `REPORT_GROUP` record Universal Theme export metadata only; they do not prove an APEXlang emission shape. The current Timeline compiler contract rejects root report attributes and exposes no supported grouping block, so follow the Timeline workflow and do not emit those rows.
|
|
8
9
|
|
|
9
10
|
When a row includes `values=`, pass the left-hand side of each `name=>return_value` pair.
|
|
10
11
|
|