diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json index 8c390c6e0e..fd5f3f2000 100644 --- a/.bundlewatch.config.json +++ b/.bundlewatch.config.json @@ -34,27 +34,27 @@ }, { "path": "./dist/js/bootstrap.bundle.js", - "maxSize": "43.25 kB" + "maxSize": "44.55 kB" }, { "path": "./dist/js/bootstrap.bundle.min.js", - "maxSize": "22.75 kB" + "maxSize": "23.75 kB" }, { "path": "./dist/js/bootstrap.esm.js", - "maxSize": "28.0 kB" + "maxSize": "29.75 kB" }, { "path": "./dist/js/bootstrap.esm.min.js", - "maxSize": "18.5 kB" + "maxSize": "19.25 kB" }, { "path": "./dist/js/bootstrap.js", - "maxSize": "28.75 kB" + "maxSize": "30.5 kB" }, { "path": "./dist/js/bootstrap.min.js", - "maxSize": "16.25 kB" + "maxSize": "16.75 kB" } ], "ci": { diff --git a/js/src/base-component.js b/js/src/base-component.js index dba5e0742a..12acd2f86c 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 e8fd5223c5..f2c3a59b53 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 da47037890..6b854281d2 100644 --- a/js/src/forms/form.js +++ b/js/src/forms/form.js @@ -8,6 +8,7 @@ import BaseComponent from '../base-component' import EventHandler from '../dom/event-handler' import FormField from './form-field' import SelectorEngine from '../dom/selector-engine' +import { execute } from '../util/index' const NAME = 'formValidation' const DATA_KEY = 'bs.formValidation' @@ -17,7 +18,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 +26,8 @@ const Default = { } const DefaultType = { - type: 'string', validateCallback: '(function|null)' + type: 'string', + validateCallback: '(function|null)' } class Form extends BaseComponent { @@ -86,10 +88,6 @@ class Form extends BaseComponent { return false } - getDataForSubmission() { - return new FormData(this._element) - } - _appendErrorToField(field, givenMessage) { const element = field.getElement() @@ -114,19 +112,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 execute(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 44120b272b..b22ef01f43 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"