@apia/validations2-component 5.2.0 → 5.2.1

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.
@@ -13,8 +13,9 @@ type TValidateSelect = {
13
13
  onChange?: TChangeEventHandler<string>;
14
14
  options?: TOption[];
15
15
  defaultValue?: string;
16
+ searchable?: boolean;
16
17
  };
17
- declare const ValidatedSelect: (({ className, disabled, label, path, labelProps, hiddenFallback, onChange, options, defaultValue, }: TValidateSelect) => react_jsx_runtime.JSX.Element) & {
18
+ declare const ValidatedSelect: (({ className, disabled, label, path, labelProps, hiddenFallback, onChange, options, defaultValue, searchable, }: TValidateSelect) => react_jsx_runtime.JSX.Element) & {
18
19
  displayName: string;
19
20
  };
20
21
 
@@ -23,7 +23,8 @@ const ValidatedSelect = observer(
23
23
  hiddenFallback,
24
24
  onChange,
25
25
  options,
26
- defaultValue
26
+ defaultValue,
27
+ searchable
27
28
  }) => {
28
29
  const store = useValidations();
29
30
  const field = store.useField(path, defaultValue);
@@ -60,7 +61,9 @@ const ValidatedSelect = observer(
60
61
  properties: {
61
62
  options: effectiveOptions,
62
63
  disabled: Boolean(disabled || field.disabled),
64
+ searchable,
63
65
  value: effectiveValue,
66
+ onForce: searchable === false ? () => true : void 0,
64
67
  onChange: async (value) => {
65
68
  const ev = new ChangeEvent(value);
66
69
  await onChange?.(ev);
@@ -1 +1 @@
1
- {"version":3,"file":"ValidatedSelect.js","sources":["../src/ValidatedSelect.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite';\r\nimport { useValidations } from './Context';\r\nimport { Autocomplete, FieldLabel, TFieldLabel } from '@apia/components';\r\nimport { ChangeEvent, TLabel, TChangeEventHandler, TOption } from '@apia/util';\r\nimport { ReactNode } from 'react';\r\n\r\nexport type TValidateSelect = {\r\n className?: string;\r\n disabled?: boolean;\r\n path: string;\r\n label: 'nolabel' | TLabel;\r\n labelProps?: Pick<TFieldLabel, 'avoidSemicolon' | 'requiredMarkPosition'>;\r\n hiddenFallback?: ReactNode;\r\n onChange?: TChangeEventHandler<string>;\r\n options?: TOption[];\r\n defaultValue?: string;\r\n};\r\n\r\nfunction normalizeOptionValue(value: unknown) {\r\n return value == null ? '' : String(value);\r\n}\r\n\r\nfunction normalizeSelectValue(value: unknown) {\r\n if (value && typeof value === 'object' && 'value' in value) {\r\n return normalizeOptionValue((value as { value?: unknown }).value);\r\n }\r\n\r\n return normalizeOptionValue(value);\r\n}\r\n\r\nexport const ValidatedSelect = observer(\r\n ({\r\n className,\r\n disabled,\r\n label,\r\n path,\r\n labelProps,\r\n hiddenFallback,\r\n onChange,\r\n options,\r\n defaultValue,\r\n }: TValidateSelect) => {\r\n const store = useValidations();\r\n const field = store.useField(path, defaultValue);\r\n const effectiveOptions = ((options ?? field.options ?? []) as TOption[]).map(\r\n (option) => ({\r\n ...option,\r\n value: normalizeOptionValue(option.value),\r\n }),\r\n );\r\n\r\n const selectedValue = normalizeSelectValue(field.value);\r\n const firstOptionValue = effectiveOptions[0]?.value;\r\n const hasEmptyOption = effectiveOptions.some((option) => option.value === '');\r\n const effectiveValue =\r\n firstOptionValue !== undefined &&\r\n (field.value === undefined || (selectedValue === '' && !hasEmptyOption))\r\n ? firstOptionValue\r\n : selectedValue;\r\n\r\n if (field.value !== effectiveValue) {\r\n field.setValue(effectiveValue, false);\r\n }\r\n\r\n if (field.hidden) {\r\n return <>{hiddenFallback ?? null}</>;\r\n }\r\n\r\n return (\r\n <FieldLabel\r\n {...labelProps}\r\n label={label === 'nolabel' ? '' : label.text}\r\n title={label === 'nolabel' ? '' : label.title}\r\n required={field.required}\r\n className={`${className || ''} ${field.isTouched ? 'field__touched' : ''} select`}\r\n error={field.error}\r\n avoidSemicolon={label === 'nolabel'}\r\n >\r\n <Autocomplete\r\n ref={field.ref}\r\n properties={{\r\n options: effectiveOptions,\r\n disabled: Boolean(disabled || field.disabled),\r\n value: effectiveValue,\r\n onChange: async (value) => {\r\n const ev = new ChangeEvent(value);\r\n\r\n await onChange?.(ev);\r\n if (!ev.defaultPrevented) {\r\n field.setValue(value);\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n }}\r\n />\r\n </FieldLabel>\r\n );\r\n },\r\n);\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValidatedSelect.js","sources":["../src/ValidatedSelect.tsx"],"sourcesContent":["import { observer } from 'mobx-react-lite';\r\nimport { useValidations } from './Context';\r\nimport { Autocomplete, FieldLabel, TFieldLabel } from '@apia/components';\r\nimport { ChangeEvent, TLabel, TChangeEventHandler, TOption } from '@apia/util';\r\nimport { ReactNode } from 'react';\r\n\r\nexport type TValidateSelect = {\r\n className?: string;\r\n disabled?: boolean;\r\n path: string;\r\n label: 'nolabel' | TLabel;\r\n labelProps?: Pick<TFieldLabel, 'avoidSemicolon' | 'requiredMarkPosition'>;\r\n hiddenFallback?: ReactNode;\r\n onChange?: TChangeEventHandler<string>;\r\n options?: TOption[];\r\n defaultValue?: string;\r\n searchable?: boolean;\r\n};\r\n\r\nfunction normalizeOptionValue(value: unknown) {\r\n return value == null ? '' : String(value);\r\n}\r\n\r\nfunction normalizeSelectValue(value: unknown) {\r\n if (value && typeof value === 'object' && 'value' in value) {\r\n return normalizeOptionValue((value as { value?: unknown }).value);\r\n }\r\n\r\n return normalizeOptionValue(value);\r\n}\r\n\r\nexport const ValidatedSelect = observer(\r\n ({\r\n className,\r\n disabled,\r\n label,\r\n path,\r\n labelProps,\r\n hiddenFallback,\r\n onChange,\r\n options,\r\n defaultValue,\r\n searchable,\r\n }: TValidateSelect) => {\r\n const store = useValidations();\r\n const field = store.useField(path, defaultValue);\r\n const effectiveOptions = ((options ?? field.options ?? []) as TOption[]).map(\r\n (option) => ({\r\n ...option,\r\n value: normalizeOptionValue(option.value),\r\n }),\r\n );\r\n\r\n const selectedValue = normalizeSelectValue(field.value);\r\n const firstOptionValue = effectiveOptions[0]?.value;\r\n const hasEmptyOption = effectiveOptions.some((option) => option.value === '');\r\n const effectiveValue =\r\n firstOptionValue !== undefined &&\r\n (field.value === undefined || (selectedValue === '' && !hasEmptyOption))\r\n ? firstOptionValue\r\n : selectedValue;\r\n\r\n if (field.value !== effectiveValue) {\r\n field.setValue(effectiveValue, false);\r\n }\r\n\r\n if (field.hidden) {\r\n return <>{hiddenFallback ?? null}</>;\r\n }\r\n\r\n return (\r\n <FieldLabel\r\n {...labelProps}\r\n label={label === 'nolabel' ? '' : label.text}\r\n title={label === 'nolabel' ? '' : label.title}\r\n required={field.required}\r\n className={`${className || ''} ${field.isTouched ? 'field__touched' : ''} select`}\r\n error={field.error}\r\n avoidSemicolon={label === 'nolabel'}\r\n >\r\n <Autocomplete\r\n ref={field.ref}\r\n properties={{\r\n options: effectiveOptions,\r\n disabled: Boolean(disabled || field.disabled),\r\n searchable,\r\n value: effectiveValue,\r\n onForce: searchable === false ? () => true : undefined,\r\n onChange: async (value) => {\r\n const ev = new ChangeEvent(value);\r\n\r\n await onChange?.(ev);\r\n if (!ev.defaultPrevented) {\r\n field.setValue(value);\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n }}\r\n />\r\n </FieldLabel>\r\n );\r\n },\r\n);\r\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apia/validations2-component",
3
- "version": "5.2.0",
3
+ "version": "5.2.1",
4
4
  "sideEffects": false,
5
5
  "author": "Alexis Leite <alexisleite@live.com>",
6
6
  "main": "dist/index.js",
@@ -30,11 +30,11 @@
30
30
  "registry": "https://registry.npmjs.org/"
31
31
  },
32
32
  "dependencies": {
33
- "@apia/components": "^5.2.0",
34
- "@apia/theme": "^5.2.0",
35
- "@apia/validations2-controller": "^5.2.0",
33
+ "@apia/components": "^5.2.1",
34
+ "@apia/theme": "^5.2.1",
35
+ "@apia/validations2-controller": "^5.2.1",
36
36
  "mobx": "6.12.3",
37
37
  "mobx-react-lite": "3.4.3"
38
38
  },
39
- "gitHead": "f3cb413783ab5cb9a35a7398003e6a5e27a8cbac"
39
+ "gitHead": "0f50f1b97ab48cd6fb2f47195cca1b9d93fa80fa"
40
40
  }