@domql/qsql 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/package.json +11 -0
- package/src/apply.js +22 -0
- package/src/define.js +12 -0
- package/src/find.js +5 -0
- package/src/index.js +18 -0
- package/src/methods.js +10 -0
- package/src/on.js +18 -0
- package/src/params.js +20 -0
- package/src/query.js +37 -0
- package/src/registry.js +3 -0
- package/src/update.js +24 -0
package/README.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# qsql
|
|
2
|
+
DOM manipulation using document queries. Uses [DOMQL](https://github.com/domql/domql) API.
|
|
3
|
+
|
|
4
|
+
### Installation
|
|
5
|
+
```
|
|
6
|
+
yarn add classql
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
### Examples
|
|
10
|
+
|
|
11
|
+
Initialization:
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
import DOM from 'qsql'
|
|
15
|
+
|
|
16
|
+
DOM.query({
|
|
17
|
+
logo: { query: '.logo' }
|
|
18
|
+
})
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Attributes:
|
|
22
|
+
```javascript
|
|
23
|
+
DOM.query({
|
|
24
|
+
modal: {
|
|
25
|
+
query: '.modal',
|
|
26
|
+
style: { display: 'none' }
|
|
27
|
+
}
|
|
28
|
+
})
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Events and update:
|
|
32
|
+
```javascript
|
|
33
|
+
DOM.query({
|
|
34
|
+
CTA: {
|
|
35
|
+
query: '.button',
|
|
36
|
+
on: {
|
|
37
|
+
click: (event, element, node) => {
|
|
38
|
+
DOM.find('modal').update({
|
|
39
|
+
style: { display: 'block' }
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
```
|
package/package.json
ADDED
package/src/apply.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import { init } from '@rackai/domql/src/event/on'
|
|
4
|
+
import { exec, isObject } from '@rackai/domql/src/utils/object'
|
|
5
|
+
|
|
6
|
+
import params from './params'
|
|
7
|
+
import on from './on'
|
|
8
|
+
|
|
9
|
+
export default element => {
|
|
10
|
+
element.nodes.forEach(node => {
|
|
11
|
+
if (isObject(element.on)) on(element, node)
|
|
12
|
+
|
|
13
|
+
for (let key in element) {
|
|
14
|
+
var elemParam = element[key]
|
|
15
|
+
var param = params[key]
|
|
16
|
+
if (param) param(elemParam, element, node)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (element.on && typeof element.on.init === 'function')
|
|
20
|
+
init(element.on.init, element, node)
|
|
21
|
+
})
|
|
22
|
+
}
|
package/src/define.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import params from './params'
|
|
4
|
+
|
|
5
|
+
export default (newParams, options = {}) => {
|
|
6
|
+
var { overwrite } = options
|
|
7
|
+
for (const param in newParams) {
|
|
8
|
+
if (params[param] && !overwrite) {
|
|
9
|
+
console.log(`Can't overwrite to default params. Use { overwrite: true } to force update`)
|
|
10
|
+
} else params[param] = newParams[param]
|
|
11
|
+
}
|
|
12
|
+
}
|
package/src/find.js
ADDED
package/src/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import '@rackai/domql'
|
|
4
|
+
|
|
5
|
+
import query from './query'
|
|
6
|
+
import registry from './registry'
|
|
7
|
+
import define from './define'
|
|
8
|
+
import find from './find'
|
|
9
|
+
import { methods, setMethod } from './methods'
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
registry,
|
|
13
|
+
query,
|
|
14
|
+
define,
|
|
15
|
+
find,
|
|
16
|
+
methods,
|
|
17
|
+
setMethod
|
|
18
|
+
}
|
package/src/methods.js
ADDED
package/src/on.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import * as events from '@rackai/domql/src/event/on'
|
|
4
|
+
|
|
5
|
+
events.init = (param, element, node) => {
|
|
6
|
+
param.call(element, element, node)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export default (element, node) => {
|
|
10
|
+
for (const param in element.on) {
|
|
11
|
+
if (param === 'init' || param === 'render') continue
|
|
12
|
+
|
|
13
|
+
var appliedFunction = element.on[param]
|
|
14
|
+
if (typeof appliedFunction === 'function') {
|
|
15
|
+
node.addEventListener(param, event => appliedFunction(event, element), true)
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
package/src/params.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
attr,
|
|
5
|
+
classList,
|
|
6
|
+
data,
|
|
7
|
+
style,
|
|
8
|
+
html
|
|
9
|
+
} from '@rackai/domql/src/element/params'
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
attr,
|
|
13
|
+
class: classList,
|
|
14
|
+
data,
|
|
15
|
+
style,
|
|
16
|
+
text: (param, element, node) => {
|
|
17
|
+
node.innerText = param
|
|
18
|
+
},
|
|
19
|
+
html
|
|
20
|
+
}
|
package/src/query.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import registry from './registry'
|
|
4
|
+
import apply from './apply'
|
|
5
|
+
import update from './update'
|
|
6
|
+
import { methods } from './methods'
|
|
7
|
+
import { is } from '@rackai/domql/src/event'
|
|
8
|
+
|
|
9
|
+
var query = params => {
|
|
10
|
+
for (let key in params) {
|
|
11
|
+
var element = params[key]
|
|
12
|
+
var { query, node } = element
|
|
13
|
+
var nodesArr = []
|
|
14
|
+
|
|
15
|
+
if (is.node(node)) nodesArr = [node]
|
|
16
|
+
else {
|
|
17
|
+
var nodes = document.querySelectorAll(query)
|
|
18
|
+
var { length } = nodes
|
|
19
|
+
if (length === 0) console.warn(`Could not find element "${key}"`)
|
|
20
|
+
nodes.forEach((node, key) => nodesArr[key] = node)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
element.nodes = nodesArr
|
|
24
|
+
element.key = key
|
|
25
|
+
element.update = update
|
|
26
|
+
|
|
27
|
+
for (var one in methods) if (key !== one) element[one] = methods[one]
|
|
28
|
+
|
|
29
|
+
registry[key] = params[key]
|
|
30
|
+
|
|
31
|
+
apply(element)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return registry
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default query
|
package/src/registry.js
ADDED
package/src/update.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import params from './params'
|
|
4
|
+
import on from './on'
|
|
5
|
+
import { exec, isObject } from '@rackai/domql/src/utils/object'
|
|
6
|
+
|
|
7
|
+
const update = function (newParams) {
|
|
8
|
+
var element = this
|
|
9
|
+
element.nodes.forEach(node => {
|
|
10
|
+
if (isObject(newParams.on)) on(element, node)
|
|
11
|
+
for (let param in newParams) {
|
|
12
|
+
var newParam = newParams[param]
|
|
13
|
+
var hasParam = params[param]
|
|
14
|
+
if (hasParam) hasParam(newParam, element, node)
|
|
15
|
+
}
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
// run onUpdate
|
|
19
|
+
if (element.on && typeof element.on.update === 'function') {
|
|
20
|
+
on.update(element.on.update, element, node)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default update
|