Skip to content
Snippets Groups Projects
Commit 5eb2b2b2 authored by jrockowitz's avatar jrockowitz
Browse files

Issue #3367084: Add support for basic object methods with no arguments.

parent 1ad0db64
No related branches found
No related tags found
No related merge requests found
......@@ -21,7 +21,17 @@
const setting = element.getAttribute('data-webform-javascript-setting');
// Convert a JavaScript string in dot notation into an object reference.
// @see https://stackoverflow.com/questions/6393943/convert-a-javascript-string-in-dot-notation-into-an-object-reference
const value = setting.split('.').reduce((o, i) => o[i], window);
const value = setting.split('.').reduce(
function (object, property) {
// If the property is a method (aka function) call it.
if (typeof object[property] === 'function') {
return object[property]();
}
else {
return object[property];
}
}, window);
// Set the hidden element's value.
if (value) {
element.value = value;
......
......@@ -12,12 +12,19 @@ title: 'Test: Webform Javascript Setting'
description: ''
categories: { }
elements: |-
webform_javascript_setting:
webform_javascript_setting_user_id:
'#type': webform_javascript_setting
'#title': webform_javascript_setting
'#title': webform_javascript_setting_user_id
'#javascript_setting': drupal_user_id
webform_javascript_setting_get:
'#type': webform_javascript_setting
'#title': webform_javascript_setting_get
'#javascript_setting': webform_javascript_setting_get
css: ''
javascript: ''
javascript: |-
window.WebformJavaScriptSettingTest = {
get: () => '{some_value}',
};
settings:
ajax: false
ajax_scroll_top: form
......
<?php
/**
* @file
* Install function for the Webform JavaScript Setting Element Test module.
*/
/**
* Implements hook_install().
*/
function webform_javascript_setting_test_install(bool $is_syncing): void {
if ($is_syncing) {
return;
}
/** @var \Drupal\webform\WebformThirdPartySettingsManagerInterface $third_party_settings_manager */
$third_party_settings_manager = \Drupal::service('webform.third_party_settings_manager');
$settings = $third_party_settings_manager
->getThirdPartySetting('webform_javascript_setting', 'settings');
$settings['webform_javascript_setting_get'] = [
'setting' => 'WebformJavaScriptSettingTest.get',
'label' => 'WebformJavaScriptSettingTest: get()',
];
$third_party_settings_manager
->setThirdPartySetting('webform_javascript_setting', 'settings', $settings);
}
......@@ -37,8 +37,10 @@ class WebformJavaScriptSettingJavaScriptTest extends WebDriverTestBase {
// Check JavaScript settings field is populated.
$this->drupalGet('/webform/test_webform_javascript_setting/');
$assert_session->hiddenFieldExists('webform_javascript_setting');
$assert_session->hiddenFieldValueEquals('webform_javascript_setting', '1');
$assert_session->hiddenFieldExists('webform_javascript_setting_user_id');
$assert_session->hiddenFieldValueEquals('webform_javascript_setting_user_id', '1');
$assert_session->hiddenFieldExists('webform_javascript_setting_get');
$assert_session->hiddenFieldValueEquals('webform_javascript_setting_get', '{some_value}');
}
}
......@@ -2,7 +2,7 @@
/**
* @file
* Install, update and uninstall functions for the Webform module.
* Install function for the Webform JavaScript Setting Element module.
*/
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment