diff --git a/.prettierignore b/.prettierignore index 413900c14..bc9266d1b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,4 +3,4 @@ CHANGELOG.md bundlesize/ _site _site-dev -.history \ No newline at end of file +.history diff --git a/packages/form-core/src/FormatMixin.js b/packages/form-core/src/FormatMixin.js index ff1d1db2d..5c6a53820 100644 --- a/packages/form-core/src/FormatMixin.js +++ b/packages/form-core/src/FormatMixin.js @@ -345,9 +345,18 @@ const FormatMixinImplementation = superclass => */ __handlePreprocessor() { const unprocessedValue = this.value; + let currentCaretIndex = this.value.length; + // Be gentle with Safari + if ( + this._inputNode && + 'selectionStart' in this._inputNode && + /** @type {HTMLInputElement} */ (this._inputNode)?.type !== 'range' + ) { + currentCaretIndex = /** @type {number} */ (this._inputNode.selectionStart); + } const preprocessedValue = this.preprocessor(this.value, { ...this.formatOptions, - currentCaretIndex: this._inputNode?.selectionStart || this.value.length, + currentCaretIndex, prevViewValue: this.__prevViewValue, }); diff --git a/packages/form-core/test/validate/Validator.test.js b/packages/form-core/test/validate/Validator.test.js index 787c074fc..48019065b 100644 --- a/packages/form-core/test/validate/Validator.test.js +++ b/packages/form-core/test/validate/Validator.test.js @@ -61,10 +61,8 @@ describe('Validator', () => { } } - const vali = new MyValidator( - {}, - { getMessage: async () => 'This is the custom error message' }, - ); + // @ts-ignore needed for test + const vali = new MyValidator({}, { getMessage: 'This is the custom error message' }); const { getMessage } = getProtectedMembers(vali); await expectThrowsAsync( @@ -98,7 +96,7 @@ describe('Validator', () => { name: 'MyValidator', type: 'error', params: 'myParam', - config: { my: 'config', getMessage: configSpy }, + config: { fieldName: 'X', getMessage: configSpy }, }); }); @@ -125,7 +123,7 @@ describe('Validator', () => { name: 'MyValidator', type: 'error', params: 'myParam', - config: { my: 'config' }, + config: { fieldName: 'X' }, }); }); diff --git a/packages/input-tel-dropdown/package.json b/packages/input-tel-dropdown/package.json index 2fa856524..1a46eb423 100644 --- a/packages/input-tel-dropdown/package.json +++ b/packages/input-tel-dropdown/package.json @@ -48,7 +48,6 @@ "access": "public" }, "customElements": "custom-elements.json", - "customElementsManifest": "custom-elements.json", "exports": { ".": "./index.js", "./define": "./define.js", diff --git a/packages/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js b/packages/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js index 661e01671..d751806ba 100644 --- a/packages/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js +++ b/packages/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js @@ -209,18 +209,5 @@ export function runInputTelDropdownSuite({ klass = LionInputTelDropdown } = {}) ); }); }); - - describe('When refs.dropdown is a FormControl (LionSelectRich/LionCombobox)', () => { - it('updates dropdown value ', async () => { - const el = await fixture(html` <${tag} .modelValue="${'+31612345678'}"> `); - expect(el.activeRegion).to.equal('NL'); - // @ts-expect-error [allow protected] - el._setActiveRegion('BE'); - await el.updateComplete; - expect(getDropdownValue(/** @type {DropdownElement} */ (el.refs.dropdown.value))).to.equal( - 'BE', - ); - }); - }); }); } diff --git a/packages/input-tel-dropdown/test/LionInputTelDropdown.test.js b/packages/input-tel-dropdown/test/LionInputTelDropdown.test.js index f6e1768ea..1e518fecd 100644 --- a/packages/input-tel-dropdown/test/LionInputTelDropdown.test.js +++ b/packages/input-tel-dropdown/test/LionInputTelDropdown.test.js @@ -44,6 +44,9 @@ class WithFormControlInputTelDropdown extends LionInputTelDropdown { // @ts-expect-error runInputTelSuite({ klass: LionInputTelDropdown }); runInputTelDropdownSuite(); -// @ts-expect-error -// Runs it for LionSelectRich, which uses .modelValue/@model-value-changed instead of .value/@change -runInputTelDropdownSuite({ klass: WithFormControlInputTelDropdown }); + +describe('WithFormControlInputTelDropdown', () => { + // @ts-expect-error + // Runs it for LionSelectRich, which uses .modelValue/@model-value-changed instead of .value/@change + runInputTelDropdownSuite({ klass: WithFormControlInputTelDropdown }); +}); diff --git a/packages/input-tel/package.json b/packages/input-tel/package.json index 0b782a65b..097ef9fbd 100644 --- a/packages/input-tel/package.json +++ b/packages/input-tel/package.json @@ -52,7 +52,6 @@ "access": "public" }, "customElements": "custom-elements.json", - "customElementsManifest": "custom-elements.json", "exports": { ".": "./index.js", "./define": "./define.js", diff --git a/web-test-runner.config.mjs b/web-test-runner.config.mjs index 08d036eab..ed769458d 100644 --- a/web-test-runner.config.mjs +++ b/web-test-runner.config.mjs @@ -6,6 +6,7 @@ const packages = fs .filter( dir => fs.statSync(`packages/${dir}`).isDirectory() && fs.existsSync(`packages/${dir}/test`), ) + // .filter(x => x.endsWith('-dropdown')) .concat( fs .readdirSync('packages/helpers')