@fluentcommerce/ai-skills 0.1.0 → 0.3.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.
Potentially problematic release.
This version of @fluentcommerce/ai-skills might be problematic. Click here for more details.
- package/README.md +866 -622
- package/bin/cli.mjs +2112 -1973
- package/content/cli/agents/fluent-cli/agent.json +149 -149
- package/content/cli/agents/fluent-cli.md +132 -132
- package/content/cli/skills/fluent-bootstrap/SKILL.md +214 -181
- package/content/cli/skills/fluent-cli-index/SKILL.md +1 -1
- package/content/cli/skills/fluent-cli-mcp-cicd/SKILL.md +117 -1
- package/content/cli/skills/fluent-cli-reference/SKILL.md +1040 -1031
- package/content/cli/skills/fluent-cli-retailer/SKILL.md +27 -2
- package/content/cli/skills/fluent-cli-settings/SKILL.md +21 -1
- package/content/cli/skills/fluent-connect/SKILL.md +937 -886
- package/content/cli/skills/fluent-module-deploy/SKILL.md +63 -5
- package/content/cli/skills/fluent-profile/SKILL.md +73 -0
- package/content/cli/skills/fluent-workflow/SKILL.md +360 -310
- package/content/dev/agents/fluent-backend-dev/AGENT.md +58 -0
- package/content/dev/agents/fluent-backend-dev/agent.json +69 -0
- package/content/dev/agents/fluent-backend-dev.md +287 -0
- package/content/dev/agents/fluent-dev/AGENT.md +98 -0
- package/content/dev/agents/fluent-dev/agent.json +14 -2
- package/content/dev/agents/fluent-dev.md +194 -525
- package/content/dev/agents/fluent-frontend-dev/AGENT.md +63 -0
- package/content/dev/agents/fluent-frontend-dev/agent.json +52 -0
- package/content/dev/agents/fluent-frontend-dev.md +323 -0
- package/content/dev/skills/fluent-archive/SKILL.md +234 -0
- package/content/dev/skills/fluent-build/SKILL.md +312 -192
- package/content/dev/skills/fluent-connection-analysis/SKILL.md +422 -386
- package/content/dev/skills/fluent-custom-code/SKILL.md +15 -9
- package/content/dev/skills/fluent-data-module-scaffold/SKILL.md +19 -2
- package/content/dev/skills/fluent-e2e-test/SKILL.md +501 -394
- package/content/dev/skills/fluent-event-api/SKILL.md +962 -945
- package/content/dev/skills/fluent-feature-explain/SKILL.md +680 -603
- package/content/dev/skills/fluent-feature-plan/PLAN_TEMPLATE.md +27 -2
- package/content/dev/skills/fluent-feature-plan/SKILL.md +478 -227
- package/content/dev/skills/fluent-feature-status/SKILL.md +335 -0
- package/content/dev/skills/fluent-feedback/SKILL.md +221 -0
- package/content/dev/skills/fluent-implementation-map/SKILL.md +644 -0
- package/content/dev/skills/fluent-job-batch/SKILL.md +10 -0
- package/content/dev/skills/fluent-module-scaffold/SKILL.md +64 -2
- package/content/dev/skills/fluent-module-validate/SKILL.md +778 -775
- package/content/dev/skills/fluent-mystique-analyze/SKILL.md +817 -0
- package/content/dev/skills/fluent-mystique-builder/COMPONENT_TEMPLATE.md +81 -0
- package/content/dev/skills/fluent-mystique-builder/README.md +63 -0
- package/content/dev/skills/fluent-mystique-builder/SKILL.md +1294 -0
- package/content/dev/skills/fluent-mystique-builder/components/INDEX.md +92 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.accordion.md +48 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.fulfilmentpack.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.multiparcel.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.returnitems.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.wavepick.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.inline.md +24 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.activity.entity.md +25 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.analytics.viz.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.column.md +111 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.json.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.jsoneditor.md +54 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.locationId.md +51 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.retailerId.md +52 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.bar.md +57 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.download.md +53 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.compatibility.md +60 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.md +53 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.md +24 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.pick.md +61 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.buttons.add.reject.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.attribute.md +73 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.attributes.grid.md +40 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.image.md +37 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.map.point.md +24 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.multi.md +79 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.product.md +27 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.md +34 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.wrapper.feed.md +98 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.md +52 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.wrapper.source.md +104 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.md +28 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.wrapper.threshold.md +118 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.line.md +32 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.conditional.md +62 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.dashboard.threshold.md +65 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.daterange.wrapper.forwarder.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.drawer.button.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.event.detail.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.events.search.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.daterange.md +83 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.filterComplex.md +106 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.intrange.md +82 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.multistring.md +50 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.filterPanel.md +53 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.json.editor.md +22 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.json.viewer.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.customAction.md +79 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.md +116 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.bppmetrics.md +69 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.feed.md +65 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.source.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.addItem.md +60 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mutation.inline.md +88 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.attributes.md +83 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.text.md +33 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.link.md +30 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.order.itemDetails.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.order.shipmentDetails.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.filter.select.md +87 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.refresh.md +48 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.column.md +71 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.header.md +61 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.md +59 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.md +45 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.summary.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.progress.circular.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.provider.graphql.md +71 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.quantity.list.md +87 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.repeater.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.reports.ipuipc.md +54 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.return.rowExpansion.md +19 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcode.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcodeFilter.md +72 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.camera.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.settingForm.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.drawer.button.md +19 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.modal.button.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.strategy.modal.button.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.stepper.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tab.content.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.card.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.md +69 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tile.metric.md +73 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.workflow.provider.md +77 -0
- package/content/dev/skills/fluent-mystique-builder/validate-docs.ps1 +260 -0
- package/content/dev/skills/fluent-mystique-scaffold/SKILL.md +1830 -0
- package/content/dev/skills/fluent-mystique-validate/SKILL.md +646 -0
- package/content/dev/skills/fluent-pre-deploy-check/SKILL.md +1144 -1108
- package/content/dev/skills/fluent-retailer-config/SKILL.md +1162 -1111
- package/content/dev/skills/fluent-rollback/SKILL.md +387 -0
- package/content/dev/skills/fluent-rule-scaffold/SKILL.md +515 -385
- package/content/dev/skills/fluent-scope-decompose/SKILL.md +1123 -1021
- package/content/dev/skills/fluent-session-audit-export/SKILL.md +880 -632
- package/content/dev/skills/fluent-session-summary/SKILL.md +320 -195
- package/content/dev/skills/fluent-settings/SKILL.md +160 -1
- package/content/dev/skills/fluent-source-onboard/SKILL.md +31 -3
- package/content/dev/skills/fluent-sourcing/SKILL.md +1185 -0
- package/content/dev/skills/fluent-system-monitoring/SKILL.md +771 -767
- package/content/dev/skills/fluent-test-data/SKILL.md +514 -513
- package/content/dev/skills/fluent-trace/SKILL.md +1169 -1143
- package/content/dev/skills/fluent-transition-api/SKILL.md +364 -346
- package/content/dev/skills/fluent-use-case-discover/SKILL.md +593 -0
- package/content/dev/skills/fluent-use-case-discover/SPEC_TEMPLATE.md +281 -0
- package/content/dev/skills/fluent-version-manage/SKILL.md +53 -2
- package/content/dev/skills/fluent-workflow-analyzer/SKILL.md +995 -959
- package/content/dev/skills/fluent-workflow-builder/SKILL.md +668 -319
- package/content/dev/skills/fluent-workflow-deploy/SKILL.md +480 -267
- package/content/dev/skills/fluent-workspace-tree/SKILL.md +281 -0
- package/content/mcp-extn/agents/fluent-mcp.md +133 -69
- package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +812 -461
- package/content/mcp-official/agents/fluent-mcp-core.md +91 -91
- package/content/mcp-official/skills/fluent-mcp-core/SKILL.md +94 -94
- package/content/rfl/skills/fluent-rfl-assess/SKILL.md +172 -172
- package/docs/CAPABILITY_MAP.md +106 -77
- package/docs/DEPLOYMENT_PROMOTION_RUNBOOK.md +218 -0
- package/docs/DESIGN-implementation-map.md +698 -0
- package/docs/DEV_WORKFLOW.md +814 -802
- package/docs/FLOW_RUN.md +142 -142
- package/docs/GETTING_STARTED.md +427 -0
- package/docs/USE_CASES.md +909 -52
- package/metadata.json +184 -156
- package/package.json +3 -2
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.events.search"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.events.search
|
|
5
|
+
category: content
|
|
6
|
+
module: OMS
|
|
7
|
+
---
|
|
8
|
+
# fc.events.search
|
|
9
|
+
|
|
10
|
+
Advanced event search interface with filters, timeline display, and export. Queries the Event API for system events.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Event forensics / debugging pages
|
|
14
|
+
- Admin event search
|
|
15
|
+
- Audit trail viewing
|
|
16
|
+
|
|
17
|
+
## AI Parse Notes
|
|
18
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
19
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
20
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
21
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.field.daterange"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.field.daterange
|
|
5
|
+
- daterange
|
|
6
|
+
category: field
|
|
7
|
+
module: Core
|
|
8
|
+
---
|
|
9
|
+
# fc.field.daterange
|
|
10
|
+
|
|
11
|
+
Date and time range picker with dual calendar view, locale-aware date formatting, and configurable future date restriction.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Filter forms requiring a date/time range (e.g., event search, report generation)
|
|
15
|
+
- Workflow user actions needing date range input
|
|
16
|
+
- Any form where start and end date/time selection is required
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
| Prop | Type | Required | What it controls |
|
|
20
|
+
|------|------|----------|------------------|
|
|
21
|
+
| `value` | `{ from: string \| null, to: string \| null }` | No | Initial date range in ISO format (e.g., `'2024-04-18T13:50:49.030Z'`) |
|
|
22
|
+
| `label` | string | No | Field label (supports i18n keys) |
|
|
23
|
+
| `disableFuture` | boolean | Yes | When `true`, prevents selection of future dates. Default: `false` |
|
|
24
|
+
| `isError` | boolean | No | Marks input as invalid with red border (custom component only) |
|
|
25
|
+
| `helperText` | string | No | Helper text below the input field (custom component only) |
|
|
26
|
+
| `minDate` | string | No | Minimum selectable date (custom component only) |
|
|
27
|
+
| `maxDate` | string | No | Maximum selectable date (custom component only) |
|
|
28
|
+
|
|
29
|
+
## Data Binding
|
|
30
|
+
In workflow configuration, use `defaultValue` with `{ from: "", to: "" }` to set initial range. The component returns values in ISO 8601 string format. Properties marked with "custom component only" can only be configured when used as a registered SDK component, not through workflow contracts.
|
|
31
|
+
|
|
32
|
+
### Workflow Contract Properties
|
|
33
|
+
`name`, `label`, `type`, `source`, `value`, `options`, `defaultValue`, `mandatory`
|
|
34
|
+
|
|
35
|
+
## Descendants
|
|
36
|
+
No.
|
|
37
|
+
|
|
38
|
+
## Gotchas
|
|
39
|
+
- Date format adapts to the browser's preferred language: `dd/mm/yyyy` (UK/AU), `mm/dd/yyyy` (US), `yyyy/mm/dd` (CA/FR-CA).
|
|
40
|
+
- Time uses 24-hour format. Default start time: `00:00:00`, default end time: `23:59:59`.
|
|
41
|
+
- Both start and end times are required once the filter is applied.
|
|
42
|
+
- Navigation icons disable at January 1970 (minimum) and the month after the current month (maximum).
|
|
43
|
+
- Clear resets all changes; Cancel restores initial values and closes; Apply confirms and closes.
|
|
44
|
+
|
|
45
|
+
## Manifest Example
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"userActions": [
|
|
49
|
+
{
|
|
50
|
+
"eventName": "ApplyDateFilter",
|
|
51
|
+
"context": [
|
|
52
|
+
{
|
|
53
|
+
"label": "Date",
|
|
54
|
+
"type": "SECONDARY",
|
|
55
|
+
"modules": ["adminconsole"],
|
|
56
|
+
"confirm": true
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"attributes": [
|
|
60
|
+
{
|
|
61
|
+
"name": "daterange",
|
|
62
|
+
"label": "Dates",
|
|
63
|
+
"type": "daterange",
|
|
64
|
+
"source": "",
|
|
65
|
+
"defaultValue": { "to": "", "from": "" },
|
|
66
|
+
"mandatory": false
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
When this component is used inside workflow user actions, keep the strict contract:
|
|
75
|
+
- Set explicit `eventName` (do not infer from `label`)
|
|
76
|
+
- Keep `context` and `attributes` to documented user-action fields only
|
|
77
|
+
- Validate module visibility with `workflow.transitions` (`module` vs `module: "all"`)
|
|
78
|
+
|
|
79
|
+
## AI Parse Notes
|
|
80
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
81
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
82
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
83
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.field.filterComplex"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.field.filterComplex
|
|
5
|
+
category: field
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.field.filterComplex
|
|
9
|
+
|
|
10
|
+
Complex multi-condition filter builder that dynamically fetches and filters data via a configurable GraphQL query. Opens a modal dialog with form fields, search results, and chip-based selection.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Entity search fields requiring multi-step filtering (e.g., product lookup, location search)
|
|
14
|
+
- Forms where users must select entities from GraphQL query results
|
|
15
|
+
- Advanced filter inputs with custom search result card layouts
|
|
16
|
+
|
|
17
|
+
## Key Props
|
|
18
|
+
| Prop | Type | Required | What it controls |
|
|
19
|
+
|------|------|----------|------------------|
|
|
20
|
+
| `value` | `string[]` | No | Array of pre-selected values |
|
|
21
|
+
| `label` | string | No | Label for the main input field |
|
|
22
|
+
| `extensions` | Extensions | No | Advanced configuration (query, result layout, selection behavior) |
|
|
23
|
+
|
|
24
|
+
### Extensions Object
|
|
25
|
+
| Prop | Type | Required | What it controls |
|
|
26
|
+
|------|------|----------|------------------|
|
|
27
|
+
| `query` | string | **Yes** | GraphQL query for filtering data |
|
|
28
|
+
| `filtersSource` | string | No | Data source for filter options |
|
|
29
|
+
| `variables` | `Map<string, any>` | No | GraphQL query variables |
|
|
30
|
+
| `overrides` | ExtendedFormField | No | Field-level customization (label, default value, component) |
|
|
31
|
+
| `searchItemConfig` | MystiqueComponentInstance | **Yes** | Layout for search result items (Product Card or Standard Card) |
|
|
32
|
+
| `chipItemConfig` | `{ label: string, query: string, variables: Map }` | **Yes** | Chip display label path and pre-selection query |
|
|
33
|
+
| `onChangeValues` | OnChangeValues | **Yes** | Maps search item data to filter values |
|
|
34
|
+
| `exclude` | `string[]` | No | Filter fields to hide (e.g., `["createdOn"]`) |
|
|
35
|
+
| `mode` | `"single" \| "multiple"` | No | Selection mode. Default: `"multiple"` |
|
|
36
|
+
| `selectionLimit` | number | No | Max selectable items (only for `"multiple"` mode) |
|
|
37
|
+
| `displayColumns` | number | No | Number of form field columns. Default: `1` |
|
|
38
|
+
| `modalDimension` | `"small" \| "medium"` | No | Modal window size. Default: `"small"` |
|
|
39
|
+
|
|
40
|
+
### OnChangeValues Object
|
|
41
|
+
| Prop | Type | Required | What it controls |
|
|
42
|
+
|------|------|----------|------------------|
|
|
43
|
+
| `value` | string | No | Path to extract value from search item |
|
|
44
|
+
| `variableName` | string | No | GraphQL variable name for the value |
|
|
45
|
+
| `visibleItemsThreshold` | number | No | Min items shown before collapsing. Default: `2` |
|
|
46
|
+
|
|
47
|
+
### ExtendedFormField (overrides)
|
|
48
|
+
| Prop | Type | Required | What it controls |
|
|
49
|
+
|------|------|----------|------------------|
|
|
50
|
+
| `component` | string | No | Alternate field component alias |
|
|
51
|
+
| `source` | string | No | Setting name for dropdown/radio options |
|
|
52
|
+
| `label` | string | No | Custom label (supports i18n) |
|
|
53
|
+
| `value` | any | No | Lock field to a fixed value (hides field) |
|
|
54
|
+
| `defaultValue` | any | No | Initial editable value |
|
|
55
|
+
| `helperText` | string | No | Helper text alongside the field |
|
|
56
|
+
| `options` | `Record<string, string>` | No | Value options for select/radio |
|
|
57
|
+
| `sortPrefix` | string | No | Field position in form |
|
|
58
|
+
|
|
59
|
+
## Data Binding
|
|
60
|
+
The `query` in extensions defines the GraphQL query executed when the modal is opened and as filter fields change. `searchItemConfig` defines how results are displayed (typically via `fc.card.product` or `fc.card.attribute`). `chipItemConfig.query` runs an initial query to resolve labels for pre-selected values.
|
|
61
|
+
|
|
62
|
+
## Descendants
|
|
63
|
+
No.
|
|
64
|
+
|
|
65
|
+
## Gotchas
|
|
66
|
+
- Three required extension props: `query`, `searchItemConfig`, and `chipItemConfig` must all be configured.
|
|
67
|
+
- Selected items display as chips at the top of the modal; items remain visible in results after selection.
|
|
68
|
+
- When `mode: "single"`, output is a string; when `mode: "multiple"`, output is an array.
|
|
69
|
+
- `selectionLimit` is ignored when mode is `"single"`.
|
|
70
|
+
- Use `displayColumns: 2` or `3` for wider modals with many filter fields.
|
|
71
|
+
|
|
72
|
+
## Manifest Example
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"component": "fc.field.filterComplex",
|
|
76
|
+
"props": {
|
|
77
|
+
"label": "Select Products",
|
|
78
|
+
"extensions": {
|
|
79
|
+
"query": "query products($ref: [String]) { variantProducts(ref: $ref) { edges { node { ref name } } } }",
|
|
80
|
+
"searchItemConfig": {
|
|
81
|
+
"component": "fc.card.product",
|
|
82
|
+
"props": { "title": "{{node.name}}" }
|
|
83
|
+
},
|
|
84
|
+
"chipItemConfig": {
|
|
85
|
+
"label": "node.name",
|
|
86
|
+
"query": "query getProduct($ref: [String]) { variantProducts(ref: $ref) { edges { node { ref name } } } }",
|
|
87
|
+
"variables": {}
|
|
88
|
+
},
|
|
89
|
+
"onChangeValues": {
|
|
90
|
+
"value": "node.ref",
|
|
91
|
+
"variableName": "ref"
|
|
92
|
+
},
|
|
93
|
+
"mode": "multiple",
|
|
94
|
+
"selectionLimit": 10,
|
|
95
|
+
"modalDimension": "medium",
|
|
96
|
+
"displayColumns": 2
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## AI Parse Notes
|
|
103
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
104
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
105
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
106
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.field.intrange"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.field.intrange
|
|
5
|
+
- intrange
|
|
6
|
+
category: field
|
|
7
|
+
module: Core
|
|
8
|
+
---
|
|
9
|
+
# fc.field.intrange
|
|
10
|
+
|
|
11
|
+
Integer range (min/max) input field with popup for entering minimum and maximum values. Supports partial ranges and negative numbers.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Filter forms requiring numeric range input (e.g., quantity range, price range)
|
|
15
|
+
- Workflow user actions needing integer range parameters
|
|
16
|
+
- List/table filters for numeric columns
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
| Prop | Type | Required | What it controls |
|
|
20
|
+
|------|------|----------|------------------|
|
|
21
|
+
| `value` | `{ from?: number, to?: number }` | No | Current range values. Supports negative numbers. |
|
|
22
|
+
| `defaultValue` | `{ from?: number, to?: number }` | No | Initial range (workflow configuration). Can be partial. |
|
|
23
|
+
| `name` | string | No | Field name in the form |
|
|
24
|
+
| `label` | string | No | Field label (supports i18n keys) |
|
|
25
|
+
| `mandatory` | boolean | No | Whether the field is required |
|
|
26
|
+
|
|
27
|
+
## Data Binding
|
|
28
|
+
In workflow configuration, use `defaultValue` to set the initial range. The property supports flexible configuration:
|
|
29
|
+
- Both values: `{ from: 1, to: 100 }`
|
|
30
|
+
- Only minimum: `{ from: 1 }`
|
|
31
|
+
- Only maximum: `{ to: 100 }`
|
|
32
|
+
- No values: `{}` or omit `defaultValue` entirely
|
|
33
|
+
|
|
34
|
+
### Workflow Contract Properties
|
|
35
|
+
`name`, `label`, `type`, `source`, `value`, `options`, `defaultValue`, `mandatory`
|
|
36
|
+
|
|
37
|
+
## Descendants
|
|
38
|
+
No.
|
|
39
|
+
|
|
40
|
+
## Gotchas
|
|
41
|
+
- The input displays the current range as a formatted string. Clicking opens a popup with two input fields.
|
|
42
|
+
- Both `from` and `to` are optional -- partial ranges are valid.
|
|
43
|
+
- Negative values are supported.
|
|
44
|
+
- Clear resets fields to empty; Cancel restores initial values and closes; Apply confirms and closes.
|
|
45
|
+
|
|
46
|
+
## Manifest Example
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"userActions": [
|
|
50
|
+
{
|
|
51
|
+
"eventName": "ApplyQuantityFilter",
|
|
52
|
+
"context": [
|
|
53
|
+
{
|
|
54
|
+
"label": "Filter by Quantity",
|
|
55
|
+
"type": "SECONDARY",
|
|
56
|
+
"modules": ["adminconsole"]
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"attributes": [
|
|
60
|
+
{
|
|
61
|
+
"name": "quantityRange",
|
|
62
|
+
"label": "Quantity Range",
|
|
63
|
+
"type": "intrange",
|
|
64
|
+
"defaultValue": { "from": 0, "to": 1000 },
|
|
65
|
+
"mandatory": false
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
When this component is used inside workflow user actions, keep the strict contract:
|
|
74
|
+
- Set explicit `eventName` (do not infer from `label`)
|
|
75
|
+
- Keep `context` and `attributes` to documented user-action fields only
|
|
76
|
+
- Validate module visibility with `workflow.transitions` (`module` vs `module: "all"`)
|
|
77
|
+
|
|
78
|
+
## AI Parse Notes
|
|
79
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
80
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
81
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
82
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.field.multistring"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.field.multistring
|
|
5
|
+
category: field
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.field.multistring
|
|
9
|
+
|
|
10
|
+
Multi-value string input that converts free-text entries into individual chips. Supports context search (partial match) and exact search (strict match) modes, with automatic duplicate removal.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Filter forms requiring multiple search terms (e.g., multi-ref search, multi-SKU lookup)
|
|
14
|
+
- Any input where users need to enter several string values as tags/chips
|
|
15
|
+
- Bulk search interfaces for order refs, product refs, or tracking numbers
|
|
16
|
+
|
|
17
|
+
## Key Props
|
|
18
|
+
| Prop | Type | Required | What it controls |
|
|
19
|
+
|------|------|----------|------------------|
|
|
20
|
+
| `exactSearch` | boolean | No | When `true`, enforces exact case-sensitive matching. Default: `false` (context/partial search). |
|
|
21
|
+
| `visibleItemsThreshold` | number | No | Minimum chips shown before excess collapses into dropdown. Default: `2` |
|
|
22
|
+
|
|
23
|
+
## Data Binding
|
|
24
|
+
The component outputs an array of string values. Each entered value becomes a chip. Duplicates are automatically removed. Leading/trailing spaces are trimmed. Empty strings are ignored.
|
|
25
|
+
|
|
26
|
+
## Descendants
|
|
27
|
+
No.
|
|
28
|
+
|
|
29
|
+
## Gotchas
|
|
30
|
+
- Two search modes: Context Search (default, partial matching) and Exact Search (set `exactSearch: true`, strict case-sensitive matching).
|
|
31
|
+
- Duplicate entries are silently removed -- the component ensures unique values only.
|
|
32
|
+
- Empty strings and whitespace-only entries are rejected.
|
|
33
|
+
- Clear removes all chips; Cancel restores initial values; Apply finalizes selection.
|
|
34
|
+
|
|
35
|
+
## Manifest Example
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"component": "fc.field.multistring",
|
|
39
|
+
"props": {
|
|
40
|
+
"exactSearch": false,
|
|
41
|
+
"visibleItemsThreshold": 3
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## AI Parse Notes
|
|
47
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
48
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
49
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
50
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.filterPanel"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.filterPanel
|
|
5
|
+
category: filter
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.filterPanel
|
|
9
|
+
|
|
10
|
+
Collapsible filter panel that generates search/filter UI from data source or config. Connects to `fc.list` to filter results.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Any list page that needs search/filter functionality
|
|
14
|
+
- Paired with `fc.list` for filtered entity lists
|
|
15
|
+
|
|
16
|
+
## Key Props
|
|
17
|
+
| Prop | Type | Required | What it controls |
|
|
18
|
+
|------|------|----------|------------------|
|
|
19
|
+
| `filtersSource` | string | No | Prefix for auto-detected filter variables from the page query (e.g., `"orders"` matches `orders_status`, `orders_ref`, etc.) |
|
|
20
|
+
| `query` | string | No | Custom GraphQL query -- filter fields are extracted from the query's variable definitions instead of the page query |
|
|
21
|
+
| `variables` | Record<string, any> | No | Query variables -- supports template strings |
|
|
22
|
+
| `noCard` | boolean | No | Remove card styling |
|
|
23
|
+
| `overrides` | Record<string, ExtendedFormField> | No | Per-field customization keyed by field name. Supports `inputTemplate`, `outputTemplate`, `label`, `component`, `defaultValue`, `multiple`, `sortPrefix` |
|
|
24
|
+
| `exclude` | string[] | No | Hide specific filter fields by name |
|
|
25
|
+
| `additionalFields` | MystiqueComponentInstance[] | No | Extra filter field components to append |
|
|
26
|
+
| `allowReadWriteUrlParams` | boolean | No | Sync filters with URL query parameters for shareable filtered views |
|
|
27
|
+
|
|
28
|
+
## Descendants
|
|
29
|
+
Yes — typically `fc.list` as a child.
|
|
30
|
+
|
|
31
|
+
## Gotchas
|
|
32
|
+
- **Filter fields are auto-detected from the GraphQL query's variable definitions** -- the panel introspects the page query AST (or custom `query` prop) and generates form fields for each variable matching the `filtersSource` prefix. Pagination variables (`first`, `last`, `before`, `after`, `workflowRef`, `workflowVersion`) are excluded by default
|
|
33
|
+
- URL param sync lets users share filtered views via URL
|
|
34
|
+
- **`inputTemplate` / `outputTemplate` transform system**: Set via `overrides` per field. `outputTemplate` transforms the field value before sending it as a query variable (e.g., `outputTemplate: '{"ref": "{{value}}"}'` wraps the user input into an object). `inputTemplate` does the reverse when reading from URL params (e.g., `inputTemplate: '{{ref}}'` extracts the ref from a URL param). Templates receive `{{ value }}` (current field value) and `{{ values }}` (all field values)
|
|
35
|
+
- `defaultValue` in overrides supports `{{settings.settingName}}` syntax to load initial values from Fluent settings
|
|
36
|
+
- Filter field labels are auto-generated from variable names using i18n lookup: `fc.gql.<entity>.<field>.label` -> fallback to capitalized field name
|
|
37
|
+
|
|
38
|
+
## Manifest Example
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"component": "fc.filterPanel",
|
|
42
|
+
"props": { "allowReadWriteUrlParams": true },
|
|
43
|
+
"descendants": [
|
|
44
|
+
{ "component": "fc.list", "props": { "dataSource": "orders", "attributes": [] } }
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## AI Parse Notes
|
|
50
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
51
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
52
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
53
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.json.editor"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.json.editor
|
|
5
|
+
- fc.attribute.jsoneditor
|
|
6
|
+
category: content
|
|
7
|
+
module: Core
|
|
8
|
+
---
|
|
9
|
+
# fc.json.editor
|
|
10
|
+
|
|
11
|
+
Editable JSON field with syntax highlighting and validation.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Editing entity attributes as JSON
|
|
15
|
+
- Settings value editing
|
|
16
|
+
- Advanced configuration forms
|
|
17
|
+
|
|
18
|
+
## AI Parse Notes
|
|
19
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
20
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
21
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
22
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.json.viewer"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.json.viewer
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.json.viewer
|
|
9
|
+
|
|
10
|
+
Read-only formatted JSON display with syntax highlighting.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Viewing entity attributes as raw JSON
|
|
14
|
+
- Debug/inspection views
|
|
15
|
+
- API response previews
|
|
16
|
+
|
|
17
|
+
## AI Parse Notes
|
|
18
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
19
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
20
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
21
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.list.customAction"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.list.customAction
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# fc.list.customAction
|
|
10
|
+
|
|
11
|
+
List component with custom action support, enabling row selection and custom action callbacks instead of workflow-driven user actions.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Display a data list where a custom action button operates on selected rows
|
|
15
|
+
- Build bulk-action UIs where users select rows and trigger a callback function
|
|
16
|
+
- Replace `fc.list` when you need programmatic action handling instead of workflow user actions
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
| Prop | Type | Required | What it controls |
|
|
20
|
+
|------|------|----------|------------------|
|
|
21
|
+
| `defaultPageSize` | number | Yes | Number of rows per page |
|
|
22
|
+
| `attributes` | ListColumn[] | Yes | Column definitions (same as `fc.list`) |
|
|
23
|
+
| `density` | DensityToggle | No | `{ toggle?: boolean, initial?: "compressed" \| "standard" }` -- row density controls |
|
|
24
|
+
| `rowsPerPageOptions` | number[] | No | Available page size options (e.g. `[10, 25, 50]`) |
|
|
25
|
+
| `actions` | boolean | No | Enable/disable the custom action feature |
|
|
26
|
+
| `action` | CustomActionProp | No | `{ fn: (selectedRows) => void, label: string }` -- the custom action callback and button label |
|
|
27
|
+
| `filter` | ListFilterConfig | No | Filter configuration including `memoryFilter` for client-side filtering |
|
|
28
|
+
| `title` | string | No | Card title |
|
|
29
|
+
| `width` | CardWidth | No | Card width on 12-column grid |
|
|
30
|
+
| `highlight` | string | No | Top border highlight color |
|
|
31
|
+
|
|
32
|
+
### CustomActionProp Structure
|
|
33
|
+
| Field | Type | Description |
|
|
34
|
+
|-------|------|-------------|
|
|
35
|
+
| `fn` | `(selectedRows: RowSelection[]) => void` | Callback invoked with selected rows when the action button is clicked |
|
|
36
|
+
| `label` | string | Button label for the custom action |
|
|
37
|
+
|
|
38
|
+
## Data Binding
|
|
39
|
+
Same as `fc.list` -- uses `dataSource` to bind to a GraphQL connection. Data is passed via the `data` prop from the parent data context.
|
|
40
|
+
|
|
41
|
+
## Descendants
|
|
42
|
+
No -- self-contained list component. Column content is configured via `attributes`.
|
|
43
|
+
|
|
44
|
+
## Composition Patterns
|
|
45
|
+
- `fc.page` > `fc.list.customAction` for bulk-operation list pages
|
|
46
|
+
- `fc.card.multi` > `fc.list.customAction` for embedded action lists
|
|
47
|
+
|
|
48
|
+
## Gotchas
|
|
49
|
+
- The `action` prop is only shown when `actions` is truthy. If `actions` is falsy, the action button is hidden.
|
|
50
|
+
- Unlike `fc.list`, this component uses `CustomActionProp` (a callback function) rather than workflow `UserAction` lookups.
|
|
51
|
+
- Row selection state can be externally controlled via `selectedRows` and `setSelectedRows` props for parent-managed selection.
|
|
52
|
+
- Shares the same underlying `ListView` rendering as `fc.list` -- visual output is identical.
|
|
53
|
+
|
|
54
|
+
## Manifest Example
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"component": "fc.list.customAction",
|
|
58
|
+
"dataSource": "fulfilments",
|
|
59
|
+
"props": {
|
|
60
|
+
"defaultPageSize": 10,
|
|
61
|
+
"actions": true,
|
|
62
|
+
"action": {
|
|
63
|
+
"label": "Process Selected",
|
|
64
|
+
"fn": "handleProcessSelected"
|
|
65
|
+
},
|
|
66
|
+
"attributes": [
|
|
67
|
+
{ "label": "Ref", "value": "{{node.ref}}" },
|
|
68
|
+
{ "label": "Status", "value": "{{node.status}}" },
|
|
69
|
+
{ "label": "Type", "value": "{{node.type}}" }
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## AI Parse Notes
|
|
76
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
77
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
78
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
79
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.list"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.list
|
|
5
|
+
- shared.components.material.DynamicList
|
|
6
|
+
category: content
|
|
7
|
+
module: Core
|
|
8
|
+
---
|
|
9
|
+
# fc.list
|
|
10
|
+
|
|
11
|
+
Paginated data table with sorting, filtering, row links, bulk actions, and optional row expansion.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Any entity list page (orders, fulfilments, locations, inventory)
|
|
15
|
+
- Entity detail tabs showing child items (order items, fulfilment items)
|
|
16
|
+
- Any tabular data display
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
| Prop | Type | Required | What it controls |
|
|
20
|
+
|------|------|----------|------------------|
|
|
21
|
+
| `attributes` | ListColumn[] | **Yes** | Column definitions: `[{ label, value, align, hideBelow }]` |
|
|
22
|
+
| `defaultPageSize` | number | Recommended | Rows per page (default: 10) |
|
|
23
|
+
| `title` | string | No | Card title above table |
|
|
24
|
+
| `rowLink` | string | No | **DEPRECATED** -- prefer `row: { link: "..." }`. Template for row click navigation: `"/orders/{{id}}"` |
|
|
25
|
+
| `filter` | ListFilterConfig | No | Enable inline filtering: `{ enabled: boolean, exclude?: string[], source?, entityType?, memoryFilter?, overrides? }` |
|
|
26
|
+
| `actions` | boolean | No | Enable bulk action row selection (header checkbox) |
|
|
27
|
+
| `density` | DensityToggle | No | Row density: `{ toggle?: boolean, initial?: "compressed" \| "standard" }` |
|
|
28
|
+
| `responsiveness` | string | No | `"table"`, `"card"`, `"forcecard"` -- mobile adaptation |
|
|
29
|
+
| `rowsPerPageOptions` | number[] | No | Pagination options: `[10, 25, 50, 100]` |
|
|
30
|
+
| `row` | ListRowConfig | No | Row configuration (see ListRowConfig below) |
|
|
31
|
+
|
|
32
|
+
### ListRowConfig
|
|
33
|
+
|
|
34
|
+
| Prop | Type | What it controls |
|
|
35
|
+
|------|------|------------------|
|
|
36
|
+
| `link` | string | Template for row click navigation: `"/orders/{{node.id}}"` (preferred over top-level `rowLink`) |
|
|
37
|
+
| `expansion` | Descendants or `{ descendants, toggle }` | Component(s) to render below each row when expanded. `toggle: true` shows expand/collapse icon |
|
|
38
|
+
| `actions` | CardActions | Action buttons at end of each row (see CardActions below) |
|
|
39
|
+
|
|
40
|
+
### CardActions (applies to `row.actions` and `cardActions`)
|
|
41
|
+
|
|
42
|
+
| Prop | Type | What it controls |
|
|
43
|
+
|------|------|------------------|
|
|
44
|
+
| `primary` | CardAction[] | Visible action buttons |
|
|
45
|
+
| `secondary` | CardAction[] | Actions grouped under "More" dropdown |
|
|
46
|
+
| `showAtLeast` | number | Primary actions to keep visible on mobile (default 0 — all collapse) |
|
|
47
|
+
|
|
48
|
+
CardAction types: `{ "type": "userAction", "name": "<rulesetName>", "label": "i18n:key", "condition": "{{template}}" }`. Workflow-defined user actions are auto-appended — only add when reordering or conditionally hiding.
|
|
49
|
+
| `vAlign` | string | No | Vertical alignment of row content: `"top"`, `"centre"`, `"center"`, `"middle"`, `"bottom"` |
|
|
50
|
+
| `hidePagination` | boolean | No | Hide the pagination controls entirely |
|
|
51
|
+
| `loading` | string | No | Template string evaluated to `"true"`/`"false"` to show loading skeleton |
|
|
52
|
+
| `noRecordKey` | string | No | i18n key for the empty-state message (default: `"fc.mystique.table.noRecords"`) |
|
|
53
|
+
| `rowId` | string | No | JSONPath to a unique row identifier field for DOM `id` attributes |
|
|
54
|
+
| `collapseExpansionPadding` | boolean | No | Remove padding around row expansion content |
|
|
55
|
+
| `collapseAppendPadding` | boolean | No | Remove padding for appended column content |
|
|
56
|
+
| `barcode` | ListBarcodeConfig | No | Barcode scanner integration: `{ enabled: boolean, match: string, action?: Action }` |
|
|
57
|
+
| `highlight` | string | No | Card border highlight color (theme color key or CSS color) |
|
|
58
|
+
| `width` | CardWidth | No | Card width (quarter/third/half/full or 1-12) |
|
|
59
|
+
| `cardActions` | PageActionsProps | No | Action buttons in the card header |
|
|
60
|
+
|
|
61
|
+
### Column Props (ListColumn)
|
|
62
|
+
| Prop | Type | What it controls |
|
|
63
|
+
|------|------|------------------|
|
|
64
|
+
| `label` | string | Column header text |
|
|
65
|
+
| `value` | string | Template string for cell content |
|
|
66
|
+
| `align` | string | Text alignment: `"left"`, `"centre"`, `"center"`, `"right"` |
|
|
67
|
+
| `hideBelow` | breakpoint | Hide column below breakpoint: `"xs"`, `"sm"`, `"md"`, `"lg"`, `"xl"` |
|
|
68
|
+
| `hideAbove` | breakpoint | Hide column above breakpoint: `"xs"`, `"sm"`, `"md"`, `"lg"`, `"xl"` |
|
|
69
|
+
| `enableCopyIcon` | string | Show copy-to-clipboard icon: `"displayAlways"` or `"displayOnHover"` |
|
|
70
|
+
| `append` | boolean | Append this column's content to the previous column in card view |
|
|
71
|
+
| `cardAction` | boolean | Render this column as a card action in responsive card mode |
|
|
72
|
+
|
|
73
|
+
## Data Binding
|
|
74
|
+
**Requires `dataSource`** — JSONPath to a connection or array. E.g., `"orders"`, `"orderById.items.edges"`. Column values use `{{node.fieldName}}` for row data access.
|
|
75
|
+
|
|
76
|
+
## Descendants
|
|
77
|
+
Optional — used for row expansion content.
|
|
78
|
+
|
|
79
|
+
## Composition Patterns
|
|
80
|
+
- `fc.page` > `fc.filterPanel` + `fc.list` for filtered list page
|
|
81
|
+
- `fc.tabs.card` > `fc.list` per tab for detail page
|
|
82
|
+
- `fc.list` with `rowLink` for master-detail navigation
|
|
83
|
+
|
|
84
|
+
## Gotchas
|
|
85
|
+
- **Must have `dataSource`** -- without it, table renders empty
|
|
86
|
+
- Column `value` uses `{{node.field}}` not `{{field}}` when in a connection
|
|
87
|
+
- Don't nest `fc.provider.graphql` inside `fc.list` -- pagination conflict
|
|
88
|
+
- `hideBelow: "md"` hides column on mobile
|
|
89
|
+
- **`rowLink` is deprecated** -- use `row: { link: "/orders/{{node.id}}" }` instead. `rowLink` still works but will be removed in a future version
|
|
90
|
+
- `loading` is a template string (e.g., `"{{isLoading}}"`) that must evaluate to the string `"true"` to activate, not a boolean
|
|
91
|
+
|
|
92
|
+
## Validation Rules
|
|
93
|
+
P01 (CRITICAL — attributes required), P02 (defaultPageSize), P03 (attribute labels), P04 (CRITICAL — dataSource required), T04 (rowLink template valid)
|
|
94
|
+
|
|
95
|
+
## Manifest Example
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"component": "fc.list",
|
|
99
|
+
"props": {
|
|
100
|
+
"dataSource": "orders",
|
|
101
|
+
"defaultPageSize": 25,
|
|
102
|
+
"rowLink": "/orders/{{node.id}}",
|
|
103
|
+
"attributes": [
|
|
104
|
+
{ "label": "Ref", "value": "{{node.ref}}" },
|
|
105
|
+
{ "label": "Status", "value": "{{node.status}}" },
|
|
106
|
+
{ "label": "Created", "value": "{{dateFormat node.createdOn 'MMM DD, YYYY'}}" }
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## AI Parse Notes
|
|
113
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
114
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
115
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
116
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|