From 8f4ba298433850cdc44ec68240e36f00de2017db Mon Sep 17 00:00:00 2001 From: Rhys Lees <43909932+RhysLees@users.noreply.github.com> Date: Tue, 26 Mar 2024 16:23:52 +0000 Subject: [PATCH 1/4] WIP --- .../views/forms/components/json-input.blade.php | 6 ++++++ .../infolists/components/json-entry.blade.php | 6 ++++++ src/Concerns/HasFoldingCode.php | 14 ++++++++++++++ 3 files changed, 26 insertions(+) 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..4c4f863 100644 --- a/src/Concerns/HasFoldingCode.php +++ b/src/Concerns/HasFoldingCode.php @@ -7,6 +7,7 @@ trait HasFoldingCode { protected bool|Closure $hasFoldingCode = true; + protected bool|Closure $hasFoldedCode = false; public function foldingCode(bool|Closure $condition = true): static { @@ -19,4 +20,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); + } } From 39bf5be582971cc3971e180e940c196e11572957 Mon Sep 17 00:00:00 2001 From: Rhys Lees <43909932+RhysLees@users.noreply.github.com> Date: Tue, 26 Mar 2024 16:25:49 +0000 Subject: [PATCH 2/4] WIP --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 ]); } ... From bd481cbee4e6154bc6dd5cd0fdbb528fe68bb24f Mon Sep 17 00:00:00 2001 From: Rhys Lees <43909932+RhysLees@users.noreply.github.com> Date: Tue, 26 Mar 2024 16:27:31 +0000 Subject: [PATCH 3/4] WIP --- tests/JsonEntryFieldTest.php | 12 ++++++++++++ tests/JsonInputFieldTest.php | 12 ++++++++++++ 2 files changed, 24 insertions(+) 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'); From 8107b52a8d718b0887b5c0a9f7e6ecb9bfc85137 Mon Sep 17 00:00:00 2001 From: Rhys Lees <43909932+RhysLees@users.noreply.github.com> Date: Tue, 26 Mar 2024 16:27:34 +0000 Subject: [PATCH 4/4] WIP --- src/Concerns/HasFoldingCode.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Concerns/HasFoldingCode.php b/src/Concerns/HasFoldingCode.php index 4c4f863..30ec6b0 100644 --- a/src/Concerns/HasFoldingCode.php +++ b/src/Concerns/HasFoldingCode.php @@ -7,6 +7,7 @@ trait HasFoldingCode { protected bool|Closure $hasFoldingCode = true; + protected bool|Closure $hasFoldedCode = false; public function foldingCode(bool|Closure $condition = true): static