UI: Add export/import and copy/paste of widget actions
Adds the ability to transfer widget actions instead of recreating them by
hand (feature request thingsboard/thingsboard#14986, and per-action
duplicate #11907):
- Export all actions or a single action to a JSON file; import merges them
into the target widget's actions, dropping sources/types the widget does
not support, regenerating ids, de-duplicating names and resetting invalid
cellClick column bindings, with a summary toast.
- Copy all / copy single action to a clipboard buffer (ItemBufferService) and
paste onto another widget on any dashboard/tab; duplicate an action in place.
- Clear all actions.
Transfer/bulk operations are grouped under a toolbar overflow menu; per-row
copy/duplicate/export under a row overflow menu.
Import also supports pasting raw JSON content in the import dialog.
"clear-actions-text":"Are you sure you want to remove all widget actions?",
"actions-file":"Widget actions file",
"actions-json-content":"Actions JSON content",
"invalid-actions-file-error":"Unable to import widget actions: Invalid widget actions data structure.",
"import-actions-imported":"{ count, plural, =0 {No actions were imported} =1 {1 action was imported} other {# actions were imported} }",
"paste-actions-pasted":"{ count, plural, =0 {No actions were pasted} =1 {1 action was pasted} other {# actions were pasted} }",
"import-actions-skipped":"{ count, plural, =1 {1 action was skipped as not applicable or already configured for this widget} other {# actions were skipped as not applicable or already configured for this widget} }",
"import-actions-columns-reset":"{ count, plural, =1 {1 imported cell click action has no column assigned. Edit the action to assign a column.} other {# imported cell click actions have no column assigned. Edit the actions to assign a column.} }",
"action-source":"Action source",
"select-action-source":"Select action source",
"action-source-required":"Action source is required.",