diff options
| author | Johann-S <[email protected]> | 2017-08-21 09:11:37 +0200 |
|---|---|---|
| committer | XhmikosR <[email protected]> | 2019-02-20 22:05:45 +0200 |
| commit | 0b16c8c6d9a9690d537bd08eac8a8292ebf938cd (patch) | |
| tree | cf06827946db78c07a40d797a01fc5fd7a11e18d /js/src/dom | |
| parent | 8d34bc136b54f4605595f228253463c90a3c5c97 (diff) | |
| download | bootstrap-0b16c8c6d9a9690d537bd08eac8a8292ebf938cd.tar.xz bootstrap-0b16c8c6d9a9690d537bd08eac8a8292ebf938cd.zip | |
alert without jquery
Diffstat (limited to 'js/src/dom')
| -rw-r--r-- | js/src/dom/data.js | 51 | ||||
| -rw-r--r-- | js/src/dom/eventHandler.js (renamed from js/src/dom/event.js) | 16 | ||||
| -rw-r--r-- | js/src/dom/selectorEngine.js | 42 |
3 files changed, 102 insertions, 7 deletions
diff --git a/js/src/dom/data.js b/js/src/dom/data.js new file mode 100644 index 000000000..bbe807aac --- /dev/null +++ b/js/src/dom/data.js @@ -0,0 +1,51 @@ +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-beta): dom/data.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const mapData = (() => { + const storeData = {} + return { + set(element, key, data) { + let id + if (element.key === undefined) { + element.key = { + key, + id + } + } + + storeData[id] = data + }, + get(element, key) { + if (element.key === undefined || element.key !== key) { + return null + } + const keyProperties = element.key + return storeData[keyProperties.id] + }, + delete(element, key) { + if (element.key === undefined || element.key !== key) { + return + } + const keyProperties = element.key + delete storeData[keyProperties.id] + } + } +})() + +const Data = { + setData(instance, key, data) { + mapData.set(instance, key, data) + }, + getData(instance, key) { + mapData.get(instance, key) + }, + removeData(instance, key) { + mapData.delete(instance, key) + } +} + +export default Data diff --git a/js/src/dom/event.js b/js/src/dom/eventHandler.js index 5968e62e0..0627ccd26 100644 --- a/js/src/dom/event.js +++ b/js/src/dom/eventHandler.js @@ -1,13 +1,13 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta): dom/event.js + * Bootstrap (v4.0.0-beta): dom/eventHandler.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -const Event = { +const EventHandler = { on(element, event, handler) { - if (typeof event !== 'string') { + if (typeof event !== 'string' || typeof element === 'undefined') { return } element.addEventListener(event, handler, false) @@ -19,12 +19,12 @@ const Event = { handler() element.removeEventListener(event, complete, false) } - Event.on(element, event, complete) + EventHandler.on(element, event, complete) }, trigger(element, event) { - if (typeof event !== 'string') { - return + if (typeof event !== 'string' || typeof element === 'undefined') { + return null } const eventToDispatch = new CustomEvent(event, { @@ -32,7 +32,9 @@ const Event = { cancelable: true }) element.dispatchEvent(eventToDispatch) + + return eventToDispatch } } -export default Event +export default EventHandler diff --git a/js/src/dom/selectorEngine.js b/js/src/dom/selectorEngine.js new file mode 100644 index 000000000..f6bcf6da2 --- /dev/null +++ b/js/src/dom/selectorEngine.js @@ -0,0 +1,42 @@ +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-beta): dom/selectorEngine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const SelectorEngine = { + matches: Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector, + + find(selector) { + if (typeof selector !== 'string') { + return null + } + + let selectorType = 'querySelectorAll' + if (selector.indexOf('#') === 0) { + selectorType = 'getElementById' + selector = selector.substr(1, selector.length) + } + return document[selectorType](selector) + }, + + closest(element, selector) { + let ancestor = element + if (!document.documentElement.contains(element)) { + return null + } + + do { + if (SelectorEngine.matches.call(ancestor, selector)) { + return ancestor + } + + ancestor = ancestor.parentElement + } while (ancestor !== null) + + return null + } +} + +export default SelectorEngine |
