diff --git a/js/src/base-component.js b/js/src/base-component.js index b5008b3a2..da0d0b7b2 100644 --- a/js/src/base-component.js +++ b/js/src/base-component.js @@ -36,6 +36,10 @@ class BaseComponent extends Config { } // Public + getElement() { + return this._element + } + dispose() { Data.remove(this._element, this.constructor.DATA_KEY) EventHandler.off(this._element, this.constructor.EVENT_KEY) diff --git a/js/src/forms/form-field.js b/js/src/forms/form-field.js index e8fd5223c..f2c3a59b5 100644 --- a/js/src/forms/form-field.js +++ b/js/src/forms/form-field.js @@ -20,15 +20,13 @@ const CLASS_FIELD_SUCCESS = 'is-valid' const ARIA_DESCRIBED_BY = 'aria-describedby' const Default = { - invalid: '', // invalid message to add - name: null, - valid: '', // valid message to add + invalid: '', // invalid message to append + valid: '', // valid message to append type: 'feedback' // or tooltip } const DefaultType = { invalid: 'string', - name: 'string', valid: 'string', type: 'string' } @@ -70,10 +68,6 @@ class FormField extends BaseComponent { return MessageTypes } - getElement() { - return this._element - } - clearAppended() { const appendedFeedback = SelectorEngine.findOne(`#${this._tipId}`, this._element.parentNode) if (!appendedFeedback) { @@ -122,6 +116,10 @@ class FormField extends BaseComponent { this._element.setAttribute(ARIA_DESCRIBED_BY, describedBy) return true } + + name() { + return this._element.name || this._element.id + } } export default FormField diff --git a/js/src/forms/form.js b/js/src/forms/form.js index da4703789..8b5f21f64 100644 --- a/js/src/forms/form.js +++ b/js/src/forms/form.js @@ -17,7 +17,7 @@ const EVENT_SUBMIT = `submit${EVENT_KEY}` const EVENT_RESET = `reset${EVENT_KEY}` const CLASS_VALIDATED = 'was-validated' -const SELECTOR_DATA_TOGGLE = 'form[data-bs-toggle="form-validation"]' +const SELECTOR_DATA_TOGGLE = 'form[data-bs-toggle="form"]' const Default = { type: 'feedback', // or 'tooltip' @@ -25,7 +25,8 @@ const Default = { } const DefaultType = { - type: 'string', validateCallback: '(function|null)' + type: 'string', + validateCallback: '(function|null)' } class Form extends BaseComponent { @@ -86,10 +87,6 @@ class Form extends BaseComponent { return false } - getDataForSubmission() { - return new FormData(this._element) - } - _appendErrorToField(field, givenMessage) { const element = field.getElement() @@ -114,19 +111,17 @@ class Form extends BaseComponent { const fields = new Map() const formElements = Array.from(this._element.elements) // the DOM elements for (const element of formElements) { - const name = element.name || element.id - const field = FormField.getOrCreateInstance(element, { - name, type: this._config.type + type: this._config.type }) - fields.set(name, field) + fields.set(field.name(), field) } return fields } _fetchErrors() { - return typeof this._config.validateCallback === 'function' ? this._config.validateCallback(this.getDataForSubmission()) : {} + return typeof this._config.validateCallback === 'function' ? this._config.validateCallback(this) : {} } } diff --git a/site/content/docs/5.2/examples/checkout-rtl/index.html b/site/content/docs/5.2/examples/checkout-rtl/index.html index 60cfae89c..fbd80c3c1 100644 --- a/site/content/docs/5.2/examples/checkout-rtl/index.html +++ b/site/content/docs/5.2/examples/checkout-rtl/index.html @@ -65,7 +65,7 @@ body_class: "bg-light"