$userValue) { $error = __('Value is not within range', 'fluentformpro'); } } return $error; }, 10, 3); } function getComponent() { return [ 'index' => 15, 'element' => $this->key, 'attributes' => [ 'name' => $this->key, 'class' => '', 'value' => '', 'min' => 0, 'max' => 10, 'type' => 'range' ], 'settings' => [ 'number_step' => '', 'container_class' => '', 'placeholder' => '', 'label' => $this->title, 'label_placement' => '', 'help_message' => '', 'admin_field_label' => '', 'enable_target_product' => 'no', 'target_product' => '', 'validation_rules' => [ 'required' => [ 'value' => false, 'global' => true, 'message' => Helper::getGlobalDefaultMessage('required'), 'global_message' => Helper::getGlobalDefaultMessage('required'), ], ], 'conditional_logics' => [], ], 'editor_options' => [ 'title' => $this->title, 'icon_class' => 'dashicons dashicons-leftright', 'template' => 'inputSlider' ], ]; } public function getGeneralEditorElements() { return [ 'label', 'label_placement', 'admin_field_label', 'value', 'min', 'max', 'number_step', 'validation_rules', 'enable_target_product', 'target_product', ]; } public function generalEditorElement() { return [ 'enable_target_product' => [ 'template' => 'radio', 'options' => [ [ 'value' => 'yes', 'label' => __('Yes', 'fluentformpro'), ], [ 'value' => 'no', 'label' => __('No', 'fluentformpro'), ], ], 'label' => __('Enable Quantity Mapping', 'fluentformpro'), ], 'target_product' => [ 'template' => 'targetProduct', 'label' => __('Target Product Field', 'fluentformpro'), 'dependency' => [ 'depends_on' => 'settings/enable_target_product', 'value' => 'yes', 'operator' => '==', ], ], ]; } public function render($data, $form) { $elementName = $data['element']; $data = apply_filters_deprecated( 'fluentform_rendering_field_data_' . $elementName, [ $data, $form ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/rendering_field_data_' . $elementName, 'Use fluentform/rendering_field_data_' . $elementName . ' instead of fluentform_rendering_field_data_' . $elementName ); $data = apply_filters('fluentform/rendering_field_data_' . $elementName, $data, $form); if ($tabIndex = \FluentForm\App\Helpers\Helper::getNextTabIndex()) { $data['attributes']['tabindex'] = $tabIndex; } $data['attributes']['class'] = @trim('ff-el-form-control ' . $data['attributes']['class']); $data['attributes']['id'] = $this->makeElementId($data, $form); $this->registerScripts($form, $data['attributes']['id']); $data['attributes']['data-default_value'] = $data['attributes']['value']; if ($data['attributes']['value'] == '') { $data['attributes']['value'] = 0; } if ($step = ArrayHelper::get($data, 'settings.number_step')) { $data['attributes']['step'] = $step; } $data['attributes']['type'] = 'range'; $data['attributes']['data-calc_value'] = $data['attributes']['value']; if (is_rtl()) { $data['attributes']['data-direction'] = 'rtl'; } if(ArrayHelper::get($data,'settings.enable_target_product') == 'yes' && ArrayHelper::get($data,'settings.target_product') != '' ){ $data['attributes']['class'] .= ' ff_quantity_item'; $data['attributes']['data-target_product'] = ArrayHelper::get($data, 'settings.target_product'); } $ariaRequired = 'false'; if (ArrayHelper::get($data, 'settings.validation_rules.required.value')) { $ariaRequired = 'true'; } $elMarkup = "
buildAttributes($data['attributes'], $form) . " aria-invalid='false' aria-required={$ariaRequired}>
" . $data['attributes']['value'] . "
"; $html = $this->buildElementMarkup($elMarkup, $data, $form); $html = apply_filters_deprecated( 'fluentform_rendering_field_html_' . $elementName, [ $html, $data, $form ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/rendering_field_html_' . $elementName, 'Use fluentform/rendering_field_html_' . $elementName . ' instead of fluentform_rendering_field_html_' . $elementName ); echo apply_filters('fluentform/rendering_field_html_' . $elementName, $html, $data, $form); } private function registerScripts($form, $elementId) { wp_enqueue_script( 'rangeslider', FLUENTFORMPRO_DIR_URL . 'public/libs/rangeslider/rangeslider.js', array('jquery'), '2.3.0', true ); wp_enqueue_style( 'rangeslider', FLUENTFORMPRO_DIR_URL . 'public/libs/rangeslider/rangeslider.css', array(), '2.3.0', 'all' ); if (did_action('wp_footer')) { $this->printJS($form, $elementId); } else { add_action('wp_footer', function () use ($form, $elementId) { $this->printJS($form, $elementId); }, 99); } } private function printJS($form, $elementId) { ?>