@panneau/fields 4.1.1 → 5.0.0-alpha.0

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.
Files changed (183) hide show
  1. package/README.md +72 -0
  2. package/dist/boolean/BooleanField.d.ts +11 -0
  3. package/dist/boolean/BooleanField.d.ts.map +1 -0
  4. package/dist/boolean/BooleanField.js +67 -0
  5. package/dist/boolean/BooleanField.js.map +1 -0
  6. package/dist/boolean/index.d.ts +2 -0
  7. package/dist/boolean/index.d.ts.map +1 -0
  8. package/dist/boolean/index.js +1 -0
  9. package/dist/color/ColorField.css +33 -0
  10. package/dist/color/ColorField.d.ts +16 -0
  11. package/dist/color/ColorField.d.ts.map +1 -0
  12. package/dist/color/ColorField.js +187 -0
  13. package/dist/color/ColorField.js.map +1 -0
  14. package/dist/color/ColorField.module.js +14 -0
  15. package/dist/color/ColorField.module.js.map +1 -0
  16. package/dist/color/index.d.ts +2 -0
  17. package/dist/color/index.d.ts.map +1 -0
  18. package/dist/color/index.js +1 -0
  19. package/dist/date/DateField.d.ts +16 -0
  20. package/dist/date/DateField.d.ts.map +1 -0
  21. package/dist/date/DateField.js +132 -0
  22. package/dist/date/DateField.js.map +1 -0
  23. package/dist/date/index.d.ts +2 -0
  24. package/dist/date/index.d.ts.map +1 -0
  25. package/dist/date/index.js +1 -0
  26. package/dist/datetime/DateTimeField.d.ts +22 -0
  27. package/dist/datetime/DateTimeField.d.ts.map +1 -0
  28. package/dist/datetime/DateTimeField.js +78 -0
  29. package/dist/datetime/DateTimeField.js.map +1 -0
  30. package/dist/datetime/index.d.ts +2 -0
  31. package/dist/datetime/index.d.ts.map +1 -0
  32. package/dist/datetime/index.js +1 -0
  33. package/dist/email/EmailField.d.ts +8 -0
  34. package/dist/email/EmailField.d.ts.map +1 -0
  35. package/dist/email/EmailField.js +84 -0
  36. package/dist/email/EmailField.js.map +1 -0
  37. package/dist/email/index.d.ts +2 -0
  38. package/dist/email/index.d.ts.map +1 -0
  39. package/dist/email/index.js +1 -0
  40. package/dist/group/GroupField.css +14 -0
  41. package/dist/group/GroupField.d.ts +19 -0
  42. package/dist/group/GroupField.d.ts.map +1 -0
  43. package/dist/group/GroupField.js +140 -0
  44. package/dist/group/GroupField.js.map +1 -0
  45. package/dist/group/GroupField.module.js +8 -0
  46. package/dist/group/GroupField.module.js.map +1 -0
  47. package/dist/group/index.d.ts +2 -0
  48. package/dist/group/index.d.ts.map +1 -0
  49. package/dist/group/index.js +1 -0
  50. package/dist/index.d.ts +8 -12
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +7 -134
  53. package/dist/locales/index.d.ts +15 -0
  54. package/dist/locales/index.d.ts.map +1 -0
  55. package/dist/locales/index.js +21 -0
  56. package/dist/locales/index.js.map +1 -0
  57. package/dist/localized/LocalizedField.css +9 -0
  58. package/dist/localized/LocalizedField.d.ts +36 -0
  59. package/dist/localized/LocalizedField.d.ts.map +1 -0
  60. package/dist/localized/LocalizedField.js +207 -0
  61. package/dist/localized/LocalizedField.js.map +1 -0
  62. package/dist/localized/LocalizedField.module.js +12 -0
  63. package/dist/localized/LocalizedField.module.js.map +1 -0
  64. package/dist/localized/index.d.ts +2 -0
  65. package/dist/localized/index.d.ts.map +1 -0
  66. package/dist/localized/index.js +1 -0
  67. package/dist/missing/MissingField.css +18 -0
  68. package/dist/missing/MissingField.d.ts +7 -0
  69. package/dist/missing/MissingField.d.ts.map +1 -0
  70. package/dist/missing/MissingField.js +68 -0
  71. package/dist/missing/MissingField.js.map +1 -0
  72. package/dist/missing/MissingField.module.js +14 -0
  73. package/dist/missing/MissingField.module.js.map +1 -0
  74. package/dist/number/NumberField.d.ts +23 -0
  75. package/dist/number/NumberField.d.ts.map +1 -0
  76. package/dist/number/NumberField.js +175 -0
  77. package/dist/number/NumberField.js.map +1 -0
  78. package/dist/number/index.d.ts +2 -0
  79. package/dist/number/index.d.ts.map +1 -0
  80. package/dist/number/index.js +1 -0
  81. package/dist/relation/RelationField.css +43 -0
  82. package/dist/relation/RelationField.d.ts +40 -0
  83. package/dist/relation/RelationField.d.ts.map +1 -0
  84. package/dist/relation/RelationField.js +293 -0
  85. package/dist/relation/RelationField.js.map +1 -0
  86. package/dist/relation/RelationField.module.js +20 -0
  87. package/dist/relation/RelationField.module.js.map +1 -0
  88. package/dist/relation/index.d.ts +3 -0
  89. package/dist/relation/index.d.ts.map +1 -0
  90. package/dist/relation/index.js +3 -0
  91. package/dist/repeater/RepeaterField.css +80 -0
  92. package/dist/repeater/RepeaterField.d.ts +29 -0
  93. package/dist/repeater/RepeaterField.d.ts.map +1 -0
  94. package/dist/repeater/RepeaterField.js +220 -0
  95. package/dist/repeater/RepeaterField.js.map +1 -0
  96. package/dist/repeater/RepeaterField.module.js +26 -0
  97. package/dist/repeater/RepeaterField.module.js.map +1 -0
  98. package/dist/repeater/index.d.ts +2 -0
  99. package/dist/repeater/index.d.ts.map +1 -0
  100. package/dist/repeater/index.js +1 -0
  101. package/dist/select/SelectField.css +5 -0
  102. package/dist/select/SelectField.d.ts +38 -0
  103. package/dist/select/SelectField.d.ts.map +1 -0
  104. package/dist/select/SelectField.js +434 -0
  105. package/dist/select/SelectField.js.map +1 -0
  106. package/dist/select/SelectField.module.js +8 -0
  107. package/dist/select/SelectField.module.js.map +1 -0
  108. package/dist/select/index.d.ts +2 -0
  109. package/dist/select/index.d.ts.map +1 -0
  110. package/dist/select/index.js +1 -0
  111. package/dist/shared/DefinitionField.d.ts +32 -0
  112. package/dist/shared/DefinitionField.d.ts.map +1 -0
  113. package/dist/shared/DefinitionField.js +153 -0
  114. package/dist/shared/DefinitionField.js.map +1 -0
  115. package/dist/shared/builtIn.d.ts +17 -0
  116. package/dist/shared/builtIn.d.ts.map +1 -0
  117. package/dist/shared/builtIn.js +52 -0
  118. package/dist/shared/builtIn.js.map +1 -0
  119. package/dist/shared/context.d.ts +55 -0
  120. package/dist/shared/context.d.ts.map +1 -0
  121. package/dist/shared/context.js +72 -0
  122. package/dist/shared/context.js.map +1 -0
  123. package/dist/shared/cx.d.ts +3 -0
  124. package/dist/shared/cx.d.ts.map +1 -0
  125. package/dist/shared/cx.js +9 -0
  126. package/dist/shared/cx.js.map +1 -0
  127. package/dist/shared/dates.d.ts +15 -0
  128. package/dist/shared/dates.d.ts.map +1 -0
  129. package/dist/shared/dates.js +49 -0
  130. package/dist/shared/dates.js.map +1 -0
  131. package/dist/shared/entry.d.ts +23 -0
  132. package/dist/shared/entry.d.ts.map +1 -0
  133. package/dist/shared/entry.js +45 -0
  134. package/dist/shared/entry.js.map +1 -0
  135. package/dist/shared/messages.d.ts +2 -0
  136. package/dist/shared/messages.d.ts.map +1 -0
  137. package/dist/shared/messages.js +1 -0
  138. package/dist/shared/relation.d.ts +37 -0
  139. package/dist/shared/relation.d.ts.map +1 -0
  140. package/dist/shared/relation.js +49 -0
  141. package/dist/shared/relation.js.map +1 -0
  142. package/dist/shared/types.d.ts +50 -0
  143. package/dist/shared/types.d.ts.map +1 -0
  144. package/dist/slug/SlugField.d.ts +24 -0
  145. package/dist/slug/SlugField.d.ts.map +1 -0
  146. package/dist/slug/SlugField.js +216 -0
  147. package/dist/slug/SlugField.js.map +1 -0
  148. package/dist/slug/index.d.ts +2 -0
  149. package/dist/slug/index.d.ts.map +1 -0
  150. package/dist/slug/index.js +1 -0
  151. package/dist/text/TextField.d.ts +24 -0
  152. package/dist/text/TextField.d.ts.map +1 -0
  153. package/dist/text/TextField.js +179 -0
  154. package/dist/text/TextField.js.map +1 -0
  155. package/dist/text/index.d.ts +2 -0
  156. package/dist/text/index.d.ts.map +1 -0
  157. package/dist/text/index.js +1 -0
  158. package/dist/textarea/TextAreaField.d.ts +14 -0
  159. package/dist/textarea/TextAreaField.d.ts.map +1 -0
  160. package/dist/textarea/TextAreaField.js +126 -0
  161. package/dist/textarea/TextAreaField.js.map +1 -0
  162. package/dist/textarea/index.d.ts +2 -0
  163. package/dist/textarea/index.d.ts.map +1 -0
  164. package/dist/textarea/index.js +1 -0
  165. package/dist/time/TimeField.d.ts +13 -0
  166. package/dist/time/TimeField.d.ts.map +1 -0
  167. package/dist/time/TimeField.js +49 -0
  168. package/dist/time/TimeField.js.map +1 -0
  169. package/dist/time/index.d.ts +2 -0
  170. package/dist/time/index.d.ts.map +1 -0
  171. package/dist/time/index.js +1 -0
  172. package/dist/url/UrlField.css +11 -0
  173. package/dist/url/UrlField.d.ts +16 -0
  174. package/dist/url/UrlField.d.ts.map +1 -0
  175. package/dist/url/UrlField.js +94 -0
  176. package/dist/url/UrlField.js.map +1 -0
  177. package/dist/url/UrlField.module.js +8 -0
  178. package/dist/url/UrlField.module.js.map +1 -0
  179. package/dist/url/index.d.ts +2 -0
  180. package/dist/url/index.d.ts.map +1 -0
  181. package/dist/url/index.js +1 -0
  182. package/package.json +108 -79
  183. package/assets/css/styles.css +0 -14
