array( '8px', '14px', '13px' ), 'md' => array( '11px', '20px', '15px' ), 'lg' => array( '14px', '26px', '17px' ), ); $size = isset( $sizes[ $st['size'] ] ) ? $sizes[ $st['size'] ] : $sizes['md']; $bg = $st['bg'] ? $st['bg'] : '#1e293b'; $text = $st['text'] ? $st['text'] : '#ffffff'; $border = $st['border'] ? $st['border'] : $bg; $hover_bg = $st['hover_bg'] ? $st['hover_bg'] : $bg; $hover_text = $st['hover_text'] ? $st['hover_text'] : $text; $v = array(); switch ( $st['variant'] ) { case 'outline': $v['--devisqr-bg'] = 'transparent'; $v['--devisqr-text'] = $bg; $v['--devisqr-border'] = $border; $v['--devisqr-border-w'] = '2px'; $v['--devisqr-hover-bg'] = $hover_bg; $v['--devisqr-hover-text'] = $hover_text; $v['--devisqr-hover-border'] = $hover_bg; break; case 'link': $v['--devisqr-bg'] = 'transparent'; $v['--devisqr-text'] = $bg; $v['--devisqr-border'] = 'transparent'; $v['--devisqr-hover-bg'] = 'transparent'; $v['--devisqr-hover-text'] = $hover_bg; $v['--devisqr-hover-deco'] = 'underline'; $v['--devisqr-pad-y'] = '2px'; $v['--devisqr-pad-x'] = '0'; break; default: $v['--devisqr-bg'] = $bg; $v['--devisqr-text'] = $text; $v['--devisqr-border'] = $border; $v['--devisqr-hover-bg'] = $hover_bg; $v['--devisqr-hover-text'] = $hover_text; } if ( 'link' !== $st['variant'] ) { $v['--devisqr-pad-y'] = $size[0]; $v['--devisqr-pad-x'] = $size[1]; } $v['--devisqr-font'] = $size[2]; $v['--devisqr-radius'] = (int) $st['radius'] . 'px'; $v['--devisqr-width'] = ! empty( $st['full_width'] ) ? '100%' : 'auto'; $out = ''; foreach ( $v as $k => $val ) { $out .= $k . ':' . $val . ';'; } return $out; } /** * Inline CSS: variables for the cart button (values come from the style editor form, never free CSS). * * @return string */ public static function inline_css() { $css = '.devisqr-quote-wrap--cart .devisqr-quote-btn{' . self::vars( self::style( 'cart' ) ) . '}'; /** * Filter the inline CSS printed for the buttons. * * @param string $css CSS. */ return apply_filters( 'devisqr_buttons_inline_css', $css ); } /** * Wrapper CSS classes for a context (also used by the block script). * * @param string $context cart|product. * @param string $extra Extra classes. * @return string */ public static function wrap_class( $context, $extra = '' ) { $st = self::style( $context ); $classes = array( 'devisqr-quote-wrap', 'devisqr-quote-wrap--' . $context ); if ( 'cart' === $context ) { $classes[] = 'devisqr-quote-wrap--' . DevisQR_Settings::get( 'cart_button_align' ); } if ( empty( $st['icon'] ) ) { $classes[] = 'devisqr-quote-wrap--no-icon'; } if ( $extra ) { $classes[] = $extra; } return implode( ' ', array_map( 'sanitize_html_class', $classes ) ); } /** * Button label for a context. * * @param string $context cart|product. * @return string */ public static function label( $context ) { $key = 'product' === $context ? 'product_button_text' : 'cart_button_text'; $text = trim( (string) DevisQR_Settings::get( $key ) ); return '' !== $text ? $text : __( 'Request a quote', 'nuxwp-devis' ); } /* ------------------------------------------------------------------ */ /* Markup */ /* ------------------------------------------------------------------ */ /** * Button markup (shared by cart and product page). * * @param string $context cart|product. * @param bool $enabled Enabled state. * @param array $attrs Extra data attributes on the wrapper. */ public static function render( $context, $enabled, $attrs = array() ) { $min_total = DevisQR_Helpers::min_cart_total(); $id = 'product' === $context ? 'devisqr-product-quote' : 'devisqr-submit-quote'; $dom_id = ( 'product' === $context && ! empty( $attrs['data-loop'] ) ) ? $id . '-' . (int) $attrs['data-product-id'] : $id; $attrs = array_merge( array( 'data-user-access' => DevisQR_Helpers::user_access() ), $attrs ); $attr_html = ''; foreach ( $attrs as $k => $v ) { $attr_html .= ' ' . sanitize_key( $k ) . '="' . esc_attr( $v ) . '"'; } ?>
> 0 ) : ?>