|
14 | 14 | use Tutor\Components\Button; |
15 | 15 | use Tutor\Components\Constants\Variant; |
16 | 16 | use Tutor\Components\DateFilter; |
| 17 | +use Tutor\Components\DropdownFilter; |
17 | 18 | use Tutor\Components\Sorting; |
18 | 19 | use TUTOR\Dashboard; |
19 | 20 | use Tutor\Ecommerce\OrderController; |
20 | | -use TUTOR\Icon; |
21 | 21 | use TUTOR\Input; |
22 | 22 |
|
23 | 23 | $filter_options = ( new OrderController( false ) )->tabs_key_value( 'dashboard' ); |
24 | 24 |
|
25 | | -$selected = array_filter( |
26 | | - $filter_options, |
27 | | - function( $item ) use ( $selected_filter ) { |
28 | | - return $item['key'] === $selected_filter || ( empty( $item['key'] ) && 'all' === $selected_filter ); |
29 | | - } |
| 25 | +$dropdown_options = array_map( |
| 26 | + function( $filter ) use ( $selected_filter ) { |
| 27 | + $key = $filter['key'] ?? ''; |
| 28 | + return array( |
| 29 | + 'label' => $filter['title'], |
| 30 | + 'value' => $key, |
| 31 | + 'count' => (int) $filter['value'], |
| 32 | + 'url' => $filter['url'], |
| 33 | + 'active' => $key === $selected_filter || ( empty( $key ) && 'all' === $selected_filter ), |
| 34 | + ); |
| 35 | + }, |
| 36 | + $filter_options |
30 | 37 | ); |
31 | | - |
32 | | -$selected = count( $selected ) ? reset( $selected ) : $filter_options[0]; |
33 | 38 | ?> |
34 | | -<div x-data="tutorPopover({ placement: 'bottom-start', offset: 4 })"> |
35 | | - <button x-ref="trigger" @click="toggle()" class="tutor-btn tutor-btn-link tutor-btn-x-small tutor-p-none tutor-gap-2"> |
36 | | - <?php echo esc_html( $selected['title'] . ' (' . $selected['value'] . ')' ); ?> |
37 | | - <?php tutor_utils()->render_svg_icon( Icon::CHEVRON_DOWN, 16, 16, array( 'class' => 'tutor-icon-secondary' ) ); ?> |
38 | | - </button> |
39 | | - |
40 | | - <div |
41 | | - x-ref="content" |
42 | | - x-cloak |
43 | | - x-show="open" |
44 | | - @click.outside="handleClickOutside()" |
45 | | - class="tutor-popover" |
46 | | - > |
47 | | - <div class="tutor-popover-menu" style="width: 120px;"> |
48 | | - <?php foreach ( $filter_options as $filter ) : ?> |
49 | | - <a href="<?php echo esc_url( $filter['url'] ); ?>" class="tutor-popover-menu-item tutor-popover-menu-item-active"> |
50 | | - <?php |
51 | | - printf( |
52 | | - // translators: %1$s - Filter label, %2$d - Number of orders. |
53 | | - esc_html__( '%1$s (%2$d)', 'tutor' ), |
54 | | - esc_html( $filter['title'] ), |
55 | | - esc_html( $filter['value'] ) |
56 | | - ); |
57 | | - ?> |
58 | | - </a> |
59 | | - <?php endforeach; ?> |
60 | | - </div> |
61 | | - </div> |
62 | | - </div> |
63 | | - <div class="tutor-qna-filter-right"> |
64 | | - <div class="tutor-flex tutor-items-center tutor-gap-3"> |
65 | | - <?php |
66 | | - $query_params = array( 'data', 'order', 'start_date', 'end_date' ); |
67 | | - if ( Input::has_any( $query_params, Input::GET_REQUEST ) ) { |
68 | | - Button::make() |
69 | | - ->tag( 'a' ) |
70 | | - ->attr( 'href', Dashboard::get_account_page_url( 'billing' ) ) |
71 | | - ->attr( 'class', 'tutor-text-brand' ) |
72 | | - ->label( __( 'Clear all', 'tutor' ) ) |
73 | | - ->variant( Variant::LINK ) |
74 | | - ->render(); |
75 | | - } |
| 39 | +<div class="tutor-flex tutor-items-center tutor-justify-between tutor-px-6 tutor-py-5 tutor-border-b"> |
| 40 | + <?php DropdownFilter::make()->options( $dropdown_options )->render(); ?> |
| 41 | + <div class="tutor-flex tutor-items-center tutor-gap-3"> |
| 42 | + <?php |
| 43 | + $query_params = array( 'data', 'order', 'start_date', 'end_date' ); |
| 44 | + if ( Input::has_any( $query_params, Input::GET_REQUEST ) ) { |
| 45 | + Button::make() |
| 46 | + ->tag( 'a' ) |
| 47 | + ->attr( 'href', Dashboard::get_account_page_url( 'billing' ) ) |
| 48 | + ->attr( 'class', 'tutor-text-brand' ) |
| 49 | + ->label( __( 'Clear all', 'tutor' ) ) |
| 50 | + ->variant( Variant::LINK ) |
| 51 | + ->render(); |
| 52 | + } |
76 | 53 |
|
77 | | - DateFilter::make()->type( DateFilter::TYPE_RANGE )->placement( 'bottom-end' )->render(); |
78 | | - Sorting::make()->order( $order_filter )->render(); |
79 | | - ?> |
80 | | - </div> |
| 54 | + DateFilter::make()->type( DateFilter::TYPE_RANGE )->placement( 'bottom-end' )->render(); |
| 55 | + Sorting::make()->order( $order_filter )->render(); |
| 56 | + ?> |
81 | 57 | </div> |
82 | 58 | </div> |
0 commit comments