@rolster/react-components 18.15.23 → 18.15.31

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 (48) hide show
  1. package/dist/cjs/index.js +113 -100
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/es/index.js +113 -100
  4. package/dist/es/index.js.map +1 -1
  5. package/dist/esm/components/organisms/Datatable/Datatable.d.ts +2 -2
  6. package/dist/esm/components/organisms/Datatable/Datatable.js +1 -1
  7. package/dist/esm/components/organisms/Datatable/Datatable.js.map +1 -1
  8. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.d.ts +35 -4
  9. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.js +20 -17
  10. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.js.map +1 -1
  11. package/dist/esm/components/organisms/FieldAutocomplete/{FieldAutocompleteHook.d.ts → FieldAutocompleteController.d.ts} +7 -6
  12. package/dist/esm/components/organisms/FieldAutocomplete/{FieldAutocompleteHook.js → FieldAutocompleteController.js} +28 -26
  13. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocompleteController.js.map +1 -0
  14. package/dist/esm/components/organisms/FieldDate/FieldDate.d.ts +3 -2
  15. package/dist/esm/components/organisms/FieldDate/FieldDate.js +3 -3
  16. package/dist/esm/components/organisms/FieldDate/FieldDate.js.map +1 -1
  17. package/dist/esm/components/organisms/FieldSelect/FieldSelect.d.ts +36 -5
  18. package/dist/esm/components/organisms/FieldSelect/FieldSelect.js +17 -14
  19. package/dist/esm/components/organisms/FieldSelect/FieldSelect.js.map +1 -1
  20. package/dist/esm/components/organisms/FieldSelect/FieldSelectController.d.ts +25 -0
  21. package/dist/esm/components/organisms/FieldSelect/FieldSelectController.js +72 -0
  22. package/dist/esm/components/organisms/FieldSelect/FieldSelectController.js.map +1 -0
  23. package/dist/esm/components/organisms/PickerDate/PickerDate.d.ts +1 -1
  24. package/dist/esm/components/organisms/PickerDate/PickerDate.js.map +1 -1
  25. package/dist/esm/controllers/DatatableController.d.ts +6 -0
  26. package/dist/esm/controllers/DatatableController.js +24 -0
  27. package/dist/esm/controllers/DatatableController.js.map +1 -0
  28. package/dist/esm/{hooks/ListControlHook.d.ts → controllers/ListController.d.ts} +9 -8
  29. package/dist/esm/{hooks/ListControlHook.js → controllers/ListController.js} +12 -11
  30. package/dist/esm/controllers/ListController.js.map +1 -0
  31. package/dist/esm/controllers/index.d.ts +2 -0
  32. package/dist/esm/controllers/index.js +3 -0
  33. package/dist/esm/controllers/index.js.map +1 -0
  34. package/dist/esm/index.d.ts +2 -2
  35. package/dist/esm/index.js +2 -2
  36. package/dist/esm/index.js.map +1 -1
  37. package/package.json +7 -7
  38. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocompleteHook.js.map +0 -1
  39. package/dist/esm/components/organisms/FieldSelect/FieldSelectHook.d.ts +0 -24
  40. package/dist/esm/components/organisms/FieldSelect/FieldSelectHook.js +0 -70
  41. package/dist/esm/components/organisms/FieldSelect/FieldSelectHook.js.map +0 -1
  42. package/dist/esm/hooks/DatatableHook.d.ts +0 -6
  43. package/dist/esm/hooks/DatatableHook.js +0 -22
  44. package/dist/esm/hooks/DatatableHook.js.map +0 -1
  45. package/dist/esm/hooks/ListControlHook.js.map +0 -1
  46. package/dist/esm/hooks/index.d.ts +0 -2
  47. package/dist/esm/hooks/index.js +0 -3
  48. package/dist/esm/hooks/index.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { DatatableHook } from '../../../hooks';
1
+ import { DatatableController } from '../../../controllers';
2
2
  import { RlsComponent } from '../../definitions';
3
3
  interface DatatableCellProps extends RlsComponent {
4
4
  className?: string;
@@ -10,7 +10,7 @@ interface DatatableRecordProps extends RlsComponent {
10
10
  error?: boolean;
11
11
  }
12
12
  interface DatatableProps extends RlsComponent {
13
- datatable?: DatatableHook;
13
+ datatable?: DatatableController;
14
14
  footer?: JSX.Element;
15
15
  header?: JSX.Element;
16
16
  summary?: JSX.Element;
@@ -21,6 +21,6 @@ export function RlsDatatableData({ children, className, control, overflow }) {
21
21
  export function RlsDatatable({ children, datatable, footer, header, rlsTheme, summary }) {
22
22
  return (_jsxs("div", { className: renderClassStatus('rls-datatable', {
23
23
  scrolleable: datatable?.scrolleable
24
- }), "rls-theme": rlsTheme, children: [_jsxs("table", { children: [header && _jsx("thead", { className: "rls-datatable__thead", children: header }), _jsx("tbody", { ref: datatable?.bodyRef, className: "rls-datatable__tbody", children: children })] }), summary && _jsx("div", { className: "rls-datatable__tsummary", children: summary }), footer && _jsx("div", { className: "rls-datatable__tfooter", children: footer })] }));
24
+ }), "rls-theme": rlsTheme, children: [_jsxs("table", { children: [header && _jsx("thead", { className: "rls-datatable__thead", children: header }), _jsx("tbody", { ref: datatable?.tableRef, className: "rls-datatable__tbody", children: children })] }), summary && _jsx("div", { className: "rls-datatable__tsummary", children: summary }), footer && _jsx("div", { className: "rls-datatable__tfooter", children: footer })] }));
25
25
  }
