@powerhousedao/design-system 1.18.0 → 1.19.1
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/scalars/components/amount-field/amount-field.js +153 -0
- package/dist/scalars/components/amount-field/amount-field.js.map +1 -0
- package/dist/scalars/components/amount-field/use-amount-field.js +79 -0
- package/dist/scalars/components/amount-field/use-amount-field.js.map +1 -0
- package/dist/scalars/components/amount-field/utils.js +17 -0
- package/dist/scalars/components/amount-field/utils.js.map +1 -0
- package/dist/scalars/components/country-code-field/country-code-field.js +64 -0
- package/dist/scalars/components/country-code-field/country-code-field.js.map +1 -0
- package/dist/scalars/components/currency-code-field/currency-code-field.js +69 -0
- package/dist/scalars/components/currency-code-field/currency-code-field.js.map +1 -0
- package/dist/scalars/components/enum-field/enum-field.js +18 -8
- package/dist/scalars/components/enum-field/enum-field.js.map +1 -1
- package/dist/scalars/components/form/form.js +49 -35
- package/dist/scalars/components/form/form.js.map +1 -1
- package/dist/scalars/components/fragments/button/button.js +11 -18
- package/dist/scalars/components/fragments/button/button.js.map +1 -1
- package/dist/scalars/components/fragments/character-counter/character-counter.js +8 -8
- package/dist/scalars/components/fragments/character-counter/character-counter.js.map +1 -1
- package/dist/scalars/components/fragments/command/command.js +36 -36
- package/dist/scalars/components/fragments/command/command.js.map +1 -1
- package/dist/scalars/components/fragments/form-label/form-label.js +35 -32
- package/dist/scalars/components/fragments/form-label/form-label.js.map +1 -1
- package/dist/scalars/components/fragments/input/input.js +16 -14
- package/dist/scalars/components/fragments/input/input.js.map +1 -1
- package/dist/scalars/components/fragments/popover/popover.js +4 -4
- package/dist/scalars/components/fragments/popover/popover.js.map +1 -1
- package/dist/scalars/components/fragments/select-field/content.js +168 -114
- package/dist/scalars/components/fragments/select-field/content.js.map +1 -1
- package/dist/scalars/components/fragments/select-field/select-field.js +110 -130
- package/dist/scalars/components/fragments/select-field/select-field.js.map +1 -1
- package/dist/scalars/components/fragments/select-field/selected-content.js +48 -49
- package/dist/scalars/components/fragments/select-field/selected-content.js.map +1 -1
- package/dist/scalars/components/fragments/select-field/use-select-field.js +42 -46
- package/dist/scalars/components/fragments/select-field/use-select-field.js.map +1 -1
- package/dist/scalars/components/fragments/text-field/text-field.js +68 -60
- package/dist/scalars/components/fragments/text-field/text-field.js.map +1 -1
- package/dist/scalars/components/fragments/textarea-field/textarea-field.js +122 -109
- package/dist/scalars/components/fragments/textarea-field/textarea-field.js.map +1 -1
- package/dist/scalars/components/fragments/value-transformer/value-transformer.js +49 -33
- package/dist/scalars/components/fragments/value-transformer/value-transformer.js.map +1 -1
- package/dist/scalars/components/fragments/with-field-validation/with-field-validation.js +86 -59
- package/dist/scalars/components/fragments/with-field-validation/with-field-validation.js.map +1 -1
- package/dist/scalars/components/id-field/id-field.js +24 -14
- package/dist/scalars/components/id-field/id-field.js.map +1 -1
- package/dist/scalars/components/number-field/number-field-validations.js +32 -15
- package/dist/scalars/components/number-field/number-field-validations.js.map +1 -1
- package/dist/scalars/components/number-field/number-field.js +107 -135
- package/dist/scalars/components/number-field/number-field.js.map +1 -1
- package/dist/scalars/components/number-field/use-number-field.js +98 -0
- package/dist/scalars/components/number-field/use-number-field.js.map +1 -0
- package/dist/scalars/components/number-field/utils.js +20 -19
- package/dist/scalars/components/number-field/utils.js.map +1 -1
- package/dist/scalars/components/url-field/url-favicon.js +20 -0
- package/dist/scalars/components/url-field/url-favicon.js.map +1 -0
- package/dist/scalars/components/url-field/url-field.js +97 -68
- package/dist/scalars/components/url-field/url-field.js.map +1 -1
- package/dist/scalars/components/url-field/useURLWarnings.js +20 -11
- package/dist/scalars/components/url-field/useURLWarnings.js.map +1 -1
- package/dist/scalars/index.js +69 -63
- package/dist/scalars/index.js.map +1 -1
- package/dist/scalars/lib/shared-value-transformers.js +13 -6
- package/dist/scalars/lib/shared-value-transformers.js.map +1 -1
- package/dist/scalars/lib/value-cast.js +13 -0
- package/dist/scalars/lib/value-cast.js.map +1 -0
- package/dist/src/scalars/components/amount-field/amount-field-validations.d.ts +0 -2
- package/dist/src/scalars/components/amount-field/amount-field-validations.d.ts.map +1 -1
- package/dist/src/scalars/components/amount-field/amount-field.d.ts +11 -4
- package/dist/src/scalars/components/amount-field/amount-field.d.ts.map +1 -1
- package/dist/src/scalars/components/amount-field/index.d.ts +2 -0
- package/dist/src/scalars/components/amount-field/index.d.ts.map +1 -0
- package/dist/src/scalars/components/amount-field/types.d.ts +5 -4
- package/dist/src/scalars/components/amount-field/types.d.ts.map +1 -1
- package/dist/src/scalars/components/amount-field/use-amount-field.d.ts +12 -5
- package/dist/src/scalars/components/amount-field/use-amount-field.d.ts.map +1 -1
- package/dist/src/scalars/components/amount-field/utils.d.ts +11 -1
- package/dist/src/scalars/components/amount-field/utils.d.ts.map +1 -1
- package/dist/src/scalars/components/country-code-field/country-code-field.d.ts.map +1 -1
- package/dist/src/scalars/components/currency-code-field/currency-code-field.d.ts +16 -0
- package/dist/src/scalars/components/currency-code-field/currency-code-field.d.ts.map +1 -0
- package/dist/src/scalars/components/currency-code-field/currency-code-field.test.d.ts +2 -0
- package/dist/src/scalars/components/currency-code-field/currency-code-field.test.d.ts.map +1 -0
- package/dist/src/scalars/components/currency-code-field/index.d.ts +2 -0
- package/dist/src/scalars/components/currency-code-field/index.d.ts.map +1 -0
- package/dist/src/scalars/components/enum-field/types.d.ts +11 -11
- package/dist/src/scalars/components/enum-field/types.d.ts.map +1 -1
- package/dist/src/scalars/components/form/form.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/button/button.d.ts +0 -1
- package/dist/src/scalars/components/fragments/button/button.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/command/command.d.ts +5 -5
- package/dist/src/scalars/components/fragments/command/command.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/form-label/form-label.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/input/input.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/popover/popover.d.ts +2 -1
- package/dist/src/scalars/components/fragments/popover/popover.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/select-field/content.d.ts +7 -7
- package/dist/src/scalars/components/fragments/select-field/content.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/select-field/select-field.d.ts +1 -1
- package/dist/src/scalars/components/fragments/select-field/select-field.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/select-field/selected-content.d.ts +1 -3
- package/dist/src/scalars/components/fragments/select-field/selected-content.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/select-field/use-select-field.d.ts +4 -6
- package/dist/src/scalars/components/fragments/select-field/use-select-field.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/text-field/text-field.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/textarea-field/textarea-field.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/value-transformer/value-transformer.d.ts +1 -1
- package/dist/src/scalars/components/fragments/value-transformer/value-transformer.d.ts.map +1 -1
- package/dist/src/scalars/components/fragments/with-field-validation/with-field-validation.d.ts.map +1 -1
- package/dist/src/scalars/components/id-field/id-field.d.ts +1 -1
- package/dist/src/scalars/components/id-field/id-field.d.ts.map +1 -1
- package/dist/src/scalars/components/index.d.ts +3 -0
- package/dist/src/scalars/components/index.d.ts.map +1 -1
- package/dist/src/scalars/components/number-field/number-field-validations.d.ts +2 -3
- package/dist/src/scalars/components/number-field/number-field-validations.d.ts.map +1 -1
- package/dist/src/scalars/components/number-field/number-field.d.ts +3 -3
- package/dist/src/scalars/components/number-field/number-field.d.ts.map +1 -1
- package/dist/src/scalars/components/number-field/types.d.ts +20 -0
- package/dist/src/scalars/components/number-field/types.d.ts.map +1 -0
- package/dist/src/scalars/components/number-field/use-number-field.d.ts +25 -0
- package/dist/src/scalars/components/number-field/use-number-field.d.ts.map +1 -0
- package/dist/src/scalars/components/number-field/utils.d.ts +3 -2
- package/dist/src/scalars/components/number-field/utils.d.ts.map +1 -1
- package/dist/src/scalars/components/types.d.ts +0 -21
- package/dist/src/scalars/components/types.d.ts.map +1 -1
- package/dist/src/scalars/components/url-field/url-favicon.d.ts +8 -0
- package/dist/src/scalars/components/url-field/url-favicon.d.ts.map +1 -0
- package/dist/src/scalars/components/url-field/url-field.d.ts +5 -2
- package/dist/src/scalars/components/url-field/url-field.d.ts.map +1 -1
- package/dist/src/scalars/components/url-field/useURLWarnings.d.ts.map +1 -1
- package/dist/src/scalars/docs/examples/multiple-fields-with-complex-layout/multiple-fields-with-complex-layout.d.ts.map +1 -1
- package/dist/src/scalars/lib/decorators.d.ts.map +1 -1
- package/dist/src/scalars/lib/share-number-validations.d.ts +0 -1
- package/dist/src/scalars/lib/share-number-validations.d.ts.map +1 -1
- package/dist/src/scalars/lib/shared-value-transformers.d.ts +1 -1
- package/dist/src/scalars/lib/shared-value-transformers.d.ts.map +1 -1
- package/dist/src/scalars/lib/storybook-arg-types.d.ts +0 -12
- package/dist/src/scalars/lib/storybook-arg-types.d.ts.map +1 -1
- package/dist/src/scalars/lib/value-cast.d.ts +4 -0
- package/dist/src/scalars/lib/value-cast.d.ts.map +1 -0
- package/dist/style.css +1 -1
- package/package.json +4 -3
- package/dist/scalars/components/fragments/badge/badge.js +0 -24
- package/dist/scalars/components/fragments/badge/badge.js.map +0 -1
- package/dist/scalars/components/fragments/select-field/search-input.js +0 -68
- package/dist/scalars/components/fragments/select-field/search-input.js.map +0 -1
- package/dist/scalars/components/url-field/utils.js +0 -31
- package/dist/scalars/components/url-field/utils.js.map +0 -1
- package/dist/scalars/lib/share-number-validations.js +0 -8
- package/dist/scalars/lib/share-number-validations.js.map +0 -1
- package/dist/src/scalars/components/fragments/badge/badge.d.ts +0 -10
- package/dist/src/scalars/components/fragments/badge/badge.d.ts.map +0 -1
- package/dist/src/scalars/components/fragments/badge/badge.test.d.ts +0 -2
- package/dist/src/scalars/components/fragments/badge/badge.test.d.ts.map +0 -1
- package/dist/src/scalars/components/fragments/badge/index.d.ts +0 -2
- package/dist/src/scalars/components/fragments/badge/index.d.ts.map +0 -1
- package/dist/src/scalars/components/fragments/select-field/search-input.d.ts +0 -17
- package/dist/src/scalars/components/fragments/select-field/search-input.d.ts.map +0 -1
- package/dist/src/scalars/components/fragments/value-transformer/indext.d.ts +0 -2
- package/dist/src/scalars/components/fragments/value-transformer/indext.d.ts.map +0 -1
- package/dist/src/scalars/components/url-field/utils.d.ts +0 -3
- package/dist/src/scalars/components/url-field/utils.d.ts.map +0 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { jsxs as i, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useId as z } from "react";
|
|
3
|
+
import { useAmountField as H } from "./use-amount-field.js";
|
|
4
|
+
import { SelectFieldRaw as v } from "../fragments/select-field/select-field.js";
|
|
5
|
+
import { NumberFieldRaw as J } from "../number-field/number-field.js";
|
|
6
|
+
import { withFieldValidation as K } from "../fragments/with-field-validation/with-field-validation.js";
|
|
7
|
+
import { FormGroup as Q } from "../fragments/form-group/form-group.js";
|
|
8
|
+
import { FormLabel as T } from "../fragments/form-label/form-label.js";
|
|
9
|
+
import { cn as r } from "../../lib/utils.js";
|
|
10
|
+
import { FormDescription as U } from "../fragments/form-description/form-description.js";
|
|
11
|
+
import { FormMessageList as F } from "../fragments/form-message/message-list.js";
|
|
12
|
+
const W = ({
|
|
13
|
+
label: l,
|
|
14
|
+
value: y,
|
|
15
|
+
id: N,
|
|
16
|
+
precision: C = 0,
|
|
17
|
+
minValue: k,
|
|
18
|
+
maxValue: w,
|
|
19
|
+
trailingZeros: I,
|
|
20
|
+
onChange: S,
|
|
21
|
+
onBlur: A,
|
|
22
|
+
disabled: o,
|
|
23
|
+
className: B,
|
|
24
|
+
required: a,
|
|
25
|
+
errors: n,
|
|
26
|
+
warnings: d,
|
|
27
|
+
description: c,
|
|
28
|
+
defaultValue: R,
|
|
29
|
+
type: j,
|
|
30
|
+
allowedCurrencies: L = [],
|
|
31
|
+
allowedTokens: O = [],
|
|
32
|
+
numberProps: D,
|
|
33
|
+
selectProps: t,
|
|
34
|
+
step: s = 1,
|
|
35
|
+
currencyPosition: m,
|
|
36
|
+
tokenIcons: E
|
|
37
|
+
}) => {
|
|
38
|
+
const G = z(), u = N ?? G, {
|
|
39
|
+
isShowSelect: g,
|
|
40
|
+
isPercent: f,
|
|
41
|
+
options: h,
|
|
42
|
+
valueSelect: p,
|
|
43
|
+
valueInput: x,
|
|
44
|
+
handleOnChangeInput: M,
|
|
45
|
+
handleOnChangeSelect: b,
|
|
46
|
+
handleBlur: V
|
|
47
|
+
} = H({
|
|
48
|
+
value: y,
|
|
49
|
+
defaultValue: R,
|
|
50
|
+
type: j,
|
|
51
|
+
allowedCurrencies: L,
|
|
52
|
+
allowedTokens: O,
|
|
53
|
+
onChange: S,
|
|
54
|
+
onBlur: A,
|
|
55
|
+
tokenIcons: E
|
|
56
|
+
});
|
|
57
|
+
return /* @__PURE__ */ i(Q, { children: [
|
|
58
|
+
l && /* @__PURE__ */ e(
|
|
59
|
+
T,
|
|
60
|
+
{
|
|
61
|
+
htmlFor: u,
|
|
62
|
+
required: a,
|
|
63
|
+
disabled: o,
|
|
64
|
+
hasError: !!(n != null && n.length),
|
|
65
|
+
className: r(o && "text-gray-400 mb-[3px]"),
|
|
66
|
+
children: l
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ i("div", { className: r("relative flex items-center"), children: [
|
|
70
|
+
/* @__PURE__ */ i("div", { className: r("relative flex items-center"), children: [
|
|
71
|
+
g && m === "left" && /* @__PURE__ */ e(
|
|
72
|
+
v,
|
|
73
|
+
{
|
|
74
|
+
optionsCheckmark: "Checkmark",
|
|
75
|
+
value: p,
|
|
76
|
+
name: "",
|
|
77
|
+
required: a,
|
|
78
|
+
options: h,
|
|
79
|
+
disabled: o,
|
|
80
|
+
onChange: b,
|
|
81
|
+
className: r(
|
|
82
|
+
"border border-gray-300 rounded-l-md rounded-r-none",
|
|
83
|
+
"border-r-[0.5px] focus:border-r-[1px] focus:ring-1 focus:ring-gray-900",
|
|
84
|
+
"focus:outline-none",
|
|
85
|
+
t == null ? void 0 : t.className
|
|
86
|
+
),
|
|
87
|
+
...t || {}
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
/* @__PURE__ */ e(
|
|
91
|
+
J,
|
|
92
|
+
{
|
|
93
|
+
step: s,
|
|
94
|
+
required: a,
|
|
95
|
+
disabled: o,
|
|
96
|
+
name: "",
|
|
97
|
+
value: x,
|
|
98
|
+
id: u,
|
|
99
|
+
maxValue: w,
|
|
100
|
+
precision: C,
|
|
101
|
+
minValue: k,
|
|
102
|
+
trailingZeros: I,
|
|
103
|
+
"data-cast": typeof x == "bigint" ? "BigInt" : "Number",
|
|
104
|
+
onChange: M,
|
|
105
|
+
className: r(
|
|
106
|
+
m === "left" && "border border-gray-300 rounded-l-none border-l-[0.5px]",
|
|
107
|
+
m === "right" && "border border-gray-300 rounded-r-none border-r-[0.5px]",
|
|
108
|
+
f && "pr-7",
|
|
109
|
+
B
|
|
110
|
+
),
|
|
111
|
+
onBlur: V,
|
|
112
|
+
...D || {}
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
f && s === 0 && /* @__PURE__ */ e(
|
|
116
|
+
"span",
|
|
117
|
+
{
|
|
118
|
+
className: r(
|
|
119
|
+
"pointer-events-none absolute inset-y-0 right-2 ml-2 flex items-center",
|
|
120
|
+
o ? "text-gray-400" : "text-gray-900"
|
|
121
|
+
),
|
|
122
|
+
children: "%"
|
|
123
|
+
}
|
|
124
|
+
)
|
|
125
|
+
] }),
|
|
126
|
+
g && m === "right" && /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(
|
|
127
|
+
v,
|
|
128
|
+
{
|
|
129
|
+
optionsCheckmark: "Checkmark",
|
|
130
|
+
value: p,
|
|
131
|
+
name: "",
|
|
132
|
+
required: a,
|
|
133
|
+
disabled: o,
|
|
134
|
+
onChange: b,
|
|
135
|
+
options: h,
|
|
136
|
+
className: r(
|
|
137
|
+
"rounded-l-none rounded-r-md border border-gray-300",
|
|
138
|
+
"border-l-[0.5px] focus:border-l-[1px] focus:ring-1 focus:ring-gray-900 focus:ring-offset-0",
|
|
139
|
+
"focus:outline-none"
|
|
140
|
+
),
|
|
141
|
+
...t || {}
|
|
142
|
+
}
|
|
143
|
+
) })
|
|
144
|
+
] }),
|
|
145
|
+
c && /* @__PURE__ */ e(U, { children: c }),
|
|
146
|
+
d && /* @__PURE__ */ e(F, { messages: d, type: "warning" }),
|
|
147
|
+
n && /* @__PURE__ */ e(F, { messages: n, type: "error" })
|
|
148
|
+
] });
|
|
149
|
+
}, te = K(W);
|
|
150
|
+
export {
|
|
151
|
+
te as AmountField
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=amount-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amount-field.js","sources":["../../../../src/scalars/components/amount-field/amount-field.tsx"],"sourcesContent":["import React, { FC, useId } from \"react\";\nimport { NumberFieldProps, NumberFieldRaw } from \"../number-field\";\nimport {\n FormDescription,\n FormGroup,\n FormLabel,\n FormMessageList,\n SelectFieldProps,\n SelectFieldRaw,\n withFieldValidation,\n} from \"../fragments\";\nimport { useAmountField } from \"./use-amount-field\";\nimport { cn } from \"@/scalars/lib\";\nimport { InputNumberProps } from \"../number-field/types\";\nimport { AmountValue } from \"./types\";\nimport { AmountFieldPropsGeneric } from \"./types\";\nimport { IconName } from \"@/powerhouse\";\n\nexport interface TokenIcons {\n [key: string]: IconName | (() => React.JSX.Element);\n}\n\nexport type AmountFieldProps = AmountFieldPropsGeneric &\n Omit<InputNumberProps, \"onChange\" | \"onBlur\"> & {\n className?: string;\n name: string;\n pattern?: RegExp;\n numberProps?: Omit<NumberFieldProps, \"name\">;\n selectProps?: Omit<SelectFieldProps, \"name\">;\n allowedCurrencies?: string[];\n allowedTokens?: string[];\n selectName: string;\n defaultValue?: AmountValue;\n value?: AmountValue;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n currencyPosition?: \"left\" | \"right\";\n tokenIcons?: TokenIcons;\n };\n\nconst AmountFieldRaw: FC<AmountFieldProps> = ({\n label,\n value,\n id: propId,\n precision = 0,\n minValue,\n maxValue,\n trailingZeros,\n onChange,\n onBlur,\n disabled,\n className,\n required,\n errors,\n warnings,\n description,\n defaultValue,\n type,\n allowedCurrencies = [],\n allowedTokens = [],\n numberProps,\n selectProps,\n step = 1,\n currencyPosition,\n tokenIcons,\n}) => {\n const generatedId = useId();\n const id = propId ?? generatedId;\n const {\n isShowSelect,\n isPercent,\n options,\n valueSelect,\n valueInput,\n handleOnChangeInput,\n handleOnChangeSelect,\n handleBlur,\n } = useAmountField({\n value,\n defaultValue,\n type,\n allowedCurrencies,\n allowedTokens,\n onChange,\n onBlur,\n tokenIcons,\n });\n\n return (\n <FormGroup>\n {label && (\n <FormLabel\n htmlFor={id}\n required={required}\n disabled={disabled}\n hasError={!!errors?.length}\n className={cn(disabled && \"text-gray-400 mb-[3px]\")}\n >\n {label}\n </FormLabel>\n )}\n <div className={cn(\"relative flex items-center\")}>\n <div className={cn(\"relative flex items-center\")}>\n {isShowSelect && currencyPosition === \"left\" && (\n <SelectFieldRaw\n optionsCheckmark=\"Checkmark\"\n value={valueSelect}\n name=\"\"\n required={required}\n options={options}\n disabled={disabled}\n onChange={handleOnChangeSelect}\n className={cn(\n \"border border-gray-300 rounded-l-md rounded-r-none\",\n \"border-r-[0.5px] focus:border-r-[1px] focus:ring-1 focus:ring-gray-900\",\n \"focus:outline-none\",\n selectProps?.className,\n )}\n {...(selectProps || {})}\n />\n )}\n <NumberFieldRaw\n step={step}\n required={required}\n disabled={disabled}\n name=\"\"\n value={valueInput}\n id={id}\n maxValue={maxValue}\n precision={precision}\n minValue={minValue}\n trailingZeros={trailingZeros}\n data-cast={typeof valueInput === \"bigint\" ? \"BigInt\" : \"Number\"}\n onChange={handleOnChangeInput}\n className={cn(\n currencyPosition === \"left\" &&\n \"border border-gray-300 rounded-l-none border-l-[0.5px]\",\n currencyPosition === \"right\" &&\n \"border border-gray-300 rounded-r-none border-r-[0.5px]\",\n isPercent && \"pr-7\",\n className,\n )}\n onBlur={handleBlur}\n {...(numberProps || {})}\n />\n {isPercent && step === 0 && (\n <span\n className={cn(\n \"pointer-events-none absolute inset-y-0 right-2 ml-2 flex items-center\",\n disabled ? \"text-gray-400\" : \"text-gray-900\",\n )}\n >\n %\n </span>\n )}\n </div>\n {isShowSelect && currencyPosition === \"right\" && (\n <div>\n <SelectFieldRaw\n optionsCheckmark=\"Checkmark\"\n value={valueSelect}\n name=\"\"\n required={required}\n disabled={disabled}\n onChange={handleOnChangeSelect}\n options={options}\n className={cn(\n \"rounded-l-none rounded-r-md border border-gray-300\",\n \"border-l-[0.5px] focus:border-l-[1px] focus:ring-1 focus:ring-gray-900 focus:ring-offset-0\",\n \"focus:outline-none\",\n )}\n {...(selectProps || {})}\n />\n </div>\n )}\n </div>\n {description && <FormDescription>{description}</FormDescription>}\n {warnings && <FormMessageList messages={warnings} type=\"warning\" />}\n {errors && <FormMessageList messages={errors} type=\"error\" />}\n </FormGroup>\n );\n};\n\nexport const AmountField =\n withFieldValidation<AmountFieldProps>(AmountFieldRaw);\n"],"names":["AmountFieldRaw","label","value","propId","precision","minValue","maxValue","trailingZeros","onChange","onBlur","disabled","className","required","errors","warnings","description","defaultValue","type","allowedCurrencies","allowedTokens","numberProps","selectProps","step","currencyPosition","tokenIcons","generatedId","useId","id","isShowSelect","isPercent","options","valueSelect","valueInput","handleOnChangeInput","handleOnChangeSelect","handleBlur","useAmountField","FormGroup","jsx","FormLabel","cn","jsxs","SelectFieldRaw","NumberFieldRaw","FormDescription","FormMessageList","AmountField","withFieldValidation"],"mappings":";;;;;;;;;;;AAwCA,MAAMA,IAAuC,CAAC;AAAA,EAC5C,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,IAAIC;AAAA,EACJ,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC;AAAA,EACA,mBAAAC,IAAoB,CAAC;AAAA,EACrB,eAAAC,IAAgB,CAAC;AAAA,EACjB,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,kBAAAC;AAAA,EACA,YAAAC;AACF,MAAM;AACJ,QAAMC,IAAcC,EAAM,GACpBC,IAAKxB,KAAUsB,GACf;AAAA,IACJ,cAAAG;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,YAAAC;AAAA,MACEC,EAAe;AAAA,IACjB,OAAAlC;AAAA,IACA,cAAAc;AAAA,IACA,MAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,UAAAX;AAAA,IACA,QAAAC;AAAA,IACA,YAAAe;AAAA,EAAA,CACD;AAED,2BACGa,GACE,EAAA,UAAA;AAAA,IACCpC,KAAA,gBAAAqC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAASZ;AAAA,QACT,UAAAf;AAAA,QACA,UAAAF;AAAA,QACA,UAAU,CAAC,EAACG,KAAA,QAAAA,EAAQ;AAAA,QACpB,WAAW2B,EAAG9B,KAAY,wBAAwB;AAAA,QAEjD,UAAAT;AAAA,MAAA;AAAA,IACH;AAAA,IAED,gBAAAwC,EAAA,OAAA,EAAI,WAAWD,EAAG,4BAA4B,GAC7C,UAAA;AAAA,MAAA,gBAAAC,EAAC,OAAI,EAAA,WAAWD,EAAG,4BAA4B,GAC5C,UAAA;AAAA,QAAAZ,KAAgBL,MAAqB,UACpC,gBAAAe;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,kBAAiB;AAAA,YACjB,OAAOX;AAAA,YACP,MAAK;AAAA,YACL,UAAAnB;AAAA,YACA,SAAAkB;AAAA,YACA,UAAApB;AAAA,YACA,UAAUwB;AAAA,YACV,WAAWM;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACAnB,KAAA,gBAAAA,EAAa;AAAA,YACf;AAAA,YACC,GAAIA,KAAe,CAAA;AAAA,UAAC;AAAA,QACvB;AAAA,QAEF,gBAAAiB;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,MAAArB;AAAA,YACA,UAAAV;AAAA,YACA,UAAAF;AAAA,YACA,MAAK;AAAA,YACL,OAAOsB;AAAA,YACP,IAAAL;AAAA,YACA,UAAArB;AAAA,YACA,WAAAF;AAAA,YACA,UAAAC;AAAA,YACA,eAAAE;AAAA,YACA,aAAW,OAAOyB,KAAe,WAAW,WAAW;AAAA,YACvD,UAAUC;AAAA,YACV,WAAWO;AAAA,cACTjB,MAAqB,UACnB;AAAA,cACFA,MAAqB,WACnB;AAAA,cACFM,KAAa;AAAA,cACblB;AAAA,YACF;AAAA,YACA,QAAQwB;AAAA,YACP,GAAIf,KAAe,CAAA;AAAA,UAAC;AAAA,QACvB;AAAA,QACCS,KAAaP,MAAS,KACrB,gBAAAgB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWE;AAAA,cACT;AAAA,cACA9B,IAAW,kBAAkB;AAAA,YAC/B;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,GAEJ;AAAA,MACCkB,KAAgBL,MAAqB,WACpC,gBAAAe,EAAC,OACC,EAAA,UAAA,gBAAAA;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,kBAAiB;AAAA,UACjB,OAAOX;AAAA,UACP,MAAK;AAAA,UACL,UAAAnB;AAAA,UACA,UAAAF;AAAA,UACA,UAAUwB;AAAA,UACV,SAAAJ;AAAA,UACA,WAAWU;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAInB,KAAe,CAAA;AAAA,QAAC;AAAA,MAAA,EAEzB,CAAA;AAAA,IAAA,GAEJ;AAAA,IACCN,KAAgB,gBAAAuB,EAAAM,GAAA,EAAiB,UAAY7B,EAAA,CAAA;AAAA,IAC7CD,KAAa,gBAAAwB,EAAAO,GAAA,EAAgB,UAAU/B,GAAU,MAAK,WAAU;AAAA,IAChED,KAAW,gBAAAyB,EAAAO,GAAA,EAAgB,UAAUhC,GAAQ,MAAK,QAAQ,CAAA;AAAA,EAAA,GAC7D;AAEJ,GAEaiC,KACXC,EAAsC/C,CAAc;"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { getCountryCurrencies as j, getTokens as k } from "./utils.js";
|
|
2
|
+
const T = ({
|
|
3
|
+
value: c,
|
|
4
|
+
defaultValue: s = 0,
|
|
5
|
+
type: e,
|
|
6
|
+
allowedCurrencies: i = [],
|
|
7
|
+
allowedTokens: l = [],
|
|
8
|
+
onChange: r,
|
|
9
|
+
onBlur: u,
|
|
10
|
+
tokenIcons: m
|
|
11
|
+
}) => {
|
|
12
|
+
const a = c ?? s, b = e === "Amount" || e === "AmountPercentage" ? a : a.amount, f = e === "AmountPercentage", A = e === "AmountCurrency" || e === "AmountToken", v = j(i), d = k(l, m), g = e === "AmountCurrency" ? v : d, w = e === "AmountCurrency" ? a.currency : a.token;
|
|
13
|
+
return {
|
|
14
|
+
isPercent: f,
|
|
15
|
+
isShowSelect: A,
|
|
16
|
+
options: g,
|
|
17
|
+
valueInput: b,
|
|
18
|
+
valueSelect: w,
|
|
19
|
+
handleOnChangeInput: (t) => {
|
|
20
|
+
let n = {};
|
|
21
|
+
e === "AmountCurrency" && typeof c == "object" && (n = {
|
|
22
|
+
...c,
|
|
23
|
+
amount: Number(t.target.value)
|
|
24
|
+
}), e === "AmountToken" && typeof c == "object" && (n = {
|
|
25
|
+
...c,
|
|
26
|
+
amount: BigInt(t.target.value)
|
|
27
|
+
}), (e === "Amount" || e === "AmountPercentage") && (n = Number(t.target.value));
|
|
28
|
+
const o = new Event("change", {
|
|
29
|
+
bubbles: !0,
|
|
30
|
+
cancelable: !0
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(o, "target", {
|
|
33
|
+
value: { value: n },
|
|
34
|
+
writable: !1
|
|
35
|
+
}), r == null || r(o);
|
|
36
|
+
},
|
|
37
|
+
handleOnChangeSelect: (t) => {
|
|
38
|
+
let n = {};
|
|
39
|
+
e === "AmountCurrency" && typeof c == "object" && (n = {
|
|
40
|
+
...c,
|
|
41
|
+
currency: typeof t == "string" ? t : void 0
|
|
42
|
+
}), e === "AmountToken" && typeof c == "object" && (n = {
|
|
43
|
+
...c,
|
|
44
|
+
token: typeof t == "string" ? t : void 0
|
|
45
|
+
});
|
|
46
|
+
const o = new Event("change", {
|
|
47
|
+
bubbles: !0,
|
|
48
|
+
cancelable: !0
|
|
49
|
+
});
|
|
50
|
+
Object.defineProperty(o, "target", {
|
|
51
|
+
value: { value: n },
|
|
52
|
+
writable: !1
|
|
53
|
+
}), r == null || r(o);
|
|
54
|
+
},
|
|
55
|
+
handleBlur: (t) => {
|
|
56
|
+
if ((e === "AmountCurrency" || e === "AmountToken") && typeof c == "object") {
|
|
57
|
+
const n = {
|
|
58
|
+
...c,
|
|
59
|
+
amount: BigInt(t.target.value)
|
|
60
|
+
};
|
|
61
|
+
u == null || u(n);
|
|
62
|
+
}
|
|
63
|
+
if (e === "Amount" || e === "AmountPercentage") {
|
|
64
|
+
const n = Number(t.target.value), o = new Event("change", {
|
|
65
|
+
bubbles: !0,
|
|
66
|
+
cancelable: !0
|
|
67
|
+
});
|
|
68
|
+
Object.defineProperty(o, "target", {
|
|
69
|
+
value: { value: n },
|
|
70
|
+
writable: !1
|
|
71
|
+
}), r == null || r(o), u == null || u(t);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export {
|
|
77
|
+
T as useAmountField
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=use-amount-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-amount-field.js","sources":["../../../../src/scalars/components/amount-field/use-amount-field.tsx"],"sourcesContent":["import { TokenIcons } from \"./amount-field\";\nimport {\n AmountCurrency,\n AmountFieldPropsGeneric,\n AmountToken,\n AmountValue,\n} from \"./types\";\nimport { getCountryCurrencies, getTokens } from \"./utils\";\n\ninterface UseAmountFieldProps {\n value?: AmountValue;\n defaultValue?: AmountValue;\n type: AmountFieldPropsGeneric[\"type\"];\n allowedCurrencies?: string[];\n allowedTokens?: string[];\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;\n tokenIcons?: TokenIcons;\n}\n\nexport const useAmountField = ({\n value,\n defaultValue = 0,\n type,\n allowedCurrencies = [],\n allowedTokens = [],\n onChange,\n onBlur,\n tokenIcons,\n}: UseAmountFieldProps) => {\n const currentValue = value ?? defaultValue;\n\n const valueInput =\n type === \"Amount\" || type === \"AmountPercentage\"\n ? (currentValue as number)\n : (currentValue as AmountCurrency | AmountToken).amount;\n\n const isPercent = type === \"AmountPercentage\";\n\n //Allow select only if type is AmountCurrency or AmountToken\n const isShowSelect = type === \"AmountCurrency\" || type === \"AmountToken\";\n\n // Filter only if allowedCurrencies is provided\n const optionsCurrencies = getCountryCurrencies(allowedCurrencies);\n const optionsTokenIcons = getTokens(allowedTokens, tokenIcons);\n\n const options =\n type === \"AmountCurrency\" ? optionsCurrencies : optionsTokenIcons;\n\n const valueSelect =\n type === \"AmountCurrency\"\n ? (currentValue as AmountCurrency).currency\n : (currentValue as AmountToken).token;\n\n // Handle the change of the input\n const handleOnChangeInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n let newValue: AmountValue = {} as unknown as AmountValue;\n if (type === \"AmountCurrency\" && typeof value === \"object\") {\n newValue = {\n ...value,\n amount: Number(e.target.value),\n } as AmountValue;\n }\n if (type === \"AmountToken\" && typeof value === \"object\") {\n newValue = {\n ...value,\n amount: BigInt(e.target.value),\n } as AmountValue;\n }\n if (type === \"Amount\" || type === \"AmountPercentage\") {\n newValue = Number(e.target.value);\n }\n\n //Create the event\n const nativeEvent = new Event(\"change\", {\n bubbles: true,\n cancelable: true,\n });\n Object.defineProperty(nativeEvent, \"target\", {\n value: { value: newValue },\n writable: false,\n });\n onChange?.(nativeEvent as unknown as React.ChangeEvent<HTMLInputElement>);\n };\n\n // Handle the change of the select\n const handleOnChangeSelect = (e: string | string[]) => {\n let newValue: AmountCurrency | AmountToken = {} as\n | AmountCurrency\n | AmountToken;\n if (type === \"AmountCurrency\" && typeof value === \"object\") {\n newValue = {\n ...value,\n currency: typeof e === \"string\" ? e : undefined,\n } as AmountCurrency;\n }\n if (type === \"AmountToken\" && typeof value === \"object\") {\n newValue = {\n ...value,\n token: typeof e === \"string\" ? e : undefined,\n } as AmountToken;\n }\n\n //Create the event\n const nativeEvent = new Event(\"change\", {\n bubbles: true,\n cancelable: true,\n });\n Object.defineProperty(nativeEvent, \"target\", {\n value: { value: newValue },\n writable: false,\n });\n onChange?.(nativeEvent as unknown as React.ChangeEvent<HTMLInputElement>);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n // Handle the blur of the input if type is AmountCurrency or AmountToken should be a bigint\n if (\n (type === \"AmountCurrency\" || type === \"AmountToken\") &&\n typeof value === \"object\"\n ) {\n const newValue = {\n ...value,\n amount: BigInt(e.target.value),\n } as AmountValue;\n\n onBlur?.(newValue as unknown as React.FocusEvent<HTMLInputElement>);\n }\n if (type === \"Amount\" || type === \"AmountPercentage\") {\n const newValue = Number(e.target.value);\n\n //Create the event\n const nativeEvent = new Event(\"change\", {\n bubbles: true,\n cancelable: true,\n });\n Object.defineProperty(nativeEvent, \"target\", {\n value: { value: newValue },\n writable: false,\n });\n onChange?.(nativeEvent as unknown as React.ChangeEvent<HTMLInputElement>);\n\n onBlur?.(e);\n }\n };\n\n return {\n isPercent,\n isShowSelect,\n options,\n valueInput,\n valueSelect,\n handleOnChangeInput,\n handleOnChangeSelect,\n handleBlur,\n };\n};\n"],"names":["useAmountField","value","defaultValue","type","allowedCurrencies","allowedTokens","onChange","onBlur","tokenIcons","currentValue","valueInput","isPercent","isShowSelect","optionsCurrencies","getCountryCurrencies","optionsTokenIcons","getTokens","options","valueSelect","e","newValue","nativeEvent"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const u = (t = []) => t.map((r) => ({
|
|
2
|
+
value: r,
|
|
3
|
+
label: r
|
|
4
|
+
})), l = (t = []) => u(t), p = (t = [], r) => t.map((e) => {
|
|
5
|
+
const n = r == null ? void 0 : r[e];
|
|
6
|
+
return {
|
|
7
|
+
value: e,
|
|
8
|
+
label: e,
|
|
9
|
+
icon: n
|
|
10
|
+
};
|
|
11
|
+
});
|
|
12
|
+
export {
|
|
13
|
+
l as getCountryCurrencies,
|
|
14
|
+
u as getOptions,
|
|
15
|
+
p as getTokens
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/scalars/components/amount-field/utils.ts"],"sourcesContent":["import { TokenIcons } from \"./amount-field\";\n\nexport const getOptions = (items: string[] = []) => {\n return items.map((item) => ({\n value: item,\n label: item,\n }));\n};\n\nexport const getCountryCurrencies = (allowedCurrencies: string[] = []) => {\n return getOptions(allowedCurrencies);\n};\n\nexport const getTokens = (\n allowedTokens: string[] = [],\n tokenIcons?: TokenIcons,\n) => {\n const options = allowedTokens.map((token) => {\n const iconFn = tokenIcons?.[token];\n\n return {\n value: token,\n label: token,\n icon: iconFn,\n };\n });\n\n return options;\n};\n"],"names":["getOptions","items","item","getCountryCurrencies","allowedCurrencies","getTokens","allowedTokens","tokenIcons","token","iconFn"],"mappings":"AAEO,MAAMA,IAAa,CAACC,IAAkB,OACpCA,EAAM,IAAI,CAACC,OAAU;AAAA,EAC1B,OAAOA;AAAA,EACP,OAAOA;AAAA,EACP,GAGSC,IAAuB,CAACC,IAA8B,OAC1DJ,EAAWI,CAAiB,GAGxBC,IAAY,CACvBC,IAA0B,IAC1BC,MAEgBD,EAAc,IAAI,CAACE,MAAU;AACrC,QAAAC,IAASF,KAAA,gBAAAA,EAAaC;AAErB,SAAA;AAAA,IACL,OAAOA;AAAA,IACP,OAAOA;AAAA,IACP,MAAMC;AAAA,EACR;AAAA,CACD;"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
|
2
|
+
import k from "react";
|
|
3
|
+
import s from "world-countries";
|
|
4
|
+
import { CircleFlag as F } from "react-circle-flags";
|
|
5
|
+
import { SelectFieldRaw as b } from "../fragments/select-field/select-field.js";
|
|
6
|
+
import { withFieldValidation as R } from "../fragments/with-field-validation/with-field-validation.js";
|
|
7
|
+
const C = k.forwardRef(
|
|
8
|
+
({
|
|
9
|
+
onChange: l,
|
|
10
|
+
placeholder: t,
|
|
11
|
+
allowedCountries: r,
|
|
12
|
+
excludedCountries: e,
|
|
13
|
+
includeDependentAreas: o = !1,
|
|
14
|
+
viewMode: i = "NamesOnly",
|
|
15
|
+
showFlagIcons: f = !0,
|
|
16
|
+
enableSearch: p,
|
|
17
|
+
...d
|
|
18
|
+
}, h) => {
|
|
19
|
+
const n = s.filter(
|
|
20
|
+
(a) => (o ? !0 : a.independent) && a.cca2 !== "AQ"
|
|
21
|
+
// exclude Antarctica
|
|
22
|
+
).map((a) => ({
|
|
23
|
+
value: a.cca2,
|
|
24
|
+
label: i === "CodesOnly" ? a.cca2 : i === "NamesAndCodes" ? `${a.name.common} (${a.cca2})` : a.name.common,
|
|
25
|
+
icon: f ? () => /* @__PURE__ */ m(
|
|
26
|
+
F,
|
|
27
|
+
{
|
|
28
|
+
className: "size-4",
|
|
29
|
+
countryCode: a.cca2.toLowerCase(),
|
|
30
|
+
height: 16
|
|
31
|
+
}
|
|
32
|
+
) : void 0
|
|
33
|
+
})).sort((a, c) => a.label > c.label ? 1 : a.label < c.label ? -1 : 0), v = r || e ? n.filter(
|
|
34
|
+
(a) => (!r || r.includes(a.value)) && !(e != null && e.includes(a.value))
|
|
35
|
+
) : n;
|
|
36
|
+
return /* @__PURE__ */ m(
|
|
37
|
+
b,
|
|
38
|
+
{
|
|
39
|
+
ref: h,
|
|
40
|
+
options: v,
|
|
41
|
+
optionsCheckmark: "Checkmark",
|
|
42
|
+
optionsCheckmarkPosition: "Right",
|
|
43
|
+
searchable: p,
|
|
44
|
+
onChange: l,
|
|
45
|
+
placeholder: t,
|
|
46
|
+
...d
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
), N = R(
|
|
51
|
+
C,
|
|
52
|
+
{
|
|
53
|
+
validations: {
|
|
54
|
+
_validOption: ({ allowedCountries: l, excludedCountries: t, includeDependentAreas: r }) => (e) => e === "" || e === void 0 ? !0 : !s.filter(
|
|
55
|
+
(i) => (r ? !0 : i.independent) && i.cca2 !== "AQ"
|
|
56
|
+
).map((i) => i.cca2).includes(e) || l && !l.includes(e) || t != null && t.includes(e) ? "Please select a valid country" : !0
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
N.displayName = "CountryCodeField";
|
|
61
|
+
export {
|
|
62
|
+
N as CountryCodeField
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=country-code-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"country-code-field.js","sources":["../../../../src/scalars/components/country-code-field/country-code-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { SelectFieldRaw } from \"@/scalars/components/fragments/select-field\";\nimport { withFieldValidation } from \"@/scalars/components/fragments/with-field-validation\";\nimport countries from \"world-countries\";\nimport { CircleFlag } from \"react-circle-flags\";\nimport { FieldCommonProps, ErrorHandling } from \"@/scalars/components/types\";\nimport { CountryCodeProps } from \"./types\";\n\nexport type CountryCodeFieldProps = FieldCommonProps<string> &\n ErrorHandling &\n CountryCodeProps;\n\nconst CountryCodeFieldRaw: React.FC<CountryCodeFieldProps> = React.forwardRef<\n HTMLButtonElement,\n CountryCodeFieldProps\n>(\n (\n {\n onChange,\n placeholder,\n allowedCountries,\n excludedCountries,\n includeDependentAreas = false,\n viewMode = \"NamesOnly\",\n showFlagIcons = true,\n enableSearch,\n ...props\n },\n ref,\n ) => {\n const defaultOptions = countries\n .filter(\n (country) =>\n (includeDependentAreas ? true : country.independent) &&\n country.cca2 !== \"AQ\", // exclude Antarctica\n )\n .map((country) => ({\n value: country.cca2,\n label:\n viewMode === \"CodesOnly\"\n ? country.cca2\n : viewMode === \"NamesAndCodes\"\n ? `${country.name.common} (${country.cca2})`\n : country.name.common,\n icon: showFlagIcons\n ? () => (\n <CircleFlag\n className=\"size-4\"\n countryCode={country.cca2.toLowerCase()}\n height={16}\n />\n )\n : undefined,\n }))\n .sort((a, b) => (a.label > b.label ? 1 : a.label < b.label ? -1 : 0));\n\n const options =\n allowedCountries || excludedCountries\n ? defaultOptions.filter(\n (option) =>\n (!allowedCountries || allowedCountries.includes(option.value)) &&\n !excludedCountries?.includes(option.value),\n )\n : defaultOptions;\n\n return (\n <SelectFieldRaw\n ref={ref}\n options={options}\n optionsCheckmark=\"Checkmark\"\n optionsCheckmarkPosition=\"Right\"\n searchable={enableSearch}\n onChange={onChange}\n placeholder={placeholder}\n {...props}\n />\n );\n },\n);\n\nexport const CountryCodeField = withFieldValidation<CountryCodeFieldProps>(\n CountryCodeFieldRaw,\n {\n validations: {\n _validOption:\n ({ allowedCountries, excludedCountries, includeDependentAreas }) =>\n (value: string | undefined) => {\n if (value === \"\" || value === undefined) {\n return true;\n }\n\n const validCountries = countries\n .filter(\n (country) =>\n (includeDependentAreas ? true : country.independent) &&\n country.cca2 !== \"AQ\",\n )\n .map((country) => country.cca2);\n\n // First check if it's a valid country code\n if (!validCountries.includes(value)) {\n return \"Please select a valid country\";\n }\n // Check if country is in allowed list\n if (allowedCountries && !allowedCountries.includes(value)) {\n return \"Please select a valid country\";\n }\n // Check if country is in excluded list\n if (excludedCountries?.includes(value)) {\n return \"Please select a valid country\";\n }\n\n return true;\n },\n },\n },\n);\n\nCountryCodeField.displayName = \"CountryCodeField\";\n"],"names":["CountryCodeFieldRaw","React","onChange","placeholder","allowedCountries","excludedCountries","includeDependentAreas","viewMode","showFlagIcons","enableSearch","props","ref","defaultOptions","countries","country","jsx","CircleFlag","b","options","option","SelectFieldRaw","CountryCodeField","withFieldValidation","value"],"mappings":";;;;;;AAYA,MAAMA,IAAuDC,EAAM;AAAA,EAIjE,CACE;AAAA,IACE,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,uBAAAC,IAAwB;AAAA,IACxB,UAAAC,IAAW;AAAA,IACX,eAAAC,IAAgB;AAAA,IAChB,cAAAC;AAAA,IACA,GAAGC;AAAA,KAELC,MACG;AACH,UAAMC,IAAiBC,EACpB;AAAA,MACC,CAACC,OACER,IAAwB,KAAOQ,EAAQ,gBACxCA,EAAQ,SAAS;AAAA;AAAA,IAAA,EAEpB,IAAI,CAACA,OAAa;AAAA,MACjB,OAAOA,EAAQ;AAAA,MACf,OACEP,MAAa,cACTO,EAAQ,OACRP,MAAa,kBACX,GAAGO,EAAQ,KAAK,MAAM,KAAKA,EAAQ,IAAI,MACvCA,EAAQ,KAAK;AAAA,MACrB,MAAMN,IACF,MACE,gBAAAO;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,aAAaF,EAAQ,KAAK,YAAY;AAAA,UACtC,QAAQ;AAAA,QAAA;AAAA,MAAA,IAGZ;AAAA,IAAA,EACJ,EACD,KAAK,CAAC,GAAGG,MAAO,EAAE,QAAQA,EAAE,QAAQ,IAAI,EAAE,QAAQA,EAAE,QAAQ,KAAK,CAAE,GAEhEC,IACJd,KAAoBC,IAChBO,EAAe;AAAA,MACb,CAACO,OACE,CAACf,KAAoBA,EAAiB,SAASe,EAAO,KAAK,MAC5D,EAACd,KAAA,QAAAA,EAAmB,SAASc,EAAO;AAAA,IAAK,IAE7CP;AAGJ,WAAA,gBAAAG;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,KAAAT;AAAA,QACA,SAAAO;AAAA,QACA,kBAAiB;AAAA,QACjB,0BAAyB;AAAA,QACzB,YAAYT;AAAA,QACZ,UAAAP;AAAA,QACA,aAAAC;AAAA,QACC,GAAGO;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN,GAEaW,IAAmBC;AAAA,EAC9BtB;AAAA,EACA;AAAA,IACE,aAAa;AAAA,MACX,cACE,CAAC,EAAE,kBAAAI,GAAkB,mBAAAC,GAAmB,uBAAAC,EAAsB,MAC9D,CAACiB,MACKA,MAAU,MAAMA,MAAU,SACrB,KAYL,CATmBV,EACpB;AAAA,QACC,CAACC,OACER,IAAwB,KAAOQ,EAAQ,gBACxCA,EAAQ,SAAS;AAAA,MAEpB,EAAA,IAAI,CAACA,MAAYA,EAAQ,IAAI,EAGZ,SAASS,CAAK,KAI9BnB,KAAoB,CAACA,EAAiB,SAASmB,CAAK,KAIpDlB,KAAA,QAAAA,EAAmB,SAASkB,KACvB,kCAGF;AAAA,IACT;AAAA,EACJ;AAEJ;AAEAF,EAAiB,cAAc;"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
2
|
+
import c, { useMemo as y } from "react";
|
|
3
|
+
import { SelectFieldRaw as u } from "../fragments/select-field/select-field.js";
|
|
4
|
+
import { withFieldValidation as b } from "../fragments/with-field-validation/with-field-validation.js";
|
|
5
|
+
const f = [
|
|
6
|
+
{ code: "ARS", name: "Argentine Peso", symbol: "$" },
|
|
7
|
+
{ code: "AUD", name: "Australian Dollar", symbol: "A$" },
|
|
8
|
+
{ code: "BRL", name: "Brazilian Real", symbol: "R$" },
|
|
9
|
+
{ code: "CAD", name: "Canadian Dollar", symbol: "C$" },
|
|
10
|
+
{ code: "CHF", name: "Swiss Franc", symbol: "CHF" },
|
|
11
|
+
{ code: "CLP", name: "Chilean Peso", symbol: "$" },
|
|
12
|
+
{ code: "CNY", name: "Chinese Yuan", symbol: "¥" },
|
|
13
|
+
{ code: "COP", name: "Colombian Peso", symbol: "$" },
|
|
14
|
+
{ code: "EUR", name: "Euro", symbol: "€" },
|
|
15
|
+
{ code: "GBP", name: "British Pound", symbol: "£" },
|
|
16
|
+
{ code: "INR", name: "Indian Rupee", symbol: "₹" },
|
|
17
|
+
{ code: "JPY", name: "Japanese Yen", symbol: "¥" },
|
|
18
|
+
{ code: "MXN", name: "Mexican Peso", symbol: "$" },
|
|
19
|
+
{ code: "USD", name: "United States Dollar", symbol: "$" },
|
|
20
|
+
{ code: "UYU", name: "Uruguayan Peso", symbol: "$" },
|
|
21
|
+
{ code: "ZAR", name: "South African Rand", symbol: "R" }
|
|
22
|
+
], n = c.forwardRef(
|
|
23
|
+
({
|
|
24
|
+
placeholder: o,
|
|
25
|
+
allowedCurrencies: r,
|
|
26
|
+
excludedCurrencies: e,
|
|
27
|
+
multiple: i = !1,
|
|
28
|
+
// maxSelection is not used in the component, but in the validation
|
|
29
|
+
// declared here to prevent forwarding it to the select via props
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
31
|
+
maxSelection: R,
|
|
32
|
+
// TODO: implement following props
|
|
33
|
+
// includeCurrencySymbols,
|
|
34
|
+
// enableAutocomplete,
|
|
35
|
+
// showFlagIcons,
|
|
36
|
+
...t
|
|
37
|
+
}, l) => {
|
|
38
|
+
const s = y(() => f.filter((a) => !(r !== void 0 && Array.isArray(r) && !r.includes(a.code) || e !== void 0 && Array.isArray(e) && e.includes(a.code))).map((a) => ({
|
|
39
|
+
label: a.name,
|
|
40
|
+
value: a.code
|
|
41
|
+
})).sort((a, m) => a.label.localeCompare(m.label)), [r, e]);
|
|
42
|
+
return /* @__PURE__ */ d(
|
|
43
|
+
u,
|
|
44
|
+
{
|
|
45
|
+
ref: l,
|
|
46
|
+
options: s,
|
|
47
|
+
optionsCheckmark: "Checkmark",
|
|
48
|
+
searchable: !0,
|
|
49
|
+
multiple: i,
|
|
50
|
+
placeholder: o,
|
|
51
|
+
...t
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
n.displayName = "CurrencyCodeFieldRaw";
|
|
57
|
+
const C = b(
|
|
58
|
+
n,
|
|
59
|
+
{
|
|
60
|
+
validations: {
|
|
61
|
+
_validateMaxSelection: ({ value: o, multiple: r, maxSelection: e }) => () => o === void 0 || Array.isArray(o) && o.length === 0 || !r || e === void 0 ? !0 : Array.isArray(o) && o.length > e ? `You can select up to ${e} currencies only` : !0
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
C.displayName = "CurrencyCodeField";
|
|
66
|
+
export {
|
|
67
|
+
C as CurrencyCodeField
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=currency-code-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currency-code-field.js","sources":["../../../../src/scalars/components/currency-code-field/currency-code-field.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { ErrorHandling, FieldCommonProps } from \"../types\";\nimport { SelectFieldRaw, withFieldValidation } from \"../fragments\";\nimport type { SelectOption } from \"../enum-field/types\";\n\nexport interface CurrencyCodeFieldProps\n extends FieldCommonProps<string | string[]>,\n ErrorHandling {\n placeholder?: string;\n allowedCurrencies?: string[];\n excludedCurrencies?: string[];\n includeCurrencySymbols?: boolean;\n enableAutocomplete?: boolean;\n showFlagIcons?: boolean;\n multiple?: boolean;\n maxSelection?: number;\n onChange?: (value: string | string[]) => void;\n onBlur?: () => void;\n}\n\ninterface Currency {\n code: string;\n name: string;\n symbol: string;\n}\n\n// TODO: replace with the full list of currencies\nconst CURRENCIES: Currency[] = [\n { code: \"ARS\", name: \"Argentine Peso\", symbol: \"$\" },\n { code: \"AUD\", name: \"Australian Dollar\", symbol: \"A$\" },\n { code: \"BRL\", name: \"Brazilian Real\", symbol: \"R$\" },\n { code: \"CAD\", name: \"Canadian Dollar\", symbol: \"C$\" },\n { code: \"CHF\", name: \"Swiss Franc\", symbol: \"CHF\" },\n { code: \"CLP\", name: \"Chilean Peso\", symbol: \"$\" },\n { code: \"CNY\", name: \"Chinese Yuan\", symbol: \"¥\" },\n { code: \"COP\", name: \"Colombian Peso\", symbol: \"$\" },\n { code: \"EUR\", name: \"Euro\", symbol: \"€\" },\n { code: \"GBP\", name: \"British Pound\", symbol: \"£\" },\n { code: \"INR\", name: \"Indian Rupee\", symbol: \"₹\" },\n { code: \"JPY\", name: \"Japanese Yen\", symbol: \"¥\" },\n { code: \"MXN\", name: \"Mexican Peso\", symbol: \"$\" },\n { code: \"USD\", name: \"United States Dollar\", symbol: \"$\" },\n { code: \"UYU\", name: \"Uruguayan Peso\", symbol: \"$\" },\n { code: \"ZAR\", name: \"South African Rand\", symbol: \"R\" },\n];\n\nconst CurrencyCodeFieldRaw = React.forwardRef<\n HTMLButtonElement,\n CurrencyCodeFieldProps\n>(\n (\n {\n placeholder,\n allowedCurrencies,\n excludedCurrencies,\n multiple = false,\n // maxSelection is not used in the component, but in the validation\n // declared here to prevent forwarding it to the select via props\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxSelection,\n // TODO: implement following props\n // includeCurrencySymbols,\n // enableAutocomplete,\n // showFlagIcons,\n ...props\n },\n ref,\n ) => {\n const options: SelectOption[] = useMemo(() => {\n const filteredCurrencies = CURRENCIES.filter((currency) => {\n // filter the allowed currencies only\n if (\n allowedCurrencies !== undefined &&\n Array.isArray(allowedCurrencies) &&\n !allowedCurrencies.includes(currency.code)\n ) {\n return false; // not allowed\n }\n // filter the excluded currencies\n if (\n excludedCurrencies !== undefined &&\n Array.isArray(excludedCurrencies) &&\n excludedCurrencies.includes(currency.code)\n ) {\n return false; // excluded\n }\n return true;\n });\n\n return filteredCurrencies\n .map((currency) => ({\n label: currency.name,\n value: currency.code,\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n }, [allowedCurrencies, excludedCurrencies]);\n\n return (\n <SelectFieldRaw\n ref={ref}\n options={options}\n optionsCheckmark=\"Checkmark\"\n searchable\n multiple={multiple}\n placeholder={placeholder}\n {...props}\n />\n );\n },\n);\n\nCurrencyCodeFieldRaw.displayName = \"CurrencyCodeFieldRaw\";\n\nexport const CurrencyCodeField = withFieldValidation<CurrencyCodeFieldProps>(\n CurrencyCodeFieldRaw,\n {\n validations: {\n _validateMaxSelection:\n ({ value, multiple, maxSelection }) =>\n () => {\n if (\n value === undefined ||\n (Array.isArray(value) && value.length === 0)\n )\n return true;\n if (!multiple) return true;\n if (maxSelection === undefined) return true;\n\n if (Array.isArray(value) && value.length > maxSelection) {\n return `You can select up to ${maxSelection} currencies only`;\n }\n return true;\n },\n },\n },\n);\n\nCurrencyCodeField.displayName = \"CurrencyCodeField\";\n"],"names":["CURRENCIES","CurrencyCodeFieldRaw","React","placeholder","allowedCurrencies","excludedCurrencies","multiple","maxSelection","props","ref","options","useMemo","currency","b","jsx","SelectFieldRaw","CurrencyCodeField","withFieldValidation","value"],"mappings":";;;;AA2BA,MAAMA,IAAyB;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,kBAAkB,QAAQ,IAAI;AAAA,EACnD,EAAE,MAAM,OAAO,MAAM,qBAAqB,QAAQ,KAAK;AAAA,EACvD,EAAE,MAAM,OAAO,MAAM,kBAAkB,QAAQ,KAAK;AAAA,EACpD,EAAE,MAAM,OAAO,MAAM,mBAAmB,QAAQ,KAAK;AAAA,EACrD,EAAE,MAAM,OAAO,MAAM,eAAe,QAAQ,MAAM;AAAA,EAClD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,kBAAkB,QAAQ,IAAI;AAAA,EACnD,EAAE,MAAM,OAAO,MAAM,QAAQ,QAAQ,IAAI;AAAA,EACzC,EAAE,MAAM,OAAO,MAAM,iBAAiB,QAAQ,IAAI;AAAA,EAClD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,wBAAwB,QAAQ,IAAI;AAAA,EACzD,EAAE,MAAM,OAAO,MAAM,kBAAkB,QAAQ,IAAI;AAAA,EACnD,EAAE,MAAM,OAAO,MAAM,sBAAsB,QAAQ,IAAI;AACzD,GAEMC,IAAuBC,EAAM;AAAA,EAIjC,CACE;AAAA,IACE,aAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,UAAAC,IAAW;AAAA;AAAA;AAAA;AAAA,IAIX,cAAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,GAAGC;AAAA,KAELC,MACG;AACG,UAAAC,IAA0BC,EAAQ,MACXX,EAAW,OAAO,CAACY,MAG1C,EAAAR,MAAsB,UACtB,MAAM,QAAQA,CAAiB,KAC/B,CAACA,EAAkB,SAASQ,EAAS,IAAI,KAMzCP,MAAuB,UACvB,MAAM,QAAQA,CAAkB,KAChCA,EAAmB,SAASO,EAAS,IAAI,EAK5C,EAGE,IAAI,CAACA,OAAc;AAAA,MAClB,OAAOA,EAAS;AAAA,MAChB,OAAOA,EAAS;AAAA,IAClB,EAAE,EACD,KAAK,CAAC,GAAGC,MAAM,EAAE,MAAM,cAAcA,EAAE,KAAK,CAAC,GAC/C,CAACT,GAAmBC,CAAkB,CAAC;AAGxC,WAAA,gBAAAS;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAAN;AAAA,QACA,SAAAC;AAAA,QACA,kBAAiB;AAAA,QACjB,YAAU;AAAA,QACV,UAAAJ;AAAA,QACA,aAAAH;AAAA,QACC,GAAGK;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN;AAEAP,EAAqB,cAAc;AAE5B,MAAMe,IAAoBC;AAAA,EAC/BhB;AAAA,EACA;AAAA,IACE,aAAa;AAAA,MACX,uBACE,CAAC,EAAE,OAAAiB,GAAO,UAAAZ,GAAU,cAAAC,QACpB,MAEIW,MAAU,UACT,MAAM,QAAQA,CAAK,KAAKA,EAAM,WAAW,KAGxC,CAACZ,KACDC,MAAiB,SAAkB,KAEnC,MAAM,QAAQW,CAAK,KAAKA,EAAM,SAASX,IAClC,wBAAwBA,CAAY,qBAEtC;AAAA,IACT;AAAA,EACJ;AAEJ;AAEAS,EAAkB,cAAc;"}
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { RadioGroupField as
|
|
3
|
-
import { SelectField as
|
|
4
|
-
const
|
|
5
|
-
variant:
|
|
1
|
+
import { jsx as c } from "react/jsx-runtime";
|
|
2
|
+
import { RadioGroupField as l } from "../fragments/radio-group-field/radio-group-field.js";
|
|
3
|
+
import { SelectField as m } from "../fragments/select-field/select-field.js";
|
|
4
|
+
const u = ({
|
|
5
|
+
variant: i = "Auto",
|
|
6
6
|
options: e = [],
|
|
7
7
|
...r
|
|
8
|
-
}) =>
|
|
9
|
-
l
|
|
8
|
+
}) => {
|
|
9
|
+
const t = /* @__PURE__ */ c(l, { options: e, ...r }), o = /* @__PURE__ */ c(m, { options: e, ...r });
|
|
10
|
+
switch (i) {
|
|
11
|
+
case "RadioGroup":
|
|
12
|
+
return t;
|
|
13
|
+
case "Select":
|
|
14
|
+
return o;
|
|
15
|
+
case "Auto":
|
|
16
|
+
return e.length < 6 ? t : o;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
u.displayName = "EnumField";
|
|
10
20
|
export {
|
|
11
|
-
|
|
21
|
+
u as EnumField
|
|
12
22
|
};
|
|
13
23
|
//# sourceMappingURL=enum-field.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum-field.js","sources":["../../../../src/scalars/components/enum-field/enum-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { RadioGroupField } from \"@/scalars/components/fragments/radio-group-field\";\nimport { SelectField } from \"@/scalars/components/fragments/select-field\";\nimport { FieldCommonProps, ErrorHandling } from \"@/scalars/components/types\";\nimport { EnumProps } from \"./types\";\n\nexport type EnumFieldProps = FieldCommonProps<string | string[]> &\n ErrorHandling &\n EnumProps;\n\ntype RadioGroupVariant = Omit<\n EnumFieldProps,\n \"defaultValue\" | \"value\" | \"onChange\"\n> & {\n defaultValue?: string;\n value?: string;\n onChange?: (value: string) => void;\n};\n\ntype SelectVariant = Omit<\n EnumFieldProps,\n \"defaultValue\" | \"value\" | \"onChange\"\n> & {\n defaultValue?: string[];\n value?: string[];\n onChange?: (value: string | string[]) => void;\n};\n\nexport const EnumField: React.FC<EnumFieldProps> = ({\n variant = \"Auto\",\n options = [],\n ...props\n}) => {\n
|
|
1
|
+
{"version":3,"file":"enum-field.js","sources":["../../../../src/scalars/components/enum-field/enum-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { RadioGroupField } from \"@/scalars/components/fragments/radio-group-field\";\nimport { SelectField } from \"@/scalars/components/fragments/select-field\";\nimport { FieldCommonProps, ErrorHandling } from \"@/scalars/components/types\";\nimport { EnumProps } from \"./types\";\n\nexport type EnumFieldProps = FieldCommonProps<string | string[]> &\n ErrorHandling &\n EnumProps;\n\ntype RadioGroupVariant = Omit<\n EnumFieldProps,\n \"defaultValue\" | \"value\" | \"onChange\"\n> & {\n defaultValue?: string;\n value?: string;\n onChange?: (value: string) => void;\n};\n\ntype SelectVariant = Omit<\n EnumFieldProps,\n \"defaultValue\" | \"value\" | \"onChange\"\n> & {\n defaultValue?: string[];\n value?: string[];\n onChange?: (value: string | string[]) => void;\n};\n\nexport const EnumField: React.FC<EnumFieldProps> = ({\n variant = \"Auto\",\n options = [],\n ...props\n}) => {\n const radio = (\n <RadioGroupField options={options} {...(props as RadioGroupVariant)} />\n );\n const select = (\n <SelectField options={options} {...(props as SelectVariant)} />\n );\n\n switch (variant) {\n case \"RadioGroup\":\n return radio;\n case \"Select\":\n return select;\n case \"Auto\":\n return options.length < 6 ? radio : select;\n }\n};\n\nEnumField.displayName = \"EnumField\";\n"],"names":["EnumField","variant","options","props","radio","jsx","RadioGroupField","select","SelectField"],"mappings":";;;AA4BO,MAAMA,IAAsC,CAAC;AAAA,EAClD,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU,CAAC;AAAA,EACX,GAAGC;AACL,MAAM;AACJ,QAAMC,IACJ,gBAAAC,EAACC,GAAgB,EAAA,SAAAJ,GAAmB,GAAIC,GAA6B,GAEjEI,IACJ,gBAAAF,EAACG,GAAY,EAAA,SAAAN,GAAmB,GAAIC,GAAyB;AAG/D,UAAQF,GAAS;AAAA,IACf,KAAK;AACI,aAAAG;AAAA,IACT,KAAK;AACI,aAAAG;AAAA,IACT,KAAK;AACI,aAAAL,EAAQ,SAAS,IAAIE,IAAQG;AAAA,EAAA;AAE1C;AAEAP,EAAU,cAAc;"}
|
|
@@ -1,60 +1,74 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { deepEqual as
|
|
3
|
-
import { isEmpty as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
2
|
+
import { deepEqual as S } from "../../lib/deep-equal.js";
|
|
3
|
+
import { isEmpty as O } from "../../lib/is-empty.js";
|
|
4
|
+
import { castValue as y } from "../../lib/value-cast.js";
|
|
5
|
+
import { forwardRef as I, useId as h, useImperativeHandle as F, useEffect as k, useCallback as q } from "react";
|
|
6
|
+
import { useForm as v, FormProvider as x } from "react-hook-form";
|
|
7
|
+
const M = I(
|
|
7
8
|
({
|
|
8
|
-
children:
|
|
9
|
+
children: i,
|
|
9
10
|
onSubmit: f,
|
|
10
|
-
resetOnSuccessfulSubmit:
|
|
11
|
-
submitChangesOnly:
|
|
12
|
-
defaultValues:
|
|
11
|
+
resetOnSuccessfulSubmit: a = !1,
|
|
12
|
+
submitChangesOnly: p = !1,
|
|
13
|
+
defaultValues: c,
|
|
13
14
|
className: b
|
|
14
15
|
}, j) => {
|
|
15
|
-
const
|
|
16
|
-
defaultValues:
|
|
16
|
+
const m = h(), t = v({
|
|
17
|
+
defaultValues: c,
|
|
17
18
|
criteriaMode: "all"
|
|
18
19
|
// display all errors at once
|
|
19
20
|
});
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
F(j, () => t, [t]), k(() => {
|
|
22
|
+
a && t.formState.isSubmitSuccessful && t.reset({ ...c ?? {} });
|
|
22
23
|
}, [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
a,
|
|
25
|
+
t,
|
|
26
|
+
t.formState.isSubmitSuccessful,
|
|
27
|
+
c
|
|
27
28
|
]);
|
|
28
|
-
const
|
|
29
|
-
(
|
|
30
|
-
let e =
|
|
31
|
-
|
|
32
|
-
Object.keys(e).includes(
|
|
33
|
-
}),
|
|
34
|
-
Object.entries(
|
|
35
|
-
([
|
|
29
|
+
const E = q(
|
|
30
|
+
(l) => {
|
|
31
|
+
let e = l;
|
|
32
|
+
Object.keys(t.control._fields).forEach((r) => {
|
|
33
|
+
Object.keys(e).includes(r) || (e[r] = null);
|
|
34
|
+
}), p && c && (e = Object.fromEntries(
|
|
35
|
+
Object.entries(l).filter(
|
|
36
|
+
([r, o]) => !S(o, c[r])
|
|
36
37
|
)
|
|
37
38
|
)), e = Object.fromEntries(
|
|
38
|
-
Object.entries(e).map(([
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
Object.entries(e).map(([r, o]) => [
|
|
40
|
+
r,
|
|
41
|
+
O(o) ? null : o
|
|
41
42
|
])
|
|
42
|
-
)
|
|
43
|
+
);
|
|
44
|
+
const s = document.getElementById(m);
|
|
45
|
+
return Object.keys(e).map((r) => {
|
|
46
|
+
try {
|
|
47
|
+
const o = e[r];
|
|
48
|
+
if (o !== null) {
|
|
49
|
+
const n = s == null ? void 0 : s.querySelector(`[name="${r}"]`), d = n == null ? void 0 : n.getAttribute("data-cast");
|
|
50
|
+
d && (e[r] = y(o, d));
|
|
51
|
+
}
|
|
52
|
+
} catch (o) {
|
|
53
|
+
console.error(o);
|
|
54
|
+
}
|
|
55
|
+
}), f(e);
|
|
43
56
|
},
|
|
44
|
-
[
|
|
57
|
+
[t.control, p, c, m, f]
|
|
45
58
|
);
|
|
46
|
-
return /* @__PURE__ */
|
|
59
|
+
return /* @__PURE__ */ u(x, { ...t, children: /* @__PURE__ */ u(
|
|
47
60
|
"form",
|
|
48
61
|
{
|
|
49
|
-
|
|
62
|
+
id: m,
|
|
63
|
+
onSubmit: t.handleSubmit(E),
|
|
50
64
|
className: b,
|
|
51
65
|
noValidate: !0,
|
|
52
|
-
children: typeof
|
|
66
|
+
children: typeof i == "function" ? i(t) : i
|
|
53
67
|
}
|
|
54
68
|
) });
|
|
55
69
|
}
|
|
56
70
|
);
|
|
57
71
|
export {
|
|
58
|
-
|
|
72
|
+
M as Form
|
|
59
73
|
};
|
|
60
74
|
//# sourceMappingURL=form.js.map
|