@rolster/react-components 18.15.22 → 18.15.30
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/dist/cjs/index.js +105 -93
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/index.js +105 -93
- package/dist/es/index.js.map +1 -1
- package/dist/esm/components/atoms/Input/Input.js +1 -1
- package/dist/esm/components/organisms/Datatable/Datatable.d.ts +2 -2
- package/dist/esm/components/organisms/Datatable/Datatable.js +1 -1
- package/dist/esm/components/organisms/Datatable/Datatable.js.map +1 -1
- package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.d.ts +14 -3
- package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.js +20 -17
- package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.js.map +1 -1
- package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocompleteController.d.ts +38 -0
- package/dist/esm/components/organisms/FieldAutocomplete/{FieldAutocompleteHook.js → FieldAutocompleteController.js} +27 -25
- package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocompleteController.js.map +1 -0
- package/dist/esm/components/organisms/FieldDate/FieldDate.d.ts +3 -2
- package/dist/esm/components/organisms/FieldDate/FieldDate.js +3 -3
- package/dist/esm/components/organisms/FieldDate/FieldDate.js.map +1 -1
- package/dist/esm/components/organisms/FieldSelect/FieldSelect.d.ts +15 -4
- package/dist/esm/components/organisms/FieldSelect/FieldSelect.js +17 -14
- package/dist/esm/components/organisms/FieldSelect/FieldSelect.js.map +1 -1
- package/dist/esm/components/organisms/FieldSelect/FieldSelectController.d.ts +35 -0
- package/dist/esm/components/organisms/FieldSelect/FieldSelectController.js +71 -0
- package/dist/esm/components/organisms/FieldSelect/FieldSelectController.js.map +1 -0
- package/dist/esm/components/organisms/PickerDate/PickerDate.d.ts +1 -1
- package/dist/esm/components/organisms/PickerDate/PickerDate.js.map +1 -1
- package/dist/esm/controllers/DatatableController.d.ts +6 -0
- package/dist/esm/controllers/DatatableController.js +24 -0
- package/dist/esm/controllers/DatatableController.js.map +1 -0
- package/dist/esm/controllers/ListController.d.ts +35 -0
- package/dist/esm/{hooks/ListControlHook.js → controllers/ListController.js} +4 -3
- package/dist/esm/controllers/ListController.js.map +1 -0
- package/dist/esm/controllers/index.d.ts +2 -0
- package/dist/esm/controllers/index.js +3 -0
- package/dist/esm/controllers/index.js.map +1 -0
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +7 -7
- package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocompleteHook.d.ts +0 -27
- package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocompleteHook.js.map +0 -1
- package/dist/esm/components/organisms/FieldSelect/FieldSelectHook.d.ts +0 -24
- package/dist/esm/components/organisms/FieldSelect/FieldSelectHook.js +0 -70
- package/dist/esm/components/organisms/FieldSelect/FieldSelectHook.js.map +0 -1
- package/dist/esm/hooks/DatatableHook.d.ts +0 -6
- package/dist/esm/hooks/DatatableHook.js +0 -22
- package/dist/esm/hooks/DatatableHook.js.map +0 -1
- package/dist/esm/hooks/ListControlHook.d.ts +0 -24
- package/dist/esm/hooks/ListControlHook.js.map +0 -1
- package/dist/esm/hooks/index.d.ts +0 -2
- package/dist/esm/hooks/index.js +0 -3
- package/dist/esm/hooks/index.js.map +0 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1438,7 +1438,7 @@ function RlsInput({ children, disabled, formControl, onValue, placeholder, type,
|
|
|
1438
1438
|
return (jsxRuntimeExports.jsxs("div", { className: renderClassStatus('rls-input', {
|
|
1439
1439
|
focused: formControl?.focused ?? focused,
|
|
1440
1440
|
disabled: formControl?.disabled || disabled
|
|
1441
|
-
}), children: [jsxRuntimeExports.jsx("input", { ref: formControl?.elementRef, className: "rls-input__component", autoComplete: "off", type: type ?? 'text', placeholder: placeholder, disabled: formControl?.disabled
|
|
1441
|
+
}), children: [jsxRuntimeExports.jsx("input", { ref: formControl?.elementRef, className: "rls-input__component", autoComplete: "off", type: type ?? 'text', placeholder: placeholder, disabled: formControl?.disabled || disabled, onFocus: onFocus, onBlur: onBlur, onChange: onChange, value: formControl?.value ?? value ?? '' }), jsxRuntimeExports.jsx("span", { className: "rls-input__value", children: children })] }));
|
|
1442
1442
|
}
|
|
1443
1443
|
|
|
1444
1444
|
function RlsInputMoney({ decimals, disabled, formControl, onValue, placeholder, symbol, value }) {
|
|
@@ -2039,31 +2039,34 @@ function RlsDatatableData({ children, className, control, overflow }) {
|
|
|
2039
2039
|
function RlsDatatable({ children, datatable, footer, header, rlsTheme, summary }) {
|
|
2040
2040
|
return (jsxRuntimeExports.jsxs("div", { className: renderClassStatus('rls-datatable', {
|
|
2041
2041
|
scrolleable: datatable?.scrolleable
|
|
2042
|
-
}), "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("table", { children: [header && jsxRuntimeExports.jsx("thead", { className: "rls-datatable__thead", children: header }), jsxRuntimeExports.jsx("tbody", { ref: datatable?.
|
|
2042
|
+
}), "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("table", { children: [header && jsxRuntimeExports.jsx("thead", { className: "rls-datatable__thead", children: header }), jsxRuntimeExports.jsx("tbody", { ref: datatable?.tableRef, className: "rls-datatable__tbody", children: children })] }), summary && jsxRuntimeExports.jsx("div", { className: "rls-datatable__tsummary", children: summary }), footer && jsxRuntimeExports.jsx("div", { className: "rls-datatable__tfooter", children: footer })] }));
|
|
2043
2043
|
}
|
|
2044
2044
|
|
|
2045
|
+
function createObserver(options) {
|
|
2046
|
+
const { setScrolleable, table } = options;
|
|
2047
|
+
const observer = new ResizeObserver(() => {
|
|
2048
|
+
const scrollHeight = table.scrollHeight || 0;
|
|
2049
|
+
const clientHeight = table.clientHeight || 0;
|
|
2050
|
+
setScrolleable(scrollHeight > clientHeight);
|
|
2051
|
+
});
|
|
2052
|
+
observer.observe(table);
|
|
2053
|
+
return observer;
|
|
2054
|
+
}
|
|
2045
2055
|
function useDatatable() {
|
|
2046
2056
|
const [scrolleable, setScrolleable] = require$$0.useState(false);
|
|
2047
|
-
const
|
|
2057
|
+
const tableRef = require$$0.useRef(null);
|
|
2048
2058
|
require$$0.useEffect(() => {
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
if (body) {
|
|
2052
|
-
observer = new ResizeObserver(() => {
|
|
2053
|
-
const scrollHeight = body.scrollHeight || 0;
|
|
2054
|
-
const clientHeight = body.clientHeight || 0;
|
|
2055
|
-
setScrolleable(scrollHeight > clientHeight);
|
|
2056
|
-
});
|
|
2057
|
-
observer.observe(bodyRef?.current);
|
|
2058
|
-
}
|
|
2059
|
+
const observer = tableRef?.current &&
|
|
2060
|
+
createObserver({ setScrolleable, table: tableRef?.current });
|
|
2059
2061
|
return () => {
|
|
2060
2062
|
observer?.disconnect();
|
|
2061
2063
|
};
|
|
2062
2064
|
}, []);
|
|
2063
|
-
return {
|
|
2065
|
+
return { scrolleable, tableRef };
|
|
2064
2066
|
}
|
|
2065
2067
|
|
|
2066
|
-
function
|
|
2068
|
+
function useListController(props) {
|
|
2069
|
+
const { suggestions, formControl, value } = props;
|
|
2067
2070
|
const contentRef = require$$0.useRef(null);
|
|
2068
2071
|
const listRef = require$$0.useRef(null);
|
|
2069
2072
|
const inputRef = require$$0.useRef(null);
|
|
@@ -2116,7 +2119,7 @@ function useListControl({ suggestions, formControl }) {
|
|
|
2116
2119
|
}
|
|
2117
2120
|
if (!refreshProtected(collection)) {
|
|
2118
2121
|
protectedValue.current = state;
|
|
2119
|
-
setFormValue(
|
|
2122
|
+
setFormValue(value);
|
|
2120
2123
|
refreshState({ value: '' });
|
|
2121
2124
|
}
|
|
2122
2125
|
}
|
|
@@ -2170,7 +2173,8 @@ function useListControl({ suggestions, formControl }) {
|
|
|
2170
2173
|
|
|
2171
2174
|
const DURATION_ANIMATION$1 = 240;
|
|
2172
2175
|
const MAX_ELEMENTS = 6;
|
|
2173
|
-
function useFieldAutocomplete(
|
|
2176
|
+
function useFieldAutocomplete(props) {
|
|
2177
|
+
const controller = useListController(props);
|
|
2174
2178
|
const [pattern, setPattern] = require$$0.useState('');
|
|
2175
2179
|
const [coincidences, setCoincidences] = require$$0.useState([]);
|
|
2176
2180
|
const currentStore = require$$0.useRef({
|
|
@@ -2178,46 +2182,45 @@ function useFieldAutocomplete({ disabled, formControl, onSelect, onValue, sugges
|
|
|
2178
2182
|
pattern: '',
|
|
2179
2183
|
previous: null
|
|
2180
2184
|
});
|
|
2181
|
-
const
|
|
2182
|
-
const { inputRef, navigationElement, navigationInput, setFormValue, setState } = listControl;
|
|
2185
|
+
const disabled = props.formControl?.disabled || props.disabled;
|
|
2183
2186
|
require$$0.useEffect(() => {
|
|
2184
2187
|
refreshCoincidences(pattern, true);
|
|
2185
|
-
}, [suggestions]);
|
|
2188
|
+
}, [props.suggestions]);
|
|
2186
2189
|
require$$0.useEffect(() => {
|
|
2187
2190
|
refreshCoincidences(pattern);
|
|
2188
2191
|
}, [pattern]);
|
|
2189
2192
|
function onClickControl() {
|
|
2190
2193
|
if (!disabled) {
|
|
2191
|
-
setState({ listIsVisible: true });
|
|
2194
|
+
controller.setState({ listIsVisible: true });
|
|
2192
2195
|
setTimeout(() => {
|
|
2193
|
-
inputRef?.current?.focus();
|
|
2196
|
+
controller.inputRef?.current?.focus();
|
|
2194
2197
|
}, DURATION_ANIMATION$1);
|
|
2195
2198
|
}
|
|
2196
2199
|
}
|
|
2197
2200
|
function onFocusInput() {
|
|
2198
|
-
setState({ focused: true });
|
|
2201
|
+
controller.setState({ focused: true });
|
|
2199
2202
|
}
|
|
2200
2203
|
function onBlurInput() {
|
|
2201
|
-
setState({ focused: false });
|
|
2204
|
+
controller.setState({ focused: false });
|
|
2202
2205
|
}
|
|
2203
2206
|
function onKeydownInput(event) {
|
|
2204
2207
|
switch (event.code) {
|
|
2205
2208
|
case 'Escape':
|
|
2206
2209
|
case 'Tab':
|
|
2207
|
-
setState({ listIsVisible: false });
|
|
2210
|
+
controller.setState({ listIsVisible: false });
|
|
2208
2211
|
break;
|
|
2209
2212
|
default:
|
|
2210
|
-
navigationInput(event);
|
|
2213
|
+
controller.navigationInput(event);
|
|
2211
2214
|
break;
|
|
2212
2215
|
}
|
|
2213
2216
|
}
|
|
2214
2217
|
function onClickAction() {
|
|
2215
|
-
setState({ listIsVisible: false, value: '' });
|
|
2216
|
-
setFormValue(
|
|
2217
|
-
onValue && onValue(
|
|
2218
|
+
controller.setState({ listIsVisible: false, value: '' });
|
|
2219
|
+
controller.setFormValue(props.value);
|
|
2220
|
+
props.onValue && props.onValue(props.value);
|
|
2218
2221
|
}
|
|
2219
2222
|
function onClickBackdrop() {
|
|
2220
|
-
setState({ listIsVisible: false });
|
|
2223
|
+
controller.setState({ listIsVisible: false });
|
|
2221
2224
|
}
|
|
2222
2225
|
function onClickElement(element) {
|
|
2223
2226
|
return () => {
|
|
@@ -2226,24 +2229,26 @@ function useFieldAutocomplete({ disabled, formControl, onSelect, onValue, sugges
|
|
|
2226
2229
|
}
|
|
2227
2230
|
function onKeydownElement(element) {
|
|
2228
2231
|
return (event) => {
|
|
2229
|
-
event.code === 'Enter'
|
|
2232
|
+
event.code === 'Enter'
|
|
2233
|
+
? onChange(element)
|
|
2234
|
+
: controller.navigationElement(event);
|
|
2230
2235
|
};
|
|
2231
2236
|
}
|
|
2232
2237
|
function onChange({ description, value }) {
|
|
2233
|
-
if (onSelect) {
|
|
2234
|
-
setState({ listIsVisible: false });
|
|
2235
|
-
onSelect(value);
|
|
2238
|
+
if (props.onSelect) {
|
|
2239
|
+
controller.setState({ listIsVisible: false });
|
|
2240
|
+
value && props.onSelect(value);
|
|
2236
2241
|
}
|
|
2237
2242
|
else {
|
|
2238
|
-
setState({ listIsVisible: false, value: description });
|
|
2239
|
-
setFormValue(value);
|
|
2243
|
+
controller.setState({ listIsVisible: false, value: description });
|
|
2244
|
+
controller.setFormValue(value);
|
|
2240
2245
|
}
|
|
2241
|
-
onValue && onValue(value);
|
|
2246
|
+
props.onValue && props.onValue(value);
|
|
2242
2247
|
}
|
|
2243
2248
|
function refreshCoincidences(pattern, reboot = false) {
|
|
2244
2249
|
const { collection, store } = components.createAutocompleteStore({
|
|
2245
2250
|
pattern,
|
|
2246
|
-
suggestions,
|
|
2251
|
+
suggestions: props.suggestions,
|
|
2247
2252
|
reboot,
|
|
2248
2253
|
store: currentStore.current
|
|
2249
2254
|
});
|
|
@@ -2252,7 +2257,7 @@ function useFieldAutocomplete({ disabled, formControl, onSelect, onValue, sugges
|
|
|
2252
2257
|
}
|
|
2253
2258
|
return {
|
|
2254
2259
|
coincidences,
|
|
2255
|
-
|
|
2260
|
+
controller,
|
|
2256
2261
|
onBlurInput,
|
|
2257
2262
|
onClickAction,
|
|
2258
2263
|
onClickBackdrop,
|
|
@@ -2267,22 +2272,25 @@ function useFieldAutocomplete({ disabled, formControl, onSelect, onValue, sugges
|
|
|
2267
2272
|
}
|
|
2268
2273
|
|
|
2269
2274
|
function RlsFieldAutocompleteTemplate(props) {
|
|
2270
|
-
const
|
|
2271
|
-
const {
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2275
|
+
const autocomplete = useFieldAutocomplete(props);
|
|
2276
|
+
const { controller } = autocomplete;
|
|
2277
|
+
const { render, children, formControl, hiddenIcon, msgErrorDisabled, onSearch, placeholder, rlsTheme, searching } = props;
|
|
2278
|
+
const disabled = formControl?.disabled || props.disabled;
|
|
2279
|
+
const className = renderClassStatus('rls-field-box', {
|
|
2280
|
+
focused: controller.focused,
|
|
2281
|
+
disabled,
|
|
2282
|
+
error: formControl?.wrong,
|
|
2283
|
+
selected: !!controller.value
|
|
2284
|
+
}, 'rls-field-list rls-field-autocomplete');
|
|
2285
|
+
return (jsxRuntimeExports.jsxs("div", { ref: controller.contentRef, className: className, "rls-theme": rlsTheme, children: [children && jsxRuntimeExports.jsx("label", { className: "rls-field-box__label", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-field-box__component", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-box__body", children: [jsxRuntimeExports.jsx("input", { className: "rls-field-list__control", readOnly: true, disabled: disabled, placeholder: placeholder, value: controller.value, onClick: autocomplete.onClickControl }), !hiddenIcon && controller.value && (jsxRuntimeExports.jsx("button", { className: "rls-field-list__action", disabled: disabled, onClick: autocomplete.onClickAction, children: jsxRuntimeExports.jsx(RlsIcon, { value: "trash-2" }) }))] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), jsxRuntimeExports.jsxs("div", { className: renderClassStatus('rls-field-list__suggestions', {
|
|
2286
|
+
visible: controller.listIsVisible,
|
|
2287
|
+
higher: controller.higher,
|
|
2288
|
+
hide: !controller.listIsVisible
|
|
2289
|
+
}), children: [jsxRuntimeExports.jsx("div", { className: "rls-field-list__suggestions__body", children: jsxRuntimeExports.jsxs("ul", { ref: controller.listRef, className: "rls-field-list__ul", children: [jsxRuntimeExports.jsxs("div", { className: "rls-field-list__ul__search", children: [jsxRuntimeExports.jsx("input", { ref: controller.inputRef, className: "rls-field-list__ul__control", type: "text", placeholder: reactI18n('listInputPlaceholder'), value: autocomplete.pattern, onChange: ({ target: { value } }) => {
|
|
2290
|
+
autocomplete.setPattern(value);
|
|
2291
|
+
}, disabled: disabled || searching, onFocus: autocomplete.onFocusInput, onBlur: autocomplete.onBlurInput, onKeyDown: autocomplete.onKeydownInput }), onSearch && (jsxRuntimeExports.jsx("button", { disabled: disabled || searching, onClick: () => {
|
|
2292
|
+
onSearch(autocomplete.pattern);
|
|
2293
|
+
}, children: jsxRuntimeExports.jsx(RlsIcon, { value: "search" }) }))] }), searching && jsxRuntimeExports.jsx(RlsProgressBar, { indeterminate: true }), autocomplete.coincidences.map((element, index) => (jsxRuntimeExports.jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: autocomplete.onClickElement(element), onKeyDown: autocomplete.onKeydownElement(element), children: render(element) }, index))), !autocomplete.coincidences.length && (jsxRuntimeExports.jsx("li", { className: "rls-field-list__empty", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-list__empty__description", children: [jsxRuntimeExports.jsx("label", { className: "rls-label-bold truncate", children: reactI18n('listEmptyTitle') }), jsxRuntimeExports.jsx("p", { className: "rls-caption-regular", children: reactI18n('listEmptyDescription') })] }) }))] }) }), jsxRuntimeExports.jsx("div", { className: "rls-field-list__backdrop", onClick: autocomplete.onClickBackdrop })] })] }));
|
|
2286
2294
|
}
|
|
2287
2295
|
function RlsFieldAutocomplete(props) {
|
|
2288
2296
|
return (jsxRuntimeExports.jsx(RlsFieldAutocompleteTemplate, { ...props, render: (element) => (jsxRuntimeExports.jsx(RlsBallot, { subtitle: element.subtitle, img: element.img, initials: element.initials, children: jsxRuntimeExports.jsx("span", { children: element.title }) })) }));
|
|
@@ -2361,9 +2369,9 @@ function RlsPickerDate({ automatic, date, disabled, formControl, maxDate, minDat
|
|
|
2361
2369
|
}
|
|
2362
2370
|
|
|
2363
2371
|
const FORMAT_DATE = '{dd}/{mx}/{aa}';
|
|
2364
|
-
function RlsFieldDate({ children, date, disabled, formControl, format, maxDate, minDate, msgErrorDisabled, onValue, placeholder, rlsTheme }) {
|
|
2372
|
+
function RlsFieldDate({ children, date, disabled, formControl, format, maxDate, minDate, msgErrorDisabled, onValue, placeholder, rlsTheme, value: defaultValue }) {
|
|
2365
2373
|
const today = new Date(); // Initial current date in component
|
|
2366
|
-
const [value, setValue] = require$$0.useState();
|
|
2374
|
+
const [value, setValue] = require$$0.useState(defaultValue);
|
|
2367
2375
|
const [modalIsVisible, setModalIsVisible] = require$$0.useState(false);
|
|
2368
2376
|
require$$0.useEffect(() => {
|
|
2369
2377
|
const dateCheck = components.checkDateRange({
|
|
@@ -2383,7 +2391,7 @@ function RlsFieldDate({ children, date, disabled, formControl, format, maxDate,
|
|
|
2383
2391
|
}
|
|
2384
2392
|
function onClickAction() {
|
|
2385
2393
|
if (value) {
|
|
2386
|
-
formControl?.setValue(
|
|
2394
|
+
formControl?.setValue(defaultValue);
|
|
2387
2395
|
formControl?.touch();
|
|
2388
2396
|
onChange(undefined);
|
|
2389
2397
|
}
|
|
@@ -2476,39 +2484,38 @@ function RlsFieldDateRange({ children, date: datePicker, disabled, formControl,
|
|
|
2476
2484
|
} }) })] }));
|
|
2477
2485
|
}
|
|
2478
2486
|
|
|
2479
|
-
function useFieldSelect(
|
|
2480
|
-
const
|
|
2481
|
-
const { inputRef, listIsVisible, navigationElement, navigationInput, setFormValue, setState } = listControl;
|
|
2487
|
+
function useFieldSelect(props) {
|
|
2488
|
+
const controller = useListController(props);
|
|
2482
2489
|
function onFocusInput() {
|
|
2483
|
-
setState({ focused: true });
|
|
2490
|
+
controller.setState({ focused: true });
|
|
2484
2491
|
}
|
|
2485
2492
|
function onBlurInput() {
|
|
2486
|
-
setState({ focused: false });
|
|
2493
|
+
controller.setState({ focused: false });
|
|
2487
2494
|
}
|
|
2488
2495
|
function onClickInput() {
|
|
2489
|
-
setState({ listIsVisible: true });
|
|
2496
|
+
controller.setState({ listIsVisible: true });
|
|
2490
2497
|
}
|
|
2491
2498
|
function onKeydownInput(event) {
|
|
2492
2499
|
switch (event.code) {
|
|
2493
2500
|
case 'Space':
|
|
2494
2501
|
case 'Enter':
|
|
2495
|
-
setState({ listIsVisible: true });
|
|
2502
|
+
controller.setState({ listIsVisible: true });
|
|
2496
2503
|
break;
|
|
2497
2504
|
case 'Escape':
|
|
2498
2505
|
case 'Tab':
|
|
2499
|
-
setState({ listIsVisible: false });
|
|
2506
|
+
controller.setState({ listIsVisible: false });
|
|
2500
2507
|
break;
|
|
2501
2508
|
default:
|
|
2502
|
-
navigationInput(event);
|
|
2509
|
+
controller.navigationInput(event);
|
|
2503
2510
|
break;
|
|
2504
2511
|
}
|
|
2505
2512
|
}
|
|
2506
2513
|
function onClickAction() {
|
|
2507
|
-
setState({ listIsVisible: !listIsVisible });
|
|
2508
|
-
!listIsVisible && inputRef?.current?.focus();
|
|
2514
|
+
controller.setState({ listIsVisible: !controller.listIsVisible });
|
|
2515
|
+
!controller.listIsVisible && controller.inputRef?.current?.focus();
|
|
2509
2516
|
}
|
|
2510
2517
|
function onClickBackdrop() {
|
|
2511
|
-
setState({ listIsVisible: false });
|
|
2518
|
+
controller.setState({ listIsVisible: false });
|
|
2512
2519
|
}
|
|
2513
2520
|
function onClickElement(element) {
|
|
2514
2521
|
return () => {
|
|
@@ -2517,23 +2524,25 @@ function useFieldSelect({ suggestions, formControl, onSelect, onValue }) {
|
|
|
2517
2524
|
}
|
|
2518
2525
|
function onKeydownElement(element) {
|
|
2519
2526
|
return (event) => {
|
|
2520
|
-
event.code === 'Enter'
|
|
2527
|
+
event.code === 'Enter'
|
|
2528
|
+
? onChange(element)
|
|
2529
|
+
: controller.navigationElement(event);
|
|
2521
2530
|
};
|
|
2522
2531
|
}
|
|
2523
2532
|
function onChange({ description, value }) {
|
|
2524
|
-
inputRef?.current?.focus();
|
|
2525
|
-
if (onSelect) {
|
|
2526
|
-
setState({ listIsVisible: false });
|
|
2527
|
-
onSelect(value);
|
|
2533
|
+
controller.inputRef?.current?.focus();
|
|
2534
|
+
if (props.onSelect) {
|
|
2535
|
+
controller.setState({ listIsVisible: false });
|
|
2536
|
+
value && props.onSelect(value);
|
|
2528
2537
|
}
|
|
2529
2538
|
else {
|
|
2530
|
-
setFormValue(value);
|
|
2531
|
-
setState({ listIsVisible: false, value: description });
|
|
2539
|
+
controller.setFormValue(value);
|
|
2540
|
+
controller.setState({ listIsVisible: false, value: description });
|
|
2532
2541
|
}
|
|
2533
|
-
onValue && onValue(value);
|
|
2542
|
+
props.onValue && props.onValue(value);
|
|
2534
2543
|
}
|
|
2535
2544
|
return {
|
|
2536
|
-
|
|
2545
|
+
controller,
|
|
2537
2546
|
onBlurInput,
|
|
2538
2547
|
onClickAction,
|
|
2539
2548
|
onClickBackdrop,
|
|
@@ -2546,19 +2555,22 @@ function useFieldSelect({ suggestions, formControl, onSelect, onValue }) {
|
|
|
2546
2555
|
}
|
|
2547
2556
|
|
|
2548
2557
|
function RlsFieldSelectTemplate(props) {
|
|
2549
|
-
const
|
|
2550
|
-
const {
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2558
|
+
const select = useFieldSelect(props);
|
|
2559
|
+
const { controller } = select;
|
|
2560
|
+
const { render, suggestions, children, formControl, msgErrorDisabled, placeholder, rlsTheme } = props;
|
|
2561
|
+
const disabled = formControl?.disabled || props.disabled;
|
|
2562
|
+
const className = renderClassStatus('rls-field-box', {
|
|
2563
|
+
focused: controller.focused,
|
|
2564
|
+
disabled,
|
|
2565
|
+
error: formControl?.wrong
|
|
2566
|
+
}, 'rls-field-list rls-field-select');
|
|
2567
|
+
return (jsxRuntimeExports.jsxs("div", { ref: controller.contentRef, className: className, "rls-theme": rlsTheme, children: [children && jsxRuntimeExports.jsx("label", { className: "rls-field-box__label", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-field-box__component", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-box__body", children: [jsxRuntimeExports.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 }), jsxRuntimeExports.jsx("button", { className: renderClassStatus('rls-field-list__action', {
|
|
2568
|
+
visible: controller.listIsVisible
|
|
2569
|
+
}), disabled: disabled, onClick: select.onClickAction, children: jsxRuntimeExports.jsx(RlsIcon, { value: "arrow-ios-down" }) })] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), jsxRuntimeExports.jsxs("div", { className: renderClassStatus('rls-field-list__suggestions', {
|
|
2570
|
+
visible: controller.listIsVisible,
|
|
2571
|
+
higher: controller.higher,
|
|
2572
|
+
hide: !controller.listIsVisible
|
|
2573
|
+
}), children: [jsxRuntimeExports.jsx("div", { className: "rls-field-list__suggestions__body", children: jsxRuntimeExports.jsxs("ul", { ref: controller.listRef, className: "rls-field-list__ul", children: [suggestions.map((element, index) => (jsxRuntimeExports.jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: select.onClickElement(element), onKeyDown: select.onKeydownElement(element), children: render(element) }, index))), !suggestions.length && (jsxRuntimeExports.jsx("li", { className: "rls-field-list__empty", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-list__empty__description", children: [jsxRuntimeExports.jsx("label", { className: "rls-label-bold truncate", children: reactI18n('listEmptyTitle') }), jsxRuntimeExports.jsx("p", { className: "rls-caption-regular", children: reactI18n('listEmptyDescription') })] }) }))] }) }), jsxRuntimeExports.jsx("div", { className: "rls-field-list__backdrop", onClick: select.onClickBackdrop })] })] }));
|
|
2562
2574
|
}
|
|
2563
2575
|
function RlsFieldSelect(props) {
|
|
2564
2576
|
return (jsxRuntimeExports.jsx(RlsFieldSelectTemplate, { ...props, render: (element) => (jsxRuntimeExports.jsx(RlsBallot, { subtitle: element.subtitle, img: element.img, initials: element.initials, children: jsxRuntimeExports.jsx("span", { children: element.title }) })) }));
|
|
@@ -2704,6 +2716,6 @@ exports.rangeFormatTemplate = rangeFormatTemplate;
|
|
|
2704
2716
|
exports.renderClassStatus = renderClassStatus;
|
|
2705
2717
|
exports.useConfirmationService = useConfirmationService;
|
|
2706
2718
|
exports.useDatatable = useDatatable;
|
|
2707
|
-
exports.
|
|
2719
|
+
exports.useListController = useListController;
|
|
2708
2720
|
exports.useSnackbarService = useSnackbarService;
|
|
2709
2721
|
//# sourceMappingURL=index.js.map
|