26
26
  //# sourceMappingURL=Datatable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Datatable.js","sourceRoot":"","sources":["../../../../../src/components/organisms/Datatable/Datatable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsBzD,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAgB;IAC3D,OAAO,aAAI,SAAS,EAAC,uBAAuB,YAAE,QAAQ,GAAM,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,OAAO,EACY;IACnB,OAAO,CACL,aACE,SAAS,EAAE,iBAAiB,CAC1B,sBAAsB,EACtB,EAAE,OAAO,EAAE,EACX,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACN,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,KAAK,EACgB;IACrB,OAAO,CACL,aACE,SAAS,EAAE,iBAAiB,CAC1B,uBAAuB,EACvB,EAAE,KAAK,EAAE,EACT,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACN,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,KAAK,EACgB;IACrB,OAAO,CACL,cACE,SAAS,EAAE,iBAAiB,CAC1B,uBAAuB,EACvB,EAAE,KAAK,EAAE,EACT,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACW;IACnB,OAAO,CACL,aACE,SAAS,EAAE,iBAAiB,CAC1B,qBAAqB,EACrB,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACN,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACW;IACnB,OAAO,CACL,cACE,SAAS,EAAE,iBAAiB,CAC1B,qBAAqB,EACrB,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACQ;IACf,OAAO,CACL,eACE,SAAS,EAAE,iBAAiB,CAAC,eAAe,EAAE;YAC5C,WAAW,EAAE,SAAS,EAAE,WAAW;SACpC,CAAC,eACS,QAAQ,aAEnB,4BACG,MAAM,IAAI,gBAAO,SAAS,EAAC,sBAAsB,YAAE,MAAM,GAAS,EAEnE,gBAAO,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAC,sBAAsB,YAC7D,QAAQ,GACH,IACF,EAEP,OAAO,IAAI,cAAK,SAAS,EAAC,yBAAyB,YAAE,OAAO,GAAO,EAEnE,MAAM,IAAI,cAAK,SAAS,EAAC,wBAAwB,YAAE,MAAM,GAAO,IAC7D,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Datatable.js","sourceRoot":"","sources":["../../../../../src/components/organisms/Datatable/Datatable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsBzD,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAgB;IAC3D,OAAO,aAAI,SAAS,EAAC,uBAAuB,YAAE,QAAQ,GAAM,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,OAAO,EACY;IACnB,OAAO,CACL,aACE,SAAS,EAAE,iBAAiB,CAC1B,sBAAsB,EACtB,EAAE,OAAO,EAAE,EACX,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACN,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,KAAK,EACgB;IACrB,OAAO,CACL,aACE,SAAS,EAAE,iBAAiB,CAC1B,uBAAuB,EACvB,EAAE,KAAK,EAAE,EACT,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACN,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,KAAK,EACgB;IACrB,OAAO,CACL,cACE,SAAS,EAAE,iBAAiB,CAC1B,uBAAuB,EACvB,EAAE,KAAK,EAAE,EACT,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACW;IACnB,OAAO,CACL,aACE,SAAS,EAAE,iBAAiB,CAC1B,qBAAqB,EACrB,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACN,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACW;IACnB,OAAO,CACL,cACE,SAAS,EAAE,iBAAiB,CAC1B,qBAAqB,EACrB,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,SAAS,CACV,CAAC,IAAI,EAAE,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACQ;IACf,OAAO,CACL,eACE,SAAS,EAAE,iBAAiB,CAAC,eAAe,EAAE;YAC5C,WAAW,EAAE,SAAS,EAAE,WAAW;SACpC,CAAC,eACS,QAAQ,aAEnB,4BACG,MAAM,IAAI,gBAAO,SAAS,EAAC,sBAAsB,YAAE,MAAM,GAAS,EAEnE,gBAAO,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAC,sBAAsB,YAC9D,QAAQ,GACH,IACF,EAEP,OAAO,IAAI,cAAK,SAAS,EAAC,yBAAyB,YAAE,OAAO,GAAO,EAEnE,MAAM,IAAI,cAAK,SAAS,EAAC,wBAAwB,YAAE,MAAM,GAAO,IAC7D,CACP,CAAC;AACJ,CAAC"}
@@ -6,18 +6,49 @@ import './FieldAutocomplete.css';
6
6
  interface FieldAutocompleteProps<T = any, E extends Element<T> = Element<T>> extends RlsComponent {
7
7
  suggestions: E[];
8
8
  disabled?: boolean;
9
- formControl?: ReactControl<HTMLElement, T | undefined>;
9
+ formControl?: ReactControl<HTMLElement, T | undefined> | ReactControl<HTMLElement, NonNullable<T>>;
10
10
  hiddenIcon?: boolean;
11
11
  msgErrorDisabled?: boolean;
12
12
  onSearch?: (pattern: string) => void;
13
- onSelect?: (value: T) => void;
13
+ onAutocomplete?: (value: NonNullable<T>) => void;
14
14
  onValue?: (value?: T) => void;
15
15
  placeholder?: string;
16
16
  searching?: boolean;
17
+ value?: T;
17
18
  }
18
19
  interface FieldAutocompleteTemplateProps<T = any, E extends Element<T> = Element<T>> extends FieldAutocompleteProps<T, E> {
19
20
  render: (element: E) => ReactNode;
20
21
  }
21
- export declare function RlsFieldAutocompleteTemplate<T = any, E extends Element<T> = Element<T>>(props: FieldAutocompleteTemplateProps<T, E>): import("react/jsx-runtime").JSX.Element;
22
- export declare function RlsFieldAutocomplete<T = any>(props: FieldAutocompleteProps<T, AutocompleteElement<T>>): import("react/jsx-runtime").JSX.Element;
22
+ interface FormUndefinedTemplateProps<T = any> extends FieldAutocompleteTemplateProps<T, AutocompleteElement<T>> {
23
+ formControl: ReactControl<HTMLElement, T | undefined>;
24
+ value: undefined;
25
+ }
26
+ interface FormControlTemplateProps<T = any> extends FieldAutocompleteTemplateProps<T, AutocompleteElement<T>> {
27
+ formControl: ReactControl<HTMLElement, NonNullable<T>>;
28
+ value: NonNullable<T>;
29
+ }
30
+ interface FormVoidTemplateProps<T = any> extends Omit<FieldAutocompleteTemplateProps<T, AutocompleteElement<T>>, 'value'> {
31
+ formControl: ReactControl<HTMLElement, T | undefined>;
32
+ }
33
+ type SuggestionsTemplateProps<T = any> = Omit<FieldAutocompleteTemplateProps<T, AutocompleteElement<T>>, 'formControl' | 'value'>;
34
+ export declare function RlsFieldAutocompleteTemplate<T = any>(props: FormUndefinedTemplateProps<T>): JSX.Element;
35
+ export declare function RlsFieldAutocompleteTemplate<T = any>(props: FormControlTemplateProps<T>): JSX.Element;
36
+ export declare function RlsFieldAutocompleteTemplate<T = any>(props: FormVoidTemplateProps<T>): JSX.Element;
37
+ export declare function RlsFieldAutocompleteTemplate<T = any>(props: SuggestionsTemplateProps<T>): JSX.Element;
38
+ interface FormUndefinedProps<T = any> extends FieldAutocompleteProps<T, AutocompleteElement<T>> {
39
+ formControl: ReactControl<HTMLElement, T | undefined>;
40
+ value: undefined;
41
+ }
42
+ interface FormControlProps<T = any> extends FieldAutocompleteProps<T, AutocompleteElement<T>> {
43
+ formControl: ReactControl<HTMLElement, NonNullable<T>>;
44
+ value: NonNullable<T>;
45
+ }
46
+ interface FormVoidProps<T = any> extends Omit<FieldAutocompleteProps<T, AutocompleteElement<T>>, 'value'> {
47
+ formControl: ReactControl<HTMLElement, T | undefined>;
48
+ }
49
+ type SuggestionsProps<T = any> = Omit<FieldAutocompleteProps<T, AutocompleteElement<T>>, 'formControl' | 'value'>;
50
+ export declare function RlsFieldAutocomplete<T = any>(props: FormUndefinedProps<T>): JSX.Element;
51
+ export declare function RlsFieldAutocomplete<T = any>(props: FormControlProps<T>): JSX.Element;
52
+ export declare function RlsFieldAutocomplete<T = any>(props: FormVoidProps<T>): JSX.Element;
53
+ export declare function RlsFieldAutocomplete<T = any>(props: SuggestionsProps<T>): JSX.Element;
23
54
  export {};
