diff --git a/packages/bbui/src/Form/Core/Select.svelte b/packages/bbui/src/Form/Core/Select.svelte
index 5754c683ed..0111bd6bcf 100644
--- a/packages/bbui/src/Form/Core/Select.svelte
+++ b/packages/bbui/src/Form/Core/Select.svelte
@@ -26,6 +26,8 @@
export let tag = null
export let searchTerm = null
export let loading
+ export let onOptionMouseenter = () => {}
+ export let onOptionMouseleave = () => {}
const dispatch = createEventDispatcher()
@@ -95,6 +97,8 @@
{autocomplete}
{sort}
{tag}
+ {onOptionMouseenter}
+ {onOptionMouseleave}
isPlaceholder={value == null || value === ""}
placeholderOption={placeholder === false ? null : placeholder}
isOptionSelected={option => compareOptionAndValue(option, value)}
diff --git a/packages/bbui/src/Form/Select.svelte b/packages/bbui/src/Form/Select.svelte
index 2119a37980..260090c7b7 100644
--- a/packages/bbui/src/Form/Select.svelte
+++ b/packages/bbui/src/Form/Select.svelte
@@ -29,6 +29,9 @@
export let tag = null
export let helpText = null
export let compare
+ export let onOptionMouseenter = () => {}
+ export let onOptionMouseleave = () => {}
+
const dispatch = createEventDispatcher()
const onChange = e => {
value = e.detail
@@ -67,6 +70,8 @@
{customPopoverHeight}
{tag}
{compare}
+ {onOptionMouseenter}
+ {onOptionMouseleave}
on:change={onChange}
on:click
/>
diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/Chart.svelte b/packages/builder/src/components/design/settings/controls/FieldContext/FieldContext.svelte
similarity index 100%
rename from packages/builder/src/components/design/settings/controls/FieldContext/Chart.svelte
rename to packages/builder/src/components/design/settings/controls/FieldContext/FieldContext.svelte
diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/index.js b/packages/builder/src/components/design/settings/controls/FieldContext/index.js
new file mode 100644
index 0000000000..ba7f152627
--- /dev/null
+++ b/packages/builder/src/components/design/settings/controls/FieldContext/index.js
@@ -0,0 +1,2 @@
+export { default as FieldContext } from "./FieldContext.svelte"
+export * from "./validator"
diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/validator.js b/packages/builder/src/components/design/settings/controls/FieldContext/validator.js
index 3c30d5bd33..cb4e309148 100644
--- a/packages/builder/src/components/design/settings/controls/FieldContext/validator.js
+++ b/packages/builder/src/components/design/settings/controls/FieldContext/validator.js
@@ -17,66 +17,64 @@ export const constants = {
supported: Symbol("values-validator-supported")
}
-export const validators = {
- chart: (fieldSchema) => {
- try {
- const response = {
- level: null,
- warnings: [],
- errors: [],
- text: "",
- icon: "",
- iconColor: ""
- }
- const generalUnsupportedFields = ["array", "attachment", "barcodeqr", "link", "bb_reference"]
- if (generalUnsupportedFields.includes(fieldSchema.type)) {
- response.errors.push(errors.general)
- }
+export const validate = (fieldSchema) => {
+ try {
+ const response = {
+ level: null,
+ warnings: [],
+ errors: [],
+ text: "",
+ icon: "",
+ iconColor: ""
+ }
+ const generalUnsupportedFields = ["array", "attachment", "barcodeqr", "link", "bb_reference"]
+ if (generalUnsupportedFields.includes(fieldSchema.type)) {
+ response.errors.push(errors.general)
+ }
- if (fieldSchema.type === "json") {
- response.errors.push(errors.jsonPrimitivesOnly)
- }
+ if (fieldSchema.type === "json") {
+ response.errors.push(errors.jsonPrimitivesOnly)
+ }
- if (fieldSchema.type === "string") {
- response.warnings.push(warnings.stringAsNumber)
- }
- if (fieldSchema.type === "datetime") {
- response.warnings.push(warnings.chartDatetime);
- //"This column can be used as an input for a chart, but it may be parsed differently depending on which is used.
- }
+ if (fieldSchema.type === "string") {
+ response.warnings.push(warnings.stringAsNumber)
+ }
+ if (fieldSchema.type === "datetime") {
+ response.warnings.push(warnings.chartDatetime);
+ //"This column can be used as an input for a chart, but it may be parsed differently depending on which is used.
+ }
- const isRequired = fieldSchema?.constraints?.presence?.allowEmpty === false
- if (!isRequired) {
- response.warnings.push(warnings.notRequired);
- }
+ const isRequired = fieldSchema?.constraints?.presence?.allowEmpty === false
+ if (!isRequired) {
+ response.warnings.push(warnings.notRequired);
+ }
- if (response.errors.length > 0) {
- response.level = constants.unsupported
- response.text = "Not compatible"
- response.icon = "Alert"
- response.iconColor = "var(--red)"
- } else if (response.warnings.length > 0) {
- response.level = constants.partialSupport
- response.text = "Partially compatible"
- response.icon = "AlertCheck"
- response.iconColor = "var(--yellow)"
- } else {
- response.level = constants.supported
- response.text = "Compatible"
- response.icon = "CheckmarkCircle"
- response.iconColor = "var(--green)"
- }
+ if (response.errors.length > 0) {
+ response.level = constants.unsupported
+ response.text = "Not compatible"
+ response.icon = "Alert"
+ response.iconColor = "var(--red)"
+ } else if (response.warnings.length > 0) {
+ response.level = constants.partialSupport
+ response.text = "Partially compatible"
+ response.icon = "AlertCheck"
+ response.iconColor = "var(--yellow)"
+ } else {
+ response.level = constants.supported
+ response.text = "Compatible"
+ response.icon = "CheckmarkCircle"
+ response.iconColor = "var(--green)"
+ }
- return response
- } catch (e) {
- return {
- level: constants.partialSupport,
- warnings: [],
- errors: [],
- text: "Partially compatible",
- icon: "AlertCheck",
- iconColor: "var(--yellow)"
- }
+ return response
+ } catch (e) {
+ return {
+ level: constants.partialSupport,
+ warnings: [],
+ errors: [],
+ text: "Partially compatible",
+ icon: "AlertCheck",
+ iconColor: "var(--yellow)"
}
}
-};
+}
diff --git a/packages/builder/src/components/design/settings/controls/FieldSelect.svelte b/packages/builder/src/components/design/settings/controls/FieldSelect.svelte
index 3f39c12800..ecb506f656 100644
--- a/packages/builder/src/components/design/settings/controls/FieldSelect.svelte
+++ b/packages/builder/src/components/design/settings/controls/FieldSelect.svelte
@@ -1,25 +1,32 @@
+ {placeholder}
+ value={boundValue}
+ on:change={onChange}
+ {options}
+ {onOptionMouseenter}
+ {onOptionMouseleave}
+/>
+
+{#if columnContext}
+
+
+
+
+{/if}
diff --git a/packages/builder/src/components/design/settings/controls/MultiFieldSelect.svelte b/packages/builder/src/components/design/settings/controls/MultiFieldSelect.svelte
index ed92fb9f3d..4ff293e415 100644
--- a/packages/builder/src/components/design/settings/controls/MultiFieldSelect.svelte
+++ b/packages/builder/src/components/design/settings/controls/MultiFieldSelect.svelte
@@ -1,54 +1,39 @@