@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.
- package/dist/cjs/index.js +113 -100
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/index.js +113 -100
- package/dist/es/index.js.map +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 +35 -4
- 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/{FieldAutocompleteHook.d.ts → FieldAutocompleteController.d.ts} +7 -6
- package/dist/esm/components/organisms/FieldAutocomplete/{FieldAutocompleteHook.js → FieldAutocompleteController.js} +28 -26
- 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 +36 -5
- 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 +25 -0
- package/dist/esm/components/organisms/FieldSelect/FieldSelectController.js +72 -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/{hooks/ListControlHook.d.ts → controllers/ListController.d.ts} +9 -8
- package/dist/esm/{hooks/ListControlHook.js → controllers/ListController.js} +12 -11
- 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 +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/package.json +7 -7
- 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.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
|
@@ -2039,40 +2039,43 @@ 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;
|
|
2070
|
+
const listIsOpen = require$$0.useRef(false);
|
|
2067
2071
|
const contentRef = require$$0.useRef(null);
|
|
2068
2072
|
const listRef = require$$0.useRef(null);
|
|
2069
2073
|
const inputRef = require$$0.useRef(null);
|
|
2070
|
-
const listIsOpen = require$$0.useRef(false);
|
|
2071
2074
|
const [state, setState] = require$$0.useState({
|
|
2072
2075
|
focused: false,
|
|
2073
2076
|
higher: false,
|
|
2074
2077
|
value: '',
|
|
2075
|
-
|
|
2078
|
+
modalIsVisible: false
|
|
2076
2079
|
});
|
|
2077
2080
|
const collection = require$$0.useRef(new components.ListCollection([]));
|
|
2078
2081
|
const position = require$$0.useRef(0);
|
|
@@ -2080,7 +2083,7 @@ function useListControl({ suggestions, formControl }) {
|
|
|
2080
2083
|
require$$0.useEffect(() => {
|
|
2081
2084
|
function onCloseSuggestions({ target }) {
|
|
2082
2085
|
!contentRef?.current?.contains(target) &&
|
|
2083
|
-
setState((state) => ({ ...state,
|
|
2086
|
+
setState((state) => ({ ...state, modalIsVisible: false }));
|
|
2084
2087
|
}
|
|
2085
2088
|
document.addEventListener('click', onCloseSuggestions);
|
|
2086
2089
|
return () => {
|
|
@@ -2088,17 +2091,17 @@ function useListControl({ suggestions, formControl }) {
|
|
|
2088
2091
|
};
|
|
2089
2092
|
}, []);
|
|
2090
2093
|
require$$0.useEffect(() => {
|
|
2091
|
-
if (!listIsOpen.current && state.
|
|
2094
|
+
if (!listIsOpen.current && state.modalIsVisible) {
|
|
2092
2095
|
listIsOpen.current = true;
|
|
2093
2096
|
}
|
|
2094
|
-
if (listIsOpen.current && !state.
|
|
2097
|
+
if (listIsOpen.current && !state.modalIsVisible) {
|
|
2095
2098
|
formControl?.touch();
|
|
2096
2099
|
}
|
|
2097
2100
|
setState((state) => ({
|
|
2098
2101
|
...state,
|
|
2099
2102
|
higher: components.locationListCanTop(contentRef.current, listRef.current)
|
|
2100
2103
|
}));
|
|
2101
|
-
}, [state.
|
|
2104
|
+
}, [state.modalIsVisible]);
|
|
2102
2105
|
require$$0.useEffect(() => {
|
|
2103
2106
|
collection.current = new components.ListCollection(suggestions);
|
|
2104
2107
|
refresh(collection.current, formControl?.value);
|
|
@@ -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
|
}
|
|
@@ -2138,7 +2141,7 @@ function useListControl({ suggestions, formControl }) {
|
|
|
2138
2141
|
formControl?.setValue(value);
|
|
2139
2142
|
}
|
|
2140
2143
|
function navigationInput(event) {
|
|
2141
|
-
if (state.
|
|
2144
|
+
if (state.modalIsVisible) {
|
|
2142
2145
|
const newPosition = components.navigationListFromInput({
|
|
2143
2146
|
content: contentRef.current,
|
|
2144
2147
|
event: event,
|
|
@@ -2170,54 +2173,54 @@ function useListControl({ suggestions, formControl }) {
|
|
|
2170
2173
|
|
|
2171
2174
|
const DURATION_ANIMATION$1 = 240;
|
|
2172
2175
|
const MAX_ELEMENTS = 6;
|
|
2173
|
-
function useFieldAutocomplete(
|
|
2174
|
-
const
|
|
2176
|
+
function useFieldAutocomplete(props) {
|
|
2177
|
+
const controller = useListController(props);
|
|
2175
2178
|
const [coincidences, setCoincidences] = require$$0.useState([]);
|
|
2179
|
+
const [pattern, setPattern] = require$$0.useState('');
|
|
2176
2180
|
const currentStore = require$$0.useRef({
|
|
2177
2181
|
coincidences: [],
|
|
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({
|
|
2194
|
+
controller.setState({ modalIsVisible: 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({
|
|
2210
|
+
controller.setState({ modalIsVisible: 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({
|
|
2216
|
-
setFormValue(
|
|
2217
|
-
onValue && onValue(
|
|
2218
|
+
controller.setState({ modalIsVisible: false, value: '' });
|
|
2219
|
+
controller.setFormValue(props.value);
|
|
2220
|
+
props.onValue && props.onValue(props.value);
|
|
2218
2221
|
}
|
|
2219
2222
|
function onClickBackdrop() {
|
|
2220
|
-
setState({
|
|
2223
|
+
controller.setState({ modalIsVisible: 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({
|
|
2235
|
-
onSelect(value);
|
|
2238
|
+
if (props.onSelect) {
|
|
2239
|
+
controller.setState({ modalIsVisible: false });
|
|
2240
|
+
value && props.onSelect(value);
|
|
2236
2241
|
}
|
|
2237
2242
|
else {
|
|
2238
|
-
setState({
|
|
2239
|
-
setFormValue(value);
|
|
2243
|
+
controller.setState({ modalIsVisible: 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.modalIsVisible,
|
|
2287
|
+
higher: controller.higher,
|
|
2288
|
+
hide: !controller.modalIsVisible
|
|
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,39 @@ 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({
|
|
2496
|
+
controller.setState({ modalIsVisible: true });
|
|
2490
2497
|
}
|
|
2491
2498
|
function onKeydownInput(event) {
|
|
2492
2499
|
switch (event.code) {
|
|
2493
2500
|
case 'Space':
|
|
2494
2501
|
case 'Enter':
|
|
2495
|
-
setState({
|
|
2502
|
+
controller.setState({ modalIsVisible: true });
|
|
2496
2503
|
break;
|
|
2497
2504
|
case 'Escape':
|
|
2498
2505
|
case 'Tab':
|
|
2499
|
-
setState({
|
|
2506
|
+
controller.setState({ modalIsVisible: 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
|
-
|
|
2508
|
-
|
|
2514
|
+
const modalIsVisible = !controller.modalIsVisible;
|
|
2515
|
+
controller.setState({ modalIsVisible });
|
|
2516
|
+
modalIsVisible && controller.inputRef?.current?.focus();
|
|
2509
2517
|
}
|
|
2510
2518
|
function onClickBackdrop() {
|
|
2511
|
-
setState({
|
|
2519
|
+
controller.setState({ modalIsVisible: false });
|
|
2512
2520
|
}
|
|
2513
2521
|
function onClickElement(element) {
|
|
2514
2522
|
return () => {
|
|
@@ -2517,23 +2525,25 @@ function useFieldSelect({ suggestions, formControl, onSelect, onValue }) {
|
|
|
2517
2525
|
}
|
|
2518
2526
|
function onKeydownElement(element) {
|
|
2519
2527
|
return (event) => {
|
|
2520
|
-
event.code === 'Enter'
|
|
2528
|
+
event.code === 'Enter'
|
|
2529
|
+
? onChange(element)
|
|
2530
|
+
: controller.navigationElement(event);
|
|
2521
2531
|
};
|
|
2522
2532
|
}
|
|
2523
2533
|
function onChange({ description, value }) {
|
|
2524
|
-
inputRef?.current?.focus();
|
|
2525
|
-
if (onSelect) {
|
|
2526
|
-
setState({
|
|
2527
|
-
onSelect(value);
|
|
2534
|
+
controller.inputRef?.current?.focus();
|
|
2535
|
+
if (props.onSelect) {
|
|
2536
|
+
controller.setState({ modalIsVisible: false });
|
|
2537
|
+
value && props.onSelect(value);
|
|
2528
2538
|
}
|
|
2529
2539
|
else {
|
|
2530
|
-
setFormValue(value);
|
|
2531
|
-
setState({
|
|
2540
|
+
controller.setFormValue(value);
|
|
2541
|
+
controller.setState({ modalIsVisible: false, value: description });
|
|
2532
2542
|
}
|
|
2533
|
-
onValue && onValue(value);
|
|
2543
|
+
props.onValue && props.onValue(value);
|
|
2534
2544
|
}
|
|
2535
2545
|
return {
|
|
2536
|
-
|
|
2546
|
+
controller,
|
|
2537
2547
|
onBlurInput,
|
|
2538
2548
|
onClickAction,
|
|
2539
2549
|
onClickBackdrop,
|
|
@@ -2546,19 +2556,22 @@ function useFieldSelect({ suggestions, formControl, onSelect, onValue }) {
|
|
|
2546
2556
|
}
|
|
2547
2557
|
|
|
2548
2558
|
function RlsFieldSelectTemplate(props) {
|
|
2549
|
-
const
|
|
2550
|
-
const {
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2559
|
+
const select = useFieldSelect(props);
|
|
2560
|
+
const { controller } = select;
|
|
2561
|
+
const { render, suggestions, children, formControl, msgErrorDisabled, placeholder, rlsTheme } = props;
|
|
2562
|
+
const disabled = formControl?.disabled || props.disabled;
|
|
2563
|
+
const className = renderClassStatus('rls-field-box', {
|
|
2564
|
+
focused: controller.focused,
|
|
2565
|
+
disabled,
|
|
2566
|
+
error: formControl?.wrong
|
|
2567
|
+
}, 'rls-field-list rls-field-select');
|
|
2568
|
+
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', {
|
|
2569
|
+
visible: controller.modalIsVisible
|
|
2570
|
+
}), 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', {
|
|
2571
|
+
visible: controller.modalIsVisible,
|
|
2572
|
+
higher: controller.higher,
|
|
2573
|
+
hide: !controller.modalIsVisible
|
|
2574
|
+
}), 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
2575
|
}
|
|
2563
2576
|
function RlsFieldSelect(props) {
|
|
2564
2577
|
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 +2717,6 @@ exports.rangeFormatTemplate = rangeFormatTemplate;
|
|
|
2704
2717
|
exports.renderClassStatus = renderClassStatus;
|
|
2705
2718
|
exports.useConfirmationService = useConfirmationService;
|
|
2706
2719
|
exports.useDatatable = useDatatable;
|
|
2707
|
-
exports.
|
|
2720
|
+
exports.useListController = useListController;
|
|
2708
2721
|
exports.useSnackbarService = useSnackbarService;
|
|
2709
2722
|
//# sourceMappingURL=index.js.map
|