@@ -3,25 +3,28 @@ import { reactI18n } from '../../../i18n';
3
3
  import { renderClassStatus } from '../../../helpers/css';
4
4
  import { RlsIcon, RlsProgressBar } from '../../atoms';
5
5
  import { RlsBallot, RlsMessageFormError } from '../../molecules';
6
- import { useFieldAutocomplete } from './FieldAutocompleteHook';
6
+ import { useFieldAutocomplete } from './FieldAutocompleteController';
7
7
  import './FieldAutocomplete.css';
8
8
  export function RlsFieldAutocompleteTemplate(props) {
9
- const fieldAutocomplete = useFieldAutocomplete(props);
10
- const { render, children, disabled, formControl, hiddenIcon, msgErrorDisabled, onSearch, placeholder, rlsTheme, searching } = props;
11
- return (_jsxs("div", { ref: fieldAutocomplete.listControl.contentRef, className: renderClassStatus('rls-field-box', {
12
- disabled,
13
- focused: fieldAutocomplete.listControl.focused,
14
- error: formControl?.wrong,
15
- selected: !!fieldAutocomplete.listControl.value
16
- }, 'rls-field-list rls-field-autocomplete'), "rls-theme": rlsTheme, children: [children && _jsx("label", { className: "rls-field-box__label", children: children }), _jsx("div", { className: "rls-field-box__component", children: _jsxs("div", { className: "rls-field-box__body", children: [_jsx("input", { className: "rls-field-list__control", readOnly: true, disabled: disabled, placeholder: placeholder, value: fieldAutocomplete.listControl.value, onClick: fieldAutocomplete.onClickControl }), !hiddenIcon && fieldAutocomplete.listControl.value && (_jsx("button", { className: "rls-field-list__action", disabled: disabled, onClick: fieldAutocomplete.onClickAction, children: _jsx(RlsIcon, { value: "trash-2" }) }))] }) }), !msgErrorDisabled && (_jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), _jsxs("div", { className: renderClassStatus('rls-field-list__suggestions', {
17
- visible: fieldAutocomplete.listControl.listIsVisible,
18
- hide: !fieldAutocomplete.listControl.listIsVisible,
19
- higher: fieldAutocomplete.listControl.higher
20
- }), children: [_jsx("div", { className: "rls-field-list__suggestions__body", children: _jsxs("ul", { ref: fieldAutocomplete.listControl.listRef, className: "rls-field-list__ul", children: [_jsxs("div", { className: "rls-field-list__ul__search", children: [_jsx("input", { ref: fieldAutocomplete.listControl.inputRef, className: "rls-field-list__ul__control", type: "text", placeholder: reactI18n('listInputPlaceholder'), value: fieldAutocomplete.pattern, onChange: ({ target: { value } }) => {
21
- fieldAutocomplete.setPattern(value);
22
- }, disabled: disabled || searching, onFocus: fieldAutocomplete.onFocusInput, onBlur: fieldAutocomplete.onBlurInput, onKeyDown: fieldAutocomplete.onKeydownInput }), onSearch && (_jsx("button", { disabled: disabled || searching, onClick: () => {
23
- onSearch(fieldAutocomplete.pattern);
24
- }, children: _jsx(RlsIcon, { value: "search" }) }))] }), searching && _jsx(RlsProgressBar, { indeterminate: true }), fieldAutocomplete.coincidences.map((element, index) => (_jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: fieldAutocomplete.onClickElement(element), onKeyDown: fieldAutocomplete.onKeydownElement(element), children: render(element) }, index))), !fieldAutocomplete.coincidences.length && (_jsx("li", { className: "rls-field-list__empty", children: _jsxs("div", { className: "rls-field-list__empty__description", children: [_jsx("label", { className: "rls-label-bold truncate", children: reactI18n('listEmptyTitle') }), _jsx("p", { className: "rls-caption-regular", children: reactI18n('listEmptyDescription') })] }) }))] }) }), _jsx("div", { className: "rls-field-list__backdrop", onClick: fieldAutocomplete.onClickBackdrop })] })] }));
9
+ const autocomplete = useFieldAutocomplete(props);
10
+ const { controller } = autocomplete;
11
+ const { render, children, formControl, hiddenIcon, msgErrorDisabled, onSearch, placeholder, rlsTheme, searching } = props;
12
+ const disabled = formControl?.disabled || props.disabled;
13
+ const className = renderClassStatus('rls-field-box', {
14
+ focused: controller.focused,
15
+ disabled,
16
+ error: formControl?.wrong,
17
+ selected: !!controller.value
18
+ }, 'rls-field-list rls-field-autocomplete');
19
+ return (_jsxs("div", { ref: controller.contentRef, className: className, "rls-theme": rlsTheme, children: [children && _jsx("label", { className: "rls-field-box__label", children: children }), _jsx("div", { className: "rls-field-box__component", children: _jsxs("div", { className: "rls-field-box__body", children: [_jsx("input", { className: "rls-field-list__control", readOnly: true, disabled: disabled, placeholder: placeholder, value: controller.value, onClick: autocomplete.onClickControl }), !hiddenIcon && controller.value && (_jsx("button", { className: "rls-field-list__action", disabled: disabled, onClick: autocomplete.onClickAction, children: _jsx(RlsIcon, { value: "trash-2" }) }))] }) }), !msgErrorDisabled && (_jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), _jsxs("div", { className: renderClassStatus('rls-field-list__suggestions', {
20
+ visible: controller.modalIsVisible,
21
+ higher: controller.higher,
22
+ hide: !controller.modalIsVisible
23
+ }), children: [_jsx("div", { className: "rls-field-list__suggestions__body", children: _jsxs("ul", { ref: controller.listRef, className: "rls-field-list__ul", children: [_jsxs("div", { className: "rls-field-list__ul__search", children: [_jsx("input", { ref: controller.inputRef, className: "rls-field-list__ul__control", type: "text", placeholder: reactI18n('listInputPlaceholder'), value: autocomplete.pattern, onChange: ({ target: { value } }) => {
24
+ autocomplete.setPattern(value);
25
+ }, disabled: disabled || searching, onFocus: autocomplete.onFocusInput, onBlur: autocomplete.onBlurInput, onKeyDown: autocomplete.onKeydownInput }), onSearch && (_jsx("button", { disabled: disabled || searching, onClick: () => {
26
+ onSearch(autocomplete.pattern);
27
+ }, children: _jsx(RlsIcon, { value: "search" }) }))] }), searching && _jsx(RlsProgressBar, { indeterminate: true }), autocomplete.coincidences.map((element, index) => (_jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: autocomplete.onClickElement(element), onKeyDown: autocomplete.onKeydownElement(element), children: render(element) }, index))), !autocomplete.coincidences.length && (_jsx("li", { className: "rls-field-list__empty", children: _jsxs("div", { className: "rls-field-list__empty__description", children: [_jsx("label", { className: "rls-label-bold truncate", children: reactI18n('listEmptyTitle') }), _jsx("p", { className: "rls-caption-regular", children: reactI18n('listEmptyDescription') })] }) }))] }) }), _jsx("div", { className: "rls-field-list__backdrop", onClick: autocomplete.onClickBackdrop })] })] }));
25
28
  }
