mirror of
https://github.com/zadam/trilium.git
synced 2024-11-15 12:17:01 +08:00
231 lines
5.3 KiB
HTML
231 lines
5.3 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<title>JSDoc: Source: widgets/basic_widget.js</title>
|
||
|
|
||
|
<script src="scripts/prettify/prettify.js"> </script>
|
||
|
<script src="scripts/prettify/lang-css.js"> </script>
|
||
|
<!--[if lt IE 9]>
|
||
|
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||
|
<![endif]-->
|
||
|
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
||
|
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
||
|
</head>
|
||
|
|
||
|
<body>
|
||
|
|
||
|
<div id="main">
|
||
|
|
||
|
<h1 class="page-title">Source: widgets/basic_widget.js</h1>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<section>
|
||
|
<article>
|
||
|
<pre class="prettyprint source linenums"><code>import Component from "../components/component.js";
|
||
|
|
||
|
|
||
|
/**
|
||
|
* This is the base widget for all other widgets.
|
||
|
*
|
||
|
* For information on using widgets, see the tutorial {@tutorial widget_basics}.
|
||
|
*/
|
||
|
class BasicWidget extends Component {
|
||
|
constructor() {
|
||
|
super();
|
||
|
|
||
|
this.attrs = {
|
||
|
style: ''
|
||
|
};
|
||
|
this.classes = [];
|
||
|
|
||
|
this.children = [];
|
||
|
this.childPositionCounter = 10;
|
||
|
}
|
||
|
|
||
|
child(...components) {
|
||
|
if (!components) {
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
super.child(...components);
|
||
|
|
||
|
for (const component of components) {
|
||
|
if (component.position === undefined) {
|
||
|
component.position = this.childPositionCounter;
|
||
|
this.childPositionCounter += 10;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
this.children.sort((a, b) => a.position - b.position < 0 ? -1 : 1);
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
id(id) {
|
||
|
this.attrs.id = id;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
class(className) {
|
||
|
this.classes.push(className);
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
css(name, value) {
|
||
|
this.attrs.style += `${name}: ${value};`;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
contentSized() {
|
||
|
this.css("contain", "none");
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
collapsible() {
|
||
|
this.css('min-height', '0');
|
||
|
this.css('min-width', '0');
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
filling() {
|
||
|
this.css('flex-grow', '1');
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Accepts a string of CSS to add with the widget.
|
||
|
* @param {string} block
|
||
|
* @returns {this} for chaining
|
||
|
*/
|
||
|
cssBlock(block) {
|
||
|
this.cssEl = block;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
render() {
|
||
|
this.doRender();
|
||
|
|
||
|
this.$widget.attr('data-component-id', this.componentId);
|
||
|
this.$widget.addClass('component')
|
||
|
.prop('component', this);
|
||
|
|
||
|
if (!this.isEnabled()) {
|
||
|
this.toggleInt(false);
|
||
|
}
|
||
|
|
||
|
if (this.cssEl) {
|
||
|
const css = this.cssEl.trim().startsWith('<style>') ? this.cssEl : `<style>${this.cssEl}</style>`;
|
||
|
|
||
|
this.$widget.append(css);
|
||
|
}
|
||
|
|
||
|
for (const key in this.attrs) {
|
||
|
if (key === 'style') {
|
||
|
if (this.attrs[key]) {
|
||
|
let style = this.$widget.attr('style');
|
||
|
style = style ? `${style}; ${this.attrs[key]}` : this.attrs[key];
|
||
|
|
||
|
this.$widget.attr(key, style);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
this.$widget.attr(key, this.attrs[key]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (const className of this.classes) {
|
||
|
this.$widget.addClass(className);
|
||
|
}
|
||
|
|
||
|
return this.$widget;
|
||
|
}
|
||
|
|
||
|
isEnabled() {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Method used for rendering the widget.
|
||
|
*
|
||
|
* Your class should override this method.
|
||
|
* @returns {JQuery<HTMLElement>} Your widget.
|
||
|
*/
|
||
|
doRender() {}
|
||
|
|
||
|
toggleInt(show) {
|
||
|
this.$widget.toggleClass('hidden-int', !show);
|
||
|
}
|
||
|
|
||
|
isHiddenInt() {
|
||
|
return this.$widget.hasClass('hidden-int');
|
||
|
}
|
||
|
|
||
|
toggleExt(show) {
|
||
|
this.$widget.toggleClass('hidden-ext', !show);
|
||
|
}
|
||
|
|
||
|
isHiddenExt() {
|
||
|
return this.$widget.hasClass('hidden-ext');
|
||
|
}
|
||
|
|
||
|
canBeShown() {
|
||
|
return !this.isHiddenInt() && !this.isHiddenExt();
|
||
|
}
|
||
|
|
||
|
isVisible() {
|
||
|
return this.$widget.is(":visible");
|
||
|
}
|
||
|
|
||
|
getPosition() {
|
||
|
return this.position;
|
||
|
}
|
||
|
|
||
|
remove() {
|
||
|
if (this.$widget) {
|
||
|
this.$widget.remove();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
getClosestNtxId() {
|
||
|
if (this.$widget) {
|
||
|
return this.$widget.closest("[data-ntx-id]").attr("data-ntx-id");
|
||
|
}
|
||
|
else {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
cleanup() {}
|
||
|
}
|
||
|
|
||
|
export default BasicWidget;
|
||
|
</code></pre>
|
||
|
</article>
|
||
|
</section>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<nav>
|
||
|
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="BasicWidget.html">BasicWidget</a></li><li><a href="FAttachment.html">FAttachment</a></li><li><a href="FAttribute.html">FAttribute</a></li><li><a href="FBranch.html">FBranch</a></li><li><a href="FNote.html">FNote</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteContextAwareWidget.html">NoteContextAwareWidget</a></li><li><a href="RightPanelWidget.html">RightPanelWidget</a></li></ul><h3>Global</h3><ul><li><a href="global.html#api">api</a></li></ul>
|
||
|
</nav>
|
||
|
|
||
|
<br class="clear">
|
||
|
|
||
|
<footer>
|
||
|
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
|
||
|
</footer>
|
||
|
|
||
|
<script> prettyPrint(); </script>
|
||
|
<script src="scripts/linenumber.js"> </script>
|
||
|
</body>
|
||
|
</html>
|