Skip to content

Commit

Permalink
because of CSP updates
Browse files Browse the repository at this point in the history
  • Loading branch information
mlantz committed May 30, 2023
1 parent 06cfbe3 commit d9ffc73
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 44 deletions.
4 changes: 2 additions & 2 deletions src/Builders/AttributeBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ public function validHtmlAttributes()
'onblur',
'oncanplay',
'oncanplaythrough',
'data-formsjs-onchange',
'data-formsjs-onclick',
'onchange',
'onclick',
'oncontextmenu',
'oncopy',
'oncuechange',
Expand Down
45 changes: 45 additions & 0 deletions src/JavaScript/core.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
document.querySelectorAll('[data-formsjs-onload]').forEach(function (element) {
let _method = element.getAttribute('data-formsjs-onload');
window[_method](element);
element.setAttribute('data-formsjs-rendered', true);
});

document.querySelectorAll('[data-formsjs-onchange]').forEach(function (element) {
let _method = element.getAttribute('data-formsjs-onchange');
_method = _method.replace('(event)', '');

element.addEventListener('change', function (event) {
window[_method](event);
});
});

document.querySelectorAll('[data-formsjs-onclick]').forEach(function (element) {
let _method = element.getAttribute('data-formsjs-onclick');
_method = _method.replace('(event)', '');
element.addEventListener('click', function (event) {
event.preventDefault();
_method = _method.replace('return ', '');
_method = _method.replace('window.', '');

if (_method.includes('Forms_validate_submission')) {
window.Forms_validate_submission(event.target.form, '<i class=\"fas fa-circle-notch fa-spin mr-2\"></i> Save',event.target);
} else if (_method.includes('FormsJS_disableOnSubmit')) {
window.FormsJS_disableOnSubmit(event);
} else if (_method.includes('.')) {
let _path = _method.split('.');
if (_path.length == 2) {
window[_path[0]][_path[1]](event);
}

if (_path.length == 3) {
window[_path[0]][_path[1]][_path[2]](event);
}

if (_path.length == 4) {
throw new Error('Method nesting is too deep. Max of 3!');
}
} else if (typeof window[_method] === 'function') {
window[_method](event);
}
});
});
40 changes: 2 additions & 38 deletions src/Services/FormAssets.php
Original file line number Diff line number Diff line change
Expand Up @@ -120,44 +120,8 @@ protected function compileScripts($type, $nonce = false)

if (in_array($type, ['all', 'scripts'])) {
$output .= collect($this->scripts)->unique()->implode("\n");
$js = collect($this->js)->push("document.querySelectorAll('[data-formsjs-onload]').forEach(function (element) { let _method = element.getAttribute('data-formsjs-onload');
window[_method](element); element.setAttribute('data-formsjs-rendered', true); });document.querySelectorAll('[data-formsjs-onchange]').forEach(function (element) {
let _method = element.getAttribute('data-formsjs-onchange');
_method = _method.replace('(event)', '');
element.addEventListener('change', function (event) {
window[_method](event);
}); });
document.querySelectorAll('[data-formsjs-onclick]').forEach(function (element) {
let _method = element.getAttribute('data-formsjs-onclick');
_method = _method.replace('(event)', '');
element.addEventListener('click', function (event) {
event.preventDefault();
_method = _method.replace('return ', '');
_method = _method.replace('window.', '');
if (_method.includes('Forms_validate_submission')) {
window.Forms_validate_submission(event.target.form, '<i class=\"fas fa-circle-notch fa-spin mr-2\"></i> Save',event.target);
} else if (_method.includes('FormsJS_disableOnSubmit')) {
window.FormsJS_disableOnSubmit(event);
} else if (_method.includes('.')) {
let _path = _method.split('.');
if (_path.length == 2) {
window[_path[0]][_path[1]](event);
}
if (_path.length == 3) {
window[_path[0]][_path[1]][_path[2]](event);
}
if (_path.length == 4) {
throw new Error('Method nesting is too deep. Max of 3!');
}
} else if (typeof window[_method] === 'function') {
window[_method](event);
}
}); });")->unique()->implode("\n");
$coreJavaScript = file_get_contents(__DIR__.'/../JavaScript/core.js');
$js = collect($this->js)->push($coreJavaScript)->unique()->implode("\n");

