@arquimedes.co/eureka-forms 3.0.47-test → 3.0.49-new-steps

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 (86) hide show
  1. package/dist/@Types/AvailabilityFormStep.d.ts +48 -0
  2. package/dist/@Types/AvailabilityFormStep.js +24 -0
  3. package/dist/@Types/BankAccountFormStep.d.ts +67 -0
  4. package/dist/@Types/BankAccountFormStep.js +14 -0
  5. package/dist/@Types/BookingFormStep.d.ts +156 -0
  6. package/dist/@Types/BookingFormStep.js +44 -0
  7. package/dist/@Types/CalendarFormStep.d.ts +192 -0
  8. package/dist/@Types/CalendarFormStep.js +48 -0
  9. package/dist/@Types/CommunicationChannelFormStep.d.ts +51 -0
  10. package/dist/@Types/CommunicationChannelFormStep.js +15 -0
  11. package/dist/@Types/ConsentFormStep.d.ts +36 -0
  12. package/dist/@Types/ConsentFormStep.js +8 -0
  13. package/dist/@Types/EntityFormFormStep.d.ts +66 -0
  14. package/dist/@Types/EntityFormFormStep.js +20 -0
  15. package/dist/@Types/EventFormStep.d.ts +52 -0
  16. package/dist/@Types/EventFormStep.js +13 -0
  17. package/dist/@Types/ExternalReferenceFormStep.d.ts +74 -0
  18. package/dist/@Types/ExternalReferenceFormStep.js +20 -0
  19. package/dist/@Types/FormStep.d.ts +7 -2
  20. package/dist/@Types/FormStep.js +2 -1
  21. package/dist/@Types/LocationFormStep.d.ts +159 -0
  22. package/dist/@Types/LocationFormStep.js +46 -0
  23. package/dist/@Types/NumericFormSteps.d.ts +108 -0
  24. package/dist/@Types/NumericFormSteps.js +20 -0
  25. package/dist/@Types/PredefinedSelectorFormStep.d.ts +51 -0
  26. package/dist/@Types/PredefinedSelectorFormStep.js +39 -0
  27. package/dist/@Types/StepRef.d.ts +135 -0
  28. package/dist/@Types/StepRef.js +49 -0
  29. package/dist/FormSteps/BookingStep/BookingStep.d.ts +17 -0
  30. package/dist/FormSteps/BookingStep/BookingStep.js +14 -0
  31. package/dist/FormSteps/BookingStep/MaterialBookingStep/MaterialBookingStep.d.ts +3 -0
  32. package/dist/FormSteps/BookingStep/MaterialBookingStep/MaterialBookingStep.js +362 -0
  33. package/dist/FormSteps/BookingStep/MaterialBookingStep/MaterialBookingStep.module.css +174 -0
  34. package/dist/FormSteps/CalendarStep/CalendarStep.d.ts +7 -0
  35. package/dist/FormSteps/CalendarStep/CalendarStep.js +14 -0
  36. package/dist/FormSteps/CalendarStep/MaterialCalendarStep/MaterialCalendarStep.d.ts +3 -0
  37. package/dist/FormSteps/CalendarStep/MaterialCalendarStep/MaterialCalendarStep.js +269 -0
  38. package/dist/FormSteps/CalendarStep/MaterialCalendarStep/MaterialCalendarStep.module.css +531 -0
  39. package/dist/FormSteps/LocationStep/LocationStep.d.ts +10 -0
  40. package/dist/FormSteps/LocationStep/LocationStep.js +14 -0
  41. package/dist/FormSteps/LocationStep/MaterialLocationStep/MaterialLocationStep.d.ts +3 -0
  42. package/dist/FormSteps/LocationStep/MaterialLocationStep/MaterialLocationStep.js +47 -0
  43. package/dist/FormSteps/LocationStep/MaterialLocationStep/MaterialLocationStep.module.css +18 -0
  44. package/dist/FormSteps/NumberStep/MaterialNumberStep/MaterialNumberStep.d.ts +3 -0
  45. package/dist/FormSteps/NumberStep/MaterialNumberStep/MaterialNumberStep.js +168 -0
  46. package/dist/FormSteps/NumberStep/MaterialNumberStep/MaterialNumberStep.module.css +94 -0
  47. package/dist/FormSteps/NumberStep/NumberStep.d.ts +10 -0
  48. package/dist/FormSteps/NumberStep/NumberStep.js +14 -0
  49. package/dist/FormSteps/Step.js +16 -0
  50. package/dist/FormSteps/StepFunctions.js +14 -0
  51. package/dist/FormSteps/StepFunctions.test.js +57 -3
  52. package/dist/Icons/@ErkIcon.d.ts +2 -2
  53. package/dist/Icons/@ErkIcon.js +2 -2
  54. package/dist/Icons/AddIcon.d.ts +3 -0
  55. package/dist/Icons/AddIcon.js +7 -0
  56. package/dist/Icons/EditIcon.d.ts +3 -0
  57. package/dist/Icons/EditIcon.js +7 -0
  58. package/dist/Icons/RemoveIcon.d.ts +3 -0
  59. package/dist/Icons/RemoveIcon.js +7 -0
  60. package/dist/Icons/ViewDayIcon.d.ts +3 -0
  61. package/dist/Icons/ViewDayIcon.js +7 -0
  62. package/dist/Icons/ViewWeekIcon.d.ts +3 -0
  63. package/dist/Icons/ViewWeekIcon.js +7 -0
  64. package/dist/Shared/ErkAddressAutocomplete/ErkAddressAutocomplete.d.ts +19 -0
  65. package/dist/Shared/ErkAddressAutocomplete/ErkAddressAutocomplete.js +80 -0
  66. package/dist/Shared/ErkAddressAutocomplete/ErkAddressAutocomplete.module.css +82 -0
  67. package/dist/Shared/ErkAddressAutocomplete/googlePlaces.d.ts +29 -0
  68. package/dist/Shared/ErkAddressAutocomplete/googlePlaces.js +139 -0
  69. package/dist/Shared/ErkDatePicker/ErkDatePicker.js +1 -3
  70. package/dist/Shared/ErkDateRangePicker/ErkDateRangePicker.d.ts +2 -3
  71. package/dist/Shared/ErkDateRangePicker/ErkDateRangePicker.js +1 -2
  72. package/dist/Shared/ErkLocationField/ErkLocationField.d.ts +23 -0
  73. package/dist/Shared/ErkLocationField/ErkLocationField.js +73 -0
  74. package/dist/Shared/ErkLocationField/ErkLocationField.module.css +29 -0
  75. package/dist/Shared/ErkLocationField/addressFields.d.ts +12 -0
  76. package/dist/Shared/ErkLocationField/addressFields.js +34 -0
  77. package/dist/Shared/ErkLocationField/locationRestrictions.d.ts +6 -0
  78. package/dist/Shared/ErkLocationField/locationRestrictions.js +51 -0
  79. package/dist/Shared/ErkLocationInput/ErkLocationInput.d.ts +15 -0
  80. package/dist/Shared/ErkLocationInput/ErkLocationInput.js +499 -0
  81. package/dist/Shared/ErkLocationInput/ErkLocationInput.module.css +115 -0
  82. package/dist/Shared/ErkNumberField/ErkNumberField.d.ts +42 -0
  83. package/dist/Shared/ErkNumberField/ErkNumberField.js +170 -0
  84. package/dist/constants/FormStepTypes.d.ts +5 -1
  85. package/dist/constants/FormStepTypes.js +4 -0
  86. package/package.json +2 -1
