From d33bc990b7800fa1c6c215de34d9a1706d9ed0fc Mon Sep 17 00:00:00 2001 From: Miki Date: Fri, 6 Sep 2024 14:39:37 +0300 Subject: [PATCH] Release 0.19.2 ready (#523) #518 #519 done --- README.md | 2 +- .../frontend/generated/vaadin-featureflags.js | 5 ++++- demo-v24/pom.xml | 6 +++--- .../miki/demo/builders/SuperTabsBuilder.java | 5 ++++- demo-v24/tsconfig.json | 2 +- demo-v24/types.d.ts | 11 +++++++++-- pom.xml | 4 ++-- superfields/pom.xml | 4 ++-- superfields/release-notes.md | 9 ++++++++- .../vaadin/miki/superfields/tabs/SuperTabs.java | 15 +++++++++++++++ .../dates/DatePatternDelegateTest.java | 5 ++++- .../miki/superfields/tabs/SuperTabsTest.java | 17 +++++++++++++++++ 12 files changed, 70 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 7c950757..a451dcc5 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ This is the relevant dependency: pl.unforgiven superfields - 0.19.1 + 0.19.2 ``` diff --git a/demo-v24/frontend/generated/vaadin-featureflags.js b/demo-v24/frontend/generated/vaadin-featureflags.js index 42f779df..a1717109 100644 --- a/demo-v24/frontend/generated/vaadin-featureflags.js +++ b/demo-v24/frontend/generated/vaadin-featureflags.js @@ -5,5 +5,8 @@ window.Vaadin.featureFlags.exampleFeatureFlag = false; window.Vaadin.featureFlags.collaborationEngineBackend = false; window.Vaadin.featureFlags.webPush = false; window.Vaadin.featureFlags.formFillerAddon = false; -window.Vaadin.featureFlags.reactRouter = false; +window.Vaadin.featureFlags.hillaI18n = false; +window.Vaadin.featureFlags.copilotFlow = false; +window.Vaadin.featureFlags.copilotI18n = false; +window.Vaadin.featureFlags.copilotExperimentalFeatures = false; export {}; \ No newline at end of file diff --git a/demo-v24/pom.xml b/demo-v24/pom.xml index 79aca05f..f7c06ae7 100644 --- a/demo-v24/pom.xml +++ b/demo-v24/pom.xml @@ -4,11 +4,11 @@ superfields-parent pl.unforgiven - 0.19.1 + 0.19.2 superfields-demo-v24 - 0.19.1 + 0.19.2 V24+ demo app for SuperFields Showcase application for V24+ and SuperFields. war @@ -22,7 +22,7 @@ pl.unforgiven superfields - 0.19.1 + 0.19.2 jakarta.servlet diff --git a/demo-v24/src/main/java/org/vaadin/miki/demo/builders/SuperTabsBuilder.java b/demo-v24/src/main/java/org/vaadin/miki/demo/builders/SuperTabsBuilder.java index 9658f942..7a21b64b 100644 --- a/demo-v24/src/main/java/org/vaadin/miki/demo/builders/SuperTabsBuilder.java +++ b/demo-v24/src/main/java/org/vaadin/miki/demo/builders/SuperTabsBuilder.java @@ -1,6 +1,7 @@ package org.vaadin.miki.demo.builders; import com.vaadin.flow.component.Component; +import com.vaadin.flow.component.button.Button; import com.vaadin.flow.component.checkbox.Checkbox; import com.vaadin.flow.component.combobox.ComboBox; import org.vaadin.miki.demo.ContentBuilder; @@ -30,6 +31,8 @@ public void buildContent(SuperTabs component, Consumer callback) component.setTabHandler(event.getValue()); }); - callback.accept(new Component[]{multilineTabs, tabHandlers}); + @SuppressWarnings("unchecked") + final Button tabSelect = new Button("Switch to \"Open source\" tab with .setSelected()", event -> ((SuperTabs)component).getTabHeader("Open source").ifPresent(tab -> tab.setSelected(true))); + callback.accept(new Component[]{multilineTabs, tabHandlers, tabSelect}); } } diff --git a/demo-v24/tsconfig.json b/demo-v24/tsconfig.json index 1d3096d9..f6d7afac 100644 --- a/demo-v24/tsconfig.json +++ b/demo-v24/tsconfig.json @@ -4,7 +4,7 @@ // You might want to change the configurations to fit your preferences // For more information about the configurations, please refer to http://www.typescriptlang.org/docs/handbook/tsconfig-json.html { - "_version": "9", + "_version": "9.1", "compilerOptions": { "sourceMap": true, "jsx": "react-jsx", diff --git a/demo-v24/types.d.ts b/demo-v24/types.d.ts index 250302bd..eff230be 100644 --- a/demo-v24/types.d.ts +++ b/demo-v24/types.d.ts @@ -3,8 +3,15 @@ // This is needed for TypeScript compiler to declare and export as a TypeScript module. // It is recommended to commit this file to the VCS. // You might want to change the configurations to fit your preferences -declare module '*.css' { - import { CSSResultGroup } from 'lit'; +declare module '*.css?inline' { + import type { CSSResultGroup } from 'lit'; const content: CSSResultGroup; export default content; } + +// Allow any CSS Custom Properties +declare module 'csstype' { + interface Properties { + [index: `--${string}`]: any; + } +} diff --git a/pom.xml b/pom.xml index d2048017..cc3b368e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 pl.unforgiven superfields-parent - 0.19.1 + 0.19.2 superfields demo-v24 @@ -18,7 +18,7 @@ 17 17 UTF-8 - 24.3.12 + 24.4.11 \ No newline at end of file diff --git a/superfields/pom.xml b/superfields/pom.xml index c24e2882..d2a76e3c 100644 --- a/superfields/pom.xml +++ b/superfields/pom.xml @@ -9,13 +9,13 @@ SuperFields Code for various Vaadin 24 fields and other components. https://www.unforgiven.pl/superfields - 0.19.1 + 0.19.2 17 17 UTF-8 - 24.3.12 + 24.4.11 3.1.2 3.4.1 diff --git a/superfields/release-notes.md b/superfields/release-notes.md index fcd46386..04076f15 100644 --- a/superfields/release-notes.md +++ b/superfields/release-notes.md @@ -1,3 +1,10 @@ +# 0.19.2 - Vaadin 24.4 +## New features and enhancements +* \#518 - [selecting a tab programmatically in SuperTabs](https://github.com/vaadin-miki/super-fields/issues/518) +## Changes to API +* \#519 - [Upgrade to Vaadin 24.4](https://github.com/vaadin-miki/super-fields/issues/519) +## Bug fixes +(nothing reported) # 0.19.1 - Bug fixes ## New features and enhancements (nothing reported) @@ -340,4 +347,4 @@ ## Changes to API (nothing reported) ## Bug fixes -* \#10 - [Max integer length does not work if it is a multiplication of grouping size](https://www.github.com/vaadin-miki/super-fields/issues/10) \ No newline at end of file +* \#10 - [Max integer length does not work if it is a multiplication of grouping size](https://www.github.com/vaadin-miki/super-fields/issues/10) diff --git a/superfields/src/main/java/org/vaadin/miki/superfields/tabs/SuperTabs.java b/superfields/src/main/java/org/vaadin/miki/superfields/tabs/SuperTabs.java index 87672fc6..fa0346c5 100644 --- a/superfields/src/main/java/org/vaadin/miki/superfields/tabs/SuperTabs.java +++ b/superfields/src/main/java/org/vaadin/miki/superfields/tabs/SuperTabs.java @@ -12,6 +12,7 @@ import com.vaadin.flow.component.html.Span; import com.vaadin.flow.component.tabs.Tab; import com.vaadin.flow.component.tabs.Tabs; +import com.vaadin.flow.dom.PropertyChangeEvent; import org.vaadin.miki.markers.WithHelperMixin; import org.vaadin.miki.markers.WithHelperPositionableMixin; import org.vaadin.miki.markers.WithIdMixin; @@ -207,6 +208,20 @@ protected void addNewTab(T value, Tab tab, Component content, boolean select) { else this.updateValue(); } + tab.getElement().addPropertyChangeListener("selected", this::tabSelectedPropertyChanged); + } + + private void tabSelectedPropertyChanged(PropertyChangeEvent propertyChangeEvent) { + if(propertyChangeEvent.getPropertyName().equals("selected") && + (propertyChangeEvent.getOldValue() == null || !Boolean.parseBoolean(propertyChangeEvent.getOldValue().toString())) && + propertyChangeEvent.getValue() != null && + Boolean.parseBoolean(propertyChangeEvent.getValue().toString())) { + this.tabsToContents.entrySet().stream() + .filter(entry -> Objects.equals(entry.getKey().getElement(), propertyChangeEvent.getSource())) + .findFirst() + .map(Map.Entry::getKey) + .ifPresent(this.tabs::setSelectedTab); + } } /** diff --git a/superfields/src/test/java/org/vaadin/miki/superfields/dates/DatePatternDelegateTest.java b/superfields/src/test/java/org/vaadin/miki/superfields/dates/DatePatternDelegateTest.java index 9a2c2199..7c175b1b 100644 --- a/superfields/src/test/java/org/vaadin/miki/superfields/dates/DatePatternDelegateTest.java +++ b/superfields/src/test/java/org/vaadin/miki/superfields/dates/DatePatternDelegateTest.java @@ -8,6 +8,8 @@ import org.vaadin.miki.shared.dates.DatePatterns; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; import java.util.Locale; public class DatePatternDelegateTest { @@ -44,7 +46,8 @@ public void testFormattedValue() { // now formatted according to locale raw = this.datePicker.getFormattedValue(); - Assert.assertEquals("03.05.1999", raw); + final String formatted = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).withLocale(this.datePicker.getLocale()).format(expected); + Assert.assertEquals(formatted, raw); } } \ No newline at end of file diff --git a/superfields/src/test/java/org/vaadin/miki/superfields/tabs/SuperTabsTest.java b/superfields/src/test/java/org/vaadin/miki/superfields/tabs/SuperTabsTest.java index 4b19f07e..bb3cabdd 100644 --- a/superfields/src/test/java/org/vaadin/miki/superfields/tabs/SuperTabsTest.java +++ b/superfields/src/test/java/org/vaadin/miki/superfields/tabs/SuperTabsTest.java @@ -13,6 +13,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Optional; public class SuperTabsTest { @@ -243,4 +244,20 @@ public void testChangingTabHandler() { } } + @Test + public void testTabSetSelected() { + final String tabTitle = "foo"; + this.tabs.addTab("something", "anything", tabTitle, "another thing"); + Assert.assertNotEquals(tabTitle, this.tabs.getValue()); + final Optional perhapsHeader = this.tabs.getTabHeader(tabTitle); + Assert.assertTrue(perhapsHeader.isPresent()); + final Tab tab = perhapsHeader.get(); + tab.setSelected(true); + Assert.assertEquals(tabTitle, this.tabs.getValue()); + + final Tab notThere = new Tab("oh wow"); + notThere.setSelected(true); + Assert.assertEquals(tabTitle, this.tabs.getValue()); + } + } \ No newline at end of file