@octaviaflow/core 3.1.0-beta.58 → 3.1.0-beta.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ConditionBuilder/ConditionBuilder.d.ts +11 -0
- package/dist/components/ConditionBuilder/ConditionBuilder.d.ts.map +1 -1
- package/dist/components/ConditionBuilder/index.d.ts +1 -1
- package/dist/components/ConditionBuilder/index.d.ts.map +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/index.cjs +185 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +185 -15
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utils/a11y.d.ts +8 -0
- package/dist/utils/a11y.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -11,6 +11,11 @@ export interface ConditionOperator {
|
|
|
11
11
|
symbol?: string;
|
|
12
12
|
description?: string;
|
|
13
13
|
}
|
|
14
|
+
export interface ConditionValueOption {
|
|
15
|
+
value: string;
|
|
16
|
+
label: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
}
|
|
14
19
|
export interface Condition {
|
|
15
20
|
field: string;
|
|
16
21
|
operator: string;
|
|
@@ -30,6 +35,12 @@ export interface ConditionBuilderProps extends Omit<ComponentPropsWithoutRef<"di
|
|
|
30
35
|
onChange: (conditions: Condition[]) => void;
|
|
31
36
|
fields: ConditionField[];
|
|
32
37
|
operators: ConditionOperator[];
|
|
38
|
+
/** Optional per-row value suggestions. When this returns a non-empty list
|
|
39
|
+
* for a condition, that row's value field becomes an editable combobox: a
|
|
40
|
+
* free-text input with an attached dropdown button listing the options —
|
|
41
|
+
* clicking one fills the input, and the user can still type any value not in
|
|
42
|
+
* the list. Omit / return [] to keep a plain text input. */
|
|
43
|
+
getValueOptions?: (condition: Condition, index: number) => ConditionValueOption[];
|
|
33
44
|
/** Auto-enables search above 8 options. Force on/off via boolean. */
|
|
34
45
|
searchable?: boolean;
|
|
35
46
|
allowGroups?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionBuilder.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/ConditionBuilder.tsx"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,wBAAwB,EAG7B,KAAK,SAAS,EAQf,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd;;4DAEwD;IACxD,YAAY,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,CAAC,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IACzD,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC;4EACwE;IACxE,YAAY,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC5B;yEACqE;IACrE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,mDAAmD;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;mEAI+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"ConditionBuilder.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/ConditionBuilder.tsx"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,wBAAwB,EAG7B,KAAK,SAAS,EAQf,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd;;4DAEwD;IACxD,YAAY,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,CAAC,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IACzD,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B;;;;iEAI6D;IAC7D,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,oBAAoB,EAAE,CAAC;IAClF,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC;4EACwE;IACxE,YAAY,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC5B;yEACqE;IACrE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,mDAAmD;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;mEAI+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiYD,eAAO,MAAM,gBAAgB,kHA4N3B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { type Condition, ConditionBuilder, type ConditionBuilderProps, type ConditionField, type ConditionOperator, } from "./ConditionBuilder";
|
|
1
|
+
export { type Condition, ConditionBuilder, type ConditionBuilderProps, type ConditionField, type ConditionOperator, type ConditionValueOption, } from "./ConditionBuilder";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AASf,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;qDACiD;IACjD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;qDAIiD;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AASf,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;qDACiD;IACjD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;qDAIiD;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AA+HD,eAAO,MAAM,MAAM,2GAiXjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/components/Switch/Switch.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAUf,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,KAAK,cAAc,GAAG,IAAI,CACxB,wBAAwB,CAAC,OAAO,CAAC,EACjC,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAC5D,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kDAAkD;IAClD,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAMD,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/components/Switch/Switch.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAUf,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,KAAK,cAAc,GAAG,IAAI,CACxB,wBAAwB,CAAC,OAAO,CAAC,EACjC,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAC5D,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kDAAkD;IAClD,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAMD,eAAO,MAAM,MAAM,0GAyGjB,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -2476,6 +2476,16 @@ function hasRenderableText(node) {
|
|
|
2476
2476
|
}
|
|
2477
2477
|
return false;
|
|
2478
2478
|
}
|
|
2479
|
+
function getRenderableText(node) {
|
|
2480
|
+
if (node === null || node === void 0 || typeof node === "boolean") return "";
|
|
2481
|
+
if (typeof node === "string") return node;
|
|
2482
|
+
if (typeof node === "number") return String(node);
|
|
2483
|
+
if (Array.isArray(node)) return node.map(getRenderableText).join("");
|
|
2484
|
+
if ((0, import_react21.isValidElement)(node)) {
|
|
2485
|
+
return getRenderableText(node.props.children);
|
|
2486
|
+
}
|
|
2487
|
+
return "";
|
|
2488
|
+
}
|
|
2479
2489
|
function resolveAccessibleName(input) {
|
|
2480
2490
|
if (input.ariaLabelledby) {
|
|
2481
2491
|
return { "aria-labelledby": input.ariaLabelledby };
|
|
@@ -4913,12 +4923,13 @@ function Option({
|
|
|
4913
4923
|
}
|
|
4914
4924
|
);
|
|
4915
4925
|
}
|
|
4926
|
+
var DEFAULT_SELECT_PLACEHOLDER = "Select an option...";
|
|
4916
4927
|
var Select = (0, import_react34.forwardRef)(function Select2({
|
|
4917
4928
|
options,
|
|
4918
4929
|
value,
|
|
4919
4930
|
defaultValue,
|
|
4920
4931
|
onChange,
|
|
4921
|
-
placeholder =
|
|
4932
|
+
placeholder = DEFAULT_SELECT_PLACEHOLDER,
|
|
4922
4933
|
searchable = false,
|
|
4923
4934
|
label,
|
|
4924
4935
|
error = false,
|
|
@@ -4968,9 +4979,12 @@ var Select = (0, import_react34.forwardRef)(function Select2({
|
|
|
4968
4979
|
label,
|
|
4969
4980
|
ariaLabel,
|
|
4970
4981
|
ariaLabelledby: ariaLabelledBy,
|
|
4971
|
-
componentName: "Select"
|
|
4982
|
+
componentName: "Select",
|
|
4983
|
+
fallbacks: [
|
|
4984
|
+
placeholder && placeholder !== DEFAULT_SELECT_PLACEHOLDER ? placeholder : void 0
|
|
4985
|
+
]
|
|
4972
4986
|
}),
|
|
4973
|
-
[label, ariaLabel, ariaLabelledBy]
|
|
4987
|
+
[label, ariaLabel, ariaLabelledBy, placeholder]
|
|
4974
4988
|
);
|
|
4975
4989
|
const ariaProps = (0, import_react34.useMemo)(() => {
|
|
4976
4990
|
const items = filteredOptions.map((o) => ({
|
|
@@ -9062,11 +9076,155 @@ function OptionDropdown({
|
|
|
9062
9076
|
)
|
|
9063
9077
|
] });
|
|
9064
9078
|
}
|
|
9079
|
+
function ValueCombobox({ value, options, onChange, placeholder = "Value", ariaLabel }) {
|
|
9080
|
+
const [open, setOpen] = (0, import_react59.useState)(false);
|
|
9081
|
+
const [activeIdx, setActiveIdx] = (0, import_react59.useState)(0);
|
|
9082
|
+
const wrapRef = (0, import_react59.useRef)(null);
|
|
9083
|
+
const inputRef = (0, import_react59.useRef)(null);
|
|
9084
|
+
const panelRef = (0, import_react59.useRef)(null);
|
|
9085
|
+
const listboxId = (0, import_react59.useId)();
|
|
9086
|
+
const [panelPos, setPanelPos] = (0, import_react59.useState)(null);
|
|
9087
|
+
const updatePanelPos = (0, import_react59.useCallback)(() => {
|
|
9088
|
+
if (!wrapRef.current) return;
|
|
9089
|
+
const r = wrapRef.current.getBoundingClientRect();
|
|
9090
|
+
setPanelPos({ top: r.bottom + 4, left: r.left, width: r.width });
|
|
9091
|
+
}, []);
|
|
9092
|
+
(0, import_react59.useLayoutEffect)(() => {
|
|
9093
|
+
if (!open) return;
|
|
9094
|
+
updatePanelPos();
|
|
9095
|
+
window.addEventListener("scroll", updatePanelPos, true);
|
|
9096
|
+
window.addEventListener("resize", updatePanelPos);
|
|
9097
|
+
return () => {
|
|
9098
|
+
window.removeEventListener("scroll", updatePanelPos, true);
|
|
9099
|
+
window.removeEventListener("resize", updatePanelPos);
|
|
9100
|
+
};
|
|
9101
|
+
}, [open, updatePanelPos]);
|
|
9102
|
+
const filtered = (0, import_react59.useMemo)(() => {
|
|
9103
|
+
const q2 = value.trim().toLowerCase();
|
|
9104
|
+
if (!q2) return options;
|
|
9105
|
+
return options.filter(
|
|
9106
|
+
(o) => o.label.toLowerCase().includes(q2) || o.value.toLowerCase().includes(q2)
|
|
9107
|
+
);
|
|
9108
|
+
}, [options, value]);
|
|
9109
|
+
(0, import_react59.useEffect)(() => {
|
|
9110
|
+
setActiveIdx(0);
|
|
9111
|
+
}, [value, open]);
|
|
9112
|
+
(0, import_react59.useEffect)(() => {
|
|
9113
|
+
if (!open) return;
|
|
9114
|
+
const onDoc = (e) => {
|
|
9115
|
+
const t = e.target;
|
|
9116
|
+
if (!wrapRef.current?.contains(t) && !panelRef.current?.contains(t)) setOpen(false);
|
|
9117
|
+
};
|
|
9118
|
+
document.addEventListener("mousedown", onDoc);
|
|
9119
|
+
return () => document.removeEventListener("mousedown", onDoc);
|
|
9120
|
+
}, [open]);
|
|
9121
|
+
const pick = (v) => {
|
|
9122
|
+
onChange(v);
|
|
9123
|
+
setOpen(false);
|
|
9124
|
+
inputRef.current?.focus();
|
|
9125
|
+
};
|
|
9126
|
+
const handleKey = (e) => {
|
|
9127
|
+
if (e.key === "ArrowDown") {
|
|
9128
|
+
e.preventDefault();
|
|
9129
|
+
if (!open) {
|
|
9130
|
+
setOpen(true);
|
|
9131
|
+
return;
|
|
9132
|
+
}
|
|
9133
|
+
setActiveIdx((i) => Math.min(i + 1, Math.max(filtered.length - 1, 0)));
|
|
9134
|
+
} else if (e.key === "ArrowUp") {
|
|
9135
|
+
if (!open) return;
|
|
9136
|
+
e.preventDefault();
|
|
9137
|
+
setActiveIdx((i) => Math.max(i - 1, 0));
|
|
9138
|
+
} else if (e.key === "Enter") {
|
|
9139
|
+
if (open && filtered[activeIdx]) {
|
|
9140
|
+
e.preventDefault();
|
|
9141
|
+
pick(filtered[activeIdx].value);
|
|
9142
|
+
}
|
|
9143
|
+
} else if (e.key === "Escape") {
|
|
9144
|
+
if (open) {
|
|
9145
|
+
e.preventDefault();
|
|
9146
|
+
setOpen(false);
|
|
9147
|
+
}
|
|
9148
|
+
}
|
|
9149
|
+
};
|
|
9150
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { ref: wrapRef, className: "ods-cb-combo", onKeyDown: handleKey, children: [
|
|
9151
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
9152
|
+
"input",
|
|
9153
|
+
{
|
|
9154
|
+
ref: inputRef,
|
|
9155
|
+
type: "text",
|
|
9156
|
+
className: "ods-cb-combo__input",
|
|
9157
|
+
value,
|
|
9158
|
+
onChange: (e) => {
|
|
9159
|
+
onChange(e.target.value);
|
|
9160
|
+
if (!open) setOpen(true);
|
|
9161
|
+
},
|
|
9162
|
+
placeholder,
|
|
9163
|
+
"aria-label": ariaLabel,
|
|
9164
|
+
role: "combobox",
|
|
9165
|
+
"aria-expanded": open,
|
|
9166
|
+
"aria-controls": open ? listboxId : void 0,
|
|
9167
|
+
"aria-autocomplete": "list"
|
|
9168
|
+
}
|
|
9169
|
+
),
|
|
9170
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
9171
|
+
"button",
|
|
9172
|
+
{
|
|
9173
|
+
type: "button",
|
|
9174
|
+
className: cn("ods-cb-combo__toggle", open && "ods-cb-combo__toggle--open"),
|
|
9175
|
+
onClick: () => {
|
|
9176
|
+
setOpen((o) => !o);
|
|
9177
|
+
inputRef.current?.focus();
|
|
9178
|
+
},
|
|
9179
|
+
"aria-label": `${ariaLabel} options`,
|
|
9180
|
+
"aria-haspopup": "listbox",
|
|
9181
|
+
"aria-expanded": open,
|
|
9182
|
+
tabIndex: -1,
|
|
9183
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_icons9.ChevronDownIcon, { "aria-hidden": "true", className: "ods-cb-combo__chev" })
|
|
9184
|
+
}
|
|
9185
|
+
),
|
|
9186
|
+
open && panelPos && typeof document !== "undefined" && (0, import_react_dom5.createPortal)(
|
|
9187
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
9188
|
+
"div",
|
|
9189
|
+
{
|
|
9190
|
+
ref: panelRef,
|
|
9191
|
+
className: "ods-cb-dd__panel ods-cb-dd__panel--portal",
|
|
9192
|
+
role: "presentation",
|
|
9193
|
+
style: { position: "fixed", top: panelPos.top, left: panelPos.left, minWidth: panelPos.width },
|
|
9194
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("ul", { id: listboxId, role: "listbox", "aria-label": ariaLabel, className: "ods-cb-dd__list", children: [
|
|
9195
|
+
filtered.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("li", { className: "ods-cb-dd__empty", children: "Type a custom value" }),
|
|
9196
|
+
filtered.map((opt, idx) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
9197
|
+
"button",
|
|
9198
|
+
{
|
|
9199
|
+
type: "button",
|
|
9200
|
+
role: "option",
|
|
9201
|
+
"aria-selected": opt.value === value,
|
|
9202
|
+
className: cn(
|
|
9203
|
+
"ods-cb-dd__opt",
|
|
9204
|
+
opt.value === value && "ods-cb-dd__opt--selected",
|
|
9205
|
+
idx === activeIdx && "ods-cb-dd__opt--active"
|
|
9206
|
+
),
|
|
9207
|
+
onClick: () => pick(opt.value),
|
|
9208
|
+
onMouseEnter: () => setActiveIdx(idx),
|
|
9209
|
+
children: [
|
|
9210
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "ods-cb-dd__opt-text", children: opt.label }),
|
|
9211
|
+
opt.description && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "ods-cb-dd__opt-desc", children: opt.description })
|
|
9212
|
+
]
|
|
9213
|
+
}
|
|
9214
|
+
) }, opt.value))
|
|
9215
|
+
] })
|
|
9216
|
+
}
|
|
9217
|
+
),
|
|
9218
|
+
document.body
|
|
9219
|
+
)
|
|
9220
|
+
] });
|
|
9221
|
+
}
|
|
9065
9222
|
var ConditionBuilder = (0, import_react59.forwardRef)(function ConditionBuilder2({
|
|
9066
9223
|
conditions,
|
|
9067
9224
|
onChange,
|
|
9068
9225
|
fields,
|
|
9069
9226
|
operators,
|
|
9227
|
+
getValueOptions,
|
|
9070
9228
|
searchable,
|
|
9071
9229
|
joinMode = "global",
|
|
9072
9230
|
joinOperator = "AND",
|
|
@@ -9199,17 +9357,28 @@ var ConditionBuilder = (0, import_react59.forwardRef)(function ConditionBuilder2
|
|
|
9199
9357
|
minWidth: 140
|
|
9200
9358
|
}
|
|
9201
9359
|
),
|
|
9202
|
-
|
|
9203
|
-
|
|
9204
|
-
|
|
9205
|
-
|
|
9206
|
-
|
|
9207
|
-
|
|
9208
|
-
|
|
9209
|
-
|
|
9210
|
-
|
|
9211
|
-
|
|
9212
|
-
|
|
9360
|
+
(() => {
|
|
9361
|
+
const valueOpts = getValueOptions?.(condition, index) ?? [];
|
|
9362
|
+
return valueOpts.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
9363
|
+
ValueCombobox,
|
|
9364
|
+
{
|
|
9365
|
+
ariaLabel: "Value",
|
|
9366
|
+
value: condition.value,
|
|
9367
|
+
options: valueOpts,
|
|
9368
|
+
onChange: (v) => handleValueChange(index, v)
|
|
9369
|
+
}
|
|
9370
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
9371
|
+
"input",
|
|
9372
|
+
{
|
|
9373
|
+
type: "text",
|
|
9374
|
+
className: "ods-condition-row__value",
|
|
9375
|
+
value: condition.value,
|
|
9376
|
+
onChange: (e) => handleValueChange(index, e.target.value),
|
|
9377
|
+
placeholder: "Value",
|
|
9378
|
+
"aria-label": "Value"
|
|
9379
|
+
}
|
|
9380
|
+
);
|
|
9381
|
+
})(),
|
|
9213
9382
|
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
9214
9383
|
"button",
|
|
9215
9384
|
{
|
|
@@ -28889,8 +29058,9 @@ var Switch = (0, import_react150.forwardRef)(function Switch2({
|
|
|
28889
29058
|
defaultSelected: defaultChecked,
|
|
28890
29059
|
onChange
|
|
28891
29060
|
});
|
|
29061
|
+
const labelText = getRenderableText(label).trim();
|
|
28892
29062
|
const ariaNameProps = resolveAccessibleName({
|
|
28893
|
-
label:
|
|
29063
|
+
label: labelText || void 0,
|
|
28894
29064
|
ariaLabel: props["aria-label"],
|
|
28895
29065
|
ariaLabelledby: props["aria-labelledby"],
|
|
28896
29066
|
componentName: "Switch"
|