diff --git a/build.next.js b/build.next.js
index af0f47e..b57a64d 100644
--- a/build.next.js
+++ b/build.next.js
@@ -40,14 +40,13 @@ const compileJs = (entry, output) => {
const compileCss = (entry, output) => {
let t1 = Date.now()
const { css } = scss.renderSync({ ...cssOpt, file: entry })
- prefixer.process(css, { from: '', to: '' }).then(result => {
- log(
- '编译scss: %s, 耗时 %s ms',
- chalk.green(entry),
- chalk.yellow(Date.now() - t1)
- )
- fs.echo(result.css, output)
- })
+
+ log(
+ '编译scss: %s, 耗时 %s ms',
+ chalk.green(entry),
+ chalk.yellow(Date.now() - t1)
+ )
+ fs.echo(css, output)
}
const compileHtm = (entry, output) => {
diff --git a/src/css/reset.scss b/src/css/reset.scss
index dc1e22b..c18a161 100644
--- a/src/css/reset.scss
+++ b/src/css/reset.scss
@@ -21,6 +21,9 @@
* 5 content list-style quotes ... 内容生成相关的属性
*
*/
+@font-face {font-family: "uifont";
+ src: url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff');
+}
* {margin: 0;padding: 0;vertical-align: baseline;box-sizing:border-box;}
/* HTML5 display-role reset for older browsers */
@@ -35,12 +38,8 @@ a:focus,input,button:focus,input:focus {outline:none;}
::-moz-focus-inner {
border:none;outline:none;
}
-@font-face {font-family: "ui font";
- src: url('../font/ui-font.eot'); /* IE9*/
- src: url('../font/ui-font.ttf') format('truetype');
-}
+[anot],[\:if],do-* {visibility:hidden;}
-.do-ui-font {display:inline-block;font-family:"ui font" !important;font-style:normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
.do-fn-cl { *zoom: 1; }
.do-fn-cl::after { content: "."; display: block; height: 0; clear: both; visibility: hidden; overflow:hidden;}
.do-fn-clear {clear:both;display:inline;}
@@ -54,3 +53,77 @@ a:focus,input,button:focus,input:focus {outline:none;}
.do-fn-ell {overflow:hidden; white-space:nowrap; text-overflow:ellipsis }
.do-st-thin {-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
.do-st-hand {cursor:pointer;}
+
+[class^="do-icon-"], [class*=" do-icon-"] {display:inline-block;font-family:"uifont" !important;font-style:normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
+.do-icon-about:before { content: "\e673"; }
+.do-icon-bad:before { content: "\e674"; }
+.do-icon-deny:before { content: "\e676"; }
+.do-icon-calendar:before { content: "\e675"; }
+.do-icon-email:before { content: "\e677"; }
+.do-icon-eye:before { content: "\e678"; }
+.do-icon-fly:before { content: "\e679"; }
+.do-icon-floppy:before { content: "\e67a"; }
+.do-icon-good:before { content: "\e67b"; }
+.do-icon-headset:before { content: "\e67d"; }
+.do-icon-list:before { content: "\e682"; }
+.do-icon-lock:before { content: "\e683"; }
+.do-icon-menu-left:before { content: "\e684"; }
+.do-icon-menu-right:before { content: "\e685"; }
+.do-icon-minimize:before { content: "\e686"; }
+.do-icon-phone:before { content: "\e688"; }
+.do-icon-picture:before { content: "\e689"; }
+.do-icon-pipe:before { content: "\e68a"; }
+.do-icon-plus:before { content: "\e68b"; }
+.do-icon-quote:before { content: "\e68d"; }
+.do-icon-table:before { content: "\e690"; }
+.do-icon-talk:before { content: "\e691"; }
+.do-icon-time:before { content: "\e692"; }
+.do-icon-download:before { content: "\e694"; }
+.do-icon-upload:before { content: "\e695"; }
+.do-icon-male:before { content: "\e696"; }
+.do-icon-female:before { content: "\e697"; }
+.do-icon-left:before { content: "\e698"; }
+.do-icon-dbl-left:before { content: "\e699"; }
+.do-icon-right:before { content: "\e69a"; }
+.do-icon-dbl-right:before { content: "\e69b"; }
+.do-icon-pin:before { content: "\e69c"; }
+.do-icon-edit:before { content: "\e69d"; }
+.do-icon-home:before { content: "\e69e"; }
+.do-icon-chart:before { content: "\e69f"; }
+.do-icon-folder-close:before { content: "\e6a0"; }
+.do-icon-txt:before { content: "\e6a1"; }
+.do-icon-folder-open:before { content: "\e6a2"; }
+.do-icon-qr:before { content: "\e6a3"; }
+.do-icon-setting:before { content: "\e6a4"; }
+.do-icon-mute:before { content: "\e6a5"; }
+.do-icon-chat:before { content: "\e6a6"; }
+.do-icon-font:before { content: "\e6a7"; }
+.do-icon-unmute:before { content: "\e6a8"; }
+.do-icon-search:before { content: "\e6a9"; }
+.do-icon-sad:before { content: "\e6aa"; }
+.do-icon-trash:before { content: "\e6ab"; }
+.do-icon-happy:before { content: "\e6ac"; }
+.do-icon-share:before { content: "\e6ad"; }
+.do-icon-tag:before { content: "\e6ae"; }
+.do-icon-app:before { content: "\e6af"; }
+.do-icon-app1:before { content: "\e6b0"; }
+.do-icon-logout:before { content: "\e6b1"; }
+.do-icon-menu-dot:before { content: "\e6b2"; }
+.do-icon-trigon-up:before { content: "\e6b3"; }
+.do-icon-trigon-down:before { content: "\e6b4"; }
+.do-icon-loading:before { content: "\e6b5"; }
+.do-icon-position:before { content: "\e6b6"; }
+.do-icon-warn:before { content: "\e6b7"; }
+.do-icon-bell:before { content: "\e6b8"; }
+.do-icon-close:before { content: "\e6b9"; }
+.do-icon-fire:before { content: "\e6ba"; }
+.do-icon-user:before { content: "\e6bb"; }
+.do-icon-icon-list:before { content: "\e6bc"; }
+.do-icon-star:before { content: "\e6bd"; }
+.do-icon-client:before { content: "\e6be"; }
+.do-icon-maximize:before { content: "\e6bf"; }
+.do-icon-star-full:before { content: "\e6c0"; }
+.do-icon-camera:before { content: "\e6c1"; }
+.do-icon-live:before { content: "\e6c2"; }
+.do-icon-get:before { content: "\e6c3"; }
+.do-icon-wrong:before { content: "\e6c4"; }
\ No newline at end of file
diff --git a/src/font/ui-font.eot b/src/font/ui-font.eot
deleted file mode 100644
index fb01476..0000000
Binary files a/src/font/ui-font.eot and /dev/null differ
diff --git a/src/font/ui-font.js b/src/font/ui-font.js
deleted file mode 100644
index 95f34ca..0000000
--- a/src/font/ui-font.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(window){var svgSprite='';var script=function(){var scripts=document.getElementsByTagName("script");return scripts[scripts.length-1]}();var shouldInjectCss=script.getAttribute("data-injectcss");var ready=function(fn){if(document.addEventListener){if(~["complete","loaded","interactive"].indexOf(document.readyState)){setTimeout(fn,0)}else{var loadFn=function(){document.removeEventListener("DOMContentLoaded",loadFn,false);fn()};document.addEventListener("DOMContentLoaded",loadFn,false)}}else if(document.attachEvent){IEContentLoaded(window,fn)}function IEContentLoaded(w,fn){var d=w.document,done=false,init=function(){if(!done){done=true;fn()}};var polling=function(){try{d.documentElement.doScroll("left")}catch(e){setTimeout(polling,50);return}init()};polling();d.onreadystatechange=function(){if(d.readyState=="complete"){d.onreadystatechange=null;init()}}}};var before=function(el,target){target.parentNode.insertBefore(el,target)};var prepend=function(el,target){if(target.firstChild){before(el,target.firstChild)}else{target.appendChild(el)}};function appendSvg(){var div,svg;div=document.createElement("div");div.innerHTML=svgSprite;svgSprite=null;svg=div.getElementsByTagName("svg")[0];if(svg){svg.setAttribute("aria-hidden","true");svg.style.position="absolute";svg.style.width=0;svg.style.height=0;svg.style.overflow="hidden";prepend(svg,document.body)}}if(shouldInjectCss&&!window.__iconfont__svg__cssinject__){window.__iconfont__svg__cssinject__=true;try{document.write("")}catch(e){console&&console.log(e)}}ready(appendSvg)})(window)
\ No newline at end of file
diff --git a/src/font/ui-font.ttf b/src/font/ui-font.ttf
deleted file mode 100644
index 70e12c1..0000000
Binary files a/src/font/ui-font.ttf and /dev/null differ
diff --git a/src/js/anot.js b/src/js/anot.js
index 68a7593..8444c71 100644
--- a/src/js/anot.js
+++ b/src/js/anot.js
@@ -305,6 +305,244 @@ const _Anot = (function() {
/*-----------------部分ES6的JS实现 start---------------*/
+ // ===============================
+ // ========== Promise ============
+ // ===============================
+ ;(function(nativePromise) {
+ function _yes(val) {
+ return val
+ }
+
+ function _no(err) {
+ throw err
+ }
+
+ function done(callback) {
+ return this.then(callback, _no)
+ }
+
+ function fail(callback) {
+ return this.then(_yes, callback)
+ }
+
+ function defer() {
+ var obj = {}
+ obj.promise = new _Promise(function(yes, no) {
+ obj.resolve = yes
+ obj.reject = no
+ })
+ return obj
+ }
+
+ //成功的回调
+ function _resolve(obj, val) {
+ if (obj._state !== 'pending') {
+ return
+ }
+
+ if (val && typeof val.then === 'function') {
+ var method = val instanceof _Promise ? '_then' : 'then'
+ val[method](
+ function(v) {
+ _transmit(obj, v, true)
+ },
+ function(v) {
+ _transmit(obj, v, false)
+ }
+ )
+ } else {
+ _transmit(obj, val, true)
+ }
+ }
+
+ //失败的回调
+ function _reject(obj, val) {
+ if (obj._state !== 'pending') {
+ return
+ }
+
+ _transmit(obj, val, false)
+ }
+
+ // 改变Promise的_fired值,并保持用户传参,触发所有回调
+ function _transmit(obj, val, isResolved) {
+ obj._fired = true
+ obj._val = val
+ obj._state = isResolved ? 'fulfilled' : 'rejected'
+
+ fireCallback(obj, function() {
+ for (var i in obj.callback) {
+ obj._fire(obj.callback[i].yes, obj.callback[i].no)
+ }
+ })
+ }
+
+ function fireCallback(obj, callback) {
+ var isAsync = false
+
+ if (typeof obj.async === 'boolean') {
+ isAsync = obj.async
+ } else {
+ isAsync = obj.async = true
+ }
+
+ if (isAsync) {
+ setTimeout(callback, 0)
+ } else {
+ callback()
+ }
+ }
+
+ function _some(bool, iterable) {
+ iterable = Array.isArray(iterable) ? iterable : []
+
+ var n = 0
+ var res = []
+ var end = false
+
+ return new _Promise(function(yes, no) {
+ if (!iterable.length) no(res)
+
+ function loop(obj, idx) {
+ obj.then(
+ function(val) {
+ if (!end) {
+ res[idx] = val
+ n++
+ if (bool || n >= iterable.length) {
+ yes(bool ? val : res)
+ end = true
+ }
+ }
+ },
+ function(val) {
+ end = true
+ no(val)
+ }
+ )
+ }
+
+ for (var i = 0, len = iterable.length; i < len; i++) {
+ loop(iterable[i], i)
+ }
+ })
+ }
+
+ //---------------------------
+ var _Promise = function(callback) {
+ this.callback = []
+ var _this = this
+
+ if (typeof this !== 'object') {
+ throw new TypeError('Promises must be constructed via new')
+ }
+
+ if (typeof callback !== 'function') {
+ throw new TypeError('Argument must be a function')
+ }
+
+ callback(
+ function(val) {
+ _resolve(_this, val)
+ },
+ function(val) {
+ _reject(_this, val)
+ }
+ )
+ }
+ var self = {
+ _state: 1,
+ _fired: 1,
+ _val: 1,
+ callback: 1
+ }
+
+ _Promise.prototype = {
+ constructor: _Promise,
+ _state: 'pending',
+ _fired: false,
+ _fire: function(yes, no) {
+ if (this._state === 'rejected') {
+ if (typeof no === 'function') no(this._val)
+ else throw this._val
+ } else {
+ if (typeof yes === 'function') yes(this._val)
+ }
+ },
+ _then: function(yes, no) {
+ if (this._fired) {
+ var _this = this
+ fireCallback(_this, function() {
+ _this._fire(yes, no)
+ })
+ } else {
+ this.callback.push({ yes: yes, no: no })
+ }
+ },
+ then: function(yes, no) {
+ yes = typeof yes === 'function' ? yes : _yes
+ no = typeof no === 'function' ? no : _no
+ var _this = this
+ var next = new _Promise(function(resolve, reject) {
+ _this._then(
+ function(val) {
+ try {
+ val = yes(val)
+ } catch (err) {
+ return reject(err)
+ }
+ },
+ function(val) {
+ try {
+ val = no(val)
+ } catch (err) {
+ return reject(err)
+ }
+ resolve(val)
+ }
+ )
+ })
+ for (var i in _this) {
+ if (!self[i]) next[i] = _this[i]
+ }
+ return next
+ },
+ done: done,
+ catch: fail,
+ fail: fail
+ }
+
+ _Promise.all = function(arr) {
+ return _some(false, arr)
+ }
+
+ _Promise.race = function(arr) {
+ return _some(true, arr)
+ }
+
+ _Promise.defer = defer
+
+ _Promise.resolve = function(val) {
+ var obj = this.defer()
+ obj.resolve(val)
+ return obj.promise
+ }
+
+ _Promise.reject = function(val) {
+ var obj = this.defer()
+ obj.reject(val)
+ return obj.promise
+ }
+ if (/native code/.test(nativePromise)) {
+ nativePromise.prototype.done = done
+ nativePromise.prototype.fail = fail
+ if (!nativePromise.defer) {
+ nativePromise.defer = defer
+ }
+ }
+ window.Promise = nativePromise || _Promise
+ })(window.Promise)
+
if (!Object.assign) {
Object.defineProperty(Object, 'assign', {
enumerable: false,
@@ -529,6 +767,33 @@ const _Anot = (function() {
/*-----------------部分ES6的JS实现 ending---------------*/
+ function cacheStore(tpye, key, val) {
+ if (!window[tpye]) {
+ return log('该浏览器不支持本地储存' + tpye)
+ }
+
+ if (this.type(key) === 'object') {
+ for (var i in key) {
+ window[tpye].setItem(i, key[i])
+ }
+ return
+ }
+ switch (arguments.length) {
+ case 2:
+ return window[tpye].getItem(key)
+ default:
+ if ((this.type(val) == 'string' && val.trim() === '') || val === null) {
+ window[tpye].removeItem(key)
+ return
+ }
+ if (this.type(val) !== 'object' && this.type(val) !== 'array') {
+ window[tpye].setItem(key, val.toString())
+ } else {
+ window[tpye].setItem(key, JSON.stringify(val))
+ }
+ }
+ }
+
Anot.mix({
rword: rword,
subscribers: subscribers,
@@ -671,55 +936,32 @@ const _Anot = (function() {
},
/**
* [ls localStorage操作]
- * @param {[type]} name [键名]
+ * @param {[type]} key [键名]
* @param {[type]} val [键值,为空时删除]
* @return
*/
- ls: function(name, val) {
- if (!window.localStorage) {
- return log('该浏览器不支持本地储存localStorage')
- }
-
- if (this.type(name) === 'object') {
- for (var i in name) {
- localStorage.setItem(i, name[i])
- }
- return
- }
- switch (arguments.length) {
- case 1:
- return localStorage.getItem(name)
- default:
- if (
- (this.type(val) == 'string' && val.trim() === '') ||
- val === null
- ) {
- localStorage.removeItem(name)
- return
- }
- if (this.type(val) !== 'object' && this.type(val) !== 'array') {
- localStorage.setItem(name, val.toString())
- } else {
- localStorage.setItem(name, JSON.stringify(val))
- }
- }
+ ls: function(key, val) {
+ return cacheStore('localStorage', key, val)
+ },
+ ss: function(key, val) {
+ return cacheStore('sessionStorage', key, val)
},
/**
* [cookie cookie 操作 ]
- * @param name [cookie名]
- * @param value [cookie值]
+ * @param key [cookie名]
+ * @param val [cookie值]
* @param {[json]} opt [有效期,域名,路径等]
* @return {[boolean]} [读取时返回对应的值,写入时返回true]
*/
- cookie: function(name, value, opt) {
+ cookie: function(key, val, opt) {
if (arguments.length > 1) {
- if (!name) {
+ if (!key) {
return
}
//设置默认的参数
opt = opt || {}
- opt = this.mix(
+ opt = Object.assign(
{
expires: '',
path: '/',
@@ -729,9 +971,9 @@ const _Anot = (function() {
opt
)
- if (!value) {
+ if ((this.type(val) == 'string' && val.trim() === '') || val === null) {
document.cookie =
- encodeURIComponent(name) +
+ encodeURIComponent(key) +
'=; expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=' +
opt.domain +
'; path=' +
@@ -755,9 +997,9 @@ const _Anot = (function() {
}
}
document.cookie =
- encodeURIComponent(name) +
+ encodeURIComponent(key) +
'=' +
- encodeURIComponent(value) +
+ encodeURIComponent(val) +
opt.expires +
'; domain=' +
opt.domain +
@@ -767,24 +1009,15 @@ const _Anot = (function() {
opt.secure
return true
} else {
- if (!name) {
- var keys = document.cookie
- .replace(
- /((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g,
- ''
- )
- .split(/\s*(?:\=[^;]*)?;\s*/)
- for (var i = 0, len = keys.length; i < len; i++) {
- keys[i] = decodeURIComponent(keys[i])
- }
- return keys
+ if (!key) {
+ return document.cookie
}
return (
decodeURIComponent(
document.cookie.replace(
new RegExp(
'(?:(?:^|.*;)\\s*' +
- encodeURIComponent(name).replace(/[\-\.\+\*]/g, '\\$&') +
+ encodeURIComponent(key).replace(/[\-\.\+\*]/g, '\\$&') +
'\\s*\\=\\s*([^;]*).*$)|^.*$'
),
'$1'
@@ -1527,7 +1760,7 @@ const _Anot = (function() {
$vmodel.$active = true
$vmodel.mounted = mounted
- if (old && old.$up) {
+ if (old && old.$up && old.$up.$children) {
old.$up.$children.push($vmodel)
}
@@ -3467,6 +3700,19 @@ const _Anot = (function() {
}
}
+ function parseSlot(collections) {
+ var arr = aslice.call(collections, 0)
+ var obj = {}
+ arr.forEach(function(elem) {
+ var slot = elem.getAttribute('slot')
+ if (slot) {
+ elem.removeAttribute('slot')
+ obj[slot] = elem.outerHTML
+ }
+ })
+ return obj
+ }
+
Anot.components = {}
Anot.component = function(name, opts) {
if (opts) {
@@ -3531,17 +3777,21 @@ const _Anot = (function() {
componentWillMount.call(vmodel)
globalHooks.componentWillMount.call(null, vmodel)
- if (!elem.content.firstElementChild) {
- Anot.clearHTML(elem)
- var html = render.call(vmodel) || ''
+ var slots = null
- html = html.replace(/<\w+[^>]*>/g, function(m, s) {
- return m.replace(/[\n\t\s]{1,}/g, ' ')
- })
-
- elem.innerHTML = html
+ if (elem.content.firstElementChild) {
+ slots = parseSlot(elem.content.children)
}
+ Anot.clearHTML(elem)
+ var html = render.call(vmodel, slots) || ''
+
+ html = html.replace(/<\w+[^>]*>/g, function(m, s) {
+ return m.replace(/[\n\t\s]{1,}/g, ' ')
+ })
+
+ elem.innerHTML = html
+
// 组件所使用的标签是temlate,所以必须要要用子元素替换掉
var child = elem.content.firstElementChild
var nullComponent = DOC.createComment('empty component')
diff --git a/src/js/anot.shim.js b/src/js/anot.shim.js
index 32fd7f8..f255be4 100644
--- a/src/js/anot.shim.js
+++ b/src/js/anot.shim.js
@@ -320,6 +320,244 @@
/*-----------------部分ES6的JS实现 start---------------*/
+ // ===============================
+ // ========== Promise ============
+ // ===============================
+ ;(function(nativePromise) {
+ function _yes(val) {
+ return val
+ }
+
+ function _no(err) {
+ throw err
+ }
+
+ function done(callback) {
+ return this.then(callback, _no)
+ }
+
+ function fail(callback) {
+ return this.then(_yes, callback)
+ }
+
+ function defer() {
+ var obj = {}
+ obj.promise = new _Promise(function(yes, no) {
+ obj.resolve = yes
+ obj.reject = no
+ })
+ return obj
+ }
+
+ //成功的回调
+ function _resolve(obj, val) {
+ if (obj._state !== 'pending') {
+ return
+ }
+
+ if (val && typeof val.then === 'function') {
+ var method = val instanceof _Promise ? '_then' : 'then'
+ val[method](
+ function(v) {
+ _transmit(obj, v, true)
+ },
+ function(v) {
+ _transmit(obj, v, false)
+ }
+ )
+ } else {
+ _transmit(obj, val, true)
+ }
+ }
+
+ //失败的回调
+ function _reject(obj, val) {
+ if (obj._state !== 'pending') {
+ return
+ }
+
+ _transmit(obj, val, false)
+ }
+
+ // 改变Promise的_fired值,并保持用户传参,触发所有回调
+ function _transmit(obj, val, isResolved) {
+ obj._fired = true
+ obj._val = val
+ obj._state = isResolved ? 'fulfilled' : 'rejected'
+
+ fireCallback(obj, function() {
+ for (var i in obj.callback) {
+ obj._fire(obj.callback[i].yes, obj.callback[i].no)
+ }
+ })
+ }
+
+ function fireCallback(obj, callback) {
+ var isAsync = false
+
+ if (typeof obj.async === 'boolean') {
+ isAsync = obj.async
+ } else {
+ isAsync = obj.async = true
+ }
+
+ if (isAsync) {
+ setTimeout(callback, 0)
+ } else {
+ callback()
+ }
+ }
+
+ function _some(bool, iterable) {
+ iterable = Array.isArray(iterable) ? iterable : []
+
+ var n = 0
+ var res = []
+ var end = false
+
+ return new _Promise(function(yes, no) {
+ if (!iterable.length) no(res)
+
+ function loop(obj, idx) {
+ obj.then(
+ function(val) {
+ if (!end) {
+ res[idx] = val
+ n++
+ if (bool || n >= iterable.length) {
+ yes(bool ? val : res)
+ end = true
+ }
+ }
+ },
+ function(val) {
+ end = true
+ no(val)
+ }
+ )
+ }
+
+ for (var i = 0, len = iterable.length; i < len; i++) {
+ loop(iterable[i], i)
+ }
+ })
+ }
+
+ //---------------------------
+ var _Promise = function(callback) {
+ this.callback = []
+ var _this = this
+
+ if (typeof this !== 'object') {
+ throw new TypeError('Promises must be constructed via new')
+ }
+
+ if (typeof callback !== 'function') {
+ throw new TypeError('Argument must be a function')
+ }
+
+ callback(
+ function(val) {
+ _resolve(_this, val)
+ },
+ function(val) {
+ _reject(_this, val)
+ }
+ )
+ }
+ var self = {
+ _state: 1,
+ _fired: 1,
+ _val: 1,
+ callback: 1
+ }
+
+ _Promise.prototype = {
+ constructor: _Promise,
+ _state: 'pending',
+ _fired: false,
+ _fire: function(yes, no) {
+ if (this._state === 'rejected') {
+ if (typeof no === 'function') no(this._val)
+ else throw this._val
+ } else {
+ if (typeof yes === 'function') yes(this._val)
+ }
+ },
+ _then: function(yes, no) {
+ if (this._fired) {
+ var _this = this
+ fireCallback(_this, function() {
+ _this._fire(yes, no)
+ })
+ } else {
+ this.callback.push({ yes: yes, no: no })
+ }
+ },
+ then: function(yes, no) {
+ yes = typeof yes === 'function' ? yes : _yes
+ no = typeof no === 'function' ? no : _no
+ var _this = this
+ var next = new _Promise(function(resolve, reject) {
+ _this._then(
+ function(val) {
+ try {
+ val = yes(val)
+ } catch (err) {
+ return reject(err)
+ }
+ },
+ function(val) {
+ try {
+ val = no(val)
+ } catch (err) {
+ return reject(err)
+ }
+ resolve(val)
+ }
+ )
+ })
+ for (var i in _this) {
+ if (!self[i]) next[i] = _this[i]
+ }
+ return next
+ },
+ done: done,
+ catch: fail,
+ fail: fail
+ }
+
+ _Promise.all = function(arr) {
+ return _some(false, arr)
+ }
+
+ _Promise.race = function(arr) {
+ return _some(true, arr)
+ }
+
+ _Promise.defer = defer
+
+ _Promise.resolve = function(val) {
+ var obj = this.defer()
+ obj.resolve(val)
+ return obj.promise
+ }
+
+ _Promise.reject = function(val) {
+ var obj = this.defer()
+ obj.reject(val)
+ return obj.promise
+ }
+ if (/native code/.test(nativePromise)) {
+ nativePromise.prototype.done = done
+ nativePromise.prototype.fail = fail
+ if (!nativePromise.defer) {
+ nativePromise.defer = defer
+ }
+ }
+ window.Promise = nativePromise || _Promise
+ })(window.Promise)
+
if (!Object.assign) {
Object.defineProperty(Object, 'assign', {
enumerable: false,
@@ -544,6 +782,33 @@
/*-----------------部分ES6的JS实现 ending---------------*/
+ function cacheStore(tpye, key, val) {
+ if (!window[tpye]) {
+ return log('该浏览器不支持本地储存' + tpye)
+ }
+
+ if (this.type(key) === 'object') {
+ for (var i in key) {
+ window[tpye].setItem(i, key[i])
+ }
+ return
+ }
+ switch (arguments.length) {
+ case 2:
+ return window[tpye].getItem(key)
+ default:
+ if ((this.type(val) == 'string' && val.trim() === '') || val === null) {
+ window[tpye].removeItem(key)
+ return
+ }
+ if (this.type(val) !== 'object' && this.type(val) !== 'array') {
+ window[tpye].setItem(key, val.toString())
+ } else {
+ window[tpye].setItem(key, JSON.stringify(val))
+ }
+ }
+ }
+
Anot.mix({
rword: rword,
subscribers: subscribers,
@@ -686,55 +951,32 @@
},
/**
* [ls localStorage操作]
- * @param {[type]} name [键名]
+ * @param {[type]} key [键名]
* @param {[type]} val [键值,为空时删除]
* @return
*/
- ls: function(name, val) {
- if (!window.localStorage) {
- return log('该浏览器不支持本地储存localStorage')
- }
-
- if (this.type(name) === 'object') {
- for (var i in name) {
- localStorage.setItem(i, name[i])
- }
- return
- }
- switch (arguments.length) {
- case 1:
- return localStorage.getItem(name)
- default:
- if (
- (this.type(val) == 'string' && val.trim() === '') ||
- val === null
- ) {
- localStorage.removeItem(name)
- return
- }
- if (this.type(val) !== 'object' && this.type(val) !== 'array') {
- localStorage.setItem(name, val.toString())
- } else {
- localStorage.setItem(name, JSON.stringify(val))
- }
- }
+ ls: function(key, val) {
+ return cacheStore('localStorage', key, val)
+ },
+ ss: function(key, val) {
+ return cacheStore('sessionStorage', key, val)
},
/**
* [cookie cookie 操作 ]
- * @param name [cookie名]
- * @param value [cookie值]
+ * @param key [cookie名]
+ * @param val [cookie值]
* @param {[json]} opt [有效期,域名,路径等]
* @return {[boolean]} [读取时返回对应的值,写入时返回true]
*/
- cookie: function(name, value, opt) {
+ cookie: function(key, val, opt) {
if (arguments.length > 1) {
- if (!name) {
+ if (!key) {
return
}
//设置默认的参数
opt = opt || {}
- opt = this.mix(
+ opt = Object.assign(
{
expires: '',
path: '/',
@@ -744,9 +986,9 @@
opt
)
- if (!value) {
+ if ((this.type(val) == 'string' && val.trim() === '') || val === null) {
document.cookie =
- encodeURIComponent(name) +
+ encodeURIComponent(key) +
'=; expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=' +
opt.domain +
'; path=' +
@@ -770,9 +1012,9 @@
}
}
document.cookie =
- encodeURIComponent(name) +
+ encodeURIComponent(key) +
'=' +
- encodeURIComponent(value) +
+ encodeURIComponent(val) +
opt.expires +
'; domain=' +
opt.domain +
@@ -782,24 +1024,15 @@
opt.secure
return true
} else {
- if (!name) {
- var keys = document.cookie
- .replace(
- /((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g,
- ''
- )
- .split(/\s*(?:\=[^;]*)?;\s*/)
- for (var i = 0, len = keys.length; i < len; i++) {
- keys[i] = decodeURIComponent(keys[i])
- }
- return keys
+ if (!key) {
+ return document.cookie
}
return (
decodeURIComponent(
document.cookie.replace(
new RegExp(
'(?:(?:^|.*;)\\s*' +
- encodeURIComponent(name).replace(/[\-\.\+\*]/g, '\\$&') +
+ encodeURIComponent(key).replace(/[\-\.\+\*]/g, '\\$&') +
'\\s*\\=\\s*([^;]*).*$)|^.*$'
),
'$1'
@@ -1542,7 +1775,7 @@
$vmodel.$active = true
$vmodel.mounted = mounted
- if (old && old.$up) {
+ if (old && old.$up && old.$up.$children) {
old.$up.$children.push($vmodel)
}
@@ -3482,6 +3715,19 @@
}
}
+ function parseSlot(collections) {
+ var arr = aslice.call(collections, 0)
+ var obj = {}
+ arr.forEach(function(elem) {
+ var slot = elem.getAttribute('slot')
+ if (slot) {
+ elem.removeAttribute('slot')
+ obj[slot] = elem.outerHTML
+ }
+ })
+ return obj
+ }
+
Anot.components = {}
Anot.component = function(name, opts) {
if (opts) {
@@ -3546,17 +3792,21 @@
componentWillMount.call(vmodel)
globalHooks.componentWillMount.call(null, vmodel)
- if (!elem.content.firstElementChild) {
- Anot.clearHTML(elem)
- var html = render.call(vmodel) || ''
+ var slots = null
- html = html.replace(/<\w+[^>]*>/g, function(m, s) {
- return m.replace(/[\n\t\s]{1,}/g, ' ')
- })
-
- elem.innerHTML = html
+ if (elem.content.firstElementChild) {
+ slots = parseSlot(elem.content.children)
}
+ Anot.clearHTML(elem)
+ var html = render.call(vmodel, slots) || ''
+
+ html = html.replace(/<\w+[^>]*>/g, function(m, s) {
+ return m.replace(/[\n\t\s]{1,}/g, ' ')
+ })
+
+ elem.innerHTML = html
+
// 组件所使用的标签是temlate,所以必须要要用子元素替换掉
var child = elem.content.firstElementChild
var nullComponent = DOC.createComment('empty component')
@@ -5811,7 +6061,9 @@
}
oDate = new Date(stamp)
- if (oDate + '' === 'Invalid Date') return 'Invalid Date'
+ if (oDate + '' === 'Invalid Date') {
+ return 'Invalid Date'
+ }
} else {
oDate = stamp
}
@@ -5867,9 +6119,7 @@
var ext = '.js' //默认拓展名
var res = 'js' // 默认资源类型
var suffix = ['.js', '.css']
- var cssfix = /\.(scss|sass|less)$/
name = name.replace(/\.[a-z0-9]+$/g, function(match) {
- match = match.replace(cssfix, '.css')
ext = match
res = suffix.indexOf(match) > -1 ? match.slice(1) : 'text'
return ''
diff --git a/src/js/pager/index.js b/src/js/pager/index.js
index 594fa1f..92e29cb 100644
--- a/src/js/pager/index.js
+++ b/src/js/pager/index.js
@@ -51,22 +51,22 @@ function update(currPage, vm) {
}
const tmpls = {
- home: ``,
- end: ``,
- prev: ``,
- next: `