Skip to content

Commit 3ac8695

Browse files
committed
Support dependent form field; fixes
1 parent 184982b commit 3ac8695

File tree

7 files changed

+119
-46
lines changed

7 files changed

+119
-46
lines changed

dist/js/field.js

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

dist/js/field.js.LICENSE.txt

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*!
2+
* Determine if an object is a Buffer
3+
*
4+
* @author Feross Aboukhadijeh <https://feross.org>
5+
* @license MIT
6+
*/
7+
8+
/*!
9+
* The buffer module from node.js, for the browser.
10+
*
11+
* @author Feross Aboukhadijeh <http://feross.org>
12+
* @license MIT
13+
*/
14+
15+
/*!
16+
* URI.js - Mutating URLs
17+
*
18+
* Version: 1.19.11
19+
*
20+
* Author: Rodney Rehm
21+
* Web: http://medialize.github.io/URI.js/
22+
*
23+
* Licensed under
24+
* MIT License http://www.opensource.org/licenses/mit-license
25+
*
26+
*/
27+
28+
/*!
29+
* URI.js - Mutating URLs
30+
* IPv6 Support
31+
*
32+
* Version: 1.19.11
33+
*
34+
* Author: Rodney Rehm
35+
* Web: http://medialize.github.io/URI.js/
36+
*
37+
* Licensed under
38+
* MIT License http://www.opensource.org/licenses/mit-license
39+
*
40+
*/
41+
42+
/*!
43+
* URI.js - Mutating URLs
44+
* Second Level Domain (SLD) Support
45+
*
46+
* Version: 1.19.11
47+
*
48+
* Author: Rodney Rehm
49+
* Web: http://medialize.github.io/URI.js/
50+
*
51+
* Licensed under
52+
* MIT License http://www.opensource.org/licenses/mit-license
53+
*
54+
*/
55+
56+
/*!
57+
* vuex v4.0.2
58+
* (c) 2021 Evan You
59+
* @license MIT
60+
*/
61+
62+
/*! https://mths.be/punycode v1.4.0 by @mathias */
63+
64+
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
65+
66+
/**
67+
* @license
68+
* Lodash <https://lodash.com/>
69+
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
70+
* Released under MIT license <https://lodash.com/license>
71+
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
72+
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
73+
*/
74+
75+
/**
76+
* filesize
77+
*
78+
* @copyright 2018 Jason Mulligan <[email protected]>
79+
* @license BSD-3-Clause
80+
* @version 3.6.1
81+
*/

resources/js/field.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import IndexField from './field/IndexField'
2-
import DetailField from './field/IndexField'
3-
import FormField from './field/IndexField'
2+
import DetailField from './field/DetailField'
3+
import FormField from './field/FormField'
44