if (app()->environment('production')) {
$minifierJS = new JS();
Expand Down
4 changes: 2 additions & 2 deletions tests/Unit/FieldConfigProcessorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ public function testSubmitOnChange()
'Ninja' => 3,
])->canSelectNone()->submitOnChange();

$this->assertEquals('<div class="form-group"><label class="control-label" for="Field">Field</label><select class="form-control" id="Field" onchange="this.form.submit()" name="field"><option value="" selected>None</option><option value="1">Superman</option><option value="2">Batman</option><option value="3">Ninja</option></select></div>', (string) $field);
$this->assertEquals('<div class="form-group"><label class="control-label" for="Field">Field</label><select class="form-control" id="Field" data-formsjs-onchange="FormsJS_submit" name="field"><option value="" selected>None</option><option value="1">Superman</option><option value="2">Batman</option><option value="3">Ninja</option></select></div>', (string) $field);
}

public function testSubmitOnKeyUp()
Expand All @@ -219,7 +219,7 @@ public function testSubmitOnKeyUp()
'Ninja' => 3,
])->canSelectNone()->submitOnKeyUp();

$this->assertEquals('<div class="form-group"><label class="control-label" for="Field">Field</label><select class="form-control" id="Field" onkeyup="this.form.submit()" name="field"><option value="" selected>None</option><option value="1">Superman</option><option value="2">Batman</option><option value="3">Ninja</option></select></div>', (string) $field);
$this->assertEquals('<div class="form-group"><label class="control-label" for="Field">Field</label><select class="form-control" id="Field" data-formsjs-onkeyup="FormsJS_submit" name="field"><option value="" selected>None</option><option value="1">Superman</option><option value="2">Batman</option><option value="3">Ninja</option></select></div>', (string) $field);
}

public function testHiddenUnless()
Expand Down
2 changes: 1 addition & 1 deletion tests/Unit/FormExtensiveBaseTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public function testMakeWithExtras()
$this->assertStringContainsString('<div class="card-footer">', $form);
$this->assertStringContainsString('<div class="form-group"><label class="control-label" for="Name">Name</label>', $form);
$this->assertStringContainsString('<input class="form-control" id="Name" name="name" type="text" value=""></div>', $form);
$this->assertStringContainsString('<div class="col-md-12 d-flex justify-content-end"><button class="superman" type="submit" onclick="return window.Forms_validate_submission(this.form, &#039;&lt;i class=&quot;fas fa-circle-notch fa-spin mr-2&quot;&gt;&lt;/i&gt; Save &lt;span class=&quot;fas fa-save&quot;&gt;&lt;/span&gt;&#039;, this);">Save <span class="fas fa-save"></span></button>', $form);
$this->assertStringContainsString('<div class="col-md-12 d-flex justify-content-end"><button class="superman" type="submit" data-formsjs-onclick="return window.Forms_validate_submission(this.form, &#039;&lt;i class=&quot;fas fa-circle-notch fa-spin mr-2&quot;&gt;&lt;/i&gt; Save &lt;span class=&quot;fas fa-save&quot;&gt;&lt;/span&gt;&#039;, this);">Save <span class="fas fa-save"></span></button>', $form);
}

public function testMakeWithClassChanges()
Expand Down
2 changes: 1 addition & 1 deletion tests/Unit/HtmlConfigProcessorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public function testButtonOnClick()
{
$html = Button::make('click Me!')->cssClass('are-you')->onClick('window.location.reload();');

$this->assertEquals('<button class="are-you" onclick="window.location.reload();">click Me!</button>', (string) $html);
$this->assertEquals('<button class="are-you" data-formsjs-onclick="window.location.reload();">click Me!</button>', (string) $html);
}

public function testOriginal()
Expand Down

0 comments on commit d9ffc73

Please sign in to comment.