Skip to content

Commit 23c34ef

Browse files
committed
Dual Listbox for adding/removing team users
1 parent 3c7df60 commit 23c34ef

File tree

16 files changed

+80
-33
lines changed

16 files changed

+80
-33
lines changed

Diff for: .gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ composer.lock
66
coverage
77
.php_cs.cache
88
/node_modules
9-
package-lock.json
9+
package-lock.json
10+
/bower_components

Diff for: bower.json

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "laravel-crm",
3+
"description": "",
4+
"main": "",
5+
"authors": [
6+
"Andrew Drake <[email protected]>"
7+
],
8+
"license": "MIT",
9+
"homepage": "",
10+
"private": true,
11+
"ignore": [
12+
"**/.*",
13+
"node_modules",
14+
"bower_components",
15+
"test",
16+
"tests"
17+
],
18+
"dependencies": {
19+
"bootstrap-duallistbox": "^4.0.2"
20+
}
21+
}

Diff for: resources/assets/css/app.css

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: resources/assets/js/app.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: resources/js/app.js

+11
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ require('bootstrap4-toggle/js/bootstrap4-toggle.min');
33
require('jquery-datetimepicker/build/jquery.datetimepicker.full')
44
require('bootstrap-4-autocomplete/dist/bootstrap-4-autocomplete')
55
require('chart.js/dist/chart.min')
6+
require('../../bower_components/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.min.js')
67

78
const Swal = require('sweetalert2')
89

@@ -210,6 +211,16 @@ const appJquery = function() {
210211
}
211212
});
212213
}
214+
215+
// bootstrap-duallistbox
216+
$("select[name^='team_users']").bootstrapDualListbox({
217+
nonSelectedListLabel: 'Not on Team',
218+
selectedListLabel: 'On Team',
219+
preserveSelectionOnMove: 'moved',
220+
moveOnSelect: false,
221+
infoText: false,
222+
iconsPrefix: 'fa'
223+
});
213224
},
214225

