@@ -85,38 +85,26 @@ ckan.module('scheming-suggestions', function($) {
8585 var formula = $ ( this ) . data ( 'formula' ) ;
8686 var $copyBtn = $ ( this ) ;
8787
88- // Create a temp textarea to copy from
89- var $temp = $ ( "<textarea>" ) ;
90- $ ( "body" ) . append ( $temp ) ;
91- $temp . val ( formula ) . select ( ) ;
92-
93- try {
94- // Execute copy command
95- var successful = document . execCommand ( 'copy' ) ;
88+ // Use Clipboard API to copy formula
89+ navigator . clipboard . writeText ( formula ) . then ( function ( ) {
90+ // Show success state
91+ $copyBtn . addClass ( 'copy-success' ) ;
9692
97- if ( successful ) {
98- // Show success state
99- $copyBtn . addClass ( 'copy-success' ) ;
100-
101- // Store original content
102- var $icon = $copyBtn . find ( 'svg' ) ;
103- var originalHtml = $icon . html ( ) ;
104-
105- // Show checkmark
106- $icon . html ( '<path d="M20 6L9 17l-5-5"></path>' ) ;
107-
108- // Reset after 2 seconds
109- setTimeout ( function ( ) {
110- $copyBtn . removeClass ( 'copy-success' ) ;
111- $icon . html ( originalHtml ) ;
112- } , 2000 ) ;
113- }
114- } catch ( err ) {
93+ // Store original content
94+ var $icon = $copyBtn . find ( 'svg' ) ;
95+ var originalHtml = $icon . html ( ) ;
96+
97+ // Show checkmark
98+ $icon . html ( '<path d="M20 6L9 17l-5-5"></path>' ) ;
99+
100+ // Reset after 2 seconds
101+ setTimeout ( function ( ) {
102+ $copyBtn . removeClass ( 'copy-success' ) ;
103+ $icon . html ( originalHtml ) ;
104+ } , 2000 ) ;
105+ } ) . catch ( function ( err ) {
115106 console . error ( 'Could not copy formula: ' , err ) ;
116- }
117-
118- // Remove temp textarea
119- $temp . remove ( ) ;
107+ } ) ;
120108 } ) ;
121109
122110 // Handle apply suggestion button
0 commit comments