@saas-ui/forms 2.3.12 → 2.4.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @saas-ui/forms
2
2
 
3
+ ## 2.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 73d09d9: Added support for leftAddon and rightAddon on number input types
8
+ - efca417: Improved ObjectSchema type definitions to be more strict and inherit correct field type props
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies [4a95712]
13
+ - Updated dependencies [4a95712]
14
+ - @saas-ui/core@2.4.0
15
+
3
16
  ## 2.3.12
4
17
 
5
18
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ import * as _chakra_ui_system_dist_system_types from '@chakra-ui/system/dist/sys
12
12
 
13
13
  interface NumberInputOptions {
14
14
  /**
15
- * Hide the stepper.
15
+ * Hide the stepper. This will be true when `rightAddon` is provided.
16
16
  */
17
17
  hideStepper?: boolean;
18
18
  /**
@@ -31,6 +31,14 @@ interface NumberInputOptions {
31
31
  * Props to pass to the NumberInputField component.
32
32
  */
33
33
  fieldProps?: NumberInputFieldProps$1;
34
+ /**
35
+ * Either `InputLeftAddon` or `InputLeftElement`
36
+ */
37
+ leftAddon?: React$1.ReactNode;
38
+ /**
39
+ * Either `InputRightAddon` or `InputRightElement`
40
+ */
41
+ rightAddon?: React$1.ReactNode;
34
42
  }
35
43
  interface NumberInputProps extends NumberInputProps$1, NumberInputOptions {
36
44
  }
@@ -521,11 +529,19 @@ type FieldResolver = {
521
529
  getNestedFields(name: string): BaseFieldProps[];
522
530
  };
523
531
  type GetFieldResolver<TSchema = any> = (schema: TSchema) => FieldResolver;
524
- interface SchemaField extends BaseFieldProps {
525
- items?: SchemaField[];
526
- properties?: Record<string, SchemaField>;
527
- }
528
- type ObjectSchema = Record<string, SchemaField>;
532
+ type FieldTypes<FieldDefs = DefaultFields> = ValueOf<{
533
+ [K in keyof FieldDefs]: FieldDefs[K] extends React.FC<infer Props> ? {
534
+ type?: K;
535
+ } & Omit<Props, 'name'> : never;
536
+ }>;
537
+ type SchemaField<FieldDefs = DefaultFields> = FieldTypes<FieldDefs> | (Omit<ObjectFieldProps, 'name' | 'children'> & {
538
+ type: 'object';
539
+ properties?: Record<string, SchemaField<FieldDefs>>;
540
+ }) | (Omit<ArrayFieldProps, 'name' | 'children'> & {
541
+ type: 'array';
542
+ items?: SchemaField<FieldDefs>;
543
+ });
544
+ type ObjectSchema<FieldDefs = DefaultFields> = Record<string, SchemaField<FieldDefs>>;
529
545
  declare const objectFieldResolver: GetFieldResolver<ObjectSchema>;
530
546
 
531
547
  interface DisplayIfProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> {
package/dist/index.js CHANGED
@@ -164,22 +164,31 @@ var import_react13 = require("@chakra-ui/react");
164
164
  var import_react2 = require("@chakra-ui/react");
165
165
  var import_core = require("@saas-ui/core");
166
166
  var import_jsx_runtime3 = require("react/jsx-runtime");
167
+ var Input = (0, import_react2.forwardRef)((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react2.NumberInputField, { ref, ...props }));
168
+ Input.displayName = "NumberInputField";
169
+ Input.id = "Input";
167
170
  var NumberInput = (0, import_react2.forwardRef)((props, ref) => {
168
171
  const {
169
172
  hideStepper = false,
170
173
  incrementIcon = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core.ChevronUpIcon, {}),
171
174
  decrementIcon = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core.ChevronDownIcon, {}),
175
+ leftAddon,
176
+ rightAddon,
172
177
  placeholder,
173
178
  fieldProps: _fieldProps,
174
179
  ...rest
175
180
  } = props;
176
181
  const fieldProps = { placeholder, ..._fieldProps };
177
182
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react2.NumberInput, { ...rest, ref, children: [
178
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react2.NumberInputField, { ...fieldProps }),
179
- !hideStepper && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react2.NumberInputStepper, { children: [
183
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react2.InputGroup, { children: [
184
+ leftAddon,
185
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Input, { ...fieldProps }),
186
+ rightAddon
187
+ ] }),
188
+ !hideStepper && !rightAddon ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react2.NumberInputStepper, { children: [
180
189
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react2.NumberIncrementStepper, { children: incrementIcon }),
181
190
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react2.NumberDecrementStepper, { children: decrementIcon })
182
- ] })
191
+ ] }) : null
183
192
  ] });
184
193
  });
185
194
  NumberInput.displayName = "NumberInput";
@@ -1334,7 +1343,8 @@ NextButton.displayName = "NextButton";
1334
1343
 
1335
1344
  // src/field-resolver.ts
1336
1345
  var import_utils10 = require("@chakra-ui/utils");
1337
- var mapFields = (schema) => schema && Object.entries(schema).map(([name, { items, label, title, ...field }]) => {
1346
+ var mapFields = (schema) => schema && Object.entries(schema).map(([name, props]) => {
1347
+ const { items, label, title, ...field } = props;
1338
1348
  return {
1339
1349
  ...field,
1340
1350
  name,