215226
onSelectPerson: function (item, element) {

Diff for: resources/sass/_custom.scss

+23
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,27 @@ dt {
110110

111111
#dealProducts .row:not(:first-child) label{
112112
display: none;
113+
}
114+
115+
.bootstrap-duallistbox-container .btn-outline-secondary,
116+
.bootstrap-duallistbox-container select{
117+
color: #495057 !important;
118+
border-color: #ced4da !important;
119+
}
120+
121+
.bootstrap-duallistbox-container select {
122+
padding: 0;
123+
}
124+
125+
.bootstrap-duallistbox-container select option {
126+
padding: .1875rem .625rem;
127+
line-height: 1;
128+
}
129+
130+
.bootstrap-duallistbox-container select:focus {
131+
color: #212529;
132+
background-color: #fff;
133+
border-color: #86b7fe;
134+
outline: 0;
135+
box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
113136
}

Diff for: resources/sass/app.scss

+3
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,8 @@
1313
// jquery-datetimepicker
1414
@import '~jquery-datetimepicker/build/jquery.datetimepicker.min.css';
1515

16+
// bootstrap-duallistbox
17+
@import '../../bower_components/bootstrap-duallistbox/dist/bootstrap-duallistbox.min.css';
18+
1619
// Custom
1720
@import "custom";

Diff for: resources/views/layouts/app.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<title>Laravel CRM</title>
1212

1313
<!-- Scripts -->
14-
<script src="{{ asset('vendor/laravel-crm/js/app.js') }}?v=435263456345" defer></script>
14+
<script src="{{ asset('vendor/laravel-crm/js/app.js') }}?v=53673567657" defer></script>
1515

1616
<!-- Fonts -->
1717
<script src="https://kit.fontawesome.com/489f6ee958.js" crossorigin="anonymous"></script>

Diff for: resources/views/partials/form/multiselect.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div class="form-group @error($name) text-danger @enderror">
2-
<label for="{{ $name }}[]">{{ $label }}</label>
2+
@isset($label)<label for="{{ $name }}[]">{{ $label }}</label>@endisset
33
@isset($prepend)
44
<div class="input-group">
55
<div class="input-group-prepend">

Diff for: resources/views/partials/form/password.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div class="form-group @error($name) text-danger @enderror">
2-
<label for="{{ $name }}">{{ $label }}</label>
2+
@isset($label)<label for="{{ $name }}[]">{{ $label }}</label>@endisset
33
@isset($prepend)
44
<div class="input-group">
55
<div class="input-group-prepend">

Diff for: resources/views/partials/form/select.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div class="form-group @error($name) text-danger @enderror">
2-
<label for="{{ $name }}">{{ $label }}</label>
2+
@isset($label)<label for="{{ $name }}[]">{{ $label }}</label>@endisset
33
@isset($prepend)
44
<div class="input-group">
55
<div class="input-group-prepend">

Diff for: resources/views/partials/form/text.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div class="form-group @error($name) text-danger @enderror">
2-
<label for="{{ $name }}">{{ $label }}</label>
2+
@isset($label)<label for="{{ $name }}[]">{{ $label }}</label>@endisset
33
<div class="autocomplete-control">
44
@if(isset($prepend) || isset($append))
55
<div class="input-group">

Diff for: resources/views/partials/form/textarea.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div class="form-group @error($name) text-danger @enderror">
2-
<label for="{{ $name }}">{{ $label }}</label>
2+
@isset($label)<label for="{{ $name }}[]">{{ $label }}</label>@endisset
33
<textarea class="form-control" id="textarea_{{ $name }}" name="{{ $name }}" rows="{{ $rows ?? 3 }}" @include('laravel-crm::partials.form.attributes')>{{ $value ?? null }}</textarea>
44
@error($name)
55
<div class="text-danger invalid-feedback-custom">{{ $message }}</div>

Diff for: resources/views/teams/partials/fields.blade.php

+6-18
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,11 @@
88
</div>
99
<div class="col-sm-6">
1010
<h6 class="text-uppercase">{{ ucfirst(__('laravel-crm::lang.users')) }}</h6>
11-
<table class="table mb-0 card-table table-hover">
12-
<thead>
13-
<tr>
14-
<th scope="col">{{ ucfirst(__('laravel-crm::lang.name')) }}</th>
15-
<th scope="col" class="text-right">{{ ucwords(__('laravel-crm::lang.on_team')) }}</th>
16-
</tr>
17-
</thead>
18-
<tbody>
19-
@foreach($users as $user)
20-
<tr class="has-link" data-url="{{ url(route('laravel-crm.users.show',$user)) }}">
21-
<td>{{ $user->name }}</td>
22-
<td class="disable-link text-right">
23-
<input id="user_{{ $user->id }}" type="checkbox" name="user[{{ $user->id }}]" {{ (isset($team) && $user->belongsToCrmTeam($team)) ? 'checked' : null }} data-toggle="toggle" data-size="sm" data-on="Yes" data-off="No" data-onstyle="success" data-offstyle="danger">
24-
</td>
25-
</tr>
26-
@endforeach
27-
</tbody>
28-
</table>
11+
@include('laravel-crm::partials.form.multiselect',[
12+
'name' => 'team_users',
13+
'label' => null,
14+
'options' => \VentureDrake\LaravelCrm\Http\Helpers\SelectOptions\optionsFromModel($users, null),
15+
'value' => old('users', (isset($team)) ? $team->users->pluck('id')->toArray() : null)
16+
])
2917
</div>
3018
</div>

Diff for: resources/views/users/partials/fields.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,6 @@
4646
@endif
4747
</div>
4848
<div class="col-sm-6">
49-
...
49+
5050
</div>
5151
</div>

Diff for: src/Http/Controllers/TeamController.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ public function store(StoreTeamRequest $request)
6161
'user_id' => auth()->user()->id,
6262
]);
6363

64-
if ($request->user) {
65-
$team->users()->sync(array_keys($request->user));
64+
if ($request->team_users) {
65+
$team->users()->sync($request->team_users);
6666
} else {
6767
$team->users()->sync([]);
6868
}
@@ -120,8 +120,8 @@ public function update(UpdateTeamRequest $request, Team $team)
120120
'name' => $request->name,
121121
]);
122122

123-
if ($request->user) {
124-
$team->users()->sync(array_keys($request->user));
123+
if ($request->team_users) {
124+
$team->users()->sync($request->team_users);
125125
} else {
126126
$team->users()->sync([]);
127127
}

0 commit comments

Comments
 (0)