Skip to content

Commit fc7ec22

Browse files
authored
Add JSON fields support (#65)
1 parent daeb354 commit fc7ec22

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/ConditionalContainer.php

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
namespace DigitalCreative\ConditionalContainer;
44

55
use Illuminate\Database\Eloquent\Model;
6+
use Illuminate\Support\Arr;
67
use Illuminate\Support\Collection;
78
use Illuminate\Support\Str;
89
use Laravel\Nova\Contracts\RelatableField;
9-
use Laravel\Nova\Fields\BelongsTo;
1010
use Laravel\Nova\Fields\Field;
1111
use Laravel\Nova\Http\Controllers\ResourceUpdateController;
1212
use Laravel\Nova\Http\Controllers\UpdateFieldController;
@@ -42,7 +42,7 @@ class ConditionalContainer extends Field
4242
'===', '==', '=',
4343
'includes', 'contains',
4444
'ends with', 'starts with', 'startsWith', 'endsWith',
45-
'boolean', 'truthy'
45+
'boolean', 'truthy',
4646
];
4747

4848
/**
@@ -108,14 +108,14 @@ public function resolve($resource, $attribute = null)
108108
}
109109

110110
}
111-
112-
public function resolveForAction ($request)
111+
112+
public function resolveForAction($request)
113113
{
114114
$expressionsMap = $this->expressions->map(function ($expression) {
115115
return is_callable($expression) ? $expression() : $expression;
116116
});
117117

118-
$this->withMeta(['expressionsMap' => $expressionsMap]);
118+
$this->withMeta([ 'expressionsMap' => $expressionsMap ]);
119119

120120
return $this->resolveUsing(function () { });
121121
}
@@ -243,7 +243,7 @@ public static function splitLiteral(string $literal): array
243243

244244
$operator = collect(self::OPERATORS)
245245
->filter(function ($operator) use ($literal) {
246-
return strpos($literal, $operator) !== false;
246+
return Str::of($literal)->replace('->', '.')->contains($operator);
247247
})
248248
->first();
249249

@@ -254,7 +254,7 @@ public static function splitLiteral(string $literal): array
254254
return [
255255
$attribute,
256256
$operator,
257-
$value
257+
$value,
258258
];
259259

260260
}
@@ -270,7 +270,13 @@ public function runConditions(Collection $values): bool
270270
return $this->relationalOperatorLeafResolver(...$arguments);
271271
});
272272

273-
return $resolver($values);
273+
return $resolver(
274+
collect(Arr::dot($values))->mapWithKeys(function ($value, string $key) {
275+
return [
276+
Str::of($key)->replace('.', '->')->__toString() => $value,
277+
];
278+
})
279+
);
274280

275281
});
276282
}

0 commit comments

Comments
 (0)