@@ -0,0 +1,434 @@
1
+ import { getFieldProps, getSetting, isString } from "../shared/entry.js";
2
+ import SelectField_module_default from "./SelectField.module.js";
3
+ import { c } from "react/compiler-runtime";
4
+ import { Checkbox, Fieldset, RadioGroup, Select } from "@panneau/ui";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/select/SelectField.tsx
7
+ /**
8
+ * A choice among options, or several with `multiple`, as a dropdown or as radios and checkboxes.
9
+ * Values keep their type (strings, numbers, booleans).
10
+ */
11
+ function SelectField(props) {
12
+ const $ = c(114);
13
+ const { options, label, description, errors, disabled, readOnly, required, placeholder, name, id, autoFocus, onBlur, className, labelClassName, descriptionClassName, errorsClassName, controlClassName } = props;
14
+ let t0;
15
+ if ($[0] !== props) {
16
+ t0 = props["aria-label"] !== void 0 ? { "aria-label": props["aria-label"] } : {};
17
+ $[0] = props;
18
+ $[1] = t0;
19
+ } else t0 = $[1];
20
+ let t1;
21
+ if ($[2] !== className || $[3] !== description || $[4] !== descriptionClassName || $[5] !== errors || $[6] !== errorsClassName || $[7] !== label || $[8] !== labelClassName || $[9] !== t0) {
22
+ t1 = {
23
+ label,
24
+ description,
25
+ errors,
26
+ className,
27
+ labelClassName,
28
+ descriptionClassName,
29
+ errorsClassName,
30
+ ...t0
31
+ };
32
+ $[2] = className;
33
+ $[3] = description;
34
+ $[4] = descriptionClassName;
35
+ $[5] = errors;
36
+ $[6] = errorsClassName;
37
+ $[7] = label;
38
+ $[8] = labelClassName;
39
+ $[9] = t0;
40
+ $[10] = t1;
41
+ } else t1 = $[10];
42
+ const chrome = t1;
43
+ const locked = disabled === true || readOnly === true;
44
+ if (props.multiple === true) {
45
+ let t2;
46
+ if ($[11] !== props.value) {
47
+ t2 = props.value ?? [];
48
+ $[11] = props.value;
49
+ $[12] = t2;
50
+ } else t2 = $[12];
51
+ const selected = t2;
52
+ let t3;
53
+ if ($[13] !== options || $[14] !== props) {
54
+ t3 = (next) => {
55
+ const ordered = options.map(_temp).filter((value) => next.includes(value));
56
+ props.onChange?.(ordered.length > 0 ? ordered : null);
57
+ };
58
+ $[13] = options;
59
+ $[14] = props;
60
+ $[15] = t3;
61
+ } else t3 = $[15];
62
+ const change = t3;
63
+ if (props.widget === "checkboxes") {
64
+ let t4;
65
+ if ($[16] !== change || $[17] !== controlClassName || $[18] !== options || $[19] !== readOnly || $[20] !== selected) {
66
+ let t5;
67
+ if ($[22] !== change || $[23] !== controlClassName || $[24] !== readOnly || $[25] !== selected) {
68
+ t5 = (option_0, index) => /* @__PURE__ */ jsx(Checkbox, {
69
+ isSelected: selected.includes(option_0.value),
70
+ isDisabled: option_0.disabled,
71
+ isReadOnly: readOnly,
72
+ description: option_0.description,
73
+ onChange: (checked) => change(checked ? [...selected, option_0.value] : selected.filter((value_0) => value_0 !== option_0.value)),
74
+ checkboxClassName: controlClassName,
75
+ children: option_0.label
76
+ }, index);
77
+ $[22] = change;
78
+ $[23] = controlClassName;
79
+ $[24] = readOnly;
80
+ $[25] = selected;
81
+ $[26] = t5;
82
+ } else t5 = $[26];
83
+ t4 = options.map(t5);
84
+ $[16] = change;
85
+ $[17] = controlClassName;
86
+ $[18] = options;
87
+ $[19] = readOnly;
88
+ $[20] = selected;
89
+ $[21] = t4;
90
+ } else t4 = $[21];
91
+ let t5;
92
+ if ($[27] !== t4) {
93
+ t5 = /* @__PURE__ */ jsx("div", {
94
+ className: SelectField_module_default.checkboxes,
95
+ children: t4
96
+ });
97
+ $[27] = t4;
98
+ $[28] = t5;
99
+ } else t5 = $[28];
100
+ let t6;
101
+ if ($[29] !== className || $[30] !== description || $[31] !== descriptionClassName || $[32] !== disabled || $[33] !== errors || $[34] !== errorsClassName || $[35] !== label || $[36] !== labelClassName || $[37] !== required || $[38] !== t5) {
102
+ t6 = /* @__PURE__ */ jsx(Fieldset, {
103
+ legend: label,
104
+ description,
105
+ errors,
106
+ isRequired: required,
107
+ isDisabled: disabled,
108
+ className,
109
+ legendClassName: labelClassName,
110
+ descriptionClassName,
111
+ errorsClassName,
112
+ children: t5
113
+ });
114
+ $[29] = className;
115
+ $[30] = description;
116
+ $[31] = descriptionClassName;
117
+ $[32] = disabled;
118
+ $[33] = errors;
119
+ $[34] = errorsClassName;
120
+ $[35] = label;
121
+ $[36] = labelClassName;
122
+ $[37] = required;
123
+ $[38] = t5;
124
+ $[39] = t6;
125
+ } else t6 = $[39];
126
+ return t6;
127
+ }
128
+ let t4;
129
+ if ($[40] !== placeholder) {
130
+ t4 = placeholder !== void 0 ? { placeholder } : {};
131
+ $[40] = placeholder;
132
+ $[41] = t4;
133
+ } else t4 = $[41];
134
+ let t5;
135
+ if ($[42] !== name) {
136
+ t5 = name !== void 0 ? { name } : {};
137
+ $[42] = name;
138
+ $[43] = t5;
139
+ } else t5 = $[43];
140
+ let t6;
141
+ if ($[44] !== id) {
142
+ t6 = id !== void 0 ? { id } : {};
143
+ $[44] = id;
144
+ $[45] = t6;
145
+ } else t6 = $[45];
146
+ let t7;
147
+ if ($[46] !== autoFocus) {
148
+ t7 = autoFocus !== void 0 ? { autoFocus } : {};
149
+ $[46] = autoFocus;
150
+ $[47] = t7;
151
+ } else t7 = $[47];
152
+ let t8;
153
+ if ($[48] !== onBlur) {
154
+ t8 = onBlur !== void 0 ? { onBlur } : {};
155
+ $[48] = onBlur;
156
+ $[49] = t8;
157
+ } else t8 = $[49];
158
+ let t9;
159
+ if ($[50] !== controlClassName) {
160
+ t9 = controlClassName !== void 0 ? { triggerClassName: controlClassName } : {};
161
+ $[50] = controlClassName;
162
+ $[51] = t9;
163
+ } else t9 = $[51];
164
+ let t10;
165
+ if ($[52] !== change || $[53] !== chrome || $[54] !== locked || $[55] !== options || $[56] !== required || $[57] !== selected || $[58] !== t4 || $[59] !== t5 || $[60] !== t6 || $[61] !== t7 || $[62] !== t8 || $[63] !== t9) {
166
+ t10 = /* @__PURE__ */ jsx(Select, {
167
+ ...chrome,
168
+ multiple: true,
169
+ options,
170
+ value: selected,
171
+ onChange: change,
172
+ isRequired: required,
173
+ isDisabled: locked,
174
+ ...t4,
175
+ ...t5,
176
+ ...t6,
177
+ ...t7,
178
+ ...t8,
179
+ ...t9
180
+ });
181
+ $[52] = change;
182
+ $[53] = chrome;
183
+ $[54] = locked;
184
+ $[55] = options;
185
+ $[56] = required;
186
+ $[57] = selected;
187
+ $[58] = t4;
188
+ $[59] = t5;
189
+ $[60] = t6;
190
+ $[61] = t7;
191
+ $[62] = t8;
192
+ $[63] = t9;
193
+ $[64] = t10;
194
+ } else t10 = $[64];
195
+ return t10;
196
+ }
197
+ if (props.widget === "radios") {
198
+ const t2 = props.value ?? null;
199
+ let t3;
200
+ if ($[65] !== props) {
201
+ t3 = (value_1) => props.onChange?.(value_1);
202
+ $[65] = props;
203
+ $[66] = t3;
204
+ } else t3 = $[66];
205
+ let t4;
206
+ if ($[67] !== name) {
207
+ t4 = name !== void 0 ? { name } : {};
208
+ $[67] = name;
209
+ $[68] = t4;
210
+ } else t4 = $[68];
211
+ let t5;
212
+ if ($[69] !== id) {
213
+ t5 = id !== void 0 ? { id } : {};
214
+ $[69] = id;
215
+ $[70] = t5;
216
+ } else t5 = $[70];
217
+ let t6;
218
+ if ($[71] !== onBlur) {
219
+ t6 = onBlur !== void 0 ? { onBlur } : {};
220
+ $[71] = onBlur;
221
+ $[72] = t6;
222
+ } else t6 = $[72];
223
+ let t7;
224
+ if ($[73] !== controlClassName) {
225
+ t7 = controlClassName !== void 0 ? { radioClassName: controlClassName } : {};
226
+ $[73] = controlClassName;
227
+ $[74] = t7;
228
+ } else t7 = $[74];
229
+ let t8;
230
+ if ($[75] !== chrome || $[76] !== disabled || $[77] !== options || $[78] !== readOnly || $[79] !== required || $[80] !== t2 || $[81] !== t3 || $[82] !== t4 || $[83] !== t5 || $[84] !== t6 || $[85] !== t7) {
231
+ t8 = /* @__PURE__ */ jsx(RadioGroup, {
232
+ ...chrome,
233
+ options,
234
+ value: t2,
235
+ onChange: t3,
236
+ isRequired: required,
237
+ isDisabled: disabled,
238
+ isReadOnly: readOnly,
239
+ ...t4,
240
+ ...t5,
241
+ ...t6,
242
+ ...t7
243
+ });
244
+ $[75] = chrome;
245
+ $[76] = disabled;
246
+ $[77] = options;
247
+ $[78] = readOnly;
248
+ $[79] = required;
249
+ $[80] = t2;
250
+ $[81] = t3;
251
+ $[82] = t4;
252
+ $[83] = t5;
253
+ $[84] = t6;
254
+ $[85] = t7;
255
+ $[86] = t8;
256
+ } else t8 = $[86];
257
+ return t8;
258
+ }
259
+ const t2 = props.value ?? null;
260
+ let t3;
261
+ if ($[87] !== props) {
262
+ t3 = (value_2) => props.onChange?.(value_2);
263
+ $[87] = props;
264
+ $[88] = t3;
265
+ } else t3 = $[88];
266
+ let t4;
267
+ if ($[89] !== placeholder) {
268
+ t4 = placeholder !== void 0 ? { placeholder } : {};
269
+ $[89] = placeholder;
270
+ $[90] = t4;
271
+ } else t4 = $[90];
272
+ let t5;
273
+ if ($[91] !== name) {
274
+ t5 = name !== void 0 ? { name } : {};
275
+ $[91] = name;
276
+ $[92] = t5;
277
+ } else t5 = $[92];
278
+ let t6;
279
+ if ($[93] !== id) {
280
+ t6 = id !== void 0 ? { id } : {};
281
+ $[93] = id;
282
+ $[94] = t6;
283
+ } else t6 = $[94];
284
+ let t7;
285
+ if ($[95] !== autoFocus) {
286
+ t7 = autoFocus !== void 0 ? { autoFocus } : {};
287
+ $[95] = autoFocus;
288
+ $[96] = t7;
289
+ } else t7 = $[96];
290
+ let t8;
291
+ if ($[97] !== onBlur) {
292
+ t8 = onBlur !== void 0 ? { onBlur } : {};
293
+ $[97] = onBlur;
294
+ $[98] = t8;
295
+ } else t8 = $[98];
296
+ let t9;
297
+ if ($[99] !== controlClassName) {
298
+ t9 = controlClassName !== void 0 ? { triggerClassName: controlClassName } : {};
299
+ $[99] = controlClassName;
300
+ $[100] = t9;
301
+ } else t9 = $[100];
302
+ let t10;
303
+ if ($[101] !== chrome || $[102] !== locked || $[103] !== options || $[104] !== required || $[105] !== t2 || $[106] !== t3 || $[107] !== t4 || $[108] !== t5 || $[109] !== t6 || $[110] !== t7 || $[111] !== t8 || $[112] !== t9) {
304
+ t10 = /* @__PURE__ */ jsx(Select, {
305
+ ...chrome,
306
+ options,
307
+ value: t2,
308
+ onChange: t3,
309
+ isRequired: required,
310
+ isDisabled: locked,
311
+ ...t4,
312
+ ...t5,
313
+ ...t6,
314
+ ...t7,
315
+ ...t8,
316
+ ...t9
317
+ });
318
+ $[101] = chrome;
319
+ $[102] = locked;
320
+ $[103] = options;
321
+ $[104] = required;
322
+ $[105] = t2;
323
+ $[106] = t3;
324
+ $[107] = t4;
325
+ $[108] = t5;
326
+ $[109] = t6;
327
+ $[110] = t7;
328
+ $[111] = t8;
329
+ $[112] = t9;
330
+ $[113] = t10;
331
+ } else t10 = $[113];
332
+ return t10;
333
+ }
334
+ function _temp(option) {
335
+ return option.value;
336
+ }
337
+ function isOptionValue(value) {
338
+ return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
339
+ }
340
+ /**
341
+ * The `select` type: `options`, `multiple`, and setting `widget` (`radios` for a single choice,
342
+ * `checkboxes` for several).
343
+ */
344
+ function SelectFieldEntry(props) {
345
+ const $ = c(26);
346
+ const { field } = props;
347
+ let t0;
348
+ if ($[0] !== field) {
349
+ t0 = getSetting(field, "widget", isString);
350
+ $[0] = field;
351
+ $[1] = t0;
352
+ } else t0 = $[1];
353
+ const widget = t0;
354
+ let t1;
355
+ if ($[2] !== field.options) {
356
+ t1 = field.options ?? [];
357
+ $[2] = field.options;
358
+ $[3] = t1;
359
+ } else t1 = $[3];
360
+ const options = t1;
361
+ if (field.multiple === true) {
362
+ let t2;
363
+ if ($[4] !== props.value) {
364
+ t2 = Array.isArray(props.value) ? props.value.filter(isOptionValue) : null;
365
+ $[4] = props.value;
366
+ $[5] = t2;
367
+ } else t2 = $[5];
368
+ const value = t2;
369
+ let t3;
370
+ if ($[6] !== props) {
371
+ t3 = getFieldProps(props);
372
+ $[6] = props;
373
+ $[7] = t3;
374
+ } else t3 = $[7];
375
+ let t4;
376
+ if ($[8] !== widget) {
377
+ t4 = widget === "checkboxes" ? { widget } : {};
378
+ $[8] = widget;
379
+ $[9] = t4;
380
+ } else t4 = $[9];
381
+ let t5;
382
+ if ($[10] !== options || $[11] !== props.onChange || $[12] !== t3 || $[13] !== t4 || $[14] !== value) {
383
+ t5 = /* @__PURE__ */ jsx(SelectField, {
384
+ ...t3,
385
+ multiple: true,
386
+ options,
387
+ value,
388
+ onChange: props.onChange,
389
+ ...t4
390
+ });
391
+ $[10] = options;
392
+ $[11] = props.onChange;
393
+ $[12] = t3;
394
+ $[13] = t4;
395
+ $[14] = value;
396
+ $[15] = t5;
397
+ } else t5 = $[15];
398
+ return t5;
399
+ }
400
+ let t2;
401
+ if ($[16] !== props) {
402
+ t2 = getFieldProps(props);
403
+ $[16] = props;
404
+ $[17] = t2;
405
+ } else t2 = $[17];
406
+ const t3 = isOptionValue(props.value) ? props.value : null;
407
+ let t4;
408
+ if ($[18] !== widget) {
409
+ t4 = widget === "radios" ? { widget } : {};
410
+ $[18] = widget;
411
+ $[19] = t4;
412
+ } else t4 = $[19];
413
+ let t5;
414
+ if ($[20] !== options || $[21] !== props.onChange || $[22] !== t2 || $[23] !== t3 || $[24] !== t4) {
415
+ t5 = /* @__PURE__ */ jsx(SelectField, {
416
+ ...t2,
417
+ options,
418
+ value: t3,
419
+ onChange: props.onChange,
420
+ ...t4
421
+ });
422
+ $[20] = options;
423
+ $[21] = props.onChange;
424
+ $[22] = t2;
425
+ $[23] = t3;
426
+ $[24] = t4;
427
+ $[25] = t5;
428
+ } else t5 = $[25];
429
+ return t5;
430
+ }
431
+ //#endregion
432
+ export { SelectField, SelectFieldEntry };
433
+
434
+ //# sourceMappingURL=SelectField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectField.js","names":["index","option","readOnly","value","controlClassName","label","description","errors","required","disabled","className","labelClassName","descriptionClassName","errorsClassName","options","selected","change","locked","_c","styles"],"sources":["../../src/select/SelectField.tsx"],"sourcesContent":["import type { Option } from '@panneau/protocol';\nimport { Checkbox, Fieldset, type OptionValue, RadioGroup, Select } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport styles from './SelectField.module.css';\n\nexport type { OptionValue };\n\n/** Props of both single and multiple select fields. */\nexport interface SelectFieldBaseProps extends Omit<FieldProps<never>, 'value' | 'onChange'> {\n /** The choices. Same shape as the protocol's `Option`. */\n options: readonly Option[];\n placeholder?: string;\n controlClassName?: string;\n}\n\nexport interface SingleSelectFieldProps extends SelectFieldBaseProps {\n multiple?: false;\n value?: OptionValue | null;\n onChange?: (value: OptionValue | null) => void;\n /** `select` (default): a dropdown. `radios`: every choice visible. */\n widget?: 'select' | 'radios';\n}\n\nexport interface MultipleSelectFieldProps extends SelectFieldBaseProps {\n multiple: true;\n value?: readonly OptionValue[] | null;\n /** Called with the selected values, in the order of the options. An empty list is `null`. */\n onChange?: (value: OptionValue[] | null) => void;\n /** `select` (default): a dropdown. `checkboxes`: every choice visible. */\n widget?: 'select' | 'checkboxes';\n}\n\nexport type SelectFieldProps = SingleSelectFieldProps | MultipleSelectFieldProps;\n\n/**\n * A choice among options, or several with `multiple`, as a dropdown or as radios and checkboxes.\n * Values keep their type (strings, numbers, booleans).\n */\nexport function SelectField(props: SelectFieldProps) {\n const {\n options,\n label,\n description,\n errors,\n disabled,\n readOnly,\n required,\n placeholder,\n name,\n id,\n autoFocus,\n onBlur,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n } = props;\n const chrome = {\n label,\n description,\n errors,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n ...(props['aria-label'] !== undefined ? { 'aria-label': props['aria-label'] } : {}),\n };\n const locked = disabled === true || readOnly === true;\n\n if (props.multiple === true) {\n const selected = props.value ?? [];\n const change = (next: readonly OptionValue[]) => {\n // Keep the order of the options, whatever the order of the clicks.\n const ordered = options\n .map((option) => option.value)\n .filter((value) => next.includes(value));\n props.onChange?.(ordered.length > 0 ? ordered : null);\n };\n if (props.widget === 'checkboxes') {\n return (\n <Fieldset\n legend={label}\n description={description}\n errors={errors}\n isRequired={required}\n isDisabled={disabled}\n className={className}\n legendClassName={labelClassName}\n descriptionClassName={descriptionClassName}\n errorsClassName={errorsClassName}\n >\n <div className={styles.checkboxes}>\n {options.map((option, index) => (\n <Checkbox\n key={index}\n isSelected={selected.includes(option.value)}\n isDisabled={option.disabled}\n isReadOnly={readOnly}\n description={option.description}\n onChange={(checked) =>\n change(\n checked\n ? [...selected, option.value]\n : selected.filter((value) => value !== option.value),\n )\n }\n checkboxClassName={controlClassName}\n >\n {option.label}\n </Checkbox>\n ))}\n </div>\n </Fieldset>\n );\n }\n return (\n <Select\n {...chrome}\n multiple\n options={options}\n value={selected}\n onChange={change}\n isRequired={required}\n isDisabled={locked}\n {...(placeholder !== undefined ? { placeholder } : {})}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(autoFocus !== undefined ? { autoFocus } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { triggerClassName: controlClassName } : {})}\n />\n );\n }\n\n if (props.widget === 'radios') {\n return (\n <RadioGroup\n {...chrome}\n options={options}\n value={props.value ?? null}\n onChange={(value) => props.onChange?.(value)}\n isRequired={required}\n isDisabled={disabled}\n isReadOnly={readOnly}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { radioClassName: controlClassName } : {})}\n />\n );\n }\n return (\n <Select\n {...chrome}\n options={options}\n value={props.value ?? null}\n onChange={(value) => props.onChange?.(value)}\n isRequired={required}\n isDisabled={locked}\n {...(placeholder !== undefined ? { placeholder } : {})}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(autoFocus !== undefined ? { autoFocus } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { triggerClassName: controlClassName } : {})}\n />\n );\n}\n\nfunction isOptionValue(value: unknown): value is OptionValue {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\n/**\n * The `select` type: `options`, `multiple`, and setting `widget` (`radios` for a single choice,\n * `checkboxes` for several).\n */\nexport function SelectFieldEntry(props: FieldEntryProps) {\n const { field } = props;\n const widget = getSetting(field, 'widget', isString);\n const options = field.options ?? [];\n if (field.multiple === true) {\n const value = Array.isArray(props.value) ? props.value.filter(isOptionValue) : null;\n return (\n <SelectField\n {...getFieldProps(props)}\n multiple\n options={options}\n value={value}\n onChange={props.onChange}\n {...(widget === 'checkboxes' ? { widget } : {})}\n />\n );\n }\n return (\n <SelectField\n {...getFieldProps(props)}\n options={options}\n value={isOptionValue(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(widget === 'radios' ? { widget } : {})}\n />\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import "./SelectField.css";
2
+ //#region src/select/SelectField.module.css
3
+ var checkboxes = "panneau-checkboxes-To0J7N";
4
+ var SelectField_module_default = { checkboxes };
5
+ //#endregion
6
+ export { checkboxes, SelectField_module_default as default };
7
+
8
+ //# sourceMappingURL=SelectField.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectField.module.js","names":[],"sources":["../../src/select/SelectField.module.css"],"sourcesContent":[".checkboxes {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-1);\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { type MultipleSelectFieldProps, type SelectFieldBaseProps, type OptionValue, SelectField, SelectFieldEntry, type SelectFieldProps, type SingleSelectFieldProps, } from './SelectField';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/select/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,WAAW,EACX,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,GAC9B,MAAM,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ export { SelectField, SelectFieldEntry } from "./SelectField.js";
@@ -0,0 +1,32 @@
1
+ import { type Field } from '@panneau/protocol';
2
+ import type { FieldEntryProps } from './types';
3
+ export interface NestedFieldProps {
4
+ field: Field;
5
+ /** Dot path of the field's value. */
6
+ path: string;
7
+ /** The value, without a binding. */
8
+ value?: unknown;
9
+ /** Sets the value, without a binding. */
10
+ onChange?: (value: unknown) => void;
11
+ onBlur?: () => void;
12
+ errors?: readonly string[];
13
+ /** The object the field belongs to, for conditions and generated values. */
14
+ parentValue?: unknown;
15
+ disabled?: boolean;
16
+ readOnly?: boolean;
17
+ className?: string;
18
+ }
19
+ /**
20
+ * A field inside another one (a group, a block, a localized value), or at the top of a form.
21
+ * With a binding in context, the binding gives its value and decides whether it shows. Without
22
+ * one, it uses `value` and `onChange`, and hides itself when its `visibleWhen` condition on the
23
+ * parent value is false.
24
+ */
25
+ export declare function NestedField({ field, path, value, onChange, onBlur, errors, parentValue, disabled, readOnly, className, }: NestedFieldProps): import("react").JSX.Element | null;
26
+ /**
27
+ * Renders a field of the definition with the entry of its type: from the fields context, or a
28
+ * built-in one. A localized field renders an input per locale. A type without an entry renders a
29
+ * placeholder that names the missing plugin.
30
+ */
31
+ export declare function DefinitionField(props: FieldEntryProps): import("react").JSX.Element;
32
+ //# sourceMappingURL=DefinitionField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefinitionField.d.ts","sourceRoot":"","sources":["../../src/shared/DefinitionField.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAqB,MAAM,mBAAmB,CAAC;AASlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,SAAS,GACZ,EAAE,gBAAgB,sCAgClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,+BAQrD"}
@@ -0,0 +1,153 @@
1
+ import { getParentPath, useFieldsContext } from "./context.js";
2
+ import { LocalizedFieldEntry } from "../localized/LocalizedField.js";
3
+ import { MissingFieldEntry } from "../missing/MissingField.js";
4
+ import { builtInFields } from "./builtIn.js";
5
+ import { c } from "react/compiler-runtime";
6
+ import { evaluateCondition } from "@panneau/protocol";
7
+ import { jsx } from "react/jsx-runtime";
8
+ //#region src/shared/DefinitionField.tsx
9
+ /**
10
+ * A field inside another one (a group, a block, a localized value), or at the top of a form.
11
+ * With a binding in context, the binding gives its value and decides whether it shows. Without
12
+ * one, it uses `value` and `onChange`, and hides itself when its `visibleWhen` condition on the
13
+ * parent value is false.
14
+ */
15
+ function NestedField(t0) {
16
+ const $ = c(33);
17
+ const { field, path, value, onChange, onBlur, errors, parentValue, disabled, readOnly, className } = t0;
18
+ const { binding: Binding } = useFieldsContext();
19
+ let t1;
20
+ if ($[0] !== disabled) {
21
+ t1 = disabled !== void 0 ? { disabled } : {};
22
+ $[0] = disabled;
23
+ $[1] = t1;
24
+ } else t1 = $[1];
25
+ let t2;
26
+ if ($[2] !== readOnly) {
27
+ t2 = readOnly !== void 0 ? { readOnly } : {};
28
+ $[2] = readOnly;
29
+ $[3] = t2;
30
+ } else t2 = $[3];
31
+ let t3;
32
+ if ($[4] !== className) {
33
+ t3 = className !== void 0 ? { className } : {};
34
+ $[4] = className;
35
+ $[5] = t3;
36
+ } else t3 = $[5];
37
+ let t4;
38
+ if ($[6] !== field || $[7] !== parentValue || $[8] !== path || $[9] !== t1 || $[10] !== t2 || $[11] !== t3) {
39
+ t4 = {
40
+ field,
41
+ path,
42
+ parentValue,
43
+ ...t1,
44
+ ...t2,
45
+ ...t3
46
+ };
47
+ $[6] = field;
48
+ $[7] = parentValue;
49
+ $[8] = path;
50
+ $[9] = t1;
51
+ $[10] = t2;
52
+ $[11] = t3;
53
+ $[12] = t4;
54
+ } else t4 = $[12];
55
+ const shared = t4;
56
+ if (Binding !== null) {
57
+ let t5;
58
+ if ($[13] !== path) {
59
+ t5 = getParentPath(path);
60
+ $[13] = path;
61
+ $[14] = t5;
62
+ } else t5 = $[14];
63
+ let t6;
64
+ if ($[15] !== shared) {
65
+ t6 = (bound) => /* @__PURE__ */ jsx(DefinitionField, {
66
+ ...shared,
67
+ ...bound
68
+ });
69
+ $[15] = shared;
70
+ $[16] = t6;
71
+ } else t6 = $[16];
72
+ let t7;
73
+ if ($[17] !== Binding || $[18] !== field || $[19] !== path || $[20] !== t5 || $[21] !== t6) {
74
+ t7 = /* @__PURE__ */ jsx(Binding, {
75
+ field,
76
+ path,
77
+ parentPath: t5,
78
+ render: t6
79
+ });
80
+ $[17] = Binding;
81
+ $[18] = field;
82
+ $[19] = path;
83
+ $[20] = t5;
84
+ $[21] = t6;
85
+ $[22] = t7;
86
+ } else t7 = $[22];
87
+ return t7;
88
+ }
89
+ if (field.visibleWhen !== void 0 && !evaluateCondition(field.visibleWhen, parentValue)) return null;
90
+ const t5 = onChange ?? _temp;
91
+ let t6;
92
+ if ($[23] !== onBlur) {
93
+ t6 = onBlur !== void 0 ? { onBlur } : {};
94
+ $[23] = onBlur;
95
+ $[24] = t6;
96
+ } else t6 = $[24];
97
+ let t7;
98
+ if ($[25] !== errors) {
99
+ t7 = errors !== void 0 ? { errors } : {};
100
+ $[25] = errors;
101
+ $[26] = t7;
102
+ } else t7 = $[26];
103
+ let t8;
104
+ if ($[27] !== shared || $[28] !== t5 || $[29] !== t6 || $[30] !== t7 || $[31] !== value) {
105
+ t8 = /* @__PURE__ */ jsx(DefinitionField, {
106
+ ...shared,
107
+ value,
108
+ onChange: t5,
109
+ ...t6,
110
+ ...t7
111
+ });
112
+ $[27] = shared;
113
+ $[28] = t5;
114
+ $[29] = t6;
115
+ $[30] = t7;
116
+ $[31] = value;
117
+ $[32] = t8;
118
+ } else t8 = $[32];
119
+ return t8;
120
+ }
121
+ /**
122
+ * Renders a field of the definition with the entry of its type: from the fields context, or a
123
+ * built-in one. A localized field renders an input per locale. A type without an entry renders a
124
+ * placeholder that names the missing plugin.
125
+ */
126
+ function _temp() {}
127
+ function DefinitionField(props) {
128
+ const $ = c(5);
129
+ const { components } = useFieldsContext();
130
+ const { field } = props;
131
+ if (field.localized === true) {
132
+ let t0;
133
+ if ($[0] !== props) {
134
+ t0 = /* @__PURE__ */ jsx(LocalizedFieldEntry, { ...props });
135
+ $[0] = props;
136
+ $[1] = t0;
137
+ } else t0 = $[1];
138
+ return t0;
139
+ }
140
+ const Entry = components[field.type] ?? builtInFields[field.type] ?? MissingFieldEntry;
141
+ let t0;
142
+ if ($[2] !== Entry || $[3] !== props) {
143
+ t0 = /* @__PURE__ */ jsx(Entry, { ...props });
144
+ $[2] = Entry;
145
+ $[3] = props;
146
+ $[4] = t0;
147
+ } else t0 = $[4];
148
+ return t0;
149
+ }
150
+ //#endregion
151
+ export { DefinitionField, NestedField };
152
+
153
+ //# sourceMappingURL=DefinitionField.js.map