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,425 @@
|
|
|
1
|
+
---
|
|
2
|
+
templateId: comments.permutations
|
|
3
|
+
componentType: region
|
|
4
|
+
version: 1.0
|
|
5
|
+
description: Supported Comments settings and nested Avatar permutations using the user-confirmed APEX_TASK_COMMENTS source.
|
|
6
|
+
object_evidence_source: user_asserted
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Supported Permutations
|
|
10
|
+
|
|
11
|
+
Use one branch per generated region. These examples include only compiler-proven selection and action structures; grouping remains unsupported.
|
|
12
|
+
|
|
13
|
+
```apexlang
|
|
14
|
+
region comments_basic_report (
|
|
15
|
+
name: Basic Comments
|
|
16
|
+
type: themeTemplateComponent/comments
|
|
17
|
+
source {
|
|
18
|
+
location: localDatabase
|
|
19
|
+
type: sqlQuery
|
|
20
|
+
sqlQuery:
|
|
21
|
+
```sql
|
|
22
|
+
select created_by as user_name,
|
|
23
|
+
text as comment_text,
|
|
24
|
+
created_on as comment_date
|
|
25
|
+
from apex_task_comments
|
|
26
|
+
order by created_on desc
|
|
27
|
+
```
|
|
28
|
+
}
|
|
29
|
+
layout {
|
|
30
|
+
sequence: 10
|
|
31
|
+
slot: body
|
|
32
|
+
}
|
|
33
|
+
appearance {
|
|
34
|
+
template: @/standard
|
|
35
|
+
templateOptions: #DEFAULT#
|
|
36
|
+
}
|
|
37
|
+
accessibility {
|
|
38
|
+
landmarkType: region
|
|
39
|
+
}
|
|
40
|
+
componentAppearance {
|
|
41
|
+
display: report
|
|
42
|
+
}
|
|
43
|
+
settings {
|
|
44
|
+
userName: USER_NAME
|
|
45
|
+
commentText: COMMENT_TEXT
|
|
46
|
+
date: COMMENT_DATE
|
|
47
|
+
attributes: Posted comment
|
|
48
|
+
commentClass: comment-entry
|
|
49
|
+
displayAvatar: false
|
|
50
|
+
style: basic
|
|
51
|
+
alignment: inbound
|
|
52
|
+
applyThemeColors: true
|
|
53
|
+
}
|
|
54
|
+
performance {
|
|
55
|
+
lazyLoading: false
|
|
56
|
+
}
|
|
57
|
+
pagination {
|
|
58
|
+
type: page
|
|
59
|
+
entitiesPerPage: 15
|
|
60
|
+
showTotalCount: false
|
|
61
|
+
}
|
|
62
|
+
entityTitle {
|
|
63
|
+
singular: Comment
|
|
64
|
+
plural: Comments
|
|
65
|
+
}
|
|
66
|
+
messages {
|
|
67
|
+
whenNoDataFound: No comments found.
|
|
68
|
+
}
|
|
69
|
+
advanced {
|
|
70
|
+
htmlDomId: comments-basic-report
|
|
71
|
+
}
|
|
72
|
+
column USER_NAME (
|
|
73
|
+
layout {
|
|
74
|
+
sequence: 10
|
|
75
|
+
}
|
|
76
|
+
source {
|
|
77
|
+
databaseColumn: USER_NAME
|
|
78
|
+
dataType: varchar2
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
column COMMENT_TEXT (
|
|
82
|
+
layout {
|
|
83
|
+
sequence: 20
|
|
84
|
+
}
|
|
85
|
+
source {
|
|
86
|
+
databaseColumn: COMMENT_TEXT
|
|
87
|
+
dataType: varchar2
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
column COMMENT_DATE (
|
|
91
|
+
layout {
|
|
92
|
+
sequence: 30
|
|
93
|
+
}
|
|
94
|
+
source {
|
|
95
|
+
databaseColumn: COMMENT_DATE
|
|
96
|
+
dataType: date
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
region comments_chat_icon_avatar (
|
|
102
|
+
name: Chat Comments with Icon Avatar
|
|
103
|
+
type: themeTemplateComponent/comments
|
|
104
|
+
source {
|
|
105
|
+
location: localDatabase
|
|
106
|
+
type: sqlQuery
|
|
107
|
+
sqlQuery:
|
|
108
|
+
```sql
|
|
109
|
+
select created_by as user_name,
|
|
110
|
+
text as comment_text,
|
|
111
|
+
created_on as comment_date
|
|
112
|
+
from apex_task_comments
|
|
113
|
+
order by created_on desc
|
|
114
|
+
```
|
|
115
|
+
}
|
|
116
|
+
layout {
|
|
117
|
+
sequence: 20
|
|
118
|
+
slot: body
|
|
119
|
+
}
|
|
120
|
+
appearance {
|
|
121
|
+
template: @/standard
|
|
122
|
+
templateOptions: #DEFAULT#
|
|
123
|
+
}
|
|
124
|
+
accessibility {
|
|
125
|
+
landmarkType: region
|
|
126
|
+
}
|
|
127
|
+
componentAppearance {
|
|
128
|
+
display: report
|
|
129
|
+
}
|
|
130
|
+
settings {
|
|
131
|
+
userName: USER_NAME
|
|
132
|
+
commentText: COMMENT_TEXT
|
|
133
|
+
date: COMMENT_DATE
|
|
134
|
+
displayAvatar: true
|
|
135
|
+
style: chatSpeechBubbles
|
|
136
|
+
alignment: outbound
|
|
137
|
+
applyThemeColors: false
|
|
138
|
+
}
|
|
139
|
+
plugin-avatar {
|
|
140
|
+
type: icon
|
|
141
|
+
icon: fa-user
|
|
142
|
+
description: Comment author
|
|
143
|
+
shape: circular
|
|
144
|
+
}
|
|
145
|
+
column USER_NAME (
|
|
146
|
+
layout {
|
|
147
|
+
sequence: 10
|
|
148
|
+
}
|
|
149
|
+
source {
|
|
150
|
+
databaseColumn: USER_NAME
|
|
151
|
+
dataType: varchar2
|
|
152
|
+
}
|
|
153
|
+
)
|
|
154
|
+
column COMMENT_TEXT (
|
|
155
|
+
layout {
|
|
156
|
+
sequence: 20
|
|
157
|
+
}
|
|
158
|
+
source {
|
|
159
|
+
databaseColumn: COMMENT_TEXT
|
|
160
|
+
dataType: varchar2
|
|
161
|
+
}
|
|
162
|
+
)
|
|
163
|
+
column COMMENT_DATE (
|
|
164
|
+
layout {
|
|
165
|
+
sequence: 30
|
|
166
|
+
}
|
|
167
|
+
source {
|
|
168
|
+
databaseColumn: COMMENT_DATE
|
|
169
|
+
dataType: date
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
region comments_image_avatar (
|
|
175
|
+
name: Comments with Image Avatar
|
|
176
|
+
type: themeTemplateComponent/comments
|
|
177
|
+
source {
|
|
178
|
+
location: localDatabase
|
|
179
|
+
type: sqlQuery
|
|
180
|
+
sqlQuery:
|
|
181
|
+
```sql
|
|
182
|
+
select created_by as user_name,
|
|
183
|
+
text as comment_text,
|
|
184
|
+
created_on as comment_date,
|
|
185
|
+
:APP_FILES || 'icons/app-icon-512.png' as avatar_url
|
|
186
|
+
from apex_task_comments
|
|
187
|
+
order by created_on desc
|
|
188
|
+
```
|
|
189
|
+
}
|
|
190
|
+
layout {
|
|
191
|
+
sequence: 30
|
|
192
|
+
slot: body
|
|
193
|
+
}
|
|
194
|
+
appearance {
|
|
195
|
+
template: @/standard
|
|
196
|
+
templateOptions: #DEFAULT#
|
|
197
|
+
}
|
|
198
|
+
accessibility {
|
|
199
|
+
landmarkType: region
|
|
200
|
+
}
|
|
201
|
+
componentAppearance {
|
|
202
|
+
display: report
|
|
203
|
+
}
|
|
204
|
+
settings {
|
|
205
|
+
userName: USER_NAME
|
|
206
|
+
commentText: COMMENT_TEXT
|
|
207
|
+
date: COMMENT_DATE
|
|
208
|
+
displayAvatar: true
|
|
209
|
+
style: basic
|
|
210
|
+
}
|
|
211
|
+
plugin-avatar {
|
|
212
|
+
type: image
|
|
213
|
+
image: {
|
|
214
|
+
type: urlColumn
|
|
215
|
+
urlColumn: AVATAR_URL
|
|
216
|
+
}
|
|
217
|
+
description: Comment author image
|
|
218
|
+
shape: rounded
|
|
219
|
+
}
|
|
220
|
+
column USER_NAME (
|
|
221
|
+
layout {
|
|
222
|
+
sequence: 10
|
|
223
|
+
}
|
|
224
|
+
source {
|
|
225
|
+
databaseColumn: USER_NAME
|
|
226
|
+
dataType: varchar2
|
|
227
|
+
}
|
|
228
|
+
)
|
|
229
|
+
column COMMENT_TEXT (
|
|
230
|
+
layout {
|
|
231
|
+
sequence: 20
|
|
232
|
+
}
|
|
233
|
+
source {
|
|
234
|
+
databaseColumn: COMMENT_TEXT
|
|
235
|
+
dataType: varchar2
|
|
236
|
+
}
|
|
237
|
+
)
|
|
238
|
+
column COMMENT_DATE (
|
|
239
|
+
layout {
|
|
240
|
+
sequence: 30
|
|
241
|
+
}
|
|
242
|
+
source {
|
|
243
|
+
databaseColumn: COMMENT_DATE
|
|
244
|
+
dataType: date
|
|
245
|
+
}
|
|
246
|
+
)
|
|
247
|
+
column AVATAR_URL (
|
|
248
|
+
layout {
|
|
249
|
+
sequence: 40
|
|
250
|
+
}
|
|
251
|
+
source {
|
|
252
|
+
databaseColumn: AVATAR_URL
|
|
253
|
+
dataType: varchar2
|
|
254
|
+
}
|
|
255
|
+
)
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
region comments_initials_avatar (
|
|
259
|
+
name: Comments with Initials Avatar
|
|
260
|
+
type: themeTemplateComponent/comments
|
|
261
|
+
source {
|
|
262
|
+
location: localDatabase
|
|
263
|
+
type: sqlQuery
|
|
264
|
+
sqlQuery:
|
|
265
|
+
```sql
|
|
266
|
+
select created_by as user_name,
|
|
267
|
+
text as comment_text,
|
|
268
|
+
created_on as comment_date,
|
|
269
|
+
upper(
|
|
270
|
+
substr(trim(created_by), 1, 1) ||
|
|
271
|
+
case
|
|
272
|
+
when instr(trim(created_by), ' ') > 0 then
|
|
273
|
+
substr(trim(created_by), instr(trim(created_by), ' ', -1) + 1, 1)
|
|
274
|
+
end
|
|
275
|
+
) as avatar_initials
|
|
276
|
+
from apex_task_comments
|
|
277
|
+
order by created_on desc
|
|
278
|
+
```
|
|
279
|
+
}
|
|
280
|
+
layout {
|
|
281
|
+
sequence: 40
|
|
282
|
+
slot: body
|
|
283
|
+
}
|
|
284
|
+
appearance {
|
|
285
|
+
template: @/standard
|
|
286
|
+
templateOptions: #DEFAULT#
|
|
287
|
+
}
|
|
288
|
+
accessibility {
|
|
289
|
+
landmarkType: region
|
|
290
|
+
}
|
|
291
|
+
componentAppearance {
|
|
292
|
+
display: report
|
|
293
|
+
}
|
|
294
|
+
settings {
|
|
295
|
+
userName: USER_NAME
|
|
296
|
+
commentText: COMMENT_TEXT
|
|
297
|
+
date: COMMENT_DATE
|
|
298
|
+
displayAvatar: true
|
|
299
|
+
style: chatSpeechBubbles
|
|
300
|
+
}
|
|
301
|
+
plugin-avatar {
|
|
302
|
+
type: initials
|
|
303
|
+
initials: AVATAR_INITIALS
|
|
304
|
+
description: Comment author initials
|
|
305
|
+
shape: noShape
|
|
306
|
+
}
|
|
307
|
+
column USER_NAME (
|
|
308
|
+
layout {
|
|
309
|
+
sequence: 10
|
|
310
|
+
}
|
|
311
|
+
source {
|
|
312
|
+
databaseColumn: USER_NAME
|
|
313
|
+
dataType: varchar2
|
|
314
|
+
}
|
|
315
|
+
)
|
|
316
|
+
column COMMENT_TEXT (
|
|
317
|
+
layout {
|
|
318
|
+
sequence: 20
|
|
319
|
+
}
|
|
320
|
+
source {
|
|
321
|
+
databaseColumn: COMMENT_TEXT
|
|
322
|
+
dataType: varchar2
|
|
323
|
+
}
|
|
324
|
+
)
|
|
325
|
+
column COMMENT_DATE (
|
|
326
|
+
layout {
|
|
327
|
+
sequence: 30
|
|
328
|
+
}
|
|
329
|
+
source {
|
|
330
|
+
databaseColumn: COMMENT_DATE
|
|
331
|
+
dataType: date
|
|
332
|
+
}
|
|
333
|
+
)
|
|
334
|
+
column AVATAR_INITIALS (
|
|
335
|
+
layout {
|
|
336
|
+
sequence: 40
|
|
337
|
+
}
|
|
338
|
+
source {
|
|
339
|
+
databaseColumn: AVATAR_INITIALS
|
|
340
|
+
dataType: varchar2
|
|
341
|
+
}
|
|
342
|
+
)
|
|
343
|
+
)
|
|
344
|
+
|
|
345
|
+
region comments_partial_square_avatar (
|
|
346
|
+
name: Partial Comment with Square Avatar
|
|
347
|
+
type: themeTemplateComponent/comments
|
|
348
|
+
source {
|
|
349
|
+
location: localDatabase
|
|
350
|
+
type: sqlQuery
|
|
351
|
+
sqlQuery:
|
|
352
|
+
```sql
|
|
353
|
+
select created_by as user_name,
|
|
354
|
+
text as comment_text,
|
|
355
|
+
created_on as comment_date
|
|
356
|
+
from apex_task_comments
|
|
357
|
+
order by created_on desc
|
|
358
|
+
fetch first 1 row only
|
|
359
|
+
```
|
|
360
|
+
}
|
|
361
|
+
layout {
|
|
362
|
+
sequence: 50
|
|
363
|
+
slot: body
|
|
364
|
+
}
|
|
365
|
+
appearance {
|
|
366
|
+
template: @/standard
|
|
367
|
+
templateOptions: #DEFAULT#
|
|
368
|
+
}
|
|
369
|
+
accessibility {
|
|
370
|
+
landmarkType: region
|
|
371
|
+
}
|
|
372
|
+
componentAppearance {
|
|
373
|
+
display: partial
|
|
374
|
+
}
|
|
375
|
+
settings {
|
|
376
|
+
userName: USER_NAME
|
|
377
|
+
commentText: COMMENT_TEXT
|
|
378
|
+
date: COMMENT_DATE
|
|
379
|
+
displayAvatar: true
|
|
380
|
+
}
|
|
381
|
+
plugin-avatar {
|
|
382
|
+
type: icon
|
|
383
|
+
icon: fa-user
|
|
384
|
+
description: Comment author
|
|
385
|
+
shape: square
|
|
386
|
+
cssClasses: avatar-comment-author
|
|
387
|
+
}
|
|
388
|
+
column USER_NAME (
|
|
389
|
+
layout {
|
|
390
|
+
sequence: 10
|
|
391
|
+
}
|
|
392
|
+
source {
|
|
393
|
+
databaseColumn: USER_NAME
|
|
394
|
+
dataType: varchar2
|
|
395
|
+
}
|
|
396
|
+
)
|
|
397
|
+
column COMMENT_TEXT (
|
|
398
|
+
layout {
|
|
399
|
+
sequence: 20
|
|
400
|
+
}
|
|
401
|
+
source {
|
|
402
|
+
databaseColumn: COMMENT_TEXT
|
|
403
|
+
dataType: varchar2
|
|
404
|
+
}
|
|
405
|
+
)
|
|
406
|
+
column COMMENT_DATE (
|
|
407
|
+
layout {
|
|
408
|
+
sequence: 30
|
|
409
|
+
}
|
|
410
|
+
source {
|
|
411
|
+
databaseColumn: COMMENT_DATE
|
|
412
|
+
dataType: date
|
|
413
|
+
}
|
|
414
|
+
)
|
|
415
|
+
)
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
# Boundaries
|
|
419
|
+
|
|
420
|
+
- `APEX_TASK_COMMENTS(CREATED_BY, TEXT, CREATED_ON)` is user-asserted evidence for these fixtures.
|
|
421
|
+
- The image branch uses an application-managed static-file URL and a declared varchar2 child column.
|
|
422
|
+
- The initials branch derives the first and last author-name initials into a dedicated projected column rather than hardcoding a value or mapping `USER_NAME` directly.
|
|
423
|
+
- Do not combine the icon, image, and initials payloads in one `plugin-avatar` block.
|
|
424
|
+
- Do not add nested Badge or grouping structures from the Universal Theme export. Comments supports the optional nested `plugin-avatar` structure plus compiler-proven `actions`, `avatarLink`, and `userNameLink` actions using a structured `behavior.target`.
|
|
425
|
+
- Keep `settings.attributes` free of executable markup, event handlers, URL schemes, and substitutions. Keep `settings.commentClass` to static CSS tokens or a direct declared `varchar2` Comments column.
|
|
@@ -7,7 +7,7 @@ Canonical Content Row template pack for `themeTemplateComponent/contentRow`, usi
|
|
|
7
7
|
- Load `content-row._common.md` first for variable contract and generation guardrails.
|
|
8
8
|
- Use `content-row._index.md` to pick the correct scenario template.
|
|
9
9
|
- Load `content-row._template_options.md` for Content Row-specific settings, appearance, and grouping values.
|
|
10
|
-
- Load `../avatar._template_options.md` and `../badge._template_options.md` for the shared avatar and badge substructures.
|
|
10
|
+
- Load `../avatar/avatar._template_options.md` and `../badge/badge._template_options.md` for the shared avatar and badge substructures.
|
|
11
11
|
- Avatar-capable Content Row scenarios use `settings.displayAvatar` plus `plugin-avatar` fields for type, initials/description, shape, size, and CSS classes.
|
|
12
12
|
- Badge-capable Content Row scenarios use `settings.displayBadge` plus `plugin-badge` fields for label, value, state, style, shape, size, icon, position, and width.
|
|
13
13
|
- SQL-backed template component regions must emit top-level `orderBy {}` and must not embed `ORDER BY` inside `source.sqlQuery`.
|
|
@@ -24,7 +24,7 @@ Define the shared variable contract, guardrails, and output skeleton for Content
|
|
|
24
24
|
9. Use `plugin-badge.icon` only for badge icon configuration when the prompt explicitly requests an icon.
|
|
25
25
|
10. Use `plugin-badge.position` only for badge placement configuration when the prompt explicitly requests a start/end placement override.
|
|
26
26
|
11. Close component blocks declared with parentheses (for example `action ... (` or `column ... (`) using `)` after nested blocks.
|
|
27
|
-
12. Keep plugin attribute names and enumerated values aligned with `content-row._template_options.md`, `../avatar._template_options.md`, and `../badge._template_options.md`.
|
|
27
|
+
12. Keep plugin attribute names and enumerated values aligned with `content-row._template_options.md`, `../avatar/avatar._template_options.md`, and `../badge/badge._template_options.md`.
|
|
28
28
|
13. Content Row display settings that map to query columns must use `&COLUMN_NAME.` substitution syntax, for example `title: &ORDER_LABEL.`. Do not emit bare column aliases such as `title: ORDER_LABEL` for `overline`, `title`, `description`, or `miscellaneous`.
|
|
29
29
|
14. Native row selection uses `rowSelection` in report mode. Use `type: focusOnly` for focus behavior without persisted selection state, `type: singleSelection` with `currentSelectionPageItem` for one selected row, or `type: multipleSelection` with both `currentSelectionPageItem` and `selectAllPageItem` for multi-select. The current-selection item should normally be a same-page hidden item that stores selected row value(s); the select-all item should be a same-page checkbox. `rowSelection.currentSelectionPageItem` is native selection state only and does not satisfy master-detail drill-down or parent-child context setting.
|
|
30
30
|
15. SQL-backed Content Row regions must use top-level `orderBy {}` for deterministic ordering. Do not put `ORDER BY` inside `source.sqlQuery`.
|
|
@@ -18,7 +18,7 @@ Use as the routing index for Content Row templates. Select a scenario based on d
|
|
|
18
18
|
- Use avatar, badge, links, primary actions, grouping, and appearance scenario files only when those features are explicitly requested.
|
|
19
19
|
- Use `content-row.report-grouping-selection.md` when native Content Row focus-only, single-row, or multiple-row selection is requested; it documents `rowSelection.currentSelectionPageItem` and the same-page hidden item that stores native selected row state.
|
|
20
20
|
- Use `content-row.report-master-detail-full-row-link.md` when a Content Row parent list filters or drives child detail regions. Native `rowSelection.currentSelectionPageItem` alone is not sufficient for parent-child context setting.
|
|
21
|
-
- Use `content-row._template_options.md`, `../avatar._template_options.md`, and `../badge._template_options.md` when validating Content Row plugin attribute names or allowed values.
|
|
21
|
+
- Use `content-row._template_options.md`, `../avatar/avatar._template_options.md`, and `../badge/badge._template_options.md` when validating Content Row plugin attribute names or allowed values.
|
|
22
22
|
- For SQL-backed Content Row scenarios, keep the SQL unordered and emit the region-level `orderBy {}` block from `content-row._common.md`.
|
|
23
23
|
|
|
24
24
|
## Scenario Routing
|
package/skills/apexlang/templates/template-components/content-row/content-row._template_options.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
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 `settings`, `plugin-appearance`, and `plugin-grouping`.
|
|
6
|
-
Load `../avatar._template_options.md` and `../badge._template_options.md` for the shared avatar and badge substructures used by Content Row.
|
|
6
|
+
Load `../avatar/avatar._template_options.md` and `../badge/badge._template_options.md` for the shared avatar and badge substructures used by Content Row.
|
|
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
8
|
|
|
9
9
|
When a row includes `values=`, pass the left-hand side of each `name=>return_value` pair.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Flexbox Container Templates
|
|
2
|
+
|
|
3
|
+
Option inventory for the Universal Theme Flexbox Container template component.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
- Load `flexbox-container._index.md` before using the inventory.
|
|
8
|
+
- Load `flexbox-container._template_options.md` only when its attributes or enum values are requested.
|
|
9
|
+
- Use the compiler-backed component contract for emitted structure; this directory contains no scenario fixture.
|
package/skills/apexlang/templates/template-components/flexbox-container/flexbox-container._index.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
templateId: template-component.flexbox-container.index
|
|
3
|
+
componentType: template-component
|
|
4
|
+
version: 1.0
|
|
5
|
+
imports:
|
|
6
|
+
- flexbox-container._template_options.md
|
|
7
|
+
description: Routing entrypoint for Flexbox Container template-component options.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Load Order
|
|
11
|
+
|
|
12
|
+
1. Load `flexbox-container._template_options.md` when validating Flexbox Container options.
|
|
13
|
+
2. Load the selected component workflow and compiler contract for emitted structure.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Media List Templates
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Canonical generation pack for the Universal Theme `themeTemplateComponent/mediaList` component in partial and report modes.
|
|
6
|
+
|
|
7
|
+
Natural requests such as `create a Media List template` select this direct component. Generic `create a list template` requests select the shared-list region. Explicit `List-region Media List template` or `Classic Report Media List template` requests retain their named host owner; adding the word `template` alone does not select a different owner. See `media-list._index.md` for scenario selection.
|
|
8
|
+
|
|
9
|
+
## Supported Surface
|
|
10
|
+
|
|
11
|
+
- Partial mode for one Media List item backed by literals or existing session-state values.
|
|
12
|
+
- Report mode for verified `localDatabase/sqlQuery` sources only. Unsupported REST, JSON, property-graph, function-body, and sample-data requests stop with Missing Inputs until an adapter exists.
|
|
13
|
+
- Required title plus optional description.
|
|
14
|
+
- Optional Avatar using the shared initials, Font APEX icon, or application-managed URL-column image contracts.
|
|
15
|
+
- Optional Badge using a static label, source-backed value, optional semantic state, and optional Font APEX icon.
|
|
16
|
+
- One optional `link` action using a reviewed same-application target.
|
|
17
|
+
- Native `2ColumnGrid`, `3ColumnGrid`, `4ColumnGrid`, `5ColumnGrid`, and `horizontalSpan` layouts, optional `large` sizing, and Universal Theme colors.
|
|
18
|
+
- Deterministic top-level ordering, exact report projection coverage, region/action authorization, and native responsive behavior.
|
|
19
|
+
- Native grouping is not supported by the current curated Media List policy. Enable it only after an authoritative policy refresh exposes a report-group block and exact accepted properties.
|
|
20
|
+
|
|
21
|
+
## Report-Column Target-Build Gate and Curated Feature Policy
|
|
22
|
+
|
|
23
|
+
Media List uses a composite contract with an explicit authority boundary:
|
|
24
|
+
|
|
25
|
+
- The active compiler/grammar metadata resolves only the report-column declaration, required properties, blocks, and datatypes.
|
|
26
|
+
- The curated Universal Theme component policy governs Media List settings, `plugin-avatar`, `plugin-badge`, actions, and grouping. These capabilities are not inferred from the report-column grammar.
|
|
27
|
+
- Generated `component-contracts/<build>.json` records this boundary in `capability_provenance` so consumers can distinguish `compiler-runtime-metadata` from `curated-component-policy`.
|
|
28
|
+
|
|
29
|
+
Before generating a report:
|
|
30
|
+
|
|
31
|
+
1. Load the active `component-contracts/<build>.json` produced by runtime preflight/validation.
|
|
32
|
+
2. Resolve `region.column` with the task-scoped grammar contract under `region.type=themeTemplateComponent/mediaList` and a concrete non-null report-source location such as `region.source.location=localDatabase`.
|
|
33
|
+
3. Emit exactly the declaration and properties selected by that contract. Named and unnamed column variants are mutually exclusive.
|
|
34
|
+
4. Emit settings, Avatar/Badge properties, actions, and grouping only when the selected curated policy exposes their exact names and values.
|
|
35
|
+
5. Treat an optional policy capability that is absent as unsupported. Compiler column resolution alone cannot enable it.
|
|
36
|
+
6. Stop with Missing Inputs when the report-column contract is unavailable or ambiguous, or when the applicable curated policy cannot be identified.
|
|
37
|
+
7. Run the grammar/compiler conformance probe for the selected target build. A compiler default is not optionality: emit `source.type: databaseColumn` when the selected column contract marks it required, even when the compiler also records the `DB_COLUMN` default. Any real grammar-versus-requiredness mismatch blocks generation.
|
|
38
|
+
|
|
39
|
+
For nested placement, resolve an existing parent region's exact template and slot from the target catalog. Standard and Content Block parents support `regionBody` and `subRegions`; use `regionBody` by default. Page-level placement remains `body`.
|
|
40
|
+
|
|
41
|
+
Pass the generated contract to local validation with `--component-attributes component-contracts/<build>.json`; do not relabel the repository fallback schema as a target-build contract.
|
|
42
|
+
|
|
43
|
+
The repository baseline was live-validated with named report columns. That result is evidence for that target, not a universal rule:
|
|
44
|
+
|
|
45
|
+
```apexlang
|
|
46
|
+
column MEDIA_TITLE (
|
|
47
|
+
layout {
|
|
48
|
+
sequence: 20
|
|
49
|
+
}
|
|
50
|
+
source {
|
|
51
|
+
type: databaseColumn
|
|
52
|
+
databaseColumn: MEDIA_TITLE
|
|
53
|
+
dataType: varchar2
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
For a target that selects this named variant, the declaration identifier and `source.databaseColumn` must match the exact projected alias, and `source.primaryKey: true` is allowed only when exposed by the active contract. If another target selects an unnamed variant, use its required direct properties instead. Never mix variants.
|
|
59
|
+
|
|
60
|
+
## Usage
|
|
61
|
+
|
|
62
|
+
1. Load the active target-build report-column contract and the selected curated Media List component policy.
|
|
63
|
+
2. Load `media-list._common.md`.
|
|
64
|
+
3. Load `media-list._index.md`.
|
|
65
|
+
4. Select the narrowest scenario matching the requested mode and feature set.
|
|
66
|
+
5. Load `media-list._template_options.md` for Media List settings.
|
|
67
|
+
6. Load `../avatar/avatar._template_options.md` or `../badge/badge._template_options.md` only when that nested feature is enabled.
|
|
68
|
+
|
|
69
|
+
## Scenario Catalog
|
|
70
|
+
|
|
71
|
+
- `media-list.partial.md`
|
|
72
|
+
- `media-list.report-base.md`
|
|
73
|
+
- `media-list.report-avatar-badge.md`
|
|
74
|
+
- `media-list.report-link.md`
|
|
75
|
+
- `media-list.report-grouped.md` (capability-gated)
|
|
76
|
+
- `media-list.report-layouts.md`
|
|
77
|
+
|
|
78
|
+
## Design-System and Accessibility Rules
|
|
79
|
+
|
|
80
|
+
- Use native Universal Theme rendering, layouts, shapes, sizes, states, and colors. Do not recreate Media List with Classic Report HTML or custom CSS.
|
|
81
|
+
- Keep the native region heading unless the owning page contract intentionally uses a hidden-heading template option with the correct landmark behavior.
|
|
82
|
+
- Meaningful Avatars require an accessible description; decorative Avatars use the shared `AVATAR_PURPOSE_DECORATIVE` marker and omit the description.
|
|
83
|
+
- Badge color is supplemental. Its value and optional displayed label must communicate meaning without relying on state color alone.
|
|
84
|
+
- Native link actions remain keyboard accessible. Do not add `linkAttributes`, inline handlers, or custom focus behavior.
|
|
85
|
+
- Prefer the default single-column flow in narrow containers. Select multi-column layouts only when the owning page provides sufficient width; reserve `horizontalSpan` for an explicitly wide, non-wrapping presentation.
|
|
86
|
+
|
|
87
|
+
## Edge-Case Rules
|
|
88
|
+
|
|
89
|
+
- Zero-row sources remain zero rows; do not manufacture placeholder SQL rows. Route an explicit empty-state requirement to a separately supported page/region pattern.
|
|
90
|
+
- Null descriptions are supported by omitting the description mapping when the entire scenario does not need it. Do not create row-dependent DSL structure.
|
|
91
|
+
- Long titles and descriptions rely on Universal Theme wrapping. Do not truncate semantically important content with custom CSS.
|
|
92
|
+
- Omit Avatar, Badge, grouping, layout, size, colors, and actions when they were not requested or the selected curated policy does not expose them.
|
|
93
|
+
- Keep exactly one action. If multiple interactions are required, route to a component family that exposes the required action positions.
|
|
94
|
+
- Stop with Missing Inputs when a source, column, destination, authorization scheme, icon, state mapping, or dynamic accessible description cannot be proven.
|
|
95
|
+
|
|
96
|
+
## Maintenance
|
|
97
|
+
|
|
98
|
+
- Keep this README, `media-list._index.md`, `media-list._template_options.md`, and `../template-components.registry.json` synchronized.
|
|
99
|
+
- Keep the curated component policy and theme-export option inventory aligned with `query-valid-props.mjs --template-component mediaList`. Keep only report-column structural decisions aligned with the active task-scoped `region.column` grammar contract.
|
|
100
|
+
- Update validator rules and regression coverage whenever the supported Media List surface changes.
|