@@ -0,0 +1,170 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { NumberField as BaseNumberField } from '@base-ui/react/number-field';
4
+ import { FormControl, FormHelperText, InputAdornment, InputLabel, OutlinedInput, styled, useTheme, } from '@mui/material';
5
+ import { alpha } from '@mui/material/styles';
6
+ import AddIcon from '../../Icons/AddIcon';
7
+ import RemoveIcon from '../../Icons/RemoveIcon';
8
+ // ---------------------------------------------------------------------------
9
+ // Styled FormControl shell — same conventions as ErkTextField / ErkSelect
10
+ // ---------------------------------------------------------------------------
11
+ const StyledFormControl = styled(FormControl)(({ theme, size }) => ({
12
+ '& .Erk-MuiOutlinedInput-root': {
13
+ borderRadius: 10,
14
+ backgroundColor: theme.palette.stepBackgroundColor.default,
15
+ minHeight: size === 'small' ? 31 : size === 'medium' ? 40 : undefined,
16
+ '&.Mui-focused .Erk-MuiOutlinedInput-notchedOutline': {
17
+ borderColor: theme.palette.primary.main,
18
+ borderWidth: 2,
19
+ },
20
+ // ErkNF-readOnly is set manually via className — Mui-readOnly is unreliable here
21
+ '&:hover:not(.ErkNF-readOnly) .Erk-MuiOutlinedInput-notchedOutline': {
22
+ borderColor: theme.palette.primary.main,
23
+ },
24
+ '&.ErkNF-readOnly.Mui-focused .Erk-MuiOutlinedInput-notchedOutline': {
25
+ borderColor: theme.palette.outline.main,
26
+ borderWidth: 1,
27
+ },
28
+ '&.ErkNF-readOnly': {
29
+ cursor: 'default',
30
+ '& input': { cursor: 'default' },
31
+ },
32
+ '& .Erk-MuiOutlinedInput-notchedOutline': {
33
+ borderRadius: 10,
34
+ borderColor: theme.palette.outline.main,
35
+ '& legend': { fontSize: '0.75rem' },
36
+ },
37
+ },
38
+ '& .Erk-MuiOutlinedInput-root.Mui-error .Erk-MuiOutlinedInput-notchedOutline': {
39
+ borderColor: theme.palette.error.main,
40
+ },
41
+ '& .Erk-MuiOutlinedInput-root.Mui-error.Mui-focused .Erk-MuiOutlinedInput-notchedOutline': {
42
+ borderWidth: 2,
43
+ },
44
+ '& .Erk-MuiFormLabel-root': {
45
+ color: alpha(theme.palette.text.primary, 0.54),
46
+ },
47
+ '& label.Mui-focused': { color: theme.palette.primary.main },
48
+ '& label.Mui-error': { color: theme.palette.error.main },
49
+ '& .Erk-MuiFormLabel-root:not(.Erk-MuiInputLabel-shrink)': {
50
+ fontSize: '1rem',
51
+ transform: `translate(12px, ${size === 'small' ? 5 : 9}px) scale(1)`,
52
+ },
53
+ '& .Erk-MuiFormHelperText-root': {
54
+ color: theme.palette.helperText.primary,
55
+ minHeight: 20,
56
+ overflow: 'hidden',
57
+ textOverflow: 'ellipsis',
58
+ },
59
+ '& .Erk-MuiFormHelperText-root.Mui-error': { color: theme.palette.error.main },
60
+ '& input': {
61
+ fontSize: '1rem',
62
+ padding: '6px 12px',
63
+ lineHeight: size === 'small' ? '1.188em' : '1.75em',
64
+ height: size === 'small' ? '1.188em' : '1.75em',
65
+ color: theme.palette.text.primary,
66
+ MozAppearance: 'textfield',
67
+ '&::-webkit-outer-spin-button, &::-webkit-inner-spin-button': {
68
+ WebkitAppearance: 'none',
69
+ margin: 0,
70
+ },
71
+ },
72
+ }));
73
+ // ---------------------------------------------------------------------------
74
+ // SSR label-shrink hint — muiName='Input' lets FormControl know an input
75
+ // exists so it can compute the initial shrink state before hydration.
76
+ // ---------------------------------------------------------------------------
77
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
78
+ function SSRInitialFilled(_props) {
79
+ return null;
80
+ }
81
+ SSRInitialFilled.muiName = 'Input';
82
+ function SpinnerBtn({ children, style, ...rest }) {
83
+ const theme = useTheme();
84
+ const [hovered, setHovered] = React.useState(false);
85
+ const [active, setActive] = React.useState(false);
86
+ return (_jsx("button", { type: "button", tabIndex: -1, ...rest, onMouseEnter: (e) => {
87
+ setHovered(true);
88
+ rest.onMouseEnter?.(e);
89
+ }, onMouseLeave: (e) => {
90
+ setHovered(false);
91
+ setActive(false);
92
+ rest.onMouseLeave?.(e);
93
+ }, onMouseDown: (e) => {
94
+ setActive(true);
95
+ rest.onMouseDown?.(e);
96
+ }, onMouseUp: (e) => {
97
+ setActive(false);
98
+ rest.onMouseUp?.(e);
99
+ }, style: {
100
+ display: 'inline-flex',
101
+ alignItems: 'center',
102
+ justifyContent: 'center',
103
+ width: 22,
104
+ height: 22,
105
+ minWidth: 22,
106
+ padding: 0,
107
+ border: 'none',
108
+ borderRadius: 4,
109
+ background: active
110
+ ? alpha(theme.palette.primary.main, 0.16)
111
+ : hovered
112
+ ? alpha(theme.palette.primary.main, 0.08)
113
+ : 'transparent',
114
+ cursor: rest.disabled ? 'default' : 'pointer',
115
+ color: hovered && !rest.disabled ? theme.palette.primary.main : alpha(theme.palette.text.primary, 0.6),
116
+ flexShrink: 0,
117
+ transition: 'color 0.15s, background-color 0.15s',
118
+ opacity: rest.disabled ? 0.35 : 1,
119
+ pointerEvents: rest.disabled ? 'none' : undefined,
120
+ ...style,
121
+ }, children: children }));
122
+ }
123
+ // ---------------------------------------------------------------------------
124
+ // Implementation
125
+ // ---------------------------------------------------------------------------
126
+ function CustomErkNumberField({ value, onChange, label, min, max, step = 1, decimals, required, error, errorBorder, helperText, disabled, readOnly, placeholder, size = 'small', fullWidth = true, suffix, spinner = true, inputRef, }) {
127
+ const theme = useTheme();
128
+ const id = React.useId();
129
+ // Rounds to max decimals on spinner click / arrow key / wheel scrub.
130
+ // Typing restriction is handled separately inside slotProps.input.onChange.
131
+ const handleValueChange = (num) => {
132
+ if (num === null || decimals === undefined) {
133
+ onChange?.(num);
134
+ return;
135
+ }
136
+ const factor = Math.pow(10, decimals);
137
+ onChange?.(Math.round(num * factor) / factor);
138
+ };
139
+ return (_jsxs(BaseNumberField.Root, { value: value ?? null, onValueChange: handleValueChange, min: min, max: max, step: step, format: decimals !== undefined ? { minimumFractionDigits: 0, maximumFractionDigits: decimals } : undefined, disabled: disabled, readOnly: readOnly, ref: inputRef, render: (rootProps, rootState) => (_jsx(StyledFormControl, { ref: rootProps.ref, size: size, disabled: rootState.disabled, required: required, error: error && !!errorBorder, variant: "outlined", fullWidth: fullWidth, children: rootProps.children })), children: [_jsx(SSRInitialFilled, { value: value ?? undefined }), label && (_jsx(InputLabel, { htmlFor: id, size: size === 'small' ? 'small' : undefined, disabled: disabled, children: label })), _jsx(BaseNumberField.Input, { id: id, render: (inputProps, inputState) => {
140
+ return (_jsx(OutlinedInput, { label: label, className: readOnly ? 'ErkNF-readOnly' : undefined, inputRef: inputProps.ref, value: inputState.inputValue, onBlur: inputProps.onBlur, onChange: inputProps.onChange, onKeyUp: inputProps.onKeyUp, onKeyDown: inputProps.onKeyDown, onFocus: inputProps.onFocus, placeholder: placeholder, slotProps: {
141
+ input: {
142
+ ...inputProps, // Base UI handlers + ref + aria attrs
143
+ },
144
+ }, endAdornment: suffix || spinner ? (_jsxs(InputAdornment, { position: "end", sx: { gap: '2px', mr: '2px', alignItems: 'center' }, children: [suffix && (_jsx("span", { style: {
145
+ fontSize: 13,
146
+ fontWeight: 600,
147
+ color: theme.palette.primary.main,
148
+ userSelect: 'none',
149
+ whiteSpace: 'nowrap',
150
+ marginRight: spinner ? 2 : 4,
151
+ }, children: suffix })), spinner && (_jsxs(_Fragment, { children: [_jsx(BaseNumberField.Decrement, { render: (decProps) => {
152
+ const { disabled: baseDisabled, ...restDec } = decProps;
153
+ return (_jsx(SpinnerBtn, { ...restDec, disabled: !!readOnly || !!baseDisabled, children: _jsx(RemoveIcon, { size: 14 }) }));
154
+ } }), _jsx(BaseNumberField.Increment, { render: (incProps) => {
155
+ const { disabled: baseDisabled, ...restInc } = incProps;
156
+ return (_jsx(SpinnerBtn, { ...restInc, disabled: !!readOnly || !!baseDisabled, children: _jsx(AddIcon, { size: 14 }) }));
157
+ } })] }))] })) : undefined, sx: { pr: suffix || spinner ? 0 : undefined } }));
158
+ } }), helperText && _jsx(FormHelperText, { error: error && !!errorBorder, children: helperText })] }));
159
+ }
160
+ /**
161
+ * Pure number input built on Base UI NumberField + MUI styling.
162
+ * No form-step system dependency.
163
+ * Class wrapper for react-hook-form ref compatibility.
164
+ */
165
+ class ErkNumberField extends React.Component {
166
+ render() {
167
+ return _jsx(CustomErkNumberField, { ...this.props });
168
+ }
169
+ }
170
+ export default ErkNumberField;
@@ -21,7 +21,11 @@ export declare enum FormStepTypes {
21
21
  COLLAPSIBLE = "COLLAPSIBLE",
22
22
  MAPPER = "MAPPER",
23
23
  ENTITYVALUEPICKER = "ENTITYVALUEPICKER",
24
- API_SELECTOR = "API_SELECTOR"
24
+ API_SELECTOR = "API_SELECTOR",
25
+ LOCATION = "LOCATION",
26
+ NUMBER = "NUMBER",
27
+ CALENDAR = "CALENDAR",
28
+ BOOKING = "BOOKING"
25
29
  }
