@simplybusiness/mobius 6.4.2 → 6.4.4
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 +12 -0
- package/dist/cjs/index.js +116 -81
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/index.js +117 -82
- package/dist/types/src/components/MaskedField/MaskedField.d.ts +22 -9
- package/package.json +1 -1
- package/src/components/MaskedField/MaskedField.tsx +289 -118
- package/src/components/Select/Select.css +13 -1
- package/src/components/Select/Select.tsx +4 -3
- package/src/components/TextField/TextField.css +1 -1
- package/dist/types/src/components/MaskedField/MaskedField.test.d.ts +0 -1
- package/src/components/MaskedField/MaskedField.test.tsx +0 -687
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 6.4.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3da43d9: Show "placeholder" option in paler colour for required select inputs
|
|
8
|
+
|
|
9
|
+
## 6.4.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 2a09422: Change colour of input text to be darker then placeholder
|
|
14
|
+
|
|
3
15
|
## 6.4.2
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/cjs/index.js
CHANGED
|
@@ -3902,9 +3902,9 @@ var Segment = (props) => {
|
|
|
3902
3902
|
Segment.displayName = "Segment";
|
|
3903
3903
|
|
|
3904
3904
|
// src/components/Select/Select.tsx
|
|
3905
|
+
var import_icons12 = require("@simplybusiness/icons");
|
|
3905
3906
|
var import_dedupe43 = __toESM(require("classnames/dedupe"));
|
|
3906
3907
|
var import_react66 = require("react");
|
|
3907
|
-
var import_icons12 = require("@simplybusiness/icons");
|
|
3908
3908
|
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
3909
3909
|
var Select = (0, import_react66.forwardRef)((props, ref) => {
|
|
3910
3910
|
const {
|
|
@@ -3973,6 +3973,7 @@ var Select = (0, import_react66.forwardRef)((props, ref) => {
|
|
|
3973
3973
|
"aria-invalid": !!errorMessage,
|
|
3974
3974
|
"aria-describedby": describedBy,
|
|
3975
3975
|
"aria-required": isRequired,
|
|
3976
|
+
required: isRequired,
|
|
3976
3977
|
onChange: handleChange
|
|
3977
3978
|
}
|
|
3978
3979
|
),
|
|
@@ -4575,98 +4576,132 @@ ExpandableText.displayName = "ExpandableText";
|
|
|
4575
4576
|
var import_react83 = require("react");
|
|
4576
4577
|
var import_react_imask = require("react-imask");
|
|
4577
4578
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
4578
|
-
var
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
4583
|
-
|
|
4584
|
-
|
|
4585
|
-
|
|
4586
|
-
|
|
4579
|
+
var useAcceptHandler = (onChange, useMaskedValue, name) => {
|
|
4580
|
+
return (0, import_react83.useCallback)(
|
|
4581
|
+
(maskedValue, maskInstance) => {
|
|
4582
|
+
if (!onChange) {
|
|
4583
|
+
return;
|
|
4584
|
+
}
|
|
4585
|
+
const formattedValue = maskedValue;
|
|
4586
|
+
const rawValue = maskInstance.unmaskedValue;
|
|
4587
|
+
const valueToEmit = useMaskedValue ? formattedValue : rawValue;
|
|
4588
|
+
onChange({
|
|
4589
|
+
target: { name, value: valueToEmit }
|
|
4590
|
+
});
|
|
4587
4591
|
},
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
value: valueToEmit,
|
|
4591
|
-
name
|
|
4592
|
-
}
|
|
4593
|
-
};
|
|
4592
|
+
[onChange, useMaskedValue, name]
|
|
4593
|
+
);
|
|
4594
4594
|
};
|
|
4595
|
-
var
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
|
|
4602
|
-
|
|
4603
|
-
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4612
|
-
|
|
4613
|
-
|
|
4614
|
-
|
|
4595
|
+
var useCombinedRef = (imaskRef, forwardedRef) => {
|
|
4596
|
+
return (0, import_react83.useCallback)(
|
|
4597
|
+
(element) => {
|
|
4598
|
+
imaskRef.current = element;
|
|
4599
|
+
if (typeof forwardedRef === "function") {
|
|
4600
|
+
forwardedRef(element);
|
|
4601
|
+
} else if (forwardedRef) {
|
|
4602
|
+
forwardedRef.current = element;
|
|
4603
|
+
}
|
|
4604
|
+
},
|
|
4605
|
+
[imaskRef, forwardedRef]
|
|
4606
|
+
);
|
|
4607
|
+
};
|
|
4608
|
+
var useBlurHandler = (onBlur, maskRef, useMaskedValue, name) => {
|
|
4609
|
+
return (0, import_react83.useCallback)(
|
|
4610
|
+
(event) => {
|
|
4611
|
+
if (!onBlur || !maskRef.current) {
|
|
4612
|
+
return;
|
|
4613
|
+
}
|
|
4614
|
+
const formattedValue = maskRef.current.value;
|
|
4615
|
+
const rawValue = maskRef.current.unmaskedValue;
|
|
4616
|
+
const valueToEmit = useMaskedValue ? formattedValue : rawValue;
|
|
4617
|
+
onBlur({
|
|
4618
|
+
...event,
|
|
4619
|
+
target: { ...event.target, name, value: valueToEmit }
|
|
4620
|
+
});
|
|
4621
|
+
},
|
|
4622
|
+
[onBlur, maskRef, useMaskedValue, name]
|
|
4623
|
+
);
|
|
4624
|
+
};
|
|
4625
|
+
var ControlledMaskedField = ({
|
|
4626
|
+
mask,
|
|
4627
|
+
useMaskedValue = false,
|
|
4628
|
+
value,
|
|
4629
|
+
onChange,
|
|
4630
|
+
onBlur,
|
|
4631
|
+
name,
|
|
4632
|
+
forwardedRef,
|
|
4633
|
+
...textFieldProps
|
|
4634
|
+
}) => {
|
|
4635
|
+
const onAccept = useAcceptHandler(onChange, useMaskedValue, name);
|
|
4636
|
+
const { ref: imaskRef, maskRef, setValue } = (0, import_react_imask.useIMask)(mask, { onAccept });
|
|
4637
|
+
const combinedRef = useCombinedRef(imaskRef, forwardedRef);
|
|
4638
|
+
const handleBlur = useBlurHandler(onBlur, maskRef, useMaskedValue, name);
|
|
4615
4639
|
(0, import_react83.useEffect)(() => {
|
|
4616
|
-
|
|
4617
|
-
|
|
4618
|
-
setValue(value);
|
|
4619
|
-
}
|
|
4620
|
-
}, [value, setValue]);
|
|
4621
|
-
const handleChange = (event) => {
|
|
4622
|
-
if (onChange) {
|
|
4623
|
-
onChange(
|
|
4624
|
-
createSyntheticEvent({
|
|
4625
|
-
event,
|
|
4626
|
-
useMaskedValue,
|
|
4627
|
-
maskedValue,
|
|
4628
|
-
unmaskedValue,
|
|
4629
|
-
name: textFieldProps.name
|
|
4630
|
-
})
|
|
4631
|
-
);
|
|
4632
|
-
}
|
|
4633
|
-
};
|
|
4634
|
-
const handleBlur = (event) => {
|
|
4635
|
-
if (onBlur) {
|
|
4636
|
-
onBlur(
|
|
4637
|
-
createSyntheticEvent({
|
|
4638
|
-
event,
|
|
4639
|
-
useMaskedValue,
|
|
4640
|
-
maskedValue,
|
|
4641
|
-
unmaskedValue,
|
|
4642
|
-
name: textFieldProps.name
|
|
4643
|
-
})
|
|
4644
|
-
);
|
|
4640
|
+
if (!maskRef.current) {
|
|
4641
|
+
return;
|
|
4645
4642
|
}
|
|
4646
|
-
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
|
|
4643
|
+
const stringValue = value.toString();
|
|
4644
|
+
const currentMasked = maskRef.current.value;
|
|
4645
|
+
const currentUnmasked = maskRef.current.unmaskedValue;
|
|
4646
|
+
if (currentMasked !== stringValue && currentUnmasked !== stringValue) {
|
|
4647
|
+
setValue(stringValue);
|
|
4650
4648
|
}
|
|
4651
|
-
|
|
4652
|
-
|
|
4653
|
-
|
|
4654
|
-
|
|
4655
|
-
|
|
4656
|
-
|
|
4649
|
+
}, [value, maskRef, setValue, imaskRef]);
|
|
4650
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
4651
|
+
TextField,
|
|
4652
|
+
{
|
|
4653
|
+
...textFieldProps,
|
|
4654
|
+
ref: combinedRef,
|
|
4655
|
+
name,
|
|
4656
|
+
onBlur: handleBlur
|
|
4657
4657
|
}
|
|
4658
|
-
|
|
4658
|
+
);
|
|
4659
|
+
};
|
|
4660
|
+
var UncontrolledMaskedField = ({
|
|
4661
|
+
mask,
|
|
4662
|
+
useMaskedValue = false,
|
|
4663
|
+
defaultValue,
|
|
4664
|
+
onChange,
|
|
4665
|
+
onBlur,
|
|
4666
|
+
name,
|
|
4667
|
+
forwardedRef,
|
|
4668
|
+
...textFieldProps
|
|
4669
|
+
}) => {
|
|
4670
|
+
const onAccept = useAcceptHandler(onChange, useMaskedValue, name);
|
|
4671
|
+
const { ref: imaskRef, maskRef } = (0, import_react_imask.useIMask)(mask, { onAccept });
|
|
4672
|
+
const combinedRef = useCombinedRef(imaskRef, forwardedRef);
|
|
4673
|
+
const handleBlur = useBlurHandler(onBlur, maskRef, useMaskedValue, name);
|
|
4659
4674
|
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
4660
4675
|
TextField,
|
|
4661
4676
|
{
|
|
4662
4677
|
...textFieldProps,
|
|
4663
|
-
ref:
|
|
4664
|
-
|
|
4665
|
-
onChange: handleChange,
|
|
4678
|
+
ref: combinedRef,
|
|
4679
|
+
name,
|
|
4666
4680
|
onBlur: handleBlur,
|
|
4667
|
-
|
|
4668
|
-
"aria-label": ariaLabel
|
|
4681
|
+
defaultValue: defaultValue?.toString()
|
|
4669
4682
|
}
|
|
4670
4683
|
);
|
|
4684
|
+
};
|
|
4685
|
+
var MaskedField = (0, import_react83.forwardRef)((props, forwardedRef) => {
|
|
4686
|
+
const { value, defaultValue, ...rest } = props;
|
|
4687
|
+
if ("value" in props) {
|
|
4688
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
4689
|
+
ControlledMaskedField,
|
|
4690
|
+
{
|
|
4691
|
+
...rest,
|
|
4692
|
+
value: value ?? "",
|
|
4693
|
+
forwardedRef
|
|
4694
|
+
}
|
|
4695
|
+
);
|
|
4696
|
+
} else {
|
|
4697
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
4698
|
+
UncontrolledMaskedField,
|
|
4699
|
+
{
|
|
4700
|
+
...rest,
|
|
4701
|
+
defaultValue,
|
|
4702
|
+
forwardedRef
|
|
4703
|
+
}
|
|
4704
|
+
);
|
|
4705
|
+
}
|
|
4671
4706
|
});
|
|
4672
4707
|
MaskedField.displayName = "MaskedField";
|