Skip to content

Commit 1484ae8

Browse files
authored
Fix Select component's boundaries (#18)
1 parent 89e60d4 commit 1484ae8

File tree

1 file changed

+35
-29
lines changed

1 file changed

+35
-29
lines changed

src/Lumi/Components/Select.purs

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -207,34 +207,38 @@ select :: forall option. SelectProps option -> JSX
207207
select = makeStateless component render
208208
where
209209
render props =
210-
selectBackend
211-
{ isOpen: Nothing
212-
, loadOnMount: props.loadOnMount
213-
, loadOptions: props.loadOptions
214-
, optionSort: props.optionSort
215-
, toSelectOption: props.toSelectOption
216-
, allowMultiple: props.allowMultiple
217-
, disabled: props.disabled
218-
, onChange: props.onChange
219-
, value: props.value
220-
, render: \selectState ->
221-
lumiSelectElement
222-
{ "class": props.className
223-
, "data-disabled": props.disabled
224-
, "data-focus": selectState.isOpen
225-
, "data-multi": props.allowMultiple
226-
, style: props.style
227-
, children:
228-
[ renderInput props selectState
229-
, if selectState.isOpen
230-
then renderMenu props selectState
231-
else empty
232-
]
233-
, onClick: Events.handler currentTarget \ct -> do
234-
selectState.openSelect
235-
traverse_ focusChildInput $ Node.fromEventTarget ct
236-
, onFocus: Events.handler_ selectState.openSelect
237-
}
210+
lumiSelectElement
211+
{ "class": props.className
212+
, "data-disabled": props.disabled
213+
, "data-multi": props.allowMultiple
214+
, style: props.style
215+
, children:
216+
[ selectBackend
217+
{ isOpen: Nothing
218+
, loadOnMount: props.loadOnMount
219+
, loadOptions: props.loadOptions
220+
, optionSort: props.optionSort
221+
, toSelectOption: props.toSelectOption
222+
, allowMultiple: props.allowMultiple
223+
, disabled: props.disabled
224+
, onChange: props.onChange
225+
, value: props.value
226+
, render: \selectState ->
227+
lumiSelectInnerElement
228+
{ "data-focus": selectState.isOpen
229+
, children:
230+
[ renderInput props selectState
231+
, if selectState.isOpen
232+
then renderMenu props selectState
233+
else empty
234+
]
235+
, onClick: Events.handler currentTarget \ct -> do
236+
selectState.openSelect
237+
traverse_ focusChildInput $ Node.fromEventTarget ct
238+
, onFocus: Events.handler_ selectState.openSelect
239+
}
240+
}
241+
]
238242
}
239243

240244
renderInput props selectState =
@@ -344,6 +348,8 @@ select = makeStateless component render
344348

345349
lumiSelectElement =
346350
element (R.unsafeCreateDOMComponent "lumi-select")
351+
lumiSelectInnerElement =
352+
element (R.unsafeCreateDOMComponent "lumi-select-inner")
347353
lumiSelectInputElement =
348354
element (R.unsafeCreateDOMComponent "lumi-select-input")
349355
lumiSelectNativeInputElement =
@@ -402,7 +408,7 @@ styles = jss
402408
}
403409

404410
, "&:hover lumi-select-input": lumiInputHoverStyles
405-
, "&:focus lumi-select-input, &[data-focus=\"true\"] lumi-select-input": lumiInputFocusStyles
411+
, "&:focus lumi-select-input, & lumi-select-inner[data-focus=\"true\"] lumi-select-input": lumiInputFocusStyles
406412
, "&[data-disabled=\"true\"] lumi-select-input": lumiInputDisabledStyles
407413

408414
, "& lumi-select-input-selected-values":

0 commit comments

Comments
 (0)