Skip to content

Commit 9f31ce9

Browse files
Repeater: Advanced - Add support for bulk actions
1 parent 6abf2b1 commit 9f31ce9

13 files changed

Lines changed: 231 additions & 51 deletions

File tree

assets/build/beaver-builder/index.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/build/default/index.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/build/elementor/index.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/build/example.min.js

Lines changed: 22 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/build/index.min.js

Lines changed: 22 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/build/wp/index.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/src/components/repeater/layout/advanced/Advanced.jsx

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { useState } from 'react'
22
import { Button } from '../../../base'
3+
import { Checkbox } from '../../../field'
4+
import BulkActions from '../../common/BulkActions'
35
import {
46
getHeaderConfig,
57
renderHeaderValue
@@ -16,14 +18,20 @@ const Advanced = ({
1618
beforeRow = false,
1719
afterRow = false,
1820
renderAction,
19-
renderFooterActions
21+
renderFooterActions,
22+
useBulk
2023
}) => {
2124

2225
const [openSection, setOpenSection] = useState(false)
2326
const headerColumns = getHeaderConfig(fields, headerFields)
2427

2528
return(
2629
<>
30+
{ useBulk &&
31+
<BulkActions
32+
actions={{ 'deletion': 'Delete' }}
33+
dispatch={ dispatch }
34+
/> }
2735
<div className='tf-repeater-advanced'>
2836
<div className='tf-repeater-advanced-header tf-repeater-advanced-label-row'>
2937
<div key={ 'index' } className='tf-repeater-advanced-label-row-index'></div>
@@ -42,6 +50,23 @@ const Advanced = ({
4250
data-open={ openSection === i ? 'true' : 'false' }
4351
>
4452
<div className='tf-repeater-advanced-overview tf-repeater-advanced-label-row'>
53+
{ useBulk &&
54+
<div
55+
className="tf-repeater-advanced-item-checkbox"
56+
onClick={ e => e.stopPropagation() }
57+
>
58+
<Checkbox
59+
label={ `Select item ${i + 1}` }
60+
labelVisuallyHidden={ true }
61+
value={ item._bulkCheckbox }
62+
onChange={ value => dispatch({
63+
type : 'update',
64+
item : i,
65+
control : '_bulkCheckbox',
66+
value : value
67+
}) }
68+
/>
69+
</div> }
4570
<div key={ 'index' } className='tf-repeater-advanced-label-row-index'>
4671
{ i + 1 }
4772
</div>

assets/src/components/repeater/layout/advanced/index.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,3 +162,9 @@ $advanced-item-index-height: 40px;
162162
.tf-repeater-advanced .tf-repeater-actions {
163163
padding: $section-padding;
164164
}
165+
166+
.tf-repeater-advanced-item-checkbox {
167+
display: flex;
168+
justify-content: center;
169+
align-items: center;
170+
}

example/register/sections.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,8 @@
303303
'title' => 'Advanced',
304304
'path' => 'repeater/advanced',
305305
'fields'=> [
306-
'repeater_advanced' => [ 'json' => true ],
306+
'repeater_advanced' => [ 'json' => true ],
307+
'repeater_advanced_use_bulk' => [ 'json' => true ],
307308
]
308309
],
309310
'bare' => [

example/templates/repeater/advanced.php

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,47 @@
4040

4141
<div><?php tangible\see($fields->fetch_value('repeater_advanced')) ?></div>
4242

43+
<h4>Example repeater with advanced layout and use_bulk set to true</h4>
44+
45+
<div class="tangible-settings-row">
46+
<?= $fields->render_field('repeater_advanced_use_bulk', [
47+
'label' => 'Repeater field',
48+
'type' => 'repeater',
49+
'layout' => 'advanced',
50+
'value' => $fields->fetch_value('repeater_advanced_use_bulk'),
51+
'use_bulk' => true,
52+
'sub_fields' => [
53+
[
54+
'label' => 'Date',
55+
'type' => 'date_picker',
56+
'name' => 'date',
57+
],
58+
[
59+
'label' => 'Operator',
60+
'type' => 'select',
61+
'name' => 'select',
62+
'choices' => [
63+
'test1' => 'Test1',
64+
'test2' => 'Test2',
65+
'test3' => 'Test3',
66+
'test4' => 'Test4'
67+
],
68+
],
69+
[
70+
'label' => 'Color',
71+
'type' => 'color_picker',
72+
'name' => 'color',
73+
],
74+
]
75+
]); ?>
76+
</div>
77+
78+
<div class="tangible-settings-row">
79+
<?php submit_button() ?>
80+
</div>
81+
82+
<div><?php tangible\see($fields->fetch_value('repeater_advanced_use_bulk')) ?></div>
83+
4384
<h4>Code</h4>
4485

4586
<?php $this->start_code('php') ?>
@@ -48,7 +89,9 @@
4889
'type' => 'repeater',
4990
'layout' => 'bare',
5091
'value' => $fields->fetch_value('repeater_advanced'),
51-
92+
93+
'use_bulk' => true, // Optional, default false
94+
5295
/**
5396
* Optional:
5497
*

0 commit comments

Comments
 (0)