如何在 Stenciljs 组件中使用 Flatpickr?
How to use Flatpickr in Stenciljs components?
Flatpickr 输入字段未在模板组件中正确显示 css。
我在新创建的(使用 stencil cli)应用程序中添加了 flatpickr 日期输入字段。没有更改其他设置或配置。
import { Component, h } from '@stencil/core';
import flatpickr from 'flatpickr';
@Component({
tag: 'my-component',
styleUrl: 'my-component.css',
shadow: true,
})
export class MyComponent {
private element: HTMLInputElement;
componentDidLoad() {
flatpickr(this.element, {
});
}
render() {
return (
<div>
<input ref={el => this.element = el} type="text" id="flatpickr" />
</div>
)
}
}
我猜问题出在样式上,因为您发布的代码看起来是正确的。
Flatpickr 默认将日历附加到 body
元素,并且由于 CSS 在启用 ShadowDOM 时被封装 (shadow: true
) my-component.css
中的样式不会影响它。
我看到三个选项:
1.附加到不同的元素
您可以为日历(您的组件或其中的任何元素)设置不同的父级
import { Component, Element, h } from '@stencil/core';
// ...
export class MyComponent {
@Element() el: HTMLElement;
private element: HTMLInputElement;
componentDidLoad() {
flatpickr(this.element, {
appendTo: this.el,
});
}
render() {
return (
<div>
<input ref={el => this.element = el} type="text" id="flatpickr" />
</div>
)
}
}
并导入 CSS (my-component.css
) 中的样式:
@import '~flatpickr/dist/flatpickr.min.css';
2。全局包含 Flatpickr CSS。
在您的 HTML head
或任何全局 CSS 文件中包含 CSS。
3。禁用 ShadowDOM
设置 shadow: false
以允许 my-component.css
中的样式影响组件外部的元素,并在 my-component.css
中导入 CSS(与选项 1 相同)。
Flatpickr 输入字段未在模板组件中正确显示 css。 我在新创建的(使用 stencil cli)应用程序中添加了 flatpickr 日期输入字段。没有更改其他设置或配置。
import { Component, h } from '@stencil/core';
import flatpickr from 'flatpickr';
@Component({
tag: 'my-component',
styleUrl: 'my-component.css',
shadow: true,
})
export class MyComponent {
private element: HTMLInputElement;
componentDidLoad() {
flatpickr(this.element, {
});
}
render() {
return (
<div>
<input ref={el => this.element = el} type="text" id="flatpickr" />
</div>
)
}
}
我猜问题出在样式上,因为您发布的代码看起来是正确的。
Flatpickr 默认将日历附加到 body
元素,并且由于 CSS 在启用 ShadowDOM 时被封装 (shadow: true
) my-component.css
中的样式不会影响它。
我看到三个选项:
1.附加到不同的元素
您可以为日历(您的组件或其中的任何元素)设置不同的父级
import { Component, Element, h } from '@stencil/core';
// ...
export class MyComponent {
@Element() el: HTMLElement;
private element: HTMLInputElement;
componentDidLoad() {
flatpickr(this.element, {
appendTo: this.el,
});
}
render() {
return (
<div>
<input ref={el => this.element = el} type="text" id="flatpickr" />
</div>
)
}
}
并导入 CSS (my-component.css
) 中的样式:
@import '~flatpickr/dist/flatpickr.min.css';
2。全局包含 Flatpickr CSS。
在您的 HTML head
或任何全局 CSS 文件中包含 CSS。
3。禁用 ShadowDOM
设置 shadow: false
以允许 my-component.css
中的样式影响组件外部的元素,并在 my-component.css
中导入 CSS(与选项 1 相同)。