aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/pl/treksoft/kvision/KVManager.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/pl/treksoft/kvision/KVManager.kt')
-rw-r--r--src/main/kotlin/pl/treksoft/kvision/KVManager.kt84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/main/kotlin/pl/treksoft/kvision/KVManager.kt b/src/main/kotlin/pl/treksoft/kvision/KVManager.kt
new file mode 100644
index 00000000..5d5c03fa
--- /dev/null
+++ b/src/main/kotlin/pl/treksoft/kvision/KVManager.kt
@@ -0,0 +1,84 @@
+/**
+ * @author Robert Jaros
+ */
+package pl.treksoft.kvision
+
+import com.github.snabbdom.Snabbdom
+import com.github.snabbdom.VNode
+import com.github.snabbdom.attributesModule
+import com.github.snabbdom.classModule
+import com.github.snabbdom.datasetModule
+import com.github.snabbdom.eventListenersModule
+import com.github.snabbdom.propsModule
+import com.github.snabbdom.styleModule
+import kotlin.browser.document
+import kotlin.dom.clear
+
+/**
+ * @suppress
+ * External function for loading CommonJS modules.
+ */
+external fun require(name: String): dynamic
+
+/**
+ * Internal singleton object which initializes and configures KVision framework.
+ */
+internal object KVManager {
+ internal const val AJAX_REQUEST_DELAY = 300
+ internal const val KVNULL = "#kvnull"
+
+ @Suppress("UnsafeCastFromDynamic")
+ private val bootstrapWebpack = if (js("typeof KV_NO_BOOTSTRAP_CSS !== 'undefined'")) {
+ require("bootstrap-webpack!./js/bootstrap.config.js")
+ } else {
+ require("bootstrap-webpack")
+ }
+ private val fontAwesomeWebpack = require("font-awesome-webpack")
+ private val resizable = require("jquery-resizable-dom")
+ private val awesomeBootstrapCheckbox = require("awesome-bootstrap-checkbox")
+ private val bootstrapSelectCss =
+ require("bootstrap-select/dist/css/bootstrap-select.min.css")
+ private val bootstrapSelect = require("bootstrap-select")
+ private val bootstrapSelectI18n = require("./js/bootstrap-select-i18n.min.js")
+ private val bootstrapSelectAjaxCss =
+ require("ajax-bootstrap-select/dist/css/ajax-bootstrap-select.min.css")
+ private val bootstrapSelectAjax =
+ require("ajax-bootstrap-select/dist/js/ajax-bootstrap-select.min.js")
+ // private val bootstrapSelectAjaxI18n =
+// require("ajax-bootstrap-select/dist/js/locale/ajax-bootstrap-select.pl-PL.min.js")
+ private val trixCss = require("trix/dist/trix.css")
+ private val trix = require("trix")
+ private val bootstrapDateTimePickerCss =
+ require("bootstrap-datetime-picker/css/bootstrap-datetimepicker.min.css")
+ private val bootstrapDateTimePicker =
+ require("bootstrap-datetime-picker/js/bootstrap-datetimepicker.min.js")
+ private val bootstrapTouchspinCss =
+ require("bootstrap-touchspin/dist/jquery.bootstrap-touchspin.min.css")
+ private val bootstrapTouchspin =
+ require("bootstrap-touchspin/dist/jquery.bootstrap-touchspin.min.js")
+ internal val fecha = require("fecha")
+
+ private val sdPatch = Snabbdom.init(
+ arrayOf(
+ classModule, attributesModule, propsModule, styleModule,
+ eventListenersModule, datasetModule
+ )
+ )
+ private val sdVirtualize = require("snabbdom-virtualize/strings").default
+ private val styleCss = require("./css/style.css")
+
+ internal fun patch(id: String, vnode: VNode): VNode {
+ val container = document.getElementById(id)
+ container?.clear()
+ return sdPatch(container, vnode)
+ }
+
+ internal fun patch(oldVNode: VNode, newVNode: VNode): VNode {
+ return sdPatch(oldVNode, newVNode)
+ }
+
+ @Suppress("UnsafeCastFromDynamic")
+ internal fun virtualize(html: String): VNode {
+ return sdVirtualize(html)
+ }
+}