diff --git a/README.md b/README.md index 8107305..5876b07 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,8 @@ public function form(Form $form): Form ->lineWrapping(true) ->autoCloseBrackets(true) ->darkTheme(true) - ->foldingCode(true), + ->foldingCode(true) + ->foldedCode(true), // Folded code will fold the code on form load ]); } ... @@ -65,9 +66,11 @@ public function form(Form $form): Form JsonEntry::make('json') ->label('JSON') ->lineNumbers(true) + ->lineWrapping(true) ->autoCloseBrackets(true) ->darkTheme(true) - ->foldingCode(true), + ->foldingCode(true) + ->foldedCode(true), // Folded code will fold the code on form load ]); } ... diff --git a/resources/views/forms/components/json-input.blade.php b/resources/views/forms/components/json-input.blade.php index 02a1987..0ca60af 100644 --- a/resources/views/forms/components/json-input.blade.php +++ b/resources/views/forms/components/json-input.blade.php @@ -57,6 +57,12 @@ {{ str_replace('.', '', $getId()) }}.setSize('100%', '100%'); {{ str_replace('.', '', $getId()) }}.setValue({{ json_encode(json_encode($getState(), JSON_PRETTY_PRINT), JSON_UNESCAPED_SLASHES) }} ?? '{}'); + @php + if($getHasFoldedCode()) { + echo str_replace('.', '', $getId()) . ".foldCode(CodeMirror.Pos(0, 0));"; + } + @endphp + setTimeout(function() { {{ str_replace('.', '', $getId()) }}.refresh(); }, 1); diff --git a/resources/views/infolists/components/json-entry.blade.php b/resources/views/infolists/components/json-entry.blade.php index ed5451a..8bede30 100644 --- a/resources/views/infolists/components/json-entry.blade.php +++ b/resources/views/infolists/components/json-entry.blade.php @@ -54,6 +54,12 @@ {{ str_replace('.', '', $getId()) }}.setSize(null, '100%'); {{ str_replace('.', '', $getId()) }}.setValue({{ json_encode(json_encode($getState(), JSON_PRETTY_PRINT), JSON_UNESCAPED_SLASHES) }} ?? '{}'); + @php + if($getHasFoldedCode()) { + echo str_replace('.', '', $getId()) . ".foldCode(CodeMirror.Pos(0, 0));"; + } + @endphp + setTimeout(function() { {{ str_replace('.', '', $getId()) }}.refresh(); }, 1); diff --git a/src/Concerns/HasFoldingCode.php b/src/Concerns/HasFoldingCode.php index 51ef12b..30ec6b0 100644 --- a/src/Concerns/HasFoldingCode.php +++ b/src/Concerns/HasFoldingCode.php @@ -8,6 +8,8 @@ trait HasFoldingCode { protected bool|Closure $hasFoldingCode = true; + protected bool|Closure $hasFoldedCode = false; + public function foldingCode(bool|Closure $condition = true): static { $this->hasFoldingCode = $condition; @@ -19,4 +21,17 @@ public function getHasFoldingCode(): bool { return (bool) $this->evaluate($this->hasFoldingCode); } + + public function foldedCode(bool|Closure $condition = true): static + { + $this->hasFoldingCode = $condition; + $this->hasFoldedCode = $condition; + + return $this; + } + + public function getHasFoldedCode(): bool + { + return (bool) $this->evaluate($this->hasFoldedCode); + } } diff --git a/tests/JsonEntryFieldTest.php b/tests/JsonEntryFieldTest.php index 474ad01..8eaeaaa 100644 --- a/tests/JsonEntryFieldTest.php +++ b/tests/JsonEntryFieldTest.php @@ -14,6 +14,18 @@ expect($field->getHasFoldingCode())->toBe(true); }); +it('can have folded code ', function () { + $field = JsonEntry::make('json'); + + expect($field->getHasFoldedCode())->toBe(false); + + $field->foldedCode(false); + expect($field->getHasFoldedCode())->toBe(false); + + $field->foldedCode(true); + expect($field->getHasFoldedCode())->toBe(true); +}); + it('can have auto closing brackets code ', function () { $field = JsonEntry::make('json'); diff --git a/tests/JsonInputFieldTest.php b/tests/JsonInputFieldTest.php index 0c5d728..c4a9d15 100644 --- a/tests/JsonInputFieldTest.php +++ b/tests/JsonInputFieldTest.php @@ -14,6 +14,18 @@ expect($field->getHasFoldingCode())->toBe(true); }); +it('can have folded code ', function () { + $field = JsonInput::make('json'); + + expect($field->getHasFoldedCode())->toBe(false); + + $field->foldedCode(false); + expect($field->getHasFoldedCode())->toBe(false); + + $field->foldedCode(true); + expect($field->getHasFoldedCode())->toBe(true); +}); + it('can have auto closing brackets code ', function () { $field = JsonInput::make('json');