26
30
  export declare enum OptionTypes {
27
31
  DEFAULT = "DEFAULT",
@@ -25,6 +25,10 @@ export var FormStepTypes;
25
25
  FormStepTypes["MAPPER"] = "MAPPER";
26
26
  FormStepTypes["ENTITYVALUEPICKER"] = "ENTITYVALUEPICKER";
27
27
  FormStepTypes["API_SELECTOR"] = "API_SELECTOR";
28
+ FormStepTypes["LOCATION"] = "LOCATION";
29
+ FormStepTypes["NUMBER"] = "NUMBER";
30
+ FormStepTypes["CALENDAR"] = "CALENDAR";
31
+ FormStepTypes["BOOKING"] = "BOOKING";
28
32
  })(FormStepTypes || (FormStepTypes = {}));
29
33
  export var OptionTypes;
30
34
  (function (OptionTypes) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arquimedes.co/eureka-forms",
3
3
  "repository": "git://github.com/Arquimede5/Eureka-Forms.git",
4
- "version":"3.0.47-test",
4
+ "version":"3.0.49-new-steps",
5
5
  "scripts": {
6
6
  "watch": "tsgo --noEmit --watch --project tsconfig.app.json",
7
7
  "start": "vite",
@@ -16,6 +16,7 @@
16
16
  "build-storybook": "storybook build"
17
17
  },
18
18
  "dependencies": {
19
+ "@base-ui/react": "^1.6.0",
19
20
  "@reduxjs/toolkit": "2.11.2",
20
21
  "axios": "1.16.0",
21
22
  "date-fns": "4.1.0",