55
Nova.booting((Vue, router, store) => {
66
Vue.component('index-filemanager-field', IndexField);

resources/js/field/FormField.vue

Lines changed: 30 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,17 @@
11
<template>
2-
<DefaultField :field="field" :errors="errors" :show-help-text="showHelpText">
2+
<DefaultField :field="currentField" :errors="errors" :show-help-text="showHelpText">
33
<template #field>
4-
<template v-if="field.value && field.display == 'image'">
5-
<div
6-
class="card relative card relative border-lg border-50 overflow-hidden px-0 py-0 max-w-xs mb-2"
7-
>
8-
<template v-if="field.type == 'image'">
9-
<ImageDetail class="block w-full" :file="field" :css="''"></ImageDetail>
10-
</template>
11-
12-
<template v-else>
13-
<object class="no-preview" v-html="field.image"></object>
14-
</template>
15-
</div>
16-
</template>
17-
184
<FilemanagerModal
195
ref="filemanager"
206
:resource="resourceName"
21-
:name="field.attribute"
22-
:home="field.home"
7+
:name="currentField.attribute"
8+
:home="currentField.home"
239
:active="openModal"
2410
:value="value"
2511
:currentPath="currentPath"
2612
:defaultFolder="defaultFolder"
27-
:filter="field.filterBy"
28-
:buttons="field.buttons"
13+
:filter="currentField.filterBy"
14+
:buttons="currentField.buttons"
2915
@open-modal="openModalCreateFolder"
3016
@close-modal="closeFilemanagerModal"
3117
@update-current-path="updateCurrentPath"
@@ -38,10 +24,10 @@
3824
:info="info"
3925
:active="activeInfo"
4026
:popup="true"
41-
:buttons="field.buttons"
27+
:buttons="currentField.buttons"
4228
@closePreview="closePreview"
4329
@refresh="refreshCurrent"
44-
@selectFile="setValue"
30+
@selectFile="setValue($event.path)"
4531
@rename="fileRenamed"
4632
/>
4733

@@ -56,18 +42,18 @@
5642
<!-- <UploadProgress
5743
ref="uploader"
5844
:current="currentPath"
59-
:visibility="field.visibility"
60-
:rules="field.upload_rules"
45+
:visibility="currentField.visibility"
46+
:rules="currentField.upload_rules"
6147
@removeFile="removeFileFromUpload"
6248
></UploadProgress> -->
6349

6450
<FileSelect
65-
:id="field.name"
66-
:field="field"
67-
:is-readonly="field.readonly"
51+
:id="currentField.name"
52+
:field="currentField"
53+
:is-readonly="currentField.readonly"
6854
:css="errorClasses"
6955
:value="value"
70-
@update:value="value = $event"
56+
@update:value="setValue($event)"
7157
@open-modal="openFilemanagerModal"
7258
></FileSelect>
7359

@@ -96,7 +82,7 @@
9682
</template>
9783

9884
<script>
99-
import { FormField, HandlesValidationErrors } from 'laravel-nova';
85+
import { DependentFormField, HandlesValidationErrors } from 'laravel-nova';
10086
10187
import FilemanagerModal from '../modals/FilemanagerModal';
10288
import CreateFolderModal from '../modals/CreateFolderModal';
@@ -112,9 +98,7 @@
11298
import api from '../api';
11399
114100
export default {
115-
mixins: [FormField, HandlesValidationErrors],
116-
117-
props: ['resourceName', 'resourceId', 'field'],
101+
mixins: [DependentFormField, HandlesValidationErrors],
118102
119103
components: {
120104
FileSelect: FileSelect,
@@ -208,18 +192,17 @@
208192
},
209193
210194
setCurrentPath() {
211-
if (this.field.folder != null) {
212-
this.defaultFolder = this.field.folder;
213-
this.currentPath = this.field.folder;
195+
if (this.currentField.folder != null) {
196+
this.defaultFolder = this.currentField.folder;
197+
this.currentPath = this.currentField.folder;
214198
} else {
215199
this.defaultFolder = '/';
216200
this.currentPath = '/';
217201
}
218202
},
219203
220204
removeFile() {
221-
this.field.value = null;
222-
this.value = '';
205+
this.setValue(null);
223206
this.removeModalOpen = false;
224207
},
225208
@@ -243,22 +226,29 @@
243226
* Set the initial, internal value for the field.
244227
*/
245228
setInitialValue() {
246-
this.value = this.field.value || '';
229+
this.value = this.currentField.value || '';
247230
},
248231
249232
/**
250233
* Fill the given FormData object with the field's internal value.
251234
*/
252235
fill(formData) {
253-
formData.append(this.field.attribute, this.value || '');
236+
formData.append(this.currentField.attribute, this.value || '');
254237
},
255238
256239
/**
257240
* Update the field's internal value.
258241
*/
259-
setValue(file) {
260-
this.value = file.path;
242+
setValue(value) {
243+
this.value = value;
244+
this.currentField.value = value;
245+
261246
this.closeFilemanagerModal();
247+
this.handleChange({
248+
target: {
249+
value: value,
250+
},
251+
});
262252
},
263253
},
264254

resources/js/modules/ImageDetail.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
</div>
77
</template>
88

9-
{{ this.file.image }}
9+
{{ file.image }}
1010

1111
<div ref="imageDiv" class="image-block flex justify-center w-full h-full"></div>
1212

src/FilemanagerField.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
use Laravel\Nova\Contracts\Cover;
99
use Laravel\Nova\Fields\Field;
1010
use Laravel\Nova\Http\Requests\NovaRequest;
11+
use Laravel\Nova\Fields\SupportsDependentFields;
1112

1213
class FilemanagerField extends Field implements Cover
1314
{
14-
use CoverHelpers;
15+
use CoverHelpers,
16+
SupportsDependentFields;
1517

1618
/**
1719
* The field's component.

src/Http/Services/FileManagerService.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,6 @@ public function duplicateFile($file)
297297
$offset = $offset + 1;
298298
$newName = $matchName . '(' . $offset . ').' . $ext;
299299
}
300-
301300
} else {
302301
$newName = $basename;
303302
}

0 commit comments

Comments
 (0)