@praxisui/table 9.0.0-beta.80 → 9.0.0-beta.82
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/ai/component-registry.json +35 -4
- package/fesm2022/{praxisui-table-praxisui-table-D1byLHAp.mjs → praxisui-table-praxisui-table-7iWPoCFj.mjs} +234 -6
- package/fesm2022/{praxisui-table-table-agentic-authoring-turn-flow-BzVyW6RG.mjs → praxisui-table-table-agentic-authoring-turn-flow-Cl8C90zm.mjs} +1 -1
- package/fesm2022/{praxisui-table-table-ai.adapter-Bg9O1G6L.mjs → praxisui-table-table-ai.adapter-B46F-SpL.mjs} +1 -1
- package/fesm2022/praxisui-table.mjs +1 -1
- package/package.json +10 -10
- package/types/praxisui-table.d.ts +19 -8
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-20T13:31:18.568Z",
|
|
4
4
|
"packageName": "@praxisui/table",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.82",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 3,
|
|
@@ -18844,6 +18844,36 @@
|
|
|
18844
18844
|
],
|
|
18845
18845
|
"default": "button"
|
|
18846
18846
|
},
|
|
18847
|
+
"target": {
|
|
18848
|
+
"type": "object",
|
|
18849
|
+
"required": [
|
|
18850
|
+
"scope"
|
|
18851
|
+
],
|
|
18852
|
+
"properties": {
|
|
18853
|
+
"scope": {
|
|
18854
|
+
"enum": [
|
|
18855
|
+
"collection",
|
|
18856
|
+
"selection"
|
|
18857
|
+
]
|
|
18858
|
+
},
|
|
18859
|
+
"cardinality": {
|
|
18860
|
+
"type": "object",
|
|
18861
|
+
"required": [
|
|
18862
|
+
"min"
|
|
18863
|
+
],
|
|
18864
|
+
"properties": {
|
|
18865
|
+
"min": {
|
|
18866
|
+
"type": "number",
|
|
18867
|
+
"minimum": 0
|
|
18868
|
+
},
|
|
18869
|
+
"max": {
|
|
18870
|
+
"type": "number",
|
|
18871
|
+
"minimum": 0
|
|
18872
|
+
}
|
|
18873
|
+
}
|
|
18874
|
+
}
|
|
18875
|
+
}
|
|
18876
|
+
},
|
|
18847
18877
|
"visibleWhen": {
|
|
18848
18878
|
"type": "object",
|
|
18849
18879
|
"description": "AST Json Logic"
|
|
@@ -18905,6 +18935,7 @@
|
|
|
18905
18935
|
],
|
|
18906
18936
|
"affectedPaths": [
|
|
18907
18937
|
"toolbar.actions[]",
|
|
18938
|
+
"toolbar.actions[].target",
|
|
18908
18939
|
"toolbar.actions[].visibleWhen",
|
|
18909
18940
|
"toolbar.actions[].effects"
|
|
18910
18941
|
],
|
|
@@ -22922,9 +22953,9 @@
|
|
|
22922
22953
|
{
|
|
22923
22954
|
"chunkIndex": 20,
|
|
22924
22955
|
"chunkKind": "authoring_manifest",
|
|
22925
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.0.0\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"toolbar.action.add\",\"title\":\"Adicionar ação na toolbar\",\"scope\":\"global\",\"targetKind\":\"toolbarAction\",\"target\":{\"kind\":\"toolbarAction\",\"resolver\":\"action-in-toolbar-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"type\":{\"enum\":[\"button\",\"icon\",\"menu\"],\"default\":\"button\"},\"visibleWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"kind\",\"globalAction\"],\"additionalProperties\":false,\"properties\":{\"kind\":{\"enum\":[\"global-action\"]}}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"toolbar.actions[]\",\"key\":\"id\"}],\"validators\":[\"toolbar-action-id-unique\"],\"affectedPaths\":[\"toolbar.actions[]\",\"toolbar.actions[].visibleWhen\",\"toolbar.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"rowAction.add\",\"title\":\"Adicionar ação de linha\",\"scope\":\"global\",\"targetKind\":\"rowAction\",\"target\":{\"kind\":\"rowAction\",\"resolver\":\"action-in-row-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"visibleWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"disabledWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"recordSurface\":{\"type\":\"object\",\"description\":\"ResourceSurfaceCatalogItem canonico preservado para abrir uma superficie relacionada ao registro da linha clicada.\"},\"effects\":{\"type\":\"array\"}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.row.actions[]\",\"key\":\"id\"}],\"validators\":[\"row-action-id-unique\"],\"affectedPaths\":[\"actions.row.actions[]\",\"actions.row.actions[].visibleWhen\",\"actions.row.actions[].disabledWhen\",\"actions.row.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"bulkAction.add\",\"title\":\"Adicionar ação em lote\",\"scope\":\"global\",\"targetKind\":\"bulkAction\",\"target\":{\"kind\":\"bulkAction\",\"resolver\":\"action-in-bulk-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"effects\":{\"type\":\"array\"}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.bulk.actions[]\",\"key\":\"id\"}],\"validators\":[\"bulk-action-id-unique\"],\"affectedPaths\":[\"actions.bulk.actions[]\",\"actions.bulk.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"export.enabled.set\",\"title\":\"Habilitar exportação\",\"scope\":\"global\",\"targetKind\":\"export\",\"target\":{\"kind\":\"export\",\"resolver\":\"export-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"formats\":{\"type\":\"array\",\"items\":{\"enum\":[\"excel\",\"pdf\",\"csv\",\"json\"]}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"export\"}],\"affectedPaths\":[\"export.enabled\",\"export.formats\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.configure\",\"title\":\"Configurar filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"queryBuilder\":{\"type\":\"boolean\"},\"savePresets\":{\"type\":\"boolean\"},\"settings\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"filter\"]},\"showAdvanced\":{\"type\":\"boolean\"},\"allowSaveTags\":{\"type\":\"boolean\"},\"alwaysVisibleFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"selectedFieldIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"alwaysVisibleFieldMetadataOverrides\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"changeDebounceMs\":{\"type\":\"number\",\"minimum\":0},\"useInlineSearchableSelectVariant\":{\"type\":\"boolean\"},\"useInlineRangeVariant\":{\"type\":\"boolean\"},\"useInlineDateVariant\":{\"type\":\"boolean\"},\"useInlineDateRangeVariant\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.fields.add\",\"title\":\"Adicionar campos aos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.fields.remove\",\"title\":\"Remover campos dos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"grouping.set\",\"title\":\"Definir agrupamento\",\"scope\":\"global\",\"targetKind\":\"grouping\",\"target\":{\"kind\":\"grouping\",\"resolver\":\"grouping-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"expanded\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.grouping\"}],\"validators\":[\"grouping-fields-exist\"],\"affectedPaths\":[\"behavior.grouping\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
22956
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.0.0\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"toolbar.action.add\",\"title\":\"Adicionar ação na toolbar\",\"scope\":\"global\",\"targetKind\":\"toolbarAction\",\"target\":{\"kind\":\"toolbarAction\",\"resolver\":\"action-in-toolbar-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"type\":{\"enum\":[\"button\",\"icon\",\"menu\"],\"default\":\"button\"},\"target\":{\"type\":\"object\",\"required\":[\"scope\"],\"properties\":{\"scope\":{\"enum\":[\"collection\",\"selection\"]},\"cardinality\":{\"type\":\"object\",\"required\":[\"min\"],\"properties\":{\"min\":{\"type\":\"number\",\"minimum\":0},\"max\":{\"type\":\"number\",\"minimum\":0}}}}},\"visibleWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"kind\",\"globalAction\"],\"additionalProperties\":false,\"properties\":{\"kind\":{\"enum\":[\"global-action\"]}}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"toolbar.actions[]\",\"key\":\"id\"}],\"validators\":[\"toolbar-action-id-unique\"],\"affectedPaths\":[\"toolbar.actions[]\",\"toolbar.actions[].target\",\"toolbar.actions[].visibleWhen\",\"toolbar.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"rowAction.add\",\"title\":\"Adicionar ação de linha\",\"scope\":\"global\",\"targetKind\":\"rowAction\",\"target\":{\"kind\":\"rowAction\",\"resolver\":\"action-in-row-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"visibleWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"disabledWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"recordSurface\":{\"type\":\"object\",\"description\":\"ResourceSurfaceCatalogItem canonico preservado para abrir uma superficie relacionada ao registro da linha clicada.\"},\"effects\":{\"type\":\"array\"}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.row.actions[]\",\"key\":\"id\"}],\"validators\":[\"row-action-id-unique\"],\"affectedPaths\":[\"actions.row.actions[]\",\"actions.row.actions[].visibleWhen\",\"actions.row.actions[].disabledWhen\",\"actions.row.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"bulkAction.add\",\"title\":\"Adicionar ação em lote\",\"scope\":\"global\",\"targetKind\":\"bulkAction\",\"target\":{\"kind\":\"bulkAction\",\"resolver\":\"action-in-bulk-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"effects\":{\"type\":\"array\"}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.bulk.actions[]\",\"key\":\"id\"}],\"validators\":[\"bulk-action-id-unique\"],\"affectedPaths\":[\"actions.bulk.actions[]\",\"actions.bulk.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"export.enabled.set\",\"title\":\"Habilitar exportação\",\"scope\":\"global\",\"targetKind\":\"export\",\"target\":{\"kind\":\"export\",\"resolver\":\"export-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"formats\":{\"type\":\"array\",\"items\":{\"enum\":[\"excel\",\"pdf\",\"csv\",\"json\"]}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"export\"}],\"affectedPaths\":[\"export.enabled\",\"export.formats\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.configure\",\"title\":\"Configurar filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"queryBuilder\":{\"type\":\"boolean\"},\"savePresets\":{\"type\":\"boolean\"},\"settings\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"filter\"]},\"showAdvanced\":{\"type\":\"boolean\"},\"allowSaveTags\":{\"type\":\"boolean\"},\"alwaysVisibleFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"selectedFieldIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"alwaysVisibleFieldMetadataOverrides\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"changeDebounceMs\":{\"type\":\"number\",\"minimum\":0},\"useInlineSearchableSelectVariant\":{\"type\":\"boolean\"},\"useInlineRangeVariant\":{\"type\":\"boolean\"},\"useInlineDateVariant\":{\"type\":\"boolean\"},\"useInlineDateRangeVariant\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.fields.add\",\"title\":\"Adicionar campos aos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.fields.remove\",\"title\":\"Remover campos dos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"grouping.set\",\"title\":\"Definir agrupamento\",\"scope\":\"global\",\"targetKind\":\"grouping\",\"target\":{\"kind\":\"grouping\",\"resolver\":\"grouping-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"expanded\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.grouping\"}],\"validators\":[\"grouping-fields-exist\"],\"affectedPaths\":[\"behavior.grouping\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
22926
22957
|
"sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
|
|
22927
|
-
"contentHash": "
|
|
22958
|
+
"contentHash": "87c30aaf1c46f56101a2e5610a90eba884bb4e218c3d5be55dc46741bc8107b2",
|
|
22928
22959
|
"sourceKind": "component_definition",
|
|
22929
22960
|
"sourceId": "praxis-table",
|
|
22930
22961
|
"corpusVersion": "1.0.0"
|
|
@@ -133,6 +133,7 @@ const PRAXIS_TABLE_RUNTIME_I18N_CONFIG = {
|
|
|
133
133
|
'table.chrome.actions.disabled.noSelection': 'Selecione ao menos um registro para executar esta ação.',
|
|
134
134
|
'table.chrome.actions.disabled.minSelection': 'Selecione ao menos {min} registros para executar esta ação.',
|
|
135
135
|
'table.chrome.actions.disabled.maxSelection': 'A seleção atual excede o limite permitido para esta ação.',
|
|
136
|
+
'table.chrome.actions.disabled.singleSelection': 'Selecione somente um registro para executar esta ação.',
|
|
136
137
|
'table.chrome.actions.disabled.generic': 'Ação indisponível no contexto atual.',
|
|
137
138
|
'table.analytics.comparison.current': 'Atual',
|
|
138
139
|
'table.analytics.comparison.previous': 'Anterior',
|
|
@@ -280,6 +281,7 @@ const PRAXIS_TABLE_RUNTIME_I18N_CONFIG = {
|
|
|
280
281
|
'table.chrome.actions.disabled.noSelection': 'Select at least one record to run this action.',
|
|
281
282
|
'table.chrome.actions.disabled.minSelection': 'Select at least {min} records to run this action.',
|
|
282
283
|
'table.chrome.actions.disabled.maxSelection': 'The current selection exceeds the allowed limit for this action.',
|
|
284
|
+
'table.chrome.actions.disabled.singleSelection': 'Select exactly one record to run this action.',
|
|
283
285
|
'table.chrome.actions.disabled.generic': 'Action unavailable in the current context.',
|
|
284
286
|
'table.analytics.comparison.current': 'Current',
|
|
285
287
|
'table.analytics.comparison.previous': 'Previous',
|
|
@@ -1029,7 +1031,16 @@ class PraxisTableToolbar {
|
|
|
1029
1031
|
return true;
|
|
1030
1032
|
if (action.disabled === true)
|
|
1031
1033
|
return true;
|
|
1032
|
-
if (this.
|
|
1034
|
+
if (this.isSelectionTargetAction(action)) {
|
|
1035
|
+
const selectedCount = this.getSelectedCount();
|
|
1036
|
+
const minSelections = this.getTargetMinSelections(action);
|
|
1037
|
+
if (selectedCount < minSelections)
|
|
1038
|
+
return true;
|
|
1039
|
+
const maxSelections = this.getTargetMaxSelections(action);
|
|
1040
|
+
if (maxSelections !== null && selectedCount > maxSelections)
|
|
1041
|
+
return true;
|
|
1042
|
+
}
|
|
1043
|
+
else if (this.isBulkToolbarAction(action)) {
|
|
1033
1044
|
const selectedCount = this.getSelectedCount();
|
|
1034
1045
|
const minSelections = this.getBulkActionMinSelections(action);
|
|
1035
1046
|
if (selectedCount < minSelections)
|
|
@@ -1252,8 +1263,34 @@ class PraxisTableToolbar {
|
|
|
1252
1263
|
return null;
|
|
1253
1264
|
return Math.max(0, Math.floor(value));
|
|
1254
1265
|
}
|
|
1266
|
+
isSelectionTargetAction(action) {
|
|
1267
|
+
return action?.target?.scope === 'selection';
|
|
1268
|
+
}
|
|
1269
|
+
getTargetMinSelections(action) {
|
|
1270
|
+
const value = Number(action?.target?.cardinality?.min);
|
|
1271
|
+
return Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 1;
|
|
1272
|
+
}
|
|
1273
|
+
getTargetMaxSelections(action) {
|
|
1274
|
+
const value = Number(action?.target?.cardinality?.max);
|
|
1275
|
+
return Number.isFinite(value) ? Math.max(0, Math.floor(value)) : null;
|
|
1276
|
+
}
|
|
1255
1277
|
resolveDisabledActionReason(action) {
|
|
1256
|
-
if (this.
|
|
1278
|
+
if (this.isSelectionTargetAction(action)) {
|
|
1279
|
+
const selectedCount = this.getSelectedCount();
|
|
1280
|
+
const minSelections = this.getTargetMinSelections(action);
|
|
1281
|
+
if (selectedCount < minSelections) {
|
|
1282
|
+
return minSelections > 1
|
|
1283
|
+
? this.tx('table.chrome.actions.disabled.minSelection', 'Selecione ao menos {min} registros para executar esta ação.', { min: minSelections })
|
|
1284
|
+
: this.tx('table.chrome.actions.disabled.noSelection', 'Selecione ao menos um registro para executar esta ação.');
|
|
1285
|
+
}
|
|
1286
|
+
const maxSelections = this.getTargetMaxSelections(action);
|
|
1287
|
+
if (maxSelections !== null && selectedCount > maxSelections) {
|
|
1288
|
+
return maxSelections === 1
|
|
1289
|
+
? this.tx('table.chrome.actions.disabled.singleSelection', 'Selecione somente um registro para executar esta ação.')
|
|
1290
|
+
: this.tx('table.chrome.actions.disabled.maxSelection', 'A seleção atual excede o limite permitido para esta ação.');
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
else if (this.isBulkToolbarAction(action)) {
|
|
1257
1294
|
const selectedCount = this.getSelectedCount();
|
|
1258
1295
|
const minSelections = this.getBulkActionMinSelections(action);
|
|
1259
1296
|
if (selectedCount < minSelections) {
|
|
@@ -20780,6 +20817,36 @@ class ToolbarActionsEditorComponent {
|
|
|
20780
20817
|
action.shortcutScope = this.sanitizeShortcutScope(value, action);
|
|
20781
20818
|
this.updateToolbarActions();
|
|
20782
20819
|
}
|
|
20820
|
+
onToolbarActionTargetScopeChange(action, scope) {
|
|
20821
|
+
action.target = scope === 'selection'
|
|
20822
|
+
? { scope, cardinality: action.target?.cardinality || { min: 1 } }
|
|
20823
|
+
: { scope };
|
|
20824
|
+
this.updateToolbarActions();
|
|
20825
|
+
}
|
|
20826
|
+
onToolbarActionTargetMinChange(action, value) {
|
|
20827
|
+
const min = Number.isFinite(Number(value)) ? Math.max(0, Math.floor(Number(value))) : 1;
|
|
20828
|
+
action.target = {
|
|
20829
|
+
scope: 'selection',
|
|
20830
|
+
cardinality: { min, ...(action.target?.cardinality?.max !== undefined
|
|
20831
|
+
? { max: action.target.cardinality.max }
|
|
20832
|
+
: {}) },
|
|
20833
|
+
};
|
|
20834
|
+
this.updateToolbarActions();
|
|
20835
|
+
}
|
|
20836
|
+
onToolbarActionTargetMaxChange(action, value) {
|
|
20837
|
+
const rawMax = Number(value);
|
|
20838
|
+
const max = value === null || value === '' || !Number.isFinite(rawMax)
|
|
20839
|
+
? undefined
|
|
20840
|
+
: Math.max(0, Math.floor(rawMax));
|
|
20841
|
+
action.target = {
|
|
20842
|
+
scope: 'selection',
|
|
20843
|
+
cardinality: {
|
|
20844
|
+
min: action.target?.cardinality?.min ?? 1,
|
|
20845
|
+
...(max !== undefined ? { max } : {}),
|
|
20846
|
+
},
|
|
20847
|
+
};
|
|
20848
|
+
this.updateToolbarActions();
|
|
20849
|
+
}
|
|
20783
20850
|
// Toolbar Actions Management
|
|
20784
20851
|
addToolbarAction() {
|
|
20785
20852
|
const newAction = {
|
|
@@ -21836,6 +21903,50 @@ class ToolbarActionsEditorComponent {
|
|
|
21836
21903
|
<mat-icon>help_outline</mat-icon>
|
|
21837
21904
|
</button>
|
|
21838
21905
|
</mat-form-field>
|
|
21906
|
+
<mat-form-field appearance="outline">
|
|
21907
|
+
<mat-label>{{ tx('toolbar.action.target.scope', 'Action target') }}</mat-label>
|
|
21908
|
+
<mat-select
|
|
21909
|
+
[ngModel]="action.target?.scope || 'collection'"
|
|
21910
|
+
(ngModelChange)="onToolbarActionTargetScopeChange(action, $event)"
|
|
21911
|
+
[ngModelOptions]="{ standalone: true }"
|
|
21912
|
+
>
|
|
21913
|
+
<mat-option value="collection">{{ tx('toolbar.action.target.collection', 'Collection') }}</mat-option>
|
|
21914
|
+
<mat-option value="selection">{{ tx('toolbar.action.target.selection', 'Selected records') }}</mat-option>
|
|
21915
|
+
</mat-select>
|
|
21916
|
+
<button
|
|
21917
|
+
mat-icon-button
|
|
21918
|
+
matSuffix
|
|
21919
|
+
type="button"
|
|
21920
|
+
class="help-icon-button"
|
|
21921
|
+
[matTooltip]="tx('toolbar.action.target.hint', 'Defines what the action operates on. Its toolbar position does not make it a bulk action.')"
|
|
21922
|
+
>
|
|
21923
|
+
<mat-icon>help_outline</mat-icon>
|
|
21924
|
+
</button>
|
|
21925
|
+
</mat-form-field>
|
|
21926
|
+
@if (action.target?.scope === 'selection') {
|
|
21927
|
+
<mat-form-field appearance="outline">
|
|
21928
|
+
<mat-label>{{ tx('toolbar.action.target.min', 'Minimum selections') }}</mat-label>
|
|
21929
|
+
<input
|
|
21930
|
+
matInput
|
|
21931
|
+
type="number"
|
|
21932
|
+
min="0"
|
|
21933
|
+
[ngModel]="action.target?.cardinality?.min ?? 1"
|
|
21934
|
+
(ngModelChange)="onToolbarActionTargetMinChange(action, $event)"
|
|
21935
|
+
[ngModelOptions]="{ standalone: true }"
|
|
21936
|
+
/>
|
|
21937
|
+
</mat-form-field>
|
|
21938
|
+
<mat-form-field appearance="outline">
|
|
21939
|
+
<mat-label>{{ tx('toolbar.action.target.max', 'Maximum selections') }}</mat-label>
|
|
21940
|
+
<input
|
|
21941
|
+
matInput
|
|
21942
|
+
type="number"
|
|
21943
|
+
min="0"
|
|
21944
|
+
[ngModel]="action.target?.cardinality?.max ?? null"
|
|
21945
|
+
(ngModelChange)="onToolbarActionTargetMaxChange(action, $event)"
|
|
21946
|
+
[ngModelOptions]="{ standalone: true }"
|
|
21947
|
+
/>
|
|
21948
|
+
</mat-form-field>
|
|
21949
|
+
}
|
|
21839
21950
|
<mat-form-field appearance="outline">
|
|
21840
21951
|
<mat-label>{{ tx('toolbar.action.color', 'Button color') }}</mat-label>
|
|
21841
21952
|
<mat-select
|
|
@@ -23498,6 +23609,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
23498
23609
|
<mat-icon>help_outline</mat-icon>
|
|
23499
23610
|
</button>
|
|
23500
23611
|
</mat-form-field>
|
|
23612
|
+
<mat-form-field appearance="outline">
|
|
23613
|
+
<mat-label>{{ tx('toolbar.action.target.scope', 'Action target') }}</mat-label>
|
|
23614
|
+
<mat-select
|
|
23615
|
+
[ngModel]="action.target?.scope || 'collection'"
|
|
23616
|
+
(ngModelChange)="onToolbarActionTargetScopeChange(action, $event)"
|
|
23617
|
+
[ngModelOptions]="{ standalone: true }"
|
|
23618
|
+
>
|
|
23619
|
+
<mat-option value="collection">{{ tx('toolbar.action.target.collection', 'Collection') }}</mat-option>
|
|
23620
|
+
<mat-option value="selection">{{ tx('toolbar.action.target.selection', 'Selected records') }}</mat-option>
|
|
23621
|
+
</mat-select>
|
|
23622
|
+
<button
|
|
23623
|
+
mat-icon-button
|
|
23624
|
+
matSuffix
|
|
23625
|
+
type="button"
|
|
23626
|
+
class="help-icon-button"
|
|
23627
|
+
[matTooltip]="tx('toolbar.action.target.hint', 'Defines what the action operates on. Its toolbar position does not make it a bulk action.')"
|
|
23628
|
+
>
|
|
23629
|
+
<mat-icon>help_outline</mat-icon>
|
|
23630
|
+
</button>
|
|
23631
|
+
</mat-form-field>
|
|
23632
|
+
@if (action.target?.scope === 'selection') {
|
|
23633
|
+
<mat-form-field appearance="outline">
|
|
23634
|
+
<mat-label>{{ tx('toolbar.action.target.min', 'Minimum selections') }}</mat-label>
|
|
23635
|
+
<input
|
|
23636
|
+
matInput
|
|
23637
|
+
type="number"
|
|
23638
|
+
min="0"
|
|
23639
|
+
[ngModel]="action.target?.cardinality?.min ?? 1"
|
|
23640
|
+
(ngModelChange)="onToolbarActionTargetMinChange(action, $event)"
|
|
23641
|
+
[ngModelOptions]="{ standalone: true }"
|
|
23642
|
+
/>
|
|
23643
|
+
</mat-form-field>
|
|
23644
|
+
<mat-form-field appearance="outline">
|
|
23645
|
+
<mat-label>{{ tx('toolbar.action.target.max', 'Maximum selections') }}</mat-label>
|
|
23646
|
+
<input
|
|
23647
|
+
matInput
|
|
23648
|
+
type="number"
|
|
23649
|
+
min="0"
|
|
23650
|
+
[ngModel]="action.target?.cardinality?.max ?? null"
|
|
23651
|
+
(ngModelChange)="onToolbarActionTargetMaxChange(action, $event)"
|
|
23652
|
+
[ngModelOptions]="{ standalone: true }"
|
|
23653
|
+
/>
|
|
23654
|
+
</mat-form-field>
|
|
23655
|
+
}
|
|
23501
23656
|
<mat-form-field appearance="outline">
|
|
23502
23657
|
<mat-label>{{ tx('toolbar.action.color', 'Button color') }}</mat-label>
|
|
23503
23658
|
<mat-select
|
|
@@ -42168,7 +42323,7 @@ class PraxisTable {
|
|
|
42168
42323
|
if (this.aiAdapter || this.aiAdapterLoadStarted)
|
|
42169
42324
|
return;
|
|
42170
42325
|
this.aiAdapterLoadStarted = true;
|
|
42171
|
-
import('./praxisui-table-table-ai.adapter-
|
|
42326
|
+
import('./praxisui-table-table-ai.adapter-B46F-SpL.mjs')
|
|
42172
42327
|
.then(({ TableAiAdapter }) => {
|
|
42173
42328
|
if (!this.isAiAssistantEnabled()) {
|
|
42174
42329
|
this.aiAssistantOpenAfterAdapterLoad = false;
|
|
@@ -42914,7 +43069,7 @@ class PraxisTable {
|
|
|
42914
43069
|
initializeAiAssistantController() {
|
|
42915
43070
|
if (!this.aiAdapter || this.aiAssistantController)
|
|
42916
43071
|
return;
|
|
42917
|
-
import('./praxisui-table-table-agentic-authoring-turn-flow-
|
|
43072
|
+
import('./praxisui-table-table-agentic-authoring-turn-flow-Cl8C90zm.mjs')
|
|
42918
43073
|
.then(({ TableAgenticAuthoringTurnFlow }) => {
|
|
42919
43074
|
if (this.aiAssistantController || !this.aiAdapter)
|
|
42920
43075
|
return;
|
|
@@ -47870,14 +48025,34 @@ class PraxisTable {
|
|
|
47870
48025
|
}
|
|
47871
48026
|
const toolbarActionConfig = event.actionConfig ||
|
|
47872
48027
|
this.config?.toolbar?.actions?.find((a) => this.getActionId(a) === action);
|
|
48028
|
+
const selectedRows = this.selection.selected.slice();
|
|
48029
|
+
if (!this.hasValidToolbarTargetSelection(toolbarActionConfig, selectedRows.length)) {
|
|
48030
|
+
return;
|
|
48031
|
+
}
|
|
48032
|
+
const selectedIds = selectedRows
|
|
48033
|
+
.map((row) => this.getRowId(row))
|
|
48034
|
+
.filter((id) => id !== undefined && id !== null);
|
|
48035
|
+
const selectedRow = selectedRows.length === 1 ? selectedRows[0] : undefined;
|
|
47873
48036
|
const payload = {
|
|
47874
48037
|
action,
|
|
48038
|
+
selectedRows: this.cloneForEmit(selectedRows),
|
|
48039
|
+
selectedIds: this.cloneForEmit(selectedIds),
|
|
48040
|
+
selectedCount: selectedRows.length,
|
|
48041
|
+
...(selectedRow
|
|
48042
|
+
? {
|
|
48043
|
+
row: this.cloneForEmit(selectedRow),
|
|
48044
|
+
selectedRow: this.cloneForEmit(selectedRow),
|
|
48045
|
+
}
|
|
48046
|
+
: {}),
|
|
48047
|
+
...(toolbarActionConfig?.target
|
|
48048
|
+
? { target: this.cloneForEmit(toolbarActionConfig.target) }
|
|
48049
|
+
: {}),
|
|
47875
48050
|
...(toolbarActionConfig
|
|
47876
48051
|
? { actionConfig: this.cloneForEmit(toolbarActionConfig) }
|
|
47877
48052
|
: {}),
|
|
47878
48053
|
};
|
|
47879
48054
|
this.debugLogWithMeta('[PraxisTable] onToolbarAction: emitting toolbarAction', payload, { actionId: action, throttleKey: `praxis-table:toolbar-action-emit:${action}` });
|
|
47880
|
-
if (this.resolveActionGlobalActionRef(toolbarActionConfig)) {
|
|
48055
|
+
if (toolbarActionConfig && this.resolveActionGlobalActionRef(toolbarActionConfig)) {
|
|
47881
48056
|
await this.executeConfiguredGlobalAction(toolbarActionConfig, {
|
|
47882
48057
|
sourceId: this.tableId || this.componentInstanceId || 'praxis-table',
|
|
47883
48058
|
output: 'toolbarAction',
|
|
@@ -47895,6 +48070,26 @@ class PraxisTable {
|
|
|
47895
48070
|
sourceOutput: 'toolbarAction',
|
|
47896
48071
|
});
|
|
47897
48072
|
}
|
|
48073
|
+
hasValidToolbarTargetSelection(action, selectedCount) {
|
|
48074
|
+
if (action?.target?.scope !== 'selection')
|
|
48075
|
+
return true;
|
|
48076
|
+
const min = Number.isFinite(Number(action.target.cardinality?.min))
|
|
48077
|
+
? Math.max(0, Math.floor(Number(action.target.cardinality?.min)))
|
|
48078
|
+
: 1;
|
|
48079
|
+
const rawMax = Number(action.target.cardinality?.max);
|
|
48080
|
+
const max = Number.isFinite(rawMax) ? Math.max(0, Math.floor(rawMax)) : null;
|
|
48081
|
+
if (selectedCount >= min && (max === null || selectedCount <= max))
|
|
48082
|
+
return true;
|
|
48083
|
+
const message = selectedCount < min
|
|
48084
|
+
? (min > 1
|
|
48085
|
+
? translateTableRuntimeText(this.i18n, 'table.chrome.actions.disabled.minSelection', 'Selecione ao menos {min} registros para executar esta ação.', { min })
|
|
48086
|
+
: translateTableRuntimeText(this.i18n, 'table.chrome.actions.disabled.noSelection', 'Selecione ao menos um registro para executar esta ação.'))
|
|
48087
|
+
: (max === 1
|
|
48088
|
+
? translateTableRuntimeText(this.i18n, 'table.chrome.actions.disabled.singleSelection', 'Selecione somente um registro para executar esta ação.')
|
|
48089
|
+
: translateTableRuntimeText(this.i18n, 'table.chrome.actions.disabled.maxSelection', 'A seleção atual excede o limite permitido para esta ação.'));
|
|
48090
|
+
this.snackBar.open(message, undefined, { duration: 3000 });
|
|
48091
|
+
return false;
|
|
48092
|
+
}
|
|
47898
48093
|
async tryHandleCollectionCreateToolbarAction(action, actionConfig) {
|
|
47899
48094
|
if (String(action || '').trim().toLowerCase() !== 'create') {
|
|
47900
48095
|
return false;
|
|
@@ -59154,6 +59349,21 @@ const PRAXIS_TABLE_AUTHORING_MANIFEST = {
|
|
|
59154
59349
|
action: { type: 'string' },
|
|
59155
59350
|
icon: { type: 'string' },
|
|
59156
59351
|
type: { enum: ['button', 'icon', 'menu'], default: 'button' },
|
|
59352
|
+
target: {
|
|
59353
|
+
type: 'object',
|
|
59354
|
+
required: ['scope'],
|
|
59355
|
+
properties: {
|
|
59356
|
+
scope: { enum: ['collection', 'selection'] },
|
|
59357
|
+
cardinality: {
|
|
59358
|
+
type: 'object',
|
|
59359
|
+
required: ['min'],
|
|
59360
|
+
properties: {
|
|
59361
|
+
min: { type: 'number', minimum: 0 },
|
|
59362
|
+
max: { type: 'number', minimum: 0 },
|
|
59363
|
+
},
|
|
59364
|
+
},
|
|
59365
|
+
},
|
|
59366
|
+
},
|
|
59157
59367
|
visibleWhen: { type: 'object', description: 'AST Json Logic' },
|
|
59158
59368
|
globalAction: globalActionRefSchema,
|
|
59159
59369
|
effects: { type: 'array', items: globalActionEffectSchema },
|
|
@@ -59161,7 +59371,7 @@ const PRAXIS_TABLE_AUTHORING_MANIFEST = {
|
|
|
59161
59371
|
},
|
|
59162
59372
|
effects: [{ kind: 'append-unique', path: 'toolbar.actions[]', key: 'id' }],
|
|
59163
59373
|
validators: ['toolbar-action-id-unique'],
|
|
59164
|
-
affectedPaths: ['toolbar.actions[]', 'toolbar.actions[].visibleWhen', 'toolbar.actions[].effects'],
|
|
59374
|
+
affectedPaths: ['toolbar.actions[]', 'toolbar.actions[].target', 'toolbar.actions[].visibleWhen', 'toolbar.actions[].effects'],
|
|
59165
59375
|
submissionImpact: 'config-only',
|
|
59166
59376
|
preconditions: ['config-initialized']
|
|
59167
59377
|
},
|
|
@@ -64835,6 +65045,24 @@ function validateToolbarActionValue(rawValue) {
|
|
|
64835
65045
|
failureCodes.push('toolbar action label is required');
|
|
64836
65046
|
if (!action)
|
|
64837
65047
|
failureCodes.push('toolbar action action is required');
|
|
65048
|
+
const target = coerceRecord(value['target']);
|
|
65049
|
+
if (target) {
|
|
65050
|
+
const scope = normalizeText(target['scope']);
|
|
65051
|
+
if (scope !== 'collection' && scope !== 'selection') {
|
|
65052
|
+
failureCodes.push('toolbar action target scope must be collection or selection');
|
|
65053
|
+
}
|
|
65054
|
+
const cardinality = coerceRecord(target['cardinality']);
|
|
65055
|
+
if (scope === 'selection' && cardinality) {
|
|
65056
|
+
const min = Number(cardinality['min']);
|
|
65057
|
+
const max = cardinality['max'] === undefined ? undefined : Number(cardinality['max']);
|
|
65058
|
+
if (!Number.isFinite(min) || min < 0) {
|
|
65059
|
+
failureCodes.push('toolbar action target cardinality min must be a non-negative number');
|
|
65060
|
+
}
|
|
65061
|
+
if (max !== undefined && (!Number.isFinite(max) || max < min)) {
|
|
65062
|
+
failureCodes.push('toolbar action target cardinality max must be greater than or equal to min');
|
|
65063
|
+
}
|
|
65064
|
+
}
|
|
65065
|
+
}
|
|
64838
65066
|
if (failureCodes.length > 0) {
|
|
64839
65067
|
return { failureCodes };
|
|
64840
65068
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Observable, firstValueFrom } from 'rxjs';
|
|
2
2
|
import { withAuthoringScopePolicy } from '@praxisui/ai';
|
|
3
|
-
import { ad as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-
|
|
3
|
+
import { ad as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-7iWPoCFj.mjs';
|
|
4
4
|
|
|
5
5
|
class TableAgenticAuthoringTurnFlow {
|
|
6
6
|
adapter;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { firstValueFrom } from 'rxjs';
|
|
2
2
|
import { BaseAiAdapter, sanitizePraxisAssistantText, createComponentAuthoringContext } from '@praxisui/ai';
|
|
3
3
|
import { PRAXIS_GLOBAL_ACTION_CATALOG, deepMerge } from '@praxisui/core';
|
|
4
|
-
import { I as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, l as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, Z as coerceTableComponentEditPlans, $ as compileTableComponentEditPlans, L as TASK_PRESETS, a4 as getTableComponentEditPlanCapabilities, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, H as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-
|
|
4
|
+
import { I as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, l as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, Z as coerceTableComponentEditPlans, $ as compileTableComponentEditPlans, L as TASK_PRESETS, a4 as getTableComponentEditPlanCapabilities, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, H as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-7iWPoCFj.mjs';
|
|
5
5
|
|
|
6
6
|
const TABLE_ROW_EXPRESSION_CONTEXT_OPTION = {
|
|
7
7
|
mode: 'expression',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticsTableConfigAdapterService, b as AnalyticsTableContractService, c as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, d as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, e as ColumnsConfigEditorComponent, D as DATE_PRESETS, f as DataFormatterComponent, g as DataFormattingService, F as FORMULA_TEMPLATES, h as FilterConfigService, i as FilterSettingsComponent, j as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, k as PRAXIS_FILTER_COMPONENT_METADATA, l as PRAXIS_TABLE_AUTHORING_MANIFEST, m as PRAXIS_TABLE_COMPONENT_METADATA, n as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, o as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, p as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, q as PraxisFilter, r as PraxisFilterWidgetConfigEditor, s as PraxisTable, t as PraxisTableConfigEditor, u as PraxisTableInlineAuthoringEditorComponent, v as PraxisTableToolbar, w as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, x as TABLE_COMPONENT_AI_CAPABILITIES, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_KIND, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, L as TASK_PRESETS, O as TableDefaultsProvider, Q as TableRulesEditorComponent, R as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, U as VisualFormulaBuilderComponent, W as analyticsComparisonMetricField, X as buildTableApplyPlan, Y as coerceTableComponentEditPlan, Z as coerceTableComponentEditPlans, _ as compileTableComponentEditPlan, $ as compileTableComponentEditPlans, a0 as createTableAuthoringDocument, a1 as getActionId, a2 as getEnum, a3 as getTableCapabilities, a4 as getTableComponentEditPlanCapabilities, a5 as isTableRendererSupportedByRichContentP0, a6 as mapTableRendererToRichContentP0, a7 as normalizeTableAuthoringDocument, a8 as parseLegacyOrTableDocument, a9 as providePraxisFilterMetadata, aa as providePraxisTableMetadata, ab as providePraxisTableToolbarAppearance, ac as serializeTableAuthoringDocument, ae as toCanonicalTableConfig, af as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-
|
|
1
|
+
export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticsTableConfigAdapterService, b as AnalyticsTableContractService, c as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, d as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, e as ColumnsConfigEditorComponent, D as DATE_PRESETS, f as DataFormatterComponent, g as DataFormattingService, F as FORMULA_TEMPLATES, h as FilterConfigService, i as FilterSettingsComponent, j as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, k as PRAXIS_FILTER_COMPONENT_METADATA, l as PRAXIS_TABLE_AUTHORING_MANIFEST, m as PRAXIS_TABLE_COMPONENT_METADATA, n as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, o as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, p as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, q as PraxisFilter, r as PraxisFilterWidgetConfigEditor, s as PraxisTable, t as PraxisTableConfigEditor, u as PraxisTableInlineAuthoringEditorComponent, v as PraxisTableToolbar, w as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, x as TABLE_COMPONENT_AI_CAPABILITIES, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_KIND, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, L as TASK_PRESETS, O as TableDefaultsProvider, Q as TableRulesEditorComponent, R as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, U as VisualFormulaBuilderComponent, W as analyticsComparisonMetricField, X as buildTableApplyPlan, Y as coerceTableComponentEditPlan, Z as coerceTableComponentEditPlans, _ as compileTableComponentEditPlan, $ as compileTableComponentEditPlans, a0 as createTableAuthoringDocument, a1 as getActionId, a2 as getEnum, a3 as getTableCapabilities, a4 as getTableComponentEditPlanCapabilities, a5 as isTableRendererSupportedByRichContentP0, a6 as mapTableRendererToRichContentP0, a7 as normalizeTableAuthoringDocument, a8 as parseLegacyOrTableDocument, a9 as providePraxisFilterMetadata, aa as providePraxisTableMetadata, ab as providePraxisTableToolbarAppearance, ac as serializeTableAuthoringDocument, ae as toCanonicalTableConfig, af as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-7iWPoCFj.mjs';
|
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/table",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.82",
|
|
4
4
|
"description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
8
|
"@angular/platform-browser": "^21.0.0",
|
|
9
|
-
"@praxisui/ai": "^9.0.0-beta.
|
|
10
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
11
|
-
"@praxisui/dynamic-fields": "^9.0.0-beta.
|
|
12
|
-
"@praxisui/dynamic-form": "^9.0.0-beta.
|
|
13
|
-
"@praxisui/metadata-editor": "^9.0.0-beta.
|
|
14
|
-
"@praxisui/rich-content": "^9.0.0-beta.
|
|
15
|
-
"@praxisui/settings-panel": "^9.0.0-beta.
|
|
16
|
-
"@praxisui/table-rule-builder": "^9.0.0-beta.
|
|
9
|
+
"@praxisui/ai": "^9.0.0-beta.82",
|
|
10
|
+
"@praxisui/core": "^9.0.0-beta.82",
|
|
11
|
+
"@praxisui/dynamic-fields": "^9.0.0-beta.82",
|
|
12
|
+
"@praxisui/dynamic-form": "^9.0.0-beta.82",
|
|
13
|
+
"@praxisui/metadata-editor": "^9.0.0-beta.82",
|
|
14
|
+
"@praxisui/rich-content": "^9.0.0-beta.82",
|
|
15
|
+
"@praxisui/settings-panel": "^9.0.0-beta.82",
|
|
16
|
+
"@praxisui/table-rule-builder": "^9.0.0-beta.82",
|
|
17
17
|
"@angular/cdk": "^21.0.0",
|
|
18
18
|
"@angular/forms": "^21.0.0",
|
|
19
19
|
"@angular/material": "^21.0.0",
|
|
20
20
|
"@angular/router": "^21.0.0",
|
|
21
|
-
"@praxisui/dialog": "^9.0.0-beta.
|
|
21
|
+
"@praxisui/dialog": "^9.0.0-beta.82",
|
|
22
22
|
"rxjs": "~7.8.0"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _praxisui_core from '@praxisui/core';
|
|
2
|
-
import { TableToolbarAppearanceConfig, TableConfig, PraxisExportScope, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceDensity, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, GlobalConfigService, AsyncConfigStorage, LocalStorageConfigService, ApiUrlEntry, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, PraxisResourceEvent, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, EnterpriseRuntimeContextService, PraxisLoadingRenderer, PraxisRuntimeComponentObservationEnvelope, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, ResourceCapabilityOperation, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
|
|
2
|
+
import { TableToolbarAppearanceConfig, TableConfig, ToolbarActionEvent, PraxisExportScope, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceDensity, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, ToolbarAction as ToolbarAction$1, GlobalConfigService, AsyncConfigStorage, LocalStorageConfigService, ApiUrlEntry, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, PraxisResourceEvent, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, EnterpriseRuntimeContextService, PraxisLoadingRenderer, PraxisRuntimeComponentObservationEnvelope, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, ResourceCapabilityOperation, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { InjectionToken, OnDestroy, EventEmitter, ElementRef, Provider, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, AfterContentInit, Injector, Type } from '@angular/core';
|
|
5
5
|
import { ActivatedRoute } from '@angular/router';
|
|
@@ -58,10 +58,7 @@ declare class PraxisTableToolbar implements OnDestroy {
|
|
|
58
58
|
evaluationContext: Record<string, any> | null;
|
|
59
59
|
/** @internal Used by PraxisTable so toolbar menu decisions materialize through the table runtime. */
|
|
60
60
|
columnVisibilityController?: (field: string, visible: boolean) => void;
|
|
61
|
-
toolbarAction: EventEmitter<
|
|
62
|
-
action: string;
|
|
63
|
-
actionConfig?: any;
|
|
64
|
-
}>;
|
|
61
|
+
toolbarAction: EventEmitter<Pick<ToolbarActionEvent<Record<string, unknown>>, "action" | "actionConfig">>;
|
|
65
62
|
exportAction: EventEmitter<{
|
|
66
63
|
format: string;
|
|
67
64
|
scope?: PraxisExportScope;
|
|
@@ -133,7 +130,7 @@ declare class PraxisTableToolbar implements OnDestroy {
|
|
|
133
130
|
private cloneForEmit;
|
|
134
131
|
private getLogger;
|
|
135
132
|
private warnLog;
|
|
136
|
-
emitToolbarAction(event: Event, action: string, actionConfig?:
|
|
133
|
+
emitToolbarAction(event: Event, action: string, actionConfig?: ToolbarAction$1): void;
|
|
137
134
|
getStartActions(): any[];
|
|
138
135
|
getNonStartActions(): any[];
|
|
139
136
|
getOverflowActions(): any[];
|
|
@@ -164,6 +161,9 @@ declare class PraxisTableToolbar implements OnDestroy {
|
|
|
164
161
|
private getSelectedCount;
|
|
165
162
|
private getBulkActionMinSelections;
|
|
166
163
|
private getBulkActionMaxSelections;
|
|
164
|
+
private isSelectionTargetAction;
|
|
165
|
+
private getTargetMinSelections;
|
|
166
|
+
private getTargetMaxSelections;
|
|
167
167
|
private resolveDisabledActionReason;
|
|
168
168
|
private warnVisibleWhenFallback;
|
|
169
169
|
private warnDisabledWhenFallback;
|
|
@@ -1192,7 +1192,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
1192
1192
|
rowDoubleClick: EventEmitter<any>;
|
|
1193
1193
|
rowExpansionChange: EventEmitter<RowExpansionChangeEvent>;
|
|
1194
1194
|
rowAction: EventEmitter<any>;
|
|
1195
|
-
toolbarAction: EventEmitter<any
|
|
1195
|
+
toolbarAction: EventEmitter<ToolbarActionEvent<any>>;
|
|
1196
1196
|
bulkAction: EventEmitter<any>;
|
|
1197
1197
|
exportAction: EventEmitter<any>;
|
|
1198
1198
|
columnReorder: EventEmitter<any>;
|
|
@@ -1844,8 +1844,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
1844
1844
|
private showBulkConfirmDialog;
|
|
1845
1845
|
onToolbarAction(event: {
|
|
1846
1846
|
action: string;
|
|
1847
|
-
actionConfig?:
|
|
1847
|
+
actionConfig?: ToolbarAction$1;
|
|
1848
1848
|
}): Promise<void>;
|
|
1849
|
+
private hasValidToolbarTargetSelection;
|
|
1849
1850
|
private tryHandleCollectionCreateToolbarAction;
|
|
1850
1851
|
private resolveBulkExportFormat;
|
|
1851
1852
|
private isBulkExportActionKey;
|
|
@@ -3059,6 +3060,13 @@ interface ToolbarAction {
|
|
|
3059
3060
|
/** Material button appearance: filled (flat), outlined (stroked), elevated (raised), text, tonal */
|
|
3060
3061
|
appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
|
|
3061
3062
|
action: string;
|
|
3063
|
+
target?: {
|
|
3064
|
+
scope: 'collection' | 'selection';
|
|
3065
|
+
cardinality?: {
|
|
3066
|
+
min: number;
|
|
3067
|
+
max?: number;
|
|
3068
|
+
};
|
|
3069
|
+
};
|
|
3062
3070
|
globalAction?: GlobalActionRef;
|
|
3063
3071
|
effects?: PraxisRuntimeGlobalActionEffect[];
|
|
3064
3072
|
position: 'start' | 'end';
|
|
@@ -3216,6 +3224,9 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
|
|
|
3216
3224
|
private buildGlobalActionPayload;
|
|
3217
3225
|
getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
|
|
3218
3226
|
onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
|
|
3227
|
+
onToolbarActionTargetScopeChange(action: ToolbarAction, scope: 'collection' | 'selection'): void;
|
|
3228
|
+
onToolbarActionTargetMinChange(action: ToolbarAction, value: unknown): void;
|
|
3229
|
+
onToolbarActionTargetMaxChange(action: ToolbarAction, value: unknown): void;
|
|
3219
3230
|
addToolbarAction(): void;
|
|
3220
3231
|
editToolbarAction(index: number): void;
|
|
3221
3232
|
removeToolbarAction(index: number): void;
|