@@ -26,7 +26,7 @@ class DependencyContainer extends Field
2626 /**
2727 * DependencyContainer constructor.
2828 *
29- * @param $fields
29+ * @param $fields
3030 * @param null $attribute
3131 * @param null $resolveCallback
3232 */
@@ -175,7 +175,7 @@ protected function getFieldLayout($field, $value = null)
175175 * Resolve dependency fields for display
176176 *
177177 * @param mixed $resource
178- * @param null $attribute
178+ * @param null $attribute
179179 */
180180 public function resolveForDisplay ($ resource , $ attribute = null )
181181 {
@@ -242,7 +242,7 @@ public function resolveForDisplay($resource, $attribute = null)
242242 /**
243243 * Resolve dependency fields
244244 *
245- * @param mixed $resource
245+ * @param mixed $resource
246246 * @param string $attribute
247247 * @return array|mixed
248248 */
@@ -259,9 +259,9 @@ public function resolve($resource, $attribute = null)
259259 * @trace fill/fillForAction -> fillInto -> *
260260 *
261261 * @param NovaRequest $request
262- * @param $model
263- * @param $attribute
264- * @param null $requestAttribute
262+ * @param $model
263+ * @param $attribute
264+ * @param null $requestAttribute
265265 */
266266 public function fillInto (NovaRequest $ request , $ model , $ attribute , $ requestAttribute = null )
267267 {
@@ -297,26 +297,45 @@ public function areDependenciesSatisfied(NovaRequest $request)
297297 $ satisfiedCounts = 0 ;
298298 foreach ($ this ->meta ['dependencies ' ] as $ index => $ dependency ) {
299299
300+ // dependsOnEmpty
300301 if (array_key_exists ('empty ' , $ dependency ) && empty ($ request ->has ($ dependency ['property ' ]))) {
301302 $ satisfiedCounts ++;
302303 }
303304
305+ // dependsOnNotEmpty
304306 if (array_key_exists ('notEmpty ' , $ dependency ) && !empty ($ request ->has ($ dependency ['property ' ]))) {
305307 $ satisfiedCounts ++;
306308 }
307309
308- // inverted
309- if (array_key_exists ('nullOrZero ' , $ dependency ) && in_array ($ request ->get ($ dependency ['property ' ]),
310- [null , 0 , '0 ' ], true )) {
310+ // dependsOnNullOrZero
311+ if (array_key_exists ('nullOrZero ' , $ dependency )
312+ && in_array ($ request ->get ($ dependency ['property ' ]), [null , 0 , '0 ' , '' ], true )) {
313+ $ satisfiedCounts ++;
314+ }
315+
316+ // dependsOnIn
317+ if (array_key_exists ('in ' , $ dependency )
318+ && in_array ($ request ->get ($ dependency ['property ' ]), $ dependency ['in ' ])) {
319+ $ satisfiedCounts ++;
320+ }
321+
322+ // dependsOnNotIn
323+ if (array_key_exists ('notin ' , $ dependency )
324+ && !in_array ($ request ->get ($ dependency ['property ' ]), $ dependency ['notin ' ])) {
311325 $ satisfiedCounts ++;
312326 }
313327
328+ // dependsOnNot
314329 if (array_key_exists ('not ' , $ dependency ) && $ dependency ['not ' ] != $ request ->get ($ dependency ['property ' ])) {
315330 $ satisfiedCounts ++;
316331 }
317332
318- if (array_key_exists ('value ' ,
319- $ dependency ) && $ dependency ['value ' ] == $ request ->get ($ dependency ['property ' ])) {
333+ // dependsOn
334+ if (array_key_exists ('value ' , $ dependency )
335+ && !array_key_exists ('in ' , $ dependency )
336+ && !array_key_exists ('notin ' , $ dependency )
337+ && !array_key_exists ('nullOrZero ' , $ dependency )
338+ && $ dependency ['value ' ] == $ request ->get ($ dependency ['property ' ])) {
320339 $ satisfiedCounts ++;
321340 }
322341 }
@@ -328,7 +347,7 @@ public function areDependenciesSatisfied(NovaRequest $request)
328347 * Get a rule set based on field property name
329348 *
330349 * @param NovaRequest $request
331- * @param string $propertyName
350+ * @param string $propertyName
332351 * @return array
333352 */
334353 protected function getSituationalRulesSet (NovaRequest $ request , string $ propertyName = 'rules ' )
@@ -349,8 +368,7 @@ protected function getSituationalRulesSet(NovaRequest $request, string $property
349368 // if field is DependencyContainer, then add rules from dependant fields
350369 if ($ field instanceof DependencyContainer && $ propertyName === "rules " ) {
351370 $ fieldsRules [Str::random ()] = $ field ->getSituationalRulesSet ($ request , $ propertyName );
352- }
353- elseif ($ field instanceof Medialibrary) {
371+ } elseif ($ field instanceof Medialibrary) {
354372 $ rules = is_callable ($ field ->{$ propertyName })
355373 ? call_user_func ($ field ->{$ propertyName }, $ request )
356374 : $ field ->{$ propertyName };
@@ -360,8 +378,7 @@ protected function getSituationalRulesSet(NovaRequest $request, string $property
360378 $ request ,
361379 $ field ,
362380 );
363- }
364- else {
381+ } else {
365382 $ fieldsRules [$ field ->attribute ] = is_callable ($ field ->{$ propertyName })
366383 ? call_user_func ($ field ->{$ propertyName }, $ request )
367384 : $ field ->{$ propertyName };
0 commit comments