86 lines
2.8 KiB
PHP
86 lines
2.8 KiB
PHP
<?php
|
|
|
|
class ET_Builder_Module_Field_Overflow extends ET_Builder_Module_Field_Base {
|
|
|
|
public function get_defaults() {
|
|
return array(
|
|
'prefix' => '',
|
|
'tab_slug' => 'custom_css',
|
|
'toggle_slug' => 'visibility',
|
|
'hover' => 'tabs',
|
|
'mobile_options' => true,
|
|
'sticky' => true,
|
|
'default' => ET_Builder_Module_Helper_Overflow::OVERFLOW_DEFAULT,
|
|
);
|
|
}
|
|
|
|
public function get_fields( array $args = array() ) {
|
|
$settings = array_merge( $this->get_defaults(), $args );
|
|
|
|
return array_merge(
|
|
$this->get_field( 'x', $settings ),
|
|
$this->get_field( 'y', $settings )
|
|
);
|
|
}
|
|
|
|
protected function get_field( $axis, $args ) {
|
|
static $i18n;
|
|
|
|
if ( ! $i18n ) {
|
|
$i18n = array(
|
|
'default' => __( 'Default', 'et_builder' ),
|
|
'visible' => __( 'Visible', 'et_builder' ),
|
|
'scroll' => __( 'Scroll', 'et_builder' ),
|
|
'hidden' => __( 'Hidden', 'et_builder' ),
|
|
'auto' => __( 'Auto', 'et_builder' ),
|
|
'description' => __( 'Here you can control element overflow on the %s axis. If set to scroll, content that overflows static widths or heights will trigger a browser scrollbar. If set to hidden, content overflow will be clipped.', 'et_builder' ),
|
|
'horizontal' => __( 'Horizontal Overflow', 'et_builder' ),
|
|
'vertical' => __( 'Vertical Overflow', 'et_builder' ),
|
|
);
|
|
}
|
|
|
|
$overflow = et_pb_overflow();
|
|
$OVERFLOW_DEFAULT = ET_Builder_Module_Helper_Overflow::OVERFLOW_DEFAULT;
|
|
$OVERFLOW_VISIBLE = ET_Builder_Module_Helper_Overflow::OVERFLOW_VISIBLE;
|
|
$OVERFLOW_SCROLL = ET_Builder_Module_Helper_Overflow::OVERFLOW_SCROLL;
|
|
$OVERFLOW_HIDDEN = ET_Builder_Module_Helper_Overflow::OVERFLOW_HIDDEN;
|
|
$OVERFLOW_AUTO = ET_Builder_Module_Helper_Overflow::OVERFLOW_AUTO;
|
|
|
|
switch ( $axis ) {
|
|
case 'x':
|
|
$field = $overflow->get_field_x( $args['prefix'] );
|
|
$label = $i18n['horizontal'];
|
|
break;
|
|
default:
|
|
$field = $overflow->get_field_y( $args['prefix'] );
|
|
$label = $i18n['vertical'];
|
|
break;
|
|
}
|
|
|
|
$settings = array(
|
|
'label' => $label,
|
|
'type' => 'select',
|
|
'hover' => $args['hover'],
|
|
'mobile_options' => $args['mobile_options'],
|
|
'sticky' => $args['sticky'],
|
|
'default' => $args['default'],
|
|
'tab_slug' => $args['tab_slug'],
|
|
'toggle_slug' => $args['toggle_slug'],
|
|
'options' => array(
|
|
$OVERFLOW_DEFAULT => $i18n['default'],
|
|
$OVERFLOW_VISIBLE => $i18n['visible'],
|
|
$OVERFLOW_SCROLL => $i18n['scroll'],
|
|
$OVERFLOW_HIDDEN => $i18n['hidden'],
|
|
$OVERFLOW_AUTO => $i18n['auto'],
|
|
),
|
|
'description' => sprintf( $i18n['description'], strtoupper( $axis ) ),
|
|
);
|
|
|
|
$options = array( $field => $settings );
|
|
|
|
return $options;
|
|
}
|
|
}
|
|
|
|
return new ET_Builder_Module_Field_Overflow();
|