Material-UI Select中的单行省略号和选项Component

时间:2018-03-07 21:18:00

标签: css reactjs material-ui

我有一个包含多列的TableHead组件。其中一个是<Select>,因此您可以过滤表格的内容(在我的情况下,该值是4种状态之一)。我想在选项'字符串的末尾添加一个省略号,如果它比它的容器长。

我的问题是,材料ui的样式包裹在Select组件周围,所以无论我是使用样式还是在标签内插入样式,它都不起作用。

我检查了材料用户界面,您可以noWraptextOverflow: "ellipsis"工作,但我无法找到正确的组合。

我的预期结果是,如果字符串大于其父级,则显示省略号。所以不要这样:

1]

我想要一个简单的“贡献......”(来自Material-UI Select组件的svg覆盖文本......)

我尝试了很多不同的选择,但他们都没有做任何事情,所以我必须做错事。我尝试改变颜色,看看我的风格是否受到影响。

<Grid item sm={2} lg={2} style={{display: 'flex', alignItems:'center'}}>
    <Select native style={{ textOverflow: "ellipsis", overflow: "hidden", whiteSpace: "pre" }}
            value={this.state.status}
            onChange={this.handleChange.bind(this, Filter.Status)}>
        {Object.keys(StatusFilter).filter(key => !isNaN(Number(StatusFilter[key]))).map(item => {
            return (<option key={item} value={StatusFilter[item]}>{this.getStatus(StatusFilter[item])}</option>);
        })}
    </Select>
</Grid>

3 个答案:

答案 0 :(得分:2)

这里有两件事,首先是本机选择无法添加省略号,因为文本溢出仅适用于块元素。见Is it possible to make text-overflow:ellipsis for select with css only?

如果您想要探索这种方式,还有inputProps这是一个可用于将属性传递给基础输入的对象。因此,如果要将样式添加到本机输入,您可以:

   <Select native inputProps={{ style: { width: 100 } }}>{...}</Select>

另一方面,如果删除native属性,如果选择框小于文本,则默认情况下应应用省略号。

答案 1 :(得分:1)

就我而言,即使在非原生 Select 组件上也缺少省略号,这是因为 display: flex 样式应用于“MuiSelect-root”组件。

替换它 - 即用 display:block - 和省略号将为您服务。

答案 2 :(得分:0)

            <FormControl
              variant="outlined"
              margin="dense"
              className={classes.formControl}
              error={touched.test && Boolean(errors.test)}
              >
              <InputLabel id="demo-simple-select-outlined-label">Test</InputLabel>
              <Select
                labelId="demo-simple-select-outlined-label"
                id="demo-simple-select-outlined"
                value={course}
                name="test"
                onChange={handleChange}
                label="Test"
              >
                <MenuItem value="">
                  <em>None</em>
                </MenuItem>
                <MenuItem value={1}>1</MenuItem>
                <MenuItem value={2}>2</MenuItem>
                <MenuItem value={3}>3</MenuItem>
                <MenuItem value={4}>4</MenuItem>
              </Select>
              <FormHelperText error={touched.test && Boolean(errors.test)}>{errors.test}</FormHelperText>
            </FormControl>

并添加类: formControl:{ 宽度:“ 100%”, }