Skip to content

Commit 5f649e0

Browse files
committed
Merge branch 'feature/separate-oxbservers-for-relationships' of github.com:kirschbaum-development/nova-inline-relationship into feature/add-tests
2 parents f652956 + 9d18693 commit 5f649e0

6 files changed

Lines changed: 63 additions & 46 deletions

File tree

dist/js/field.js

Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13405,8 +13405,8 @@ module.exports = Object.keys || function keys(O) {
1340513405
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return removeNode; });
1340613406
/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("a481");
1340713407
/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);
13408-
/* harmony import */ var C_Users_david_desmaisons_Documents_project_source_Vue_Draggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("4aa6");
13409-
/* harmony import */ var C_Users_david_desmaisons_Documents_project_source_Vue_Draggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(C_Users_david_desmaisons_Documents_project_source_Vue_Draggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1__);
13408+
/* harmony import */ var F_source_vuedraggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("4aa6");
13409+
/* harmony import */ var F_source_vuedraggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(F_source_vuedraggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1__);
1341013410

1341113411

1341213412

@@ -13421,7 +13421,7 @@ function getConsole() {
1342113421
var console = getConsole();
1342213422

1342313423
function cached(fn) {
13424-
var cache = C_Users_david_desmaisons_Documents_project_source_Vue_Draggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1___default()(null);
13424+
var cache = F_source_vuedraggable_node_modules_babel_runtime_corejs2_core_js_object_create__WEBPACK_IMPORTED_MODULE_1___default()(null);
1342513425

1342613426
return function cachedFn(str) {
1342713427
var hit = cache[str];
@@ -13796,12 +13796,6 @@ var es6_string_starts_with = __webpack_require__("f559");
1379613796
var keys = __webpack_require__("a4bb");
1379713797
var keys_default = /*#__PURE__*/__webpack_require__.n(keys);
1379813798

13799-
// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js
13800-
var es7_array_includes = __webpack_require__("6762");
13801-
13802-
// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js
13803-
var es6_string_includes = __webpack_require__("2fdb");
13804-
1380513799
// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js
1380613800
var is_array = __webpack_require__("a745");
1380713801
var is_array_default = /*#__PURE__*/__webpack_require__.n(is_array);
@@ -13853,6 +13847,12 @@ function _nonIterableRest() {
1385313847
function _slicedToArray(arr, i) {
1385413848
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
1385513849
}
13850+
// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js
13851+
var es7_array_includes = __webpack_require__("6762");
13852+
13853+
// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js
13854+
var es6_string_includes = __webpack_require__("2fdb");
13855+
1385613856
// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js
1385713857

1385813858
function _arrayWithoutHoles(arr) {
@@ -13962,6 +13962,10 @@ function delegateAndEmit(evtName) {
1396213962
};
1396313963
}
1396413964

13965+
function isTransitionName(name) {
13966+
return ["transition-group", "TransitionGroup"].includes(name);
13967+
}
13968+
1396513969
function vuedraggable_isTransition(slots) {
1396613970
if (!slots || slots.length !== 1) {
1396713971
return false;
@@ -13974,20 +13978,25 @@ function vuedraggable_isTransition(slots) {
1397413978
return false;
1397513979
}
1397613980

13977-
return ["transition-group", "TransitionGroup"].includes(componentOptions.tag);
13981+
return isTransitionName(componentOptions.tag);
13982+
}
13983+
13984+
function getSlot(slot, scopedSlot, key) {
13985+
return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);
1397813986
}
1397913987

13980-
function computeChildrenAndOffsets(children, _ref) {
13981-
var header = _ref.header,
13982-
footer = _ref.footer;
13988+
function computeChildrenAndOffsets(children, slot, scopedSlot) {
1398313989
var headerOffset = 0;
1398413990
var footerOffset = 0;
13991+
var header = getSlot(slot, scopedSlot, "header");
1398513992

1398613993
if (header) {
1398713994
headerOffset = header.length;
1398813995
children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);
1398913996
}
1399013997

13998+
var footer = getSlot(slot, scopedSlot, "footer");
13999+
1399114000
if (footer) {
1399214001
footerOffset = footer.length;
1399314002
children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);
@@ -14032,7 +14041,7 @@ function getComponentAttributes($attrs, componentData) {
1403214041
}
1403314042

1403414043
var eventsListened = ["Start", "Add", "Remove", "Update", "End"];
14035-
var eventsToEmit = ["Choose", "Sort", "Filter", "Clone"];
14044+
var eventsToEmit = ["Choose", "Unchoose", "Sort", "Filter", "Clone"];
1403614045
var readonlyProperties = ["Move"].concat(eventsListened, eventsToEmit).map(function (evt) {
1403714046
return "on" + evt;
1403814047
});
@@ -14084,15 +14093,14 @@ var draggableComponent = {
1408414093
data: function data() {
1408514094
return {
1408614095
transitionMode: false,
14087-
noneFunctionalComponentMode: false,
14088-
init: false
14096+
noneFunctionalComponentMode: false
1408914097
};
1409014098
},
1409114099
render: function render(h) {
1409214100
var slots = this.$slots.default;
1409314101
this.transitionMode = vuedraggable_isTransition(slots);
1409414102

14095-
var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots),
14103+
var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),
1409614104
children = _computeChildrenAndOf.children,
1409714105
headerOffset = _computeChildrenAndOf.headerOffset,
1409814106
footerOffset = _computeChildrenAndOf.footerOffset;
@@ -14118,7 +14126,7 @@ var draggableComponent = {
1411814126
mounted: function mounted() {
1411914127
var _this3 = this;
1412014128

14121-
this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase();
14129+
this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();
1412214130

1412314131
if (this.noneFunctionalComponentMode && this.transitionMode) {
1412414132
throw new Error("Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: ".concat(this.getTag()));
@@ -14176,6 +14184,10 @@ var draggableComponent = {
1417614184
}
1417714185
},
1417814186
methods: {
14187+
getIsFunctional: function getIsFunctional() {
14188+
var fnOptions = this._vnode.fnOptions;
14189+
return fnOptions && fnOptions.functional;
14190+
},
1417914191
getTag: function getTag() {
1418014192
return this.tag || this.element;
1418114193
},
@@ -14189,11 +14201,6 @@ var draggableComponent = {
1418914201
}
1419014202
},
1419114203
getChildrenNodes: function getChildrenNodes() {
14192-
if (!this.init) {
14193-
this.noneFunctionalComponentMode = this.noneFunctionalComponentMode && this.$children.length === 1;
14194-
this.init = true;
14195-
}
14196-
1419714204
if (this.noneFunctionalComponentMode) {
1419814205
return this.$children[0].$slots.default;
1419914206
}
@@ -14223,14 +14230,15 @@ var draggableComponent = {
1422314230
element: element
1422414231
};
1422514232
},
14226-
getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref2) {
14227-
var __vue__ = _ref2.__vue__;
14233+
getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {
14234+
var vue = _ref.__vue__;
1422814235

14229-
if (!__vue__ || !__vue__.$options || __vue__.$options._componentTag !== "transition-group") {
14230-
return __vue__;
14236+
if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {
14237+
if (!("realList" in vue) && vue.$children.length === 1 && "realList" in vue.$children[0]) return vue.$children[0];
14238+
return vue;
1423114239
}
1423214240

14233-
return __vue__.$parent;
14241+
return vue.$parent;
1423414242
},
1423514243
emitChanges: function emitChanges(evt) {
1423614244
var _this5 = this;
@@ -14266,9 +14274,9 @@ var draggableComponent = {
1426614274

1426714275
this.alterList(updatePosition);
1426814276
},
14269-
getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref3) {
14270-
var to = _ref3.to,
14271-
related = _ref3.related;
14277+
getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {
14278+
var to = _ref2.to,
14279+
related = _ref2.related;
1427214280
var component = this.getUnderlyingPotencialDraggableComponent(to);
1427314281

1427414282
if (!component) {
@@ -17054,6 +17062,8 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
1705417062
if (item[0].field.component === 'file-field') {
1705517063
if (item[0].file) {
1705617064
formData.append(item[0].field.attrib, item[0].file, item[0].fileName);
17065+
} else if (item[0].value) {
17066+
formData.append(item[0].field.attrib, String(item[0].value));
1705717067
}
1705817068
} else if (item[0].field.component === 'boolean-field') {
1705917069
formData.append(item[0].field.attribute, item[0].trueValue);

resources/js/components/FormField.vue

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,15 @@ export default {
114114
},
115115
116116
fillValueFromChildren: function(formData) {
117-
if(!_.isEmpty(this.$refs[0])){
118-
_(this.$refs).each(item => {
119-
if(item && Array.isArray(item) && item[0]){
120-
item[0].fill(formData, this.field.attribute);
121-
}
122-
});
123-
}else{
124-
formData.append(this.field.attribute, []);
125-
}
117+
if(!_.isEmpty(this.$refs[0])){
118+
_(this.$refs).each(item => {
119+
if(item && Array.isArray(item) && item[0]){
120+
item[0].fill(formData, this.field.attribute);
121+
}
122+
});
123+
}else{
124+
formData.append(this.field.attribute, []);
125+
}
126126
},
127127
128128
/**

resources/js/components/RelationshipFormItem.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@
108108
if (item[0].field.component === 'file-field'){
109109
if (item[0].file){
110110
formData.append(item[0].field.attrib, item[0].file, item[0].fileName);
111+
} else if (item[0].value){
112+
formData.append(item[0].field.attrib, String(item[0].value))
111113
}
112114
} else if (item[0].field.component === 'boolean-field'){
113115
formData.append(item[0].field.attribute, item[0].trueValue);

src/NovaInlineRelationship.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Laravel\Nova\Nova;
99
use Illuminate\Support\Str;
1010
use Laravel\Nova\Fields\ID;
11+
use Laravel\Nova\Fields\File;
1112
use Laravel\Nova\Fields\Field;
1213
use Illuminate\Http\UploadedFile;
1314
use Illuminate\Support\Collection;
@@ -364,7 +365,7 @@ protected function getResourceResponse(NovaRequest $request, $response, Collecti
364365

365366
$newRequest = $this->getDuplicateRequest($request, $item);
366367

367-
return $this->getValueFromField($field, $newRequest, $key) ?? null;
368+
return $this->getValueFromField($field, $newRequest, $key) ?? ((($field instanceof File) && ! empty($value)) ? $value : null);
368369
}
369370

370371
return $value;

src/Observers/BelongsToObserver.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ public function updating(Model $model, $attribute, $value)
2323
*/
2424
public function creating(Model $model, $attribute, $value)
2525
{
26-
$parentModel = $model->{$attribute}()->getRelated()->newInstance($value[0]);
27-
$parentModel->save();
28-
$model->{$attribute}()->associate($parentModel);
26+
if (count($value)) {
27+
$parentModel = $model->{$attribute}()->getRelated()->newInstance($value[0]);
28+
$parentModel->save();
29+
$model->{$attribute}()->associate($parentModel);
30+
}
2931
}
3032
}

src/Observers/HasOneObserver.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public function updating(Model $model, $attribute, $value)
1919
} else {
2020
$childModel->delete();
2121
}
22-
} else {
22+
} elseif (count($value)) {
2323
$model->{$attribute}()->create($value[0]);
2424
}
2525
}
@@ -29,6 +29,8 @@ public function updating(Model $model, $attribute, $value)
2929
*/
3030
public function created(Model $model, $attribute, $value)
3131
{
32-
$model->{$attribute}()->create($value[0]);
32+
if (count($value)) {
33+
$model->{$attribute}()->create($value[0]);
34+
}
3335
}
3436
}

0 commit comments

Comments
 (0)