如何通过更改宽度并在其中插入图标来设置 vue-bootstrap-datetimepicker 的样式?
How to style vue-bootstrap-datetimepicker by changing the width and inserting icons in it?
我有两个来自包 vue-bootstrap-datetimepicker 的日期选择器对象。它们在功能方面非常完美,但我想对它们的外观进行一些更改。我有以下相关代码:
<template>
<div>
<div class="form-row">
<date-picker
name="begin-date"
@dp-change="changeDate()"
v-model="model.beginDate"
:config="datePickerConfig"
ref="beginDate">
</date-picker>
</div>
<div class="form-row">
<date-picker
name="end-date"
@dp-change="changeDate()"
v-model="model.endDate"
:config="datePickerConfig"
ref="endDate">
</date-picker>
</div>
</div>
</template>
例如,我想插入日历图标,我通常在 bootstrap 组件中这样做:
<b-button
id="Somebutton"
:title="example for stack overflow"
size="sm"
:class="{danger: hasError}"
:disabled="loading">
<font-awesome-icon icon="columns"></font-awesome-icon>
</b-button>
但是在我想更改的代码中放置 <font-awesome-icon icon="columns"></font-awesome-icon>
不起作用。 HTML 也不起作用(例如 <i class="fas fa-columns"></i>
)。所以我想知道如何将图标放在那里。另一个问题是如何改变它们的宽度,此时它们看起来像这样:
我想更改它们的宽度,以便它们在同一行上彼此相邻,但在包文档中找不到任何可以帮助我执行此操作的内容。
TL;DR:这是 fiddle:https://jsfiddle.net/62a3Lu9y/6/
要将按钮添加到表单域,您可以使用 button addons to form fields。
<div class="input-group">
<div class="input-group-prepend">
<button class="btn btn-outline-primary" type="button">Button</button>
</div>
<date-picker ... />
</div>
但是,这只允许您在字段插件中显示您的按钮。为了让它主动切换选择器,您需要将按钮事件绑定到 vue-bootstrap-datetimepicker
组件中包含的日期选择器:
- 给日期选择器一个
ref
: <date-picker ref="dp" .../>
- 在按钮上注册
@click
事件并访问那里的 ref:<button ... @click="$refs.dp...">
- 访问内部日期选择器以便能够在其上调用 functions:
@click="$refs.dp.dp.show()"
(这有点 hacky,因为它破坏了 vue 日期选择器组件的封装)
关于布局问题,您应该能够通过简单地为表单使用网格布局来做到这一点,请参阅 https://getbootstrap.com/docs/4.1/components/forms/#form-grid。
类似的东西
<div class="row">
<div class="col">
<date-picker ... />
</div>
<div class="col">
<date-picker ... />
</div>
</div>
我有两个来自包 vue-bootstrap-datetimepicker 的日期选择器对象。它们在功能方面非常完美,但我想对它们的外观进行一些更改。我有以下相关代码:
<template>
<div>
<div class="form-row">
<date-picker
name="begin-date"
@dp-change="changeDate()"
v-model="model.beginDate"
:config="datePickerConfig"
ref="beginDate">
</date-picker>
</div>
<div class="form-row">
<date-picker
name="end-date"
@dp-change="changeDate()"
v-model="model.endDate"
:config="datePickerConfig"
ref="endDate">
</date-picker>
</div>
</div>
</template>
例如,我想插入日历图标,我通常在 bootstrap 组件中这样做:
<b-button
id="Somebutton"
:title="example for stack overflow"
size="sm"
:class="{danger: hasError}"
:disabled="loading">
<font-awesome-icon icon="columns"></font-awesome-icon>
</b-button>
但是在我想更改的代码中放置 <font-awesome-icon icon="columns"></font-awesome-icon>
不起作用。 HTML 也不起作用(例如 <i class="fas fa-columns"></i>
)。所以我想知道如何将图标放在那里。另一个问题是如何改变它们的宽度,此时它们看起来像这样:
我想更改它们的宽度,以便它们在同一行上彼此相邻,但在包文档中找不到任何可以帮助我执行此操作的内容。
TL;DR:这是 fiddle:https://jsfiddle.net/62a3Lu9y/6/
要将按钮添加到表单域,您可以使用 button addons to form fields。
<div class="input-group">
<div class="input-group-prepend">
<button class="btn btn-outline-primary" type="button">Button</button>
</div>
<date-picker ... />
</div>
但是,这只允许您在字段插件中显示您的按钮。为了让它主动切换选择器,您需要将按钮事件绑定到 vue-bootstrap-datetimepicker
组件中包含的日期选择器:
- 给日期选择器一个
ref
:<date-picker ref="dp" .../>
- 在按钮上注册
@click
事件并访问那里的 ref:<button ... @click="$refs.dp...">
- 访问内部日期选择器以便能够在其上调用 functions:
@click="$refs.dp.dp.show()"
(这有点 hacky,因为它破坏了 vue 日期选择器组件的封装)
关于布局问题,您应该能够通过简单地为表单使用网格布局来做到这一点,请参阅 https://getbootstrap.com/docs/4.1/components/forms/#form-grid。
类似的东西
<div class="row">
<div class="col">
<date-picker ... />
</div>
<div class="col">
<date-picker ... />
</div>
</div>