diff --git a/src/main/java/com/flowingcode/vaadin/addons/chipfield/ChipField.java b/src/main/java/com/flowingcode/vaadin/addons/chipfield/ChipField.java
index 09be1b3..8e0eff0 100644
--- a/src/main/java/com/flowingcode/vaadin/addons/chipfield/ChipField.java
+++ b/src/main/java/com/flowingcode/vaadin/addons/chipfield/ChipField.java
@@ -306,6 +306,12 @@ public boolean isReadonly() {
return this.isReadonly();
}
+ @Override
+ public void setReadOnly(boolean readOnly) {
+ super.setReadOnly(readOnly);
+ getElement().callJsFunction("toggleReadonly");
+ }
+
/** @deprecated use {@link #setRequiredIndicatorVisible(boolean)} */
@Deprecated
public void setRequired(boolean required) {
diff --git a/src/main/resources/META-INF/frontend/paper-chip-input-autocomplete.js b/src/main/resources/META-INF/frontend/paper-chip-input-autocomplete.js
index 67d9c22..aed8068 100644
--- a/src/main/resources/META-INF/frontend/paper-chip-input-autocomplete.js
+++ b/src/main/resources/META-INF/frontend/paper-chip-input-autocomplete.js
@@ -287,7 +287,7 @@ class PaperChipInputAutocomplete extends PolymerElement {
[[item.name]]
@@ -318,6 +318,7 @@ class PaperChipInputAutocomplete extends PolymerElement {
this._autoValidate = this.autoValidate;
this._required = this.required;
this._paperInputElement = this.$.paperInput;
+ this.toggleReadonly();
}
_isEmpty(item) {
@@ -457,6 +458,18 @@ class PaperChipInputAutocomplete extends PolymerElement {
}));
}
+ _isClosable(closable, readonly) {
+ return closable && !readonly;
+ }
+
+ toggleReadonly() {
+ if(this.readonly){
+ this.$.paperInput.style.pointerEvents="none";
+ } else {
+ this.$.paperInput.style.removeProperty("pointer-events");
+ }
+ }
+
}
window.customElements.define(PaperChipInputAutocomplete.is, PaperChipInputAutocomplete);
diff --git a/src/test/java/com/flowingcode/vaadin/addons/chipfield/ChipfieldDemoView.java b/src/test/java/com/flowingcode/vaadin/addons/chipfield/ChipfieldDemoView.java
index 63cf828..fbf78e5 100644
--- a/src/test/java/com/flowingcode/vaadin/addons/chipfield/ChipfieldDemoView.java
+++ b/src/test/java/com/flowingcode/vaadin/addons/chipfield/ChipfieldDemoView.java
@@ -35,6 +35,7 @@ public class ChipfieldDemoView extends TabbedDemo {
private static final String RESTRICTED_DEMO = "Restricted";
private static final String DISABLED_DEMO = "Disabled";
private static final String BINDER_DEMO = "Binder";
+ private static final String READONLY_DEMO = "Readonly";
private static final String DATAPROVIDER_SOURCE =
"https://github.com/FlowingCode/ChipFieldAddon/blob/master/src/test/java/com/flowingcode/vaadin/addons/chipfield/DataProviderDemo.java";
private static final String RESTRICTED_SOURCE =
@@ -43,6 +44,8 @@ public class ChipfieldDemoView extends TabbedDemo {
"https://github.com/FlowingCode/ChipFieldAddon/blob/master/src/test/java/com/flowingcode/vaadin/addons/chipfield/DisabledDemo.java";
private static final String BINDER_SOURCE =
"https://github.com/FlowingCode/ChipFieldAddon/blob/master/src/test/java/com/flowingcode/vaadin/addons/chipfield/BinderDemo.java";
+ private static final String READONLY_SOURCE =
+ "https://github.com/FlowingCode/ChipFieldAddon/blob/master/src/test/java/com/flowingcode/vaadin/addons/chipfield/ReadonlyDemo.java";
public ChipfieldDemoView() {
@@ -50,5 +53,6 @@ public ChipfieldDemoView() {
addDemo(new RestrictedDemo(), RESTRICTED_DEMO, RESTRICTED_SOURCE);
addDemo(new DisabledDemo(), DISABLED_DEMO, DISABLED_SOURCE);
addDemo(new BinderDemo(), BINDER_DEMO, BINDER_SOURCE);
+ addDemo(new ReadonlyDemo(), READONLY_DEMO, READONLY_SOURCE);
}
}
diff --git a/src/test/java/com/flowingcode/vaadin/addons/chipfield/ReadonlyDemo.java b/src/test/java/com/flowingcode/vaadin/addons/chipfield/ReadonlyDemo.java
new file mode 100644
index 0000000..6771dd9
--- /dev/null
+++ b/src/test/java/com/flowingcode/vaadin/addons/chipfield/ReadonlyDemo.java
@@ -0,0 +1,35 @@
+/*-
+ * #%L
+ * ChipField Addon
+ * %%
+ * Copyright (C) 2018 - 2021 Flowing Code
+ * %%
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+package com.flowingcode.vaadin.addons.chipfield;
+
+import com.vaadin.flow.component.orderedlayout.VerticalLayout;
+
+@SuppressWarnings("serial")
+public class ReadonlyDemo extends VerticalLayout {
+ public ReadonlyDemo() {
+ ChipField chf = new ChipField<>("Readonly", "Mercury", "Venus", "Earth");
+ chf.setWidthFull();
+ chf.addSelectedItem("Mercury");
+ chf.addSelectedItem("Venus");
+ chf.setReadOnly(true);
+
+ add(chf);
+ }
+}