diff --git a/includes/admin/assets/css/um-admin-forms.css b/includes/admin/assets/css/um-admin-forms.css index e18d2062..28e974b7 100644 --- a/includes/admin/assets/css/um-admin-forms.css +++ b/includes/admin/assets/css/um-admin-forms.css @@ -67,17 +67,32 @@ textarea.um-forms-field.um-small-field { .um-multi-selects-option-line.um-admin-drag-fld { background: none; border: none; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + flex-wrap: nowrap; } -.um-multi-selects-option-line .um-field-icon { +.um-multi-selects-option-line.um-admin-drag-fld .um-field-icon { float: left; - width: 30px; - text-align: center; + width: 20px; + text-align: left; line-height: 30px; } -.um-multi-text-option-line .um-field-wrapper, .um-multi-selects-option-line .um-field-wrapper { + float:left; + width: calc( 100% - 60px ); + line-height: 30px; + box-sizing: border-box; +} + +.um-multi-selects-option-line.um-admin-drag-fld .um-field-wrapper { + width: calc( 100% - 90px ); +} + +.um-multi-text-option-line .um-field-wrapper { float:left; width: calc( 100% - 90px ); line-height: 30px; diff --git a/includes/admin/assets/js/um-admin-forms.js b/includes/admin/assets/js/um-admin-forms.js index 05111b2f..99459e53 100644 --- a/includes/admin/assets/js/um-admin-forms.js +++ b/includes/admin/assets/js/um-admin-forms.js @@ -4,10 +4,10 @@ jQuery(document).ready( function() { /** * Multi-selects sort */ - jQuery('.um-multi-selects-list').sortable({ - items: '.um-admin-drag-fld', - connectWith: '.um-admin-drag-col,.um-admin-drag-group', - forcePlaceholderSize:true + jQuery('.um-multi-selects-list.um-sortable-multi-selects').sortable({ + items: '.um-admin-drag-fld', + connectWith: '.um-admin-drag-col,.um-admin-drag-group', + forcePlaceholderSize: true }); @@ -28,6 +28,8 @@ jQuery(document).ready( function() { jQuery( '.um-multi-selects-add-option' ).click( function() { var list = jQuery(this).siblings('ul.um-multi-selects-list'); + var sortable = list.hasClass( 'um-sortable-multi-selects' ); + var field_id = list.data('field_id'); var k = 0; if ( list.find( 'li:last select.um-forms-field' ).length > 0 ) { @@ -37,12 +39,17 @@ jQuery(document).ready( function() { var selector_html = jQuery( '
' ).append( list.siblings('.um-hidden-multi-selects').clone() ).html(); - list.append( - '
  • ' + - '' + - '' + selector_html + - '' + wp.i18n.__( 'Remove', 'ultimate-member' ) + '
  • ' - ); + var html = '
  • '; + if ( sortable ) { + html += ''; + } + + html += '' + selector_html + '' + + '' + + '' + wp.i18n.__( 'Remove', 'ultimate-member' ) + '' + + '' + + '
  • '; + list.append( html ); list.find('li:last .um-hidden-multi-selects').attr('name', jQuery(this).data('name') ). addClass('um-forms-field um-long-field').removeClass('um-hidden-multi-selects').attr('id', list.data('id_attr') + '-' + k); diff --git a/includes/admin/core/class-admin-forms.php b/includes/admin/core/class-admin-forms.php index e4d3ed91..d18c6bf7 100644 --- a/includes/admin/core/class-admin-forms.php +++ b/includes/admin/core/class-admin-forms.php @@ -849,8 +849,11 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) { $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; + $sorting = ! empty( $field_data['sorting'] ) ? $field_data['sorting'] : false; + $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field'; + $class .= ! empty( $sorting ) ? 'um-sorting-enabled' : ''; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( @@ -876,9 +879,12 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) { } $html = ""; - $html .= "