26
29
  export function RlsFieldAutocomplete(props) {
27
30
  return (_jsx(RlsFieldAutocompleteTemplate, { ...props, render: (element) => (_jsx(RlsBallot, { subtitle: element.subtitle, img: element.img, initials: element.initials, children: _jsx("span", { children: element.title }) })) }));
@@ -1 +1 @@
1
- {"version":3,"file":"FieldAutocomplete.js","sourceRoot":"","sources":["../../../../../src/components/organisms/FieldAutocomplete/FieldAutocomplete.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldAutocomplete.js","sourceRoot":"","sources":["../../../../../src/components/organisms/FieldAutocomplete/FieldAutocomplete.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { AbstractAutocompleteElement as Element } from '@rolster/components';
2
2
  import { ReactControl } from '@rolster/react-forms';
3
3
  import { KeyboardEvent, KeyboardEventHandler, MouseEventHandler } from 'react';
4
- import { ListControl } from '../../../hooks';
4
+ import { ListController } from '../../../controllers';
5
5
  export interface FieldAutocompleteControl<T = any, E extends Element<T> = Element<T>> {
6
6
  coincidences: E[];
7
- listControl: ListControl<T>;
7
+ controller: ListController<T>;
8
8
  onBlurInput: () => void;
9
9
  onClickAction: () => void;
10
10
  onClickBackdrop: () => void;
@@ -19,9 +19,10 @@ export interface FieldAutocompleteControl<T = any, E extends Element<T> = Elemen
19
19
  interface FieldAutocompleteProps<T = any, E extends Element<T> = Element<T>> {
20
20
  suggestions: E[];
21
21
  disabled?: boolean;
22
- formControl?: ReactControl<HTMLElement, T | undefined>;
23
- onSelect?: (value: T) => void;
24
- onValue?: (value?: T) => void;
22
+ formControl?: ReactControl<HTMLElement, T | undefined> | ReactControl<HTMLElement, NonNullable<T>>;
23
+ onSelect?: (value: NonNullable<T>) => void;
24
+ onValue?: (value: T) => void;
25
+ value?: T;
25
26
  }
26
- export declare function useFieldAutocomplete<T = any, E extends Element<T> = Element<T>>({ disabled, formControl, onSelect, onValue, suggestions }: FieldAutocompleteProps<T, E>): FieldAutocompleteControl<T, E>;
27
+ export declare function useFieldAutocomplete<T = any, E extends Element<T> = Element<T>>(props: FieldAutocompleteProps<T, E>): FieldAutocompleteControl<T, E>;
27
28
  export {};
@@ -1,56 +1,56 @@
1
1
  import { createAutocompleteStore } from '@rolster/components';
2
2
  import { useEffect, useRef, useState } from 'react';
3
- import { useListControl } from '../../../hooks';
3
+ import { useListController } from '../../../controllers';
4
4
  const DURATION_ANIMATION = 240;
5
5
  const MAX_ELEMENTS = 6;
6
- export function useFieldAutocomplete({ disabled, formControl, onSelect, onValue, suggestions }) {
7
- const [pattern, setPattern] = useState('');
6
+ export function useFieldAutocomplete(props) {
7
+ const controller = useListController(props);
8
8
  const [coincidences, setCoincidences] = useState([]);
9
+ const [pattern, setPattern] = useState('');
9
10
  const currentStore = useRef({
10
11
  coincidences: [],
11
12
  pattern: '',
12
13
  previous: null
13
14
  });
14
- const listControl = useListControl({ suggestions, formControl });
15
- const { inputRef, navigationElement, navigationInput, setFormValue, setState } = listControl;
15
+ const disabled = props.formControl?.disabled || props.disabled;
16
16
  useEffect(() => {
17
17
  refreshCoincidences(pattern, true);
18
- }, [suggestions]);
18
+ }, [props.suggestions]);
19
19
  useEffect(() => {
20
20
  refreshCoincidences(pattern);
21
21
  }, [pattern]);
22
22
  function onClickControl() {
23
23
  if (!disabled) {
24
- setState({ listIsVisible: true });
24
+ controller.setState({ modalIsVisible: true });
25
25
  setTimeout(() => {
26
- inputRef?.current?.focus();
26
+ controller.inputRef?.current?.focus();
27
27
  }, DURATION_ANIMATION);
28
28
  }
29
29
  }
30
30
  function onFocusInput() {
31
- setState({ focused: true });
31
+ controller.setState({ focused: true });
32
32
  }
33
33
  function onBlurInput() {
34
- setState({ focused: false });
34
+ controller.setState({ focused: false });
35
35
  }
36
36
  function onKeydownInput(event) {
37
37
  switch (event.code) {
38
38
  case 'Escape':
39
39
  case 'Tab':
40
- setState({ listIsVisible: false });
40
+ controller.setState({ modalIsVisible: false });
41
41
  break;
42
42
  default:
43
- navigationInput(event);
43
+ controller.navigationInput(event);
44
44
  break;
45
45
  }
46
46
  }
47
47
  function onClickAction() {
48
- setState({ listIsVisible: false, value: '' });
49
- setFormValue(undefined);
50
- onValue && onValue(undefined);
48
+ controller.setState({ modalIsVisible: false, value: '' });
49
+ controller.setFormValue(props.value);
50
+ props.onValue && props.onValue(props.value);
51
51
  }
52
52
  function onClickBackdrop() {
53
- setState({ listIsVisible: false });
53
+ controller.setState({ modalIsVisible: false });
54
54
  }
55
55
  function onClickElement(element) {
56
56
  return () => {
@@ -59,24 +59,26 @@ export function useFieldAutocomplete({ disabled, formControl, onSelect, onValue,
59
59
  }
60
60
  function onKeydownElement(element) {
61
61
  return (event) => {
62
- event.code === 'Enter' ? onChange(element) : navigationElement(event);
62
+ event.code === 'Enter'
63
+ ? onChange(element)
64
+ : controller.navigationElement(event);
63
65
  };
64
66
  }
65
67
  function onChange({ description, value }) {
66
- if (onSelect) {
67
- setState({ listIsVisible: false });
68
- onSelect(value);
68
+ if (props.onSelect) {
69
+ controller.setState({ modalIsVisible: false });
70
+ value && props.onSelect(value);
69
71
  }
70
72
  else {
71
- setState({ listIsVisible: false, value: description });
72
- setFormValue(value);
73
+ controller.setState({ modalIsVisible: false, value: description });
74
+ controller.setFormValue(value);
73
75
  }
74
- onValue && onValue(value);
76
+ props.onValue && props.onValue(value);
75
77
  }
76
78
  function refreshCoincidences(pattern, reboot = false) {
77
79
  const { collection, store } = createAutocompleteStore({
78
80
  pattern,
79
- suggestions,
81
+ suggestions: props.suggestions,
80
82
  reboot,
81
83
  store: currentStore.current
82
84
  });
@@ -85,7 +87,7 @@ export function useFieldAutocomplete({ disabled, formControl, onSelect, onValue,
85
87
  }
86
88
  return {
87
89
  coincidences,
88
- listControl,
90
+ controller,
89
91
  onBlurInput,
90
92
  onClickAction,
91
93
  onClickBackdrop,
@@ -98,4 +100,4 @@ export function useFieldAutocomplete({ disabled, formControl, onSelect, onValue,
98
100
  setPattern
99
101
  };
100
102
  }
101
- //# sourceMappingURL=FieldAutocompleteHook.js.map
103
+ //# sourceMappingURL=FieldAutocompleteController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldAutocompleteController.js","sourceRoot":"","sources":["../../../../../src/components/organisms/FieldAutocomplete/FieldAutocompleteController.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,14 @@ import './FieldDate.css';
4
4
  interface FieldDateProps extends RlsComponent {
5
5
  date?: Date;
6
6
  disabled?: boolean;
7
- formControl?: ReactControl<HTMLElement, Undefined<Date>>;
7
+ formControl?: ReactControl<HTMLElement, Date> | ReactControl<HTMLElement, Date | undefined>;
8
8
  format?: string;
9
9
  maxDate?: Date;
10
10
  minDate?: Date;
11
11
  msgErrorDisabled?: boolean;
12
12
  onValue?: (value?: Date) => void;
13
13
  placeholder?: string;
14
+ value?: Date;
14
15
  }
15
- export declare function RlsFieldDate({ children, date, disabled, formControl, format, maxDate, minDate, msgErrorDisabled, onValue, placeholder, rlsTheme }: FieldDateProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function RlsFieldDate({ children, date, disabled, formControl, format, maxDate, minDate, msgErrorDisabled, onValue, placeholder, rlsTheme, value: defaultValue }: FieldDateProps): import("react/jsx-runtime").JSX.Element;
16
17
  export {};
@@ -9,9 +9,9 @@ import { RlsModal } from '../Modal/Modal';
9
9
  import { RlsPickerDate } from '../PickerDate/PickerDate';
10
10
  import './FieldDate.css';
11
11
  const FORMAT_DATE = '{dd}/{mx}/{aa}';
12
- export function RlsFieldDate({ children, date, disabled, formControl, format, maxDate, minDate, msgErrorDisabled, onValue, placeholder, rlsTheme }) {
12
+ export function RlsFieldDate({ children, date, disabled, formControl, format, maxDate, minDate, msgErrorDisabled, onValue, placeholder, rlsTheme, value: defaultValue }) {
13
13
  const today = new Date(); // Initial current date in component
14
- const [value, setValue] = useState();
14
+ const [value, setValue] = useState(defaultValue);
15
15
  const [modalIsVisible, setModalIsVisible] = useState(false);
16
16
  useEffect(() => {
17
17
  const dateCheck = checkDateRange({
@@ -31,7 +31,7 @@ export function RlsFieldDate({ children, date, disabled, formControl, format, ma
31
31
  }
32
32
  function onClickAction() {
33
33
  if (value) {
34
- formControl?.setValue(undefined);
34
+ formControl?.setValue(defaultValue);
35
35
  formControl?.touch();
36
36
  onChange(undefined);
37
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FieldDate.js","sourceRoot":"","sources":["../../../../../src/components/organisms/FieldDate/FieldDate.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldDate.js","sourceRoot":"","sources":["../../../../../src/components/organisms/FieldDate/FieldDate.tsx"],"names":[],"mappings":"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"}
@@ -6,15 +6,46 @@ import './FieldSelect.css';
6
6
  interface FieldSelectProps<T = any, E extends Element<T> = Element<T>> extends RlsComponent {
7
7
  suggestions: E[];
8
8
  disabled?: boolean;
9
- formControl?: ReactControl<HTMLElement, T | undefined>;
9
+ formControl?: ReactControl<HTMLElement, T | undefined> | ReactControl<HTMLElement, NonNullable<T>>;
10
10
  msgErrorDisabled?: boolean;
11
- onSelect?: (value: T) => void;
12
- onValue?: (value?: T) => void;
11
+ onSelect?: (value: NonNullable<T>) => void;
12
+ onValue?: (value: T) => void;
13
13
  placeholder?: string;
14
+ value?: T;
14
15
  }
15
16
  interface FieldSelectTemplateProps<T = any, E extends Element<T> = Element<T>> extends FieldSelectProps<T, E> {
16
17
  render: (element: E) => ReactNode;
17
18
  }
18
- export declare function RlsFieldSelectTemplate<T = any, E extends Element<T> = Element<T>>(props: FieldSelectTemplateProps<T, E>): import("react/jsx-runtime").JSX.Element;
19
- export declare function RlsFieldSelect<T = any>(props: FieldSelectProps<T, ListElement<T>>): import("react/jsx-runtime").JSX.Element;
19
+ interface FormUndefinedTemplateProps<T = any> extends FieldSelectTemplateProps<T, ListElement<T>> {
20
+ formControl: ReactControl<HTMLElement, T | undefined>;
21
+ value: undefined;
22
+ }
23
+ interface FormControlTemplateProps<T = any> extends FieldSelectTemplateProps<T, ListElement<T>> {
24
+ formControl: ReactControl<HTMLElement, NonNullable<T>>;
25
+ value: NonNullable<T>;
26
+ }
27
+ interface FormVoidTemplateProps<T = any> extends Omit<FieldSelectTemplateProps<T, ListElement<T>>, 'value'> {
28
+ formControl: ReactControl<HTMLElement, T | undefined>;
29
+ }
30
+ type SuggestionsTemplateProps<T = any> = Omit<FieldSelectTemplateProps<T, ListElement<T>>, 'formControl' | 'value'>;
31
+ export declare function RlsFieldSelectTemplate<T = any>(props: FormUndefinedTemplateProps<T>): JSX.Element;
32
+ export declare function RlsFieldSelectTemplate<T = any>(props: FormControlTemplateProps<T>): JSX.Element;
33
+ export declare function RlsFieldSelectTemplate<T = any>(props: FormVoidTemplateProps<T>): JSX.Element;
34
+ export declare function RlsFieldSelectTemplate<T = any>(props: SuggestionsTemplateProps<T>): JSX.Element;
35
+ interface FormUndefinedProps<T = any> extends FieldSelectProps<T, ListElement<T>> {
36
+ formControl: ReactControl<HTMLElement, T | undefined>;
37
+ value: undefined;
38
+ }
39
+ interface FormControlProps<T = any> extends FieldSelectProps<T, ListElement<T>> {
40
+ formControl: ReactControl<HTMLElement, NonNullable<T>>;
41
+ value: NonNullable<T>;
42
+ }
43
+ interface FormVoidProps<T = any> extends Omit<FieldSelectProps<T, ListElement<T>>, 'value'> {
44
+ formControl: ReactControl<HTMLElement, T | undefined>;
45
+ }
46
+ type SuggestionsProps<T = any> = Omit<FieldSelectProps<T, ListElement<T>>, 'formControl' | 'value'>;
47
+ export declare function RlsFieldSelect<T = any>(props: FormUndefinedProps<T>): JSX.Element;
48
+ export declare function RlsFieldSelect<T = any>(props: FormControlProps<T>): JSX.Element;
49
+ export declare function RlsFieldSelect<T = any>(props: FormVoidProps<T>): JSX.Element;
50
+ export declare function RlsFieldSelect<T = any>(props: SuggestionsProps<T>): JSX.Element;
20
51
  export {};
@@ -3,22 +3,25 @@ import { reactI18n } from '../../../i18n';
3
3
  import { renderClassStatus } from '../../../helpers/css';
4
4
  import { RlsIcon } from '../../atoms';
5
5
  import { RlsBallot, RlsMessageFormError } from '../../molecules';
6
- import { useFieldSelect } from './FieldSelectHook';
6
+ import { useFieldSelect } from './FieldSelectController';
7
7
  import './FieldSelect.css';
8
8
  export function RlsFieldSelectTemplate(props) {
9
- const fieldSelect = useFieldSelect(props);
10
- const { render, suggestions, children, disabled, formControl, msgErrorDisabled, placeholder, rlsTheme } = props;
11
- return (_jsxs("div", { ref: fieldSelect.listControl.contentRef, className: renderClassStatus('rls-field-box', {
12
- focused: fieldSelect.listControl.focused,
13
- error: formControl?.wrong,
14
- disabled
15
- }, 'rls-field-list rls-field-select'), "rls-theme": rlsTheme, children: [children && _jsx("label", { className: "rls-field-box__label", children: children }), _jsx("div", { className: "rls-field-box__component", children: _jsxs("div", { className: "rls-field-box__body", children: [_jsx("input", { ref: fieldSelect.listControl.inputRef, className: "rls-field-list__control", readOnly: true, disabled: disabled, placeholder: placeholder, value: fieldSelect.listControl.value, onFocus: fieldSelect.onFocusInput, onBlur: fieldSelect.onBlurInput, onClick: fieldSelect.onClickInput, onKeyDown: fieldSelect.onKeydownInput }), _jsx("button", { className: renderClassStatus('rls-field-list__action', {
16
- visible: fieldSelect.listControl.listIsVisible
17
- }), disabled: disabled, onClick: fieldSelect.onClickAction, children: _jsx(RlsIcon, { value: "arrow-ios-down" }) })] }) }), !msgErrorDisabled && (_jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), _jsxs("div", { className: renderClassStatus('rls-field-list__suggestions', {
18
- visible: fieldSelect.listControl.listIsVisible,
19
- hide: !fieldSelect.listControl.listIsVisible,
20
- higher: fieldSelect.listControl.higher
21
- }), children: [_jsx("div", { className: "rls-field-list__suggestions__body", children: _jsxs("ul", { ref: fieldSelect.listControl.listRef, className: "rls-field-list__ul", children: [suggestions.map((element, index) => (_jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: fieldSelect.onClickElement(element), onKeyDown: fieldSelect.onKeydownElement(element), children: render(element) }, index))), !suggestions.length && (_jsx("li", { className: "rls-field-list__empty", children: _jsxs("div", { className: "rls-field-list__empty__description", children: [_jsx("label", { className: "rls-label-bold truncate", children: reactI18n('listEmptyTitle') }), _jsx("p", { className: "rls-caption-regular", children: reactI18n('listEmptyDescription') })] }) }))] }) }), _jsx("div", { className: "rls-field-list__backdrop", onClick: fieldSelect.onClickBackdrop })] })] }));
9
+ const select = useFieldSelect(props);
10
+ const { controller } = select;
11
+ const { render, suggestions, children, formControl, msgErrorDisabled, placeholder, rlsTheme } = props;
12
+ const disabled = formControl?.disabled || props.disabled;
13
+ const className = renderClassStatus('rls-field-box', {
14
+ focused: controller.focused,
15
+ disabled,
16
+ error: formControl?.wrong
17
+ }, 'rls-field-list rls-field-select');
18
+ return (_jsxs("div", { ref: controller.contentRef, className: className, "rls-theme": rlsTheme, children: [children && _jsx("label", { className: "rls-field-box__label", children: children }), _jsx("div", { className: "rls-field-box__component", children: _jsxs("div", { className: "rls-field-box__body", children: [_jsx("input", { ref: controller.inputRef, className: "rls-field-list__control", readOnly: true, disabled: disabled, placeholder: placeholder, value: controller.value, onFocus: select.onFocusInput, onBlur: select.onBlurInput, onClick: select.onClickInput, onKeyDown: select.onKeydownInput }), _jsx("button", { className: renderClassStatus('rls-field-list__action', {
19
+ visible: controller.modalIsVisible
20
+ }), disabled: disabled, onClick: select.onClickAction, children: _jsx(RlsIcon, { value: "arrow-ios-down" }) })] }) }), !msgErrorDisabled && (_jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), _jsxs("div", { className: renderClassStatus('rls-field-list__suggestions', {
21
+ visible: controller.modalIsVisible,
22
+ higher: controller.higher,
23
+ hide: !controller.modalIsVisible
24
+ }), children: [_jsx("div", { className: "rls-field-list__suggestions__body", children: _jsxs("ul", { ref: controller.listRef, className: "rls-field-list__ul", children: [suggestions.map((element, index) => (_jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: select.onClickElement(element), onKeyDown: select.onKeydownElement(element), children: render(element) }, index))), !suggestions.length && (_jsx("li", { className: "rls-field-list__empty", children: _jsxs("div", { className: "rls-field-list__empty__description", children: [_jsx("label", { className: "rls-label-bold truncate", children: reactI18n('listEmptyTitle') }), _jsx("p", { className: "rls-caption-regular", children: reactI18n('listEmptyDescription') })] }) }))] }) }), _jsx("div", { className: "rls-field-list__backdrop", onClick: select.onClickBackdrop })] })] }));
22
25
  }
23
26
  export function RlsFieldSelect(props) {
24
27
  return (_jsx(RlsFieldSelectTemplate, { ...props, render: (element) => (_jsx(RlsBallot, { subtitle: element.subtitle, img: element.img, initials: element.initials, children: _jsx("span", { children: element.title }) })) }));
@@ -1 +1 @@
1
- {"version":3,"file":"FieldSelect.js","sourceRoot":"","sources":["../../../../../src/components/organisms/FieldSelect/FieldSelect.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,mBAAmB,CAAC;AAkB3B,MAAM,UAAU,sBAAsB,CAGpC,KAAqC;IACrC,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,EACJ,MAAM,EACN,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACT,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,eACE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,UAAU,EACvC,SAAS,EAAE,iBAAiB,CAC1B,eAAe,EACf;YACE,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO;YACxC,KAAK,EAAE,WAAW,EAAE,KAAK;YACzB,QAAQ;SACT,EACD,iCAAiC,CAClC,eACU,QAAQ,aAElB,QAAQ,IAAI,gBAAO,SAAS,EAAC,sBAAsB,YAAE,QAAQ,GAAS,EAEvE,cAAK,SAAS,EAAC,0BAA0B,YACvC,eAAK,SAAS,EAAC,qBAAqB,aAClC,gBACE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,QAAQ,EACrC,SAAS,EAAC,yBAAyB,EACnC,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,EACpC,OAAO,EAAE,WAAW,CAAC,YAAY,EACjC,MAAM,EAAE,WAAW,CAAC,WAAW,EAC/B,OAAO,EAAE,WAAW,CAAC,YAAY,EACjC,SAAS,EAAE,WAAW,CAAC,cAAc,GACrC,EACF,iBACE,SAAS,EAAE,iBAAiB,CAAC,wBAAwB,EAAE;gCACrD,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,aAAa;6BAC/C,CAAC,EACF,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,CAAC,aAAa,YAElC,KAAC,OAAO,IAAC,KAAK,EAAC,gBAAgB,GAAG,GAC3B,IACL,GACF,EAEL,CAAC,gBAAgB,IAAI,CACpB,KAAC,mBAAmB,IAClB,SAAS,EAAC,sBAAsB,EAChC,WAAW,EAAE,WAAW,GACxB,CACH,EAED,eACE,SAAS,EAAE,iBAAiB,CAAC,6BAA6B,EAAE;oBAC1D,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,aAAa;oBAC9C,IAAI,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa;oBAC5C,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM;iBACvC,CAAC,aAEF,cAAK,SAAS,EAAC,mCAAmC,YAChD,cACE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,EACpC,SAAS,EAAC,oBAAoB,aAE7B,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CACnC,aAEE,SAAS,EAAC,yBAAyB,EACnC,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,EAC5C,SAAS,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAE/C,MAAM,CAAC,OAAO,CAAC,IANX,KAAK,CAOP,CACN,CAAC,EAED,CAAC,WAAW,CAAC,MAAM,IAAI,CACtB,aAAI,SAAS,EAAC,uBAAuB,YACnC,eAAK,SAAS,EAAC,oCAAoC,aACjD,gBAAO,SAAS,EAAC,yBAAyB,YACvC,SAAS,CAAC,gBAAgB,CAAC,GACtB,EACR,YAAG,SAAS,EAAC,qBAAqB,YAC/B,SAAS,CAAC,sBAAsB,CAAC,GAChC,IACA,GACH,CACN,IACE,GACD,EAEN,cACE,SAAS,EAAC,0BAA0B,EACpC,OAAO,EAAE,WAAW,CAAC,eAAe,GAC/B,IACH,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAA0C;IAE1C,OAAO,CACL,KAAC,sBAAsB,OACjB,KAAK,EACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CACnB,KAAC,SAAS,IACR,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,GAAG,EAAE,OAAO,CAAC,GAAG,EAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,YAE1B,yBAAO,OAAO,CAAC,KAAK,GAAQ,GAClB,CACb,GACD,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"FieldSelect.js","sourceRoot":"","sources":["../../../../../src/components/organisms/FieldSelect/FieldSelect.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,mBAAmB,CAAC;AAuD3B,MAAM,UAAU,sBAAsB,CAGpC,KAAqC;IACrC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE9B,MAAM,EACJ,MAAM,EACN,WAAW,EACX,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACT,GAAG,KAAK,CAAC;IAEV,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;IAEzD,MAAM,SAAS,GAAG,iBAAiB,CACjC,eAAe,EACf;QACE,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,QAAQ;QACR,KAAK,EAAE,WAAW,EAAE,KAAK;KAC1B,EACD,iCAAiC,CAClC,CAAC;IAEF,OAAO,CACL,eAAK,GAAG,EAAE,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,eAAa,QAAQ,aACvE,QAAQ,IAAI,gBAAO,SAAS,EAAC,sBAAsB,YAAE,QAAQ,GAAS,EAEvE,cAAK,SAAS,EAAC,0BAA0B,YACvC,eAAK,SAAS,EAAC,qBAAqB,aAClC,gBACE,GAAG,EAAE,UAAU,CAAC,QAAQ,EACxB,SAAS,EAAC,yBAAyB,EACnC,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,OAAO,EAAE,MAAM,CAAC,YAAY,EAC5B,MAAM,EAAE,MAAM,CAAC,WAAW,EAC1B,OAAO,EAAE,MAAM,CAAC,YAAY,EAC5B,SAAS,EAAE,MAAM,CAAC,cAAc,GAChC,EACF,iBACE,SAAS,EAAE,iBAAiB,CAAC,wBAAwB,EAAE;gCACrD,OAAO,EAAE,UAAU,CAAC,cAAc;6BACnC,CAAC,EACF,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,CAAC,aAAa,YAE7B,KAAC,OAAO,IAAC,KAAK,EAAC,gBAAgB,GAAG,GAC3B,IACL,GACF,EAEL,CAAC,gBAAgB,IAAI,CACpB,KAAC,mBAAmB,IAClB,SAAS,EAAC,sBAAsB,EAChC,WAAW,EAAE,WAAW,GACxB,CACH,EAED,eACE,SAAS,EAAE,iBAAiB,CAAC,6BAA6B,EAAE;oBAC1D,OAAO,EAAE,UAAU,CAAC,cAAc;oBAClC,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc;iBACjC,CAAC,aAEF,cAAK,SAAS,EAAC,mCAAmC,YAChD,cAAI,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,EAAC,oBAAoB,aACxD,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CACnC,aAEE,SAAS,EAAC,yBAAyB,EACnC,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EACvC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAE1C,MAAM,CAAC,OAAO,CAAC,IANX,KAAK,CAOP,CACN,CAAC,EAED,CAAC,WAAW,CAAC,MAAM,IAAI,CACtB,aAAI,SAAS,EAAC,uBAAuB,YACnC,eAAK,SAAS,EAAC,oCAAoC,aACjD,gBAAO,SAAS,EAAC,yBAAyB,YACvC,SAAS,CAAC,gBAAgB,CAAC,GACtB,EACR,YAAG,SAAS,EAAC,qBAAqB,YAC/B,SAAS,CAAC,sBAAsB,CAAC,GAChC,IACA,GACH,CACN,IACE,GACD,EAEN,cACE,SAAS,EAAC,0BAA0B,EACpC,OAAO,EAAE,MAAM,CAAC,eAAe,GAC1B,IACH,IACF,CACP,CAAC;AACJ,CAAC;AAkCD,MAAM,UAAU,cAAc,CAC5B,KAA0C;IAE1C,OAAO,CACL,KAAC,sBAAsB,OACjB,KAAK,EACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CACnB,KAAC,SAAS,IACR,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,GAAG,EAAE,OAAO,CAAC,GAAG,EAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,YAE1B,yBAAO,OAAO,CAAC,KAAK,GAAQ,GAClB,CACb,GACD,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { AbstractListElement as Element } from '@rolster/components';
2
+ import { ReactControl } from '@rolster/react-forms';
3
+ import { KeyboardEvent, KeyboardEventHandler, MouseEventHandler } from 'react';
4
+ import { ListController } from '../../../controllers';
5
+ export interface FieldSelectControl<T = any, E extends Element<T> = Element<T>> {
6
+ controller: ListController<T>;
7
+ onBlurInput: () => void;
8
+ onClickAction: () => void;
9
+ onClickBackdrop: () => void;
10
+ onClickElement: (element: E) => MouseEventHandler;
11
+ onClickInput: () => void;
12
+ onFocusInput: () => void;
13
+ onKeydownElement: (element: E) => KeyboardEventHandler;
14
+ onKeydownInput: (event: KeyboardEvent) => void;
15
+ }
16
+ interface FieldSelectProps<T = any, E extends Element<T> = Element<T>> {
17
+ suggestions: E[];
18
+ disabled?: boolean;
19
+ formControl?: ReactControl<HTMLElement, T | undefined> | ReactControl<HTMLElement, NonNullable<T>>;
20
+ onSelect?: (value: NonNullable<T>) => void;
21
+ onValue?: (value: T) => void;
22
+ value?: T;
23
+ }
24
+ export declare function useFieldSelect<T = any, E extends Element<T> = Element<T>>(props: FieldSelectProps<T, E>): FieldSelectControl<T, E>;
25
+ export {};
@@ -0,0 +1,72 @@
1
+ import { useListController } from '../../../controllers';
2
+ export function useFieldSelect(props) {
3
+ const controller = useListController(props);
4
+ function onFocusInput() {
5
+ controller.setState({ focused: true });
6
+ }
7
+ function onBlurInput() {
8
+ controller.setState({ focused: false });
9
+ }
10
+ function onClickInput() {
11
+ controller.setState({ modalIsVisible: true });
12
+ }
13
+ function onKeydownInput(event) {
14
+ switch (event.code) {
15
+ case 'Space':
16
+ case 'Enter':
17
+ controller.setState({ modalIsVisible: true });
18
+ break;
19
+ case 'Escape':
20
+ case 'Tab':
21
+ controller.setState({ modalIsVisible: false });
22
+ break;
23
+ default:
24
+ controller.navigationInput(event);
25
+ break;
26
+ }
27
+ }
28
+ function onClickAction() {
29
+ const modalIsVisible = !controller.modalIsVisible;
30
+ controller.setState({ modalIsVisible });
31
+ modalIsVisible && controller.inputRef?.current?.focus();
32
+ }
33
+ function onClickBackdrop() {
34
+ controller.setState({ modalIsVisible: false });
35
+ }
36
+ function onClickElement(element) {
37
+ return () => {
38
+ onChange(element);
39
+ };
40
+ }
41
+ function onKeydownElement(element) {
42
+ return (event) => {
43
+ event.code === 'Enter'
44
+ ? onChange(element)
45
+ : controller.navigationElement(event);
46
+ };
47
+ }
48
+ function onChange({ description, value }) {
49
+ controller.inputRef?.current?.focus();
50
+ if (props.onSelect) {
51
+ controller.setState({ modalIsVisible: false });
52
+ value && props.onSelect(value);
53
+ }
54
+ else {
55
+ controller.setFormValue(value);
56
+ controller.setState({ modalIsVisible: false, value: description });
57
+ }
58
+ props.onValue && props.onValue(value);
59
+ }
60
+ return {
61
+ controller,
62
+ onBlurInput,
63
+ onClickAction,
64
+ onClickBackdrop,
65
+ onClickInput,
66
+ onClickElement,
67
+ onFocusInput,
68
+ onKeydownElement,
69
+ onKeydownInput
70
+ };
71
+ }
72
+ //# sourceMappingURL=FieldSelectController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldSelectController.js","sourceRoot":"","sources":["../../../../../src/components/organisms/FieldSelect/FieldSelectController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4BzE,MAAM,UAAU,cAAc,CAC5B,KAA6B;IAE7B,MAAM,UAAU,GAAG,iBAAiB,CAAI,KAAK,CAAC,CAAC;IAE/C,SAAS,YAAY;QACnB,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,SAAS,WAAW;QAClB,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,YAAY;QACnB,UAAU,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,cAAc,CAAC,KAAoB;QAC1C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO,CAAC;YACb,KAAK,OAAO;gBACV,UAAU,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,MAAM;YAER,KAAK,QAAQ,CAAC;YACd,KAAK,KAAK;gBACR,UAAU,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/C,MAAM;YAER;gBACE,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM;QACV,CAAC;IACH,CAAC;IAED,SAAS,aAAa;QACpB,MAAM,cAAc,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;QAElD,UAAU,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;QACxC,cAAc,IAAI,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,SAAS,eAAe;QACtB,UAAU,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,SAAS,cAAc,CAAC,OAAmB;QACzC,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,gBAAgB,CAAC,OAAmB;QAC3C,OAAO,CAAC,KAAK,EAAE,EAAE;YACf,KAAK,CAAC,IAAI,KAAK,OAAO;gBACpB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACnB,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAc;QAClD,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAEtC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,UAAU,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/C,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,UAAU,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACL,UAAU;QACV,WAAW;QACX,aAAa;QACb,eAAe;QACf,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,gBAAgB;QAChB,cAAc;KACf,CAAC;AACJ,CAAC"}