File: /mnt/data/dreamssalon-wp/wp-content/plugins/dreamsalon-widgets/widgets/class-contact-background.php
<?php
/**
* DS FAQ Widget
*
* @since 1.0.0
*/
namespace dreamsalonelementor\Widgets;
use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Repeater;
if (!defined('ABSPATH')) {
exit;
}
class DSFAQ extends Widget_Base
{
public function get_name()
{
return 'dreamsalon-ds-faq';
}
public function get_title()
{
return __('DS FAQ', 'dreamsalon_elementor');
}
public function get_icon()
{
return 'eicon-help-o';
}
public function get_categories()
{
return ['dreamsalon'];
}
/**
* ✅ Register script dependencies
*/
public function get_script_depends() {
return [
'bootstrap-bundle'
];
}
protected function _register_controls()
{
$this->start_controls_section(
'faq_section',
[
'label' => __('FAQ Categories', 'dreamsalon_elementor'),
]
);
$faq_repeater = new Repeater();
$faq_item_repeater = new Repeater();
$faq_item_repeater->add_control(
'faq_question',
[
'label' => __('Question', 'dreamsalon_elementor'),
'type' => Controls_Manager::TEXT,
'default' => __('Sample Question', 'dreamsalon_elementor'),
]
);
$faq_item_repeater->add_control(
'faq_answer',
[
'label' => __('Answer', 'dreamsalon_elementor'),
'type' => Controls_Manager::TEXTAREA,
'default' => __('Sample answer text goes here.', 'dreamsalon_elementor'),
]
);
$faq_repeater->add_control(
'faq_category_title',
[
'label' => __('Category Title', 'dreamsalon_elementor'),
'type' => Controls_Manager::TEXT,
'default' => __('General', 'dreamsalon_elementor'),
]
);
$faq_repeater->add_control(
'faq_items',
[
'label' => __('FAQ Items', 'dreamsalon_elementor'),
'type' => Controls_Manager::REPEATER,
'fields' => $faq_item_repeater->get_controls(),
'default' => [
['faq_question' => 'How do I book a service?', 'faq_answer' => 'To book a service, browse through the available options and select your preferred time.'],
],
'title_field' => '{{{ faq_question }}}',
]
);
$this->add_control(
'faq_list',
[
'label' => __('FAQ Categories', 'dreamsalon_elementor'),
'type' => Controls_Manager::REPEATER,
'fields' => $faq_repeater->get_controls(),
'default' => [
[
'faq_category_title' => 'General',
],
],
'title_field' => '{{{ faq_category_title }}}',
]
);
$this->end_controls_section();
}
protected function render()
{
$settings = $this->get_settings_for_display();
if (empty($settings['faq_list'])) return;
?>
<!-- Start Content -->
<div class="content">
<div class="container">
<div class="row" id="cart-wrap">
<div class="col-lg-12 mx-auto">
<div class="cart-item-wrap">
<div class="row row-gap-3">
<!-- Sidebar -->
<div class="col-lg-3">
<div class="card faq-sidebar-item mb-lg-0 rounded">
<div class="card-body">
<ul class="faq-sidebar">
<?php foreach ($settings['faq_list'] as $index => $faq_category) :
$cat_id = 'cat-' . $index;
?>
<li>
<a href="#<?php echo esc_attr($cat_id); ?>" class="nav-link <?php echo $index === 0 ? 'active' : ''; ?>">
<?php echo esc_html($faq_category['faq_category_title']); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
</div>
<!-- FAQ Content -->
<div class="col-lg-9">
<div data-bs-spy="scroll" data-bs-target="#list-example" data-bs-offset="0">
<?php foreach ($settings['faq_list'] as $index => $faq_category) :
$cat_id = 'cat-' . $index;
?>
<div class="mb-0" id="<?php echo esc_attr($cat_id); ?>">
<h4 class="fs-20 custom-padding borde-0 mb-0">
<?php echo esc_html($faq_category['faq_category_title']); ?>
</h4>
<div class="faq-items">
<?php if (!empty($faq_category['faq_items'])) :
foreach ($faq_category['faq_items'] as $q_index => $faq_item) :
$collapse_id = 'faq-' . $index . '-' . $q_index;
?>
<div class="faq-card mb-3 rounded">
<h4 class="faq-title">
<a class="collapsed" data-bs-toggle="collapse"
href="#<?php echo esc_attr($collapse_id); ?>"
aria-expanded="false">
<?php echo esc_html($faq_item['faq_question']); ?>
</a>
</h4>
<div id="<?php echo esc_attr($collapse_id); ?>" class="card-collapse collapse">
<div class="faq-content">
<p class="sub-content"><?php echo esc_html($faq_item['faq_answer']); ?></p>
</div>
</div>
</div>
<?php endforeach; endif; ?>
</div>
</div>
<?php if ($index !== array_key_last($settings['faq_list'])) : ?>
<hr class="my-4">
<?php endif; ?>
<?php endforeach; ?>
</div>
</div>
<!-- End FAQ Content -->
</div>
</div>
</div>
</div>
</div>
</div>
<!-- End Content -->
<?php
}
}