@weareconceptstudio/form 0.1.4 → 0.1.6

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.
@@ -9,7 +9,14 @@ const FormItem = ({ label, name, children, className, errorKey, required = true,
9
9
  const { translate } = useTranslation();
10
10
  const { formState } = useInput({
11
11
  name,
12
- rules: useRules({ rules, required, requiredMessage }),
12
+ rules: useRules({
13
+ rules,
14
+ required,
15
+ requiredMessage,
16
+ errorKey: errorKey || label,
17
+ // @ts-ignore
18
+ childType: children?.type?.displayName || children?.type?.name || '',
19
+ }),
13
20
  errorKey: errorKey || label,
14
21
  });
15
22
  const hasError = !!lodashGet(formState.errors, name);
@@ -7,5 +7,11 @@ export function validationPatterns({ type, pattern, message, translate }: {
7
7
  value: any;
8
8
  message: any;
9
9
  };
10
- export function useRules(props: any): any[];
10
+ export function useRules({ rules, required, requiredMessage, childType, errorKey }: {
11
+ rules: any;
12
+ required: any;
13
+ requiredMessage: any;
14
+ childType: any;
15
+ errorKey: any;
16
+ }): any[];
11
17
  export function mapValidationRules(errorKey: any, rules: any): any;
@@ -1,7 +1,6 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import { useTranslation } from '@weareconceptstudio/core';
3
3
  export const validationPatterns = ({ type, pattern, message, translate }) => {
4
- console.log({ type });
5
4
  switch (type) {
6
5
  case 'email':
7
6
  return { value: /^[^\s@]+@[^\s@]+\.[^\s@]+$/g, message: message || translate('validateMessages.email') };
@@ -13,20 +12,23 @@ export const validationPatterns = ({ type, pattern, message, translate }) => {
13
12
  return { value: pattern, message };
14
13
  }
15
14
  };
16
- export const useRules = (props) => {
15
+ export const useRules = ({ rules, required, requiredMessage, childType, errorKey }) => {
16
+ const { translate } = useTranslation();
17
17
  return useMemo(() => {
18
- let r = [...props.rules];
19
- if (props.required) {
20
- r.unshift({ required: true, message: props.requiredMessage });
18
+ let r = [...rules];
19
+ if (required) {
20
+ r.unshift({ required: true, message: requiredMessage });
21
+ if (childType.toLowerCase() === 'input' || childType.toLowerCase() === 'textarea') {
22
+ r.push({
23
+ validator: (value) => {
24
+ return value?.trim().length > 0 || translate('validateMessages.whitespace', { errorKey: translate(errorKey) });
25
+ },
26
+ });
27
+ }
21
28
  }
22
- // TODO: Whitespace
23
- // validator: (value) => {
24
- // return !!value.trim();
25
- // },
26
29
  return r;
27
- }, [props]);
30
+ }, [rules, required, requiredMessage, childType, errorKey]);
28
31
  };
29
- // TODO: rule messages from translations
30
32
  export const mapValidationRules = (errorKey, rules) => {
31
33
  const { translate } = useTranslation();
32
34
  return rules?.reduce((acc, rule) => {
@@ -31,15 +31,14 @@ const FormStyle = createGlobalStyle `${css `
31
31
  }
32
32
  }
33
33
 
34
- .react-select__menu,
35
- .react-select__menu-list {
34
+ /* .react-select__menu-list {
36
35
  scrollbar-width: none;
37
36
  -ms-overflow-style: none;
38
37
 
39
38
  &::-webkit-scrollbar {
40
39
  display: none;
41
40
  }
42
- }
41
+ } */
43
42
 
44
43
  input::-webkit-outer-spin-button,
45
44
  input::-webkit-inner-spin-button,
@@ -286,7 +285,7 @@ const FormStyle = createGlobalStyle `${css `
286
285
  .react-select__option {
287
286
  color: var(--form_selectOptionColor);
288
287
  line-height: var(--form_lineHeight);
289
- font-size: var(--form_p2);
288
+ font-size: var(--form_p3);
290
289
  font-family: var(--form_Font);
291
290
  font-weight: 500;
292
291
  padding: var(--form_inputPadTBL) var(--form_inputPadR) var(--form_inputPadTBL) var(--form_inputPadTBL);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weareconceptstudio/form",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Concept Studio Form",
5
5
  "author": "Concept Studio",
6
6
  "license": "ISC",