- 新增动态展开数据行

This commit is contained in:
Julyp
2020-02-19 17:54:47 +08:00
parent ce247606b2
commit 15fb982fd6
5 changed files with 45 additions and 5 deletions

View File

@@ -25,6 +25,7 @@
- 树形结构 - 树形结构
- 单选 - 单选
- 多选 - 多选
- 开展动态行
## 体验 ## 体验
可直接访问https://peng92055.github.io/smart-table 可直接访问https://peng92055.github.io/smart-table
@@ -69,9 +70,9 @@
height: 300, height: 300,
align: 'left', align: 'left',
size: 'middle', size: 'middle',
selection: 'radio',
selectionKey: 1, selectionKey: 1,
expandCallback: function(slot, value) { expandCallback: function(slot, value) {
//模拟异步 可直接写同步代码
setTimeout(function() { setTimeout(function() {
var content = "<span>我是展开内容第一次,当前展开的值为:" + value + "</span>" var content = "<span>我是展开内容第一次,当前展开的值为:" + value + "</span>"
slot.open(content, true) //第二个参数为是否需要parseDom 当传递的content为字符串时该值必须传递true slot.open(content, true) //第二个参数为是否需要parseDom 当传递的content为字符串时该值必须传递true

File diff suppressed because one or more lines are too long

View File

@@ -488,7 +488,6 @@
new SmartTable({ new SmartTable({
selector: '#smartTable4', selector: '#smartTable4',
height: 320, height: 320,
selection: 'radio',
expandCallback: function(slot, value) { expandCallback: function(slot, value) {
setTimeout(function() { setTimeout(function() {
var content = "<span>我是展开内容第一次,当前展开的值为:" + value + "</span>" var content = "<span>我是展开内容第一次,当前展开的值为:" + value + "</span>"
@@ -497,7 +496,7 @@
var content2 = document.createElement("span") var content2 = document.createElement("span")
content2.innerText = "我是展开内容第二次,当前展开的值为:" + value content2.innerText = "我是展开内容第二次,当前展开的值为:" + value
slot.open(content2) slot.open(content2)
}) }, 2000)
} }
}) })
</script> </script>

View File

@@ -355,13 +355,14 @@ function addExpandTriggerEvent(vm, row, key, value) {
const trigger = querySelector(row, ".expand-cell>.stb_cell") const trigger = querySelector(row, ".expand-cell>.stb_cell")
if (!trigger) return; if (!trigger) return;
trigger.addEventListener('click', ($event) => { trigger.addEventListener('click', ($event) => {
if (trigger.hasAttribute("loading")) return;
if (trigger.hasAttribute("open")) { if (trigger.hasAttribute("open")) {
removeAttribute(trigger, "open") removeAttribute(trigger, "open")
querySelectorAll(vm.$root, "tr.expand-" + key).forEach(expandRow => { querySelectorAll(vm.$root, "tr.expand-" + key).forEach(expandRow => {
removeChild(expandRow.parentNode, expandRow) removeChild(expandRow.parentNode, expandRow)
}) })
} else { } else {
setAttribute(trigger, "open") setAttribute(trigger, "loading", true)
options.expandCallback.call(this, { options.expandCallback.call(this, {
open: function(content, needParse) { open: function(content, needParse) {
let cell = createElement("td") let cell = createElement("td")
@@ -372,6 +373,8 @@ function addExpandTriggerEvent(vm, row, key, value) {
let expandRow = createElement("tr", `std-expand-row expand-${key}`) let expandRow = createElement("tr", `std-expand-row expand-${key}`)
appendChild(expandRow, cell) appendChild(expandRow, cell)
insertBefore(row.parentNode, expandRow, row.nextSibling) insertBefore(row.parentNode, expandRow, row.nextSibling)
setAttribute(trigger, "open")
removeAttribute(trigger, "loading")
} }
}, value) }, value)
} }
@@ -496,6 +499,9 @@ function bindSortEvents(vm) {
querySelectorAll(vm.$root, ".expand-cell>.stb_cell[open]").forEach(el => { querySelectorAll(vm.$root, ".expand-cell>.stb_cell[open]").forEach(el => {
removeAttribute(el, "open") removeAttribute(el, "open")
}) })
querySelectorAll(vm.$root, ".expand-cell>.stb_cell[loading]").forEach(el => {
removeAttribute(el, "loading")
})
sort(vm, getAttribute(el, "sortkey"), sortType, sortOrder) sort(vm, getAttribute(el, "sortkey"), sortType, sortOrder)
}) })
}) })

View File

@@ -79,6 +79,20 @@
transform: rotate(90deg); transform: rotate(90deg);
} }
} }
&[loading] {
.expand-trigger {
margin-left: 0;
width: 1em;
height: 1em;
border-color: none;
transform-origin: center;
border: .2em solid transparent;
border-left-color: currentcolor;
border-right-color: currentcolor;
border-radius: 50%;
animation: 1s loading linear infinite;
}
}
} }
&.stripe { &.stripe {
tr:nth-child(2n) { tr:nth-child(2n) {
@@ -321,4 +335,24 @@
* { * {
box-sizing: border-box; box-sizing: border-box;
} }
@-webkit-keyframes loading {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes loading {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
} }