diff --git a/src/chart/parameter/component/NodePropertyParameterSelect.tsx b/src/chart/parameter/component/NodePropertyParameterSelect.tsx index 7ba1095b4..61e9d2ba6 100644 --- a/src/chart/parameter/component/NodePropertyParameterSelect.tsx +++ b/src/chart/parameter/component/NodePropertyParameterSelect.tsx @@ -171,6 +171,7 @@ const NodePropertyParameterSelectComponent = (props: ParameterSelectProps) => {
{ } onCellDoubleClick={(e) => { let rules = getRule(e, actionsRules, 'doubleClick'); + let ruleCellCopy = getRule(e, actionsRules, 'ruleCellCopy'); + + if (ruleCellCopy?.length > 0) { + const fieldDetails = ruleCellCopy.find((rule) => rule.field === e.field); + if (fieldDetails) { + const regex = new RegExp(fieldDetails?.customizationValue, 'g'); + setNotificationOpen(true); + navigator.clipboard.writeText(e.value.replace(regex, '')); + } else { + setNotificationOpen(true); + navigator.clipboard.writeText(e.value); + } + return; + } + if (rules !== null) { rules.forEach((rule) => executeActionRule(rule, e, { ...props, pageNames: pageNames }, 'table')); } else { diff --git a/src/extensions/actions/ActionsRuleCreationModal.tsx b/src/extensions/actions/ActionsRuleCreationModal.tsx index 52c93b176..d0f2e386c 100644 --- a/src/extensions/actions/ActionsRuleCreationModal.tsx +++ b/src/extensions/actions/ActionsRuleCreationModal.tsx @@ -55,6 +55,12 @@ const RULE_CONDITIONS = { disableFieldSelection: true, multiple: true, }, + { + value: 'ruleCellCopy', + label: 'Cell Copy', + disableFieldSelection: true, + multiple: true, + }, ], bar: [ { @@ -375,7 +381,7 @@ export const NeoCustomReportActionsModal = ({ const td2Styling = (type) => ({ width: type === 'bar' ? '15%' : '30%' }); const td2DropdownClassname = (type) => `n-align-middle n-pr-1 ${type === 'bar' ? 'n-w-full' : 'n-w-2/5'}`; const td2Autocomplete = (type, index, rule) => - (type !== 'bar' && rule.condition !== 'rowCheck' ? ( + type !== 'bar' && rule.condition !== 'rowCheck' ? ( ) : ( <> - )); + ); const td4Styling = (type) => ({ width: type === 'bar' ? '45%' : '40%' }); const td4DropdownClassname = 'n-align-middle, n-w-1/3'; const td6Styling = (type) => ({ width: type === 'bar' ? '30%' : '20%' }); diff --git a/src/index.pcss b/src/index.pcss index cd76af2f6..02ed49d1a 100644 --- a/src/index.pcss +++ b/src/index.pcss @@ -2,6 +2,14 @@ @tailwind components; @tailwind utilities; +.anchor { + text-decoration: underline; + text-decoration-thickness: 2px; + text-underline-offset: 4px; + text-decoration-color: blue; + color: blue; +} + /* Create CSS class based components */ /* https://tailwindcss.com/docs/reusing-styles#extracting-classes-with-apply */ @layer components { diff --git a/src/report/ReportRecordProcessing.tsx b/src/report/ReportRecordProcessing.tsx index 55913acd3..2e51213fa 100644 --- a/src/report/ReportRecordProcessing.tsx +++ b/src/report/ReportRecordProcessing.tsx @@ -284,6 +284,11 @@ function RenderArray(value, transposedTable = false) { export function RenderString(value) { const str = value?.toString() || ''; + + if (str.startsWith('; + } + if (str.startsWith('http') || str.startsWith('https')) { return (