diff --git a/build/minified/collections/message.min.css b/build/minified/collections/message.min.css index 74bf3f8bf..2adad2645 100644 --- a/build/minified/collections/message.min.css +++ b/build/minified/collections/message.min.css @@ -1 +1 @@ -.ui.message{position:relative;min-height:18px;margin:1em 0;height:auto;background-color:#EFEFEF;padding:1em;line-height:1.33;color:rgba(0,0,0,.6);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-moz-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-o-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-ms-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-webkit-border-radius:.325em;-moz-border-radius:.325em;border-radius:.325em}.ui.message .header{margin:0;font-size:1.33em;font-weight:700}.ui.message .header+p{margin-top:0}.ui.message p{opacity:.85;margin:1em 0}.ui.message>:first-child{margin-top:0}.ui.message>:last-child{margin-bottom:0}.ui.message ul.list{opacity:.85;list-style-position:inside;margin:.2em 0;padding:0}.ui.message ul.list li{position:relative;list-style-type:none;font-style:italic;margin:0 0 0 1em;padding:0}.ui.message ul.list li:before{position:absolute;content:'\2022';top:-.05em;left:-.8em;height:100%;vertical-align:baseline;opacity:.5}.ui.message ul.list li:first-child{margin-top:0}.ui.message>.icon.close{cursor:pointer;position:absolute;top:1em;right:.5em;opacity:.7;-webkit-transition:opacity .1s linear;-moz-transition:opacity .1s linear;-o-transition:opacity .1s linear;-ms-transition:opacity .1s linear;transition:opacity .1s linear}.ui.message>.icon.close:hover{opacity:1}.ui.message.visible,.ui.header.visible{display:block!important}.ui.message.hidden,.ui.header.hidden{display:none}.ui.compact.message{display:inline-block}.ui.attached.message{margin-left:-1px;margin-right:-1px;margin-bottom:-1px;-webkit-border-radius:.325em .325em 0 0;-moz-border-radius:.325em .325em 0 0;border-radius:.325em .325em 0 0;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;-moz-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset}.ui.bottom.attached.message{margin-top:-1px;-webkit-border-radius:0 0 .325em .325em;-moz-border-radius:0 0 .325em .325em;border-radius:0 0 .325em .325em}.ui.icon.message>.icon{display:table-cell;vertical-align:middle;font-size:3.8em;padding-right:.4em;opacity:.2}.ui.icon.message>.content{display:table-cell;vertical-align:middle}.ui.inverted.message{background-color:rgba(255,255,255,.05);color:rgba(255,255,255,.95)}.ui.black.message{background-color:#333;color:rgba(255,255,255,.95)}.ui.blue.message,.ui.info.message{background-color:#E6F4F9;color:#4D8796}.ui.green.message{background-color:#DEFCD5;color:#52A954}.ui.yellow.message,.ui.warning.message{background-color:#F6F3D5;color:#96904D}.ui.red.message{background-color:#F1D7D7;color:#A95252}.ui.success.message,.ui.positive.message{background-color:#5BBD72;color:#FFF}.ui.error.message,.ui.negative.message{background-color:#D95C5C;color:#FFF}.ui.small.message{font-size:.875em}.ui.message{font-size:1em}.ui.large.message{font-size:1.125em}.ui.huge.message{font-size:1.5em}.ui.massive.message{font-size:2em} \ No newline at end of file +.ui.message{position:relative;min-height:18px;margin:1em 0;height:auto;background-color:#EFEFEF;padding:1em;line-height:1.33;color:rgba(0,0,0,.6);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-moz-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-o-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-ms-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-webkit-border-radius:.325em;-moz-border-radius:.325em;border-radius:.325em}.ui.message .header{margin:0;font-size:1.33em;font-weight:700}.ui.message .header+p{margin-top:0}.ui.message p{opacity:.85;margin:1em 0}.ui.message>:first-child{margin-top:0}.ui.message>:last-child{margin-bottom:0}.ui.message ul.list{opacity:.85;list-style-position:inside;margin:.2em 0;padding:0}.ui.message ul.list li{position:relative;list-style-type:none;font-style:italic;margin:0 0 0 1em;padding:0}.ui.message ul.list li:before{position:absolute;content:'\2022';top:-.05em;left:-.8em;height:100%;vertical-align:baseline;opacity:.5}.ui.message ul.list li:first-child{margin-top:0}.ui.message>.icon.close{cursor:pointer;position:absolute;top:1em;right:.5em;opacity:.7;-webkit-transition:opacity .1s linear;-moz-transition:opacity .1s linear;-o-transition:opacity .1s linear;-ms-transition:opacity .1s linear;transition:opacity .1s linear}.ui.message>.icon.close:hover{opacity:1}.ui.message.visible,.ui.header.visible{display:block!important}.ui.message.hidden,.ui.header.hidden{display:none}.ui.compact.message{display:inline-block}.ui.attached.message{margin-left:-1px;margin-right:-1px;margin-bottom:-1px;-webkit-border-radius:.325em .325em 0 0;-moz-border-radius:.325em .325em 0 0;border-radius:.325em .325em 0 0;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;-moz-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset}.ui.bottom.attached.message{margin-top:-1px;-webkit-border-radius:0 0 .325em .325em;-moz-border-radius:0 0 .325em .325em;border-radius:0 0 .325em .325em}.ui.icon.message{display:table;width:100%}.ui.icon.message>.icon{display:table-cell;vertical-align:middle;font-size:3.8em;padding-right:.4em;opacity:.2}.ui.icon.message>.content{display:table-cell;vertical-align:middle}.ui.inverted.message{background-color:rgba(255,255,255,.05);color:rgba(255,255,255,.95)}.ui.black.message{background-color:#333;color:rgba(255,255,255,.95)}.ui.blue.message,.ui.info.message{background-color:#E6F4F9;color:#4D8796}.ui.green.message{background-color:#DEFCD5;color:#52A954}.ui.yellow.message,.ui.warning.message{background-color:#F6F3D5;color:#96904D}.ui.red.message{background-color:#F1D7D7;color:#A95252}.ui.success.message,.ui.positive.message{background-color:#5BBD72;color:#FFF}.ui.error.message,.ui.negative.message{background-color:#D95C5C;color:#FFF}.ui.small.message{font-size:.875em}.ui.message{font-size:1em}.ui.large.message{font-size:1.125em}.ui.huge.message{font-size:1.5em}.ui.massive.message{font-size:2em} \ No newline at end of file diff --git a/build/minified/elements/button.min.css b/build/minified/elements/button.min.css index e9bc3c4f6..f1890cf42 100644 --- a/build/minified/elements/button.min.css +++ b/build/minified/elements/button.min.css @@ -1 +1 @@ -.ui.button{cursor:pointer;display:inline-block;vertical-align:middle;min-height:1em;outline:0;border:0;background-color:#EDEDED;color:#999;padding:.8em 1.5em;font-size:1rem;text-transform:uppercase;line-height:1;font-weight:700;font-style:normal;text-align:center;text-shadow:none;-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em;-webkit-box-shadow:0 -.185rem 0 rgba(0,0,0,.1) inset;-moz-box-shadow:0 -.185rem 0 rgba(0,0,0,.1) inset;box-shadow:0 -.185rem 0 rgba(0,0,0,.1) inset;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-moz-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-o-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-ms-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease}.ui.button>.icon{margin-right:.5em;line-height:1;-webkit-transition:opacity .1s ease;-moz-transition:opacity .1s ease;-o-transition:opacity .1s ease;-ms-transition:opacity .1s ease;transition:opacity .1s ease}.ui.buttons .button.active,.ui.button.active{opacity:1!important;background-color:#E6E6E6;background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,.1)),to(rgba(0,0,0,.05)));background-image:-webkit-linear-gradient(rgba(0,0,0,.1) 0,rgba(0,0,0,.05) 100%);background-image:-moz-linear-gradient(rgba(0,0,0,.1) 0,rgba(0,0,0,.05) 100%);background-image:-o-linear-gradient(rgba(0,0,0,.1) 0,rgba(0,0,0,.05) 100%);background-image:linear-gradient(rgba(0,0,0,.1) 0,rgba(0,0,0,.05) 100%);-webkit-box-shadow:0 .125em .125em 0 rgba(0,0,0,.1) inset;-moz-box-shadow:0 .125em .125em 0 rgba(0,0,0,.1) inset;box-shadow:0 .125em .125em 0 rgba(0,0,0,.1) inset}.ui.buttons .button.active,.ui.buttons .button.active a,.ui.button.active,.ui.button.active a{color:#666}.ui.button:hover,.ui.button.hover{opacity:1!important;background-color:#DEDEDE;color:#777}.ui.button:hover .icon,.ui.button.hover .icon{opacity:.85}.ui.button:active,.ui.button.down{opacity:1!important;background-color:#D8D8D8;color:#777;-webkit-box-shadow:0 0 .125em 1px rgba(0,0,0,.1) inset;-moz-box-shadow:0 0 .125em 1px rgba(0,0,0,.1) inset;box-shadow:0 0 .125em 1px rgba(0,0,0,.1) inset}.ui.button.error,.ui.button.error.hover,.ui.button.error.down{cursor:default;position:relative!important;background-color:#D95C5C!important;color:transparent!important;text-shadow:none;-webkit-transition:all 0s linear;-moz-transition:all 0s linear;-o-transition:all 0s linear;-ms-transition:all 0s linear;transition:all 0s linear}.ui.button.error .icon{opacity:1;color:#FFF}.ui.button.error:after{position:absolute;left:50%;content:"Error";margin-left:-1.8em;color:#FFF;-webkit-animation:button-text .5s;-moz-animation:button-text .5s;-ms-animation:button-text .5s;-o-animation:button-text .5s;animation:button-text .5s}.ui.button.error .icon:before{font-family:Icons;content:'\26a0'}.ui.button.success,.ui.button.success.hover,.ui.button.success.down{position:relative!important;background-color:#5BBD72!important;color:transparent!important}.ui.button.success .icon{opacity:1;color:#FFF}.ui.button.success .icon:before{font-family:Icons;content:'\2611'}.ui.button.success:after{position:absolute;left:50%;content:"Success";margin-left:-2em;color:#FFF;-webkit-animation:button-text .5s;-moz-animation:button-text .5s;-ms-animation:button-text .5s;-o-animation:button-text .5s;animation:button-text .5s}@-webkit-keyframes button-text{0%{-webkit-transform:translateY(100%);opacity:0}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes button-text{0%{-moz-transform:translateY(100%);opacity:0}100%{opacity:1;-moz-transform:translateY(0)}}@keyframes button-text{0%{transform:translateY(100%);opacity:0}100%{opacity:1;transform:translateY(0)}}.ui.button.loading,.ui.button.loading.hover{position:relative;cursor:default;background-color:#F3F3F3!important;color:transparent!important;text-shadow:none!important;background-image:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;-webkit-transition:all 0s linear;-moz-transition:all 0s linear;-o-transition:all 0s linear;-ms-transition:all 0s linear;transition:all 0s linear}.ui.button.loading:after{position:absolute;top:0;left:0;width:100%;height:100%;content:'';background:transparent url(../images/loader-mini.gif) no-repeat 50% 50%}.ui.labeled.icon.button.loading .icon{background-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.button.disabled,.ui.button.disabled.hover,.ui.button.disabled.down{cursor:default;color:#DDD;background-color:rgba(50,50,50,.05)!important;background-image:none!important;text-shadow:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}.ui.buttons.black .button,.ui.button.black{background-color:#5C6166;color:#FFF}.ui.buttons.black .button.hover,.ui.buttons.black .button:hover,.ui.button.black.hover,.ui.button.black:hover{background-color:#4C4C4C;color:#FFF}.ui.buttons.black .button.down,.ui.buttons.black .button:active,.ui.button.black.down,.ui.button.black:active{background-color:#333;color:#FFF}.ui.buttons.green .button,.ui.button.green{background-color:#5BBD72;color:#FFF}.ui.buttons.green .button.hover,.ui.buttons.green .button:hover,.ui.button.green.hover,.ui.button.green:hover,.ui.buttons.green .button.active,.ui.button.green.active{background-color:#58cb73;color:#FFF}.ui.buttons.green .button.down,.ui.buttons.green .button:active,.ui.button.green.down,.ui.button.green:active{background-color:#4CB164;color:#FFF}.ui.buttons.red .button,.ui.button.red{background-color:#D95C5C;color:#FFF}.ui.buttons.red .button.hover,.ui.buttons.red .button:hover,.ui.button.red.hover,.ui.button.red:hover,.ui.buttons.red .button.active,.ui.button.red.active{background-color:#E75859;color:#FFF}.ui.buttons.red .button.down,.ui.buttons.red .button:active,.ui.button.red.down,.ui.button.red:active{background-color:#D24B4C;color:#FFF}.ui.buttons.blue .button,.ui.button.blue{background-color:#6ECFF5;color:#FFF}.ui.buttons.blue .button.hover,.ui.buttons.blue .button:hover,.ui.button.blue.hover,.ui.button.blue:hover,.ui.buttons.blue .button.active,.ui.button.blue.active{background-color:#1AB8F3;color:#FFF}.ui.buttons.blue .button.down,.ui.buttons.blue .button:active,.ui.button.blue.down,.ui.button.blue:active{background-color:#0AA5DF;color:#FFF}.ui.buttons.purple .button,.ui.button.purple{background-color:#564F8A;color:#FFF}.ui.buttons.purple .button.hover,.ui.buttons.purple .button:hover,.ui.button.purple.hover,.ui.button.purple:hover,.ui.buttons.purple .button.active,.ui.button.purple.active{background-color:#3E3773;color:#FFF}.ui.buttons.purple .button.down,.ui.buttons.purple .button:active,.ui.button.purple.down,.ui.button.purple:active{background-color:#2E2860;color:#FFF}.ui.buttons.teal .button,.ui.button.teal{background-color:#00B5AD;color:#FFF}.ui.buttons.teal .button.hover,.ui.buttons.teal .button:hover,.ui.button.teal.hover,.ui.button.teal:hover,.ui.buttons.teal .button.active,.ui.button.teal.active{background-color:#009A93;color:#FFF}.ui.buttons.teal .button.down,.ui.buttons.teal .button:active,.ui.button.teal.down,.ui.button.teal:active{background-color:#00847E;color:#FFF}.ui.buttons.positive .button,.ui.button.positive{background-color:#5BBD72!important;color:#FFF}.ui.buttons.positive .button.hover,.ui.buttons.positive .button:hover,.ui.button.positive.hover,.ui.button.positive:hover,.ui.buttons.positive .button.active,.ui.button.positive.active{background-color:#58CB73!important;color:#FFF}.ui.buttons.positive .button.down,.ui.buttons.positive .button:active,.ui.button.positive.down,.ui.button.positive:active{background-color:#4CB164!important;color:#FFF}.ui.buttons.negative .button,.ui.button.negative{background-color:#D95C5C!important;color:#FFF}.ui.buttons.negative .button.hover,.ui.buttons.negative .button:hover,.ui.button.negative.hover,.ui.button.negative:hover,.ui.buttons.negative .button.active,.ui.button.negative.active{background-color:#E75859!important;color:#FFF}.ui.buttons.negative .button.down,.ui.buttons.negative .button:active,.ui.button.negative.down,.ui.button.negative:active{background-color:#D24B4C!important;color:#FFF}.ui.buttons .button,.ui.button{font-size:1rem}.ui.buttons.mini .button,.ui.mini.button{font-size:.8rem;padding:.6em .8em}.ui.tiny.buttons .button,.ui.tiny.button{font-size:.9rem;padding:.6em .8em}.ui.small.buttons .button,.ui.small.button{font-size:.9rem}.ui.large.buttons .button,.ui.large.button{font-size:1.125rem}.ui.big.buttons .button,.ui.big.button{font-size:1.25rem}.ui.huge.buttons .button,.ui.huge.button{font-size:1.375rem;padding-left:2em;padding-right:2em}.ui.massive.buttons .button,.ui.massive.button{font-size:1.5rem;font-weight:700;padding-left:2.5em;padding-right:2.5em}.ui.huge.button.loading:after{background-image:url(../images/loader-small.gif)}.ui.massive.buttons .button.loading:after,.ui.gigantic.buttons .button.loading:after,.ui.massive.button.loading:after,.ui.gigantic.button.loading:after{background-image:url(../images/loader-medium.gif)}.ui.huge.button.loading:after,.ui.huge.button.loading.active:after{background-image:url(../images/loader-small.gif)}.ui.massive.buttons .button.loading:after,.ui.gigantic.buttons .button.loading:after,.ui.massive.button.loading:after,.ui.gigantic.button.loading:after,.ui.massive.buttons .button.loading.active:after,.ui.gigantic.buttons .button.loading.active:after,.ui.massive.button.loading.active:after,.ui.gigantic.button.loading.active:after{background-image:url(../images/loader-medium.gif)}.ui.icon.buttons .button,.ui.icon.button{padding:.8em}.ui.icon.buttons .button>.icon,.ui.icon.button>.icon{opacity:1;margin:0}.ui.buttons.secondary .button,.ui.secondary.button{font-weight:400;text-transform:none;opacity:1}.ui.buttons.tertiary .button,.ui.tertiary.button{background-color:transparent;background-image:none;color:#999;font-weight:400;text-transform:none;text-shadow:none;box-shadow:none}.ui.buttons.tertiary .button{border-left:0}.ui.button.tertiary.active{opacity:.9!important}.ui.button.tertiary.hover,.ui.button.tertiary:hover{opacity:.8!important}.ui.button.tertiary.down,.ui.button.tertiary:active{opacity:1!important}.ui.labeled.icon.buttons .button,.ui.labeled.icon.button{position:relative;padding-left:4em!important;padding-right:1.4em!important}.ui.labeled.icon.buttons>.button>.icon,.ui.labeled.icon.button>.icon{position:absolute;top:0;left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;width:2.75em;height:100%;padding-top:.8em;background-color:rgba(0,0,0,.05);text-align:center;-webkit-border-radius:.3125em 0 0 .3125em;-moz-border-radius:.3125em 0 0 .3125em;border-radius:.3125em 0 0 .3125em;line-height:1;-webkit-box-shadow:-2px 0 0 0 rgba(0,0,0,.05) inset;-moz-box-shadow:-2px 0 0 0 rgba(0,0,0,.05) inset;box-shadow:-2px 0 0 0 rgba(0,0,0,.05) inset}.ui.labeled.icon.buttons .button>.icon{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.labeled.icon.buttons .button:first-child>.icon{border-top-left-radius:.3125em;border-bottom-left-radius:.3125em}.ui.labeled.icon.buttons .button:last-child>.icon{border-top-right-radius:.3125em;border-bottom-right-radius:.3125em}.ui.vertical.labeled.icon.buttons .button:first-child>.icon{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-top-left-radius:.3125em}.ui.vertical.labeled.icon.buttons .button:last-child>.icon{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:.3125em}.ui.right.labeled.icon.button{padding-left:1.4em!important;padding-right:4em!important}.ui.left.fluid.labeled.icon.button,.ui.right.fluid.labeled.icon.button{padding-left:1.4em!important;padding-right:1.4em!important}.ui.right.labeled.icon.button .icon{left:auto;right:0}.ui.toggle.buttons .button.active,.ui.buttons .button.toggle.active,.ui.button.toggle.active{background-color:#BBF0A9;color:#1C8C21}.ui.buttons.toggle .ui.button.active.hover,.ui.buttons .ui.button.toggle.active.hover,.ui.button.toggle.active.hover{color:#FFF;background-color:#BBF0A9}.ui.circular.button{-webkit-border-radius:10em;-moz-border-radius:10em;border-radius:10em}.ui.button.attached{display:block;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1)}.ui.button.attached.top{-webkit-border-radius:.3125em .3125em 0 0;-moz-border-radius:.3125em .3125em 0 0;border-radius:.3125em .3125em 0 0}.ui.button.attached.bottom{-webkit-border-radius:0 0 .3125em .3125em;-moz-border-radius:0 0 .3125em .3125em;border-radius:0 0 .3125em .3125em}.ui.button.attached.left{display:inline-block;border-left:0;padding-right:.75em;text-align:right;-webkit-border-radius:.3125em 0 0 .3125em;-moz-border-radius:.3125em 0 0 .3125em;border-radius:.3125em 0 0 .3125em}.ui.button.attached.right{display:inline-block;padding-left:.75em;text-align:left;-webkit-border-radius:0 .3125em .3125em 0;-moz-border-radius:0 .3125em .3125em 0;border-radius:0 .3125em .3125em 0}.ui.buttons .or{position:relative;float:left;width:.3em;height:1em;z-index:3}.ui.buttons .or:before{position:absolute;top:50%;left:50%;content:'or';background-color:#FFF;margin-top:-.15em;margin-left:-.9em;width:1.8em;height:1.8em;line-height:1.66;color:#AAA;font-style:normal;font-weight:400;text-align:center;-moz-box-shadow:0 2px 1px 0 rgba(0,0,0,.2) inset;-webkit-box-shadow:0 2px 1px 0 rgba(0,0,0,.2) inset;box-shadow:0 2px 1px 0 rgba(0,0,0,.2) inset;-moz-border-radius:500px;-webkit-border-radius:500px;border-radius:500px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.buttons .or:after{position:absolute;top:0;left:0;content:' ';width:.3em;height:1.8em;background-color:transparent;border-top:.6em solid #FFF;border-bottom:.6em solid #FFF}.ui.fluid.buttons .or{width:0!important}.ui.fluid.buttons .or:after{display:none}.attached.ui.buttons{margin:0;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.attached.ui.buttons .button:first-child{-webkit-border-radius:4px 0 0;-moz-border-radius:4px 0 0;border-radius:4px 0 0}.attached.ui.buttons .button:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0}.bottom.attached.ui.buttons{margin-top:-1px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.bottom.attached.ui.buttons .button:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px}.bottom.attached.ui.buttons .button:last-child{-webkit-border-radius:0 0 4px;-moz-border-radius:0 0 4px;border-radius:0 0 4px}.left.attached.ui.buttons{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.left.attached.ui.buttons .button:first-child{margin-left:-1px;-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0}.left.attached.ui.buttons .button:last-child{margin-left:-1px;-webkit-border-radius:0 0 4px;-moz-border-radius:0 0 4px;border-radius:0 0 4px}.right.attached.ui.buttons,.right.attached.ui.buttons .button{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.right.attached.ui.buttons .button:first-child{margin-left:-1px;-webkit-border-radius:4px 0 0;-moz-border-radius:4px 0 0;border-radius:4px 0 0}.right.attached.ui.buttons .button:last-child{margin-left:-1px;-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px}.ui.fluid.buttons,.ui.button.fluid,.ui.fluid.buttons>.button{display:block;width:100%}.ui.two.buttons>.button{width:50%}.ui.three.buttons>.button{width:33.333%}.ui.four.buttons>.button{width:25%}.ui.five.buttons>.button{width:20%}.ui.six.buttons>.button{width:16.666%}.ui.seven.buttons>.button{width:14.285%}.ui.eight.buttons>.button{width:12.5%}.ui.nine.buttons>.button{width:11.11%}.ui.ten.buttons>.button{width:10%}.ui.eleven.buttons>.button{width:9.09%}.ui.twelve.buttons>.button{width:8.3333%}.ui.fluid.vertical.buttons,.ui.fluid.vertical.buttons>.button{width:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.two.vertical.buttons>.button{height:50%}.ui.three.vertical.buttons>.button{height:33.333%}.ui.four.vertical.buttons>.button{height:25%}.ui.five.vertical.buttons>.button{height:20%}.ui.six.vertical.buttons>.button{height:16.666%}.ui.seven.vertical.buttons>.button{height:14.285%}.ui.eight.vertical.buttons>.button{height:12.5%}.ui.nine.vertical.buttons>.button{height:11.11%}.ui.ten.vertical.buttons>.button{height:10%}.ui.eleven.vertical.buttons>.button{height:9.09%}.ui.twelve.vertical.buttons>.button{height:8.3333%}.ui.buttons:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.buttons .button{float:left;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-left:1px solid rgba(0,0,0,.05)}.ui.buttons .button:first-child{margin-left:0;border-top-left-radius:.3125em;border-bottom-left-radius:.3125em}.ui.buttons .button:last-child{border-top-right-radius:.3125em;border-bottom-right-radius:.3125em}.ui.buttons.vertical{display:inline-block}.ui.buttons.vertical .button{display:block;float:none;border-bottom:1px solid rgba(0,0,0,.05);border-left:0;box-shadow:none}.ui.buttons.vertical .button:first-child,.ui.buttons.vertical .mini.button:first-child,.ui.buttons.vertical .tiny.button:first-child,.ui.buttons.vertical .small.button:first-child,.ui.buttons.vertical .massive.button:first-child,.ui.buttons.vertical .huge.button:first-child{margin-top:0;-moz-border-radius:.3125em .3125em 0 0;-webkit-border-radius:.3125em .3125em 0 0;border-radius:.3125em .3125em 0 0}.ui.buttons.vertical .button:last-child,.ui.buttons.vertical .mini.button:last-child,.ui.buttons.vertical .tiny.button:last-child,.ui.buttons.vertical .small.button:last-child,.ui.buttons.vertical .massive.button:last-child,.ui.buttons.vertical .huge.button:last-child,.ui.buttons.vertical .gigantic.button:last-child{-moz-border-radius:0 0 .3125em .3125em;-webkit-border-radius:0 0 .3125em .3125em;border-radius:0 0 .3125em .3125em} \ No newline at end of file +.ui.button{cursor:pointer;display:inline-block;vertical-align:middle;min-height:1em;outline:0;border:0;background-color:#EDEDED;color:#999;padding:.8em 1.5em;font-size:1rem;text-transform:uppercase;line-height:1;font-weight:700;font-style:normal;text-align:center;text-shadow:none;-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em;-webkit-box-shadow:0 -.185rem 0 rgba(0,0,0,.1) inset;-moz-box-shadow:0 -.185rem 0 rgba(0,0,0,.1) inset;box-shadow:0 -.185rem 0 rgba(0,0,0,.1) inset;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-moz-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-o-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-ms-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease}.ui.button>.icon{margin-right:.5em;line-height:1;-webkit-transition:opacity .1s ease;-moz-transition:opacity .1s ease;-o-transition:opacity .1s ease;-ms-transition:opacity .1s ease;transition:opacity .1s ease}.ui.buttons .button.active,.ui.button.active{opacity:1!important;background-color:#E6E6E6;background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,.1)),to(rgba(0,0,0,.05)));background-image:-webkit-linear-gradient(rgba(0,0,0,.1) 0,rgba(0,0,0,.05) 100%);background-image:-moz-linear-gradient(rgba(0,0,0,.1) 0,rgba(0,0,0,.05) 100%);background-image:-o-linear-gradient(rgba(0,0,0,.1) 0,rgba(0,0,0,.05) 100%);background-image:linear-gradient(rgba(0,0,0,.1) 0,rgba(0,0,0,.05) 100%);-webkit-box-shadow:0 .125em .125em 0 rgba(0,0,0,.1) inset;-moz-box-shadow:0 .125em .125em 0 rgba(0,0,0,.1) inset;box-shadow:0 .125em .125em 0 rgba(0,0,0,.1) inset}.ui.buttons .button.active,.ui.buttons .button.active a,.ui.button.active,.ui.button.active a{color:#666}.ui.button:hover,.ui.button.hover{opacity:1!important;background-color:#DEDEDE;color:#777}.ui.button:hover .icon,.ui.button.hover .icon{opacity:.85}.ui.button:active,.ui.button.down{opacity:1!important;background-color:#D8D8D8;color:#777;-webkit-box-shadow:0 0 .125em 1px rgba(0,0,0,.1) inset;-moz-box-shadow:0 0 .125em 1px rgba(0,0,0,.1) inset;box-shadow:0 0 .125em 1px rgba(0,0,0,.1) inset}.ui.button.disabled,.ui.button.disabled.hover,.ui.button.disabled.down{cursor:default;color:#DDD;background-color:rgba(50,50,50,.05)!important;background-image:none!important;text-shadow:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}.ui.buttons.black .button,.ui.button.black{background-color:#5C6166;color:#FFF}.ui.buttons.black .button.hover,.ui.buttons.black .button:hover,.ui.button.black.hover,.ui.button.black:hover{background-color:#4C4C4C;color:#FFF}.ui.buttons.black .button.down,.ui.buttons.black .button:active,.ui.button.black.down,.ui.button.black:active{background-color:#333;color:#FFF}.ui.buttons.green .button,.ui.button.green{background-color:#5BBD72;color:#FFF}.ui.buttons.green .button.hover,.ui.buttons.green .button:hover,.ui.button.green.hover,.ui.button.green:hover,.ui.buttons.green .button.active,.ui.button.green.active{background-color:#58cb73;color:#FFF}.ui.buttons.green .button.down,.ui.buttons.green .button:active,.ui.button.green.down,.ui.button.green:active{background-color:#4CB164;color:#FFF}.ui.buttons.red .button,.ui.button.red{background-color:#D95C5C;color:#FFF}.ui.buttons.red .button.hover,.ui.buttons.red .button:hover,.ui.button.red.hover,.ui.button.red:hover,.ui.buttons.red .button.active,.ui.button.red.active{background-color:#E75859;color:#FFF}.ui.buttons.red .button.down,.ui.buttons.red .button:active,.ui.button.red.down,.ui.button.red:active{background-color:#D24B4C;color:#FFF}.ui.buttons.blue .button,.ui.button.blue{background-color:#6ECFF5;color:#FFF}.ui.buttons.blue .button.hover,.ui.buttons.blue .button:hover,.ui.button.blue.hover,.ui.button.blue:hover,.ui.buttons.blue .button.active,.ui.button.blue.active{background-color:#1AB8F3;color:#FFF}.ui.buttons.blue .button.down,.ui.buttons.blue .button:active,.ui.button.blue.down,.ui.button.blue:active{background-color:#0AA5DF;color:#FFF}.ui.buttons.purple .button,.ui.button.purple{background-color:#564F8A;color:#FFF}.ui.buttons.purple .button.hover,.ui.buttons.purple .button:hover,.ui.button.purple.hover,.ui.button.purple:hover,.ui.buttons.purple .button.active,.ui.button.purple.active{background-color:#3E3773;color:#FFF}.ui.buttons.purple .button.down,.ui.buttons.purple .button:active,.ui.button.purple.down,.ui.button.purple:active{background-color:#2E2860;color:#FFF}.ui.buttons.teal .button,.ui.button.teal{background-color:#00B5AD;color:#FFF}.ui.buttons.teal .button.hover,.ui.buttons.teal .button:hover,.ui.button.teal.hover,.ui.button.teal:hover,.ui.buttons.teal .button.active,.ui.button.teal.active{background-color:#009A93;color:#FFF}.ui.buttons.teal .button.down,.ui.buttons.teal .button:active,.ui.button.teal.down,.ui.button.teal:active{background-color:#00847E;color:#FFF}.ui.buttons.positive .button,.ui.button.positive{background-color:#5BBD72!important;color:#FFF}.ui.buttons.positive .button.hover,.ui.buttons.positive .button:hover,.ui.button.positive.hover,.ui.button.positive:hover,.ui.buttons.positive .button.active,.ui.button.positive.active{background-color:#58CB73!important;color:#FFF}.ui.buttons.positive .button.down,.ui.buttons.positive .button:active,.ui.button.positive.down,.ui.button.positive:active{background-color:#4CB164!important;color:#FFF}.ui.buttons.negative .button,.ui.button.negative{background-color:#D95C5C!important;color:#FFF}.ui.buttons.negative .button.hover,.ui.buttons.negative .button:hover,.ui.button.negative.hover,.ui.button.negative:hover,.ui.buttons.negative .button.active,.ui.button.negative.active{background-color:#E75859!important;color:#FFF}.ui.buttons.negative .button.down,.ui.buttons.negative .button:active,.ui.button.negative.down,.ui.button.negative:active{background-color:#D24B4C!important;color:#FFF}.ui.buttons .button,.ui.button{font-size:1rem}.ui.buttons.mini .button,.ui.mini.button{font-size:.8rem;padding:.6em .8em}.ui.tiny.buttons .button,.ui.tiny.button{font-size:.9rem;padding:.6em .8em}.ui.small.buttons .button,.ui.small.button{font-size:.9rem}.ui.large.buttons .button,.ui.large.button{font-size:1.125rem}.ui.big.buttons .button,.ui.big.button{font-size:1.25rem}.ui.huge.buttons .button,.ui.huge.button{font-size:1.375rem;padding-left:2em;padding-right:2em}.ui.massive.buttons .button,.ui.massive.button{font-size:1.5rem;font-weight:700;padding-left:2.5em;padding-right:2.5em}.ui.huge.button.loading:after{background-image:url(../images/loader-small.gif)}.ui.massive.buttons .button.loading:after,.ui.gigantic.buttons .button.loading:after,.ui.massive.button.loading:after,.ui.gigantic.button.loading:after{background-image:url(../images/loader-medium.gif)}.ui.huge.button.loading:after,.ui.huge.button.loading.active:after{background-image:url(../images/loader-small.gif)}.ui.massive.buttons .button.loading:after,.ui.gigantic.buttons .button.loading:after,.ui.massive.button.loading:after,.ui.gigantic.button.loading:after,.ui.massive.buttons .button.loading.active:after,.ui.gigantic.buttons .button.loading.active:after,.ui.massive.button.loading.active:after,.ui.gigantic.button.loading.active:after{background-image:url(../images/loader-medium.gif)}.ui.icon.buttons .button,.ui.icon.button{padding:.8em}.ui.icon.buttons .button>.icon,.ui.icon.button>.icon{opacity:1;margin:0}.ui.buttons.secondary .button,.ui.secondary.button{font-weight:400;text-transform:none;opacity:1}.ui.buttons.tertiary .button,.ui.tertiary.button{background-color:transparent;background-image:none;color:#999;font-weight:400;text-transform:none;text-shadow:none;box-shadow:none}.ui.buttons.tertiary .button{border-left:0}.ui.button.tertiary.active{opacity:.9!important}.ui.button.tertiary.hover,.ui.button.tertiary:hover{opacity:.8!important}.ui.button.tertiary.down,.ui.button.tertiary:active{opacity:1!important}.ui.labeled.icon.buttons .button,.ui.labeled.icon.button{position:relative;padding-left:4em!important;padding-right:1.4em!important}.ui.labeled.icon.buttons>.button>.icon,.ui.labeled.icon.button>.icon{position:absolute;top:0;left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;width:2.75em;height:100%;padding-top:.8em;background-color:rgba(0,0,0,.05);text-align:center;-webkit-border-radius:.3125em 0 0 .3125em;-moz-border-radius:.3125em 0 0 .3125em;border-radius:.3125em 0 0 .3125em;line-height:1;-webkit-box-shadow:-2px 0 0 0 rgba(0,0,0,.05) inset;-moz-box-shadow:-2px 0 0 0 rgba(0,0,0,.05) inset;box-shadow:-2px 0 0 0 rgba(0,0,0,.05) inset}.ui.labeled.icon.buttons .button>.icon{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.labeled.icon.buttons .button:first-child>.icon{border-top-left-radius:.3125em;border-bottom-left-radius:.3125em}.ui.labeled.icon.buttons .button:last-child>.icon{border-top-right-radius:.3125em;border-bottom-right-radius:.3125em}.ui.vertical.labeled.icon.buttons .button:first-child>.icon{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-top-left-radius:.3125em}.ui.vertical.labeled.icon.buttons .button:last-child>.icon{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:.3125em}.ui.right.labeled.icon.button{padding-left:1.4em!important;padding-right:4em!important}.ui.left.fluid.labeled.icon.button,.ui.right.fluid.labeled.icon.button{padding-left:1.4em!important;padding-right:1.4em!important}.ui.right.labeled.icon.button .icon{left:auto;right:0}.ui.toggle.buttons .button.active,.ui.buttons .button.toggle.active,.ui.button.toggle.active{background-color:#BBF0A9;color:#1C8C21}.ui.buttons.toggle .ui.button.active.hover,.ui.buttons .ui.button.toggle.active.hover,.ui.button.toggle.active.hover{color:#FFF;background-color:#BBF0A9}.ui.circular.button{-webkit-border-radius:10em;-moz-border-radius:10em;border-radius:10em}.ui.button.attached{display:block;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1)}.ui.button.attached.top{-webkit-border-radius:.3125em .3125em 0 0;-moz-border-radius:.3125em .3125em 0 0;border-radius:.3125em .3125em 0 0}.ui.button.attached.bottom{-webkit-border-radius:0 0 .3125em .3125em;-moz-border-radius:0 0 .3125em .3125em;border-radius:0 0 .3125em .3125em}.ui.button.attached.left{display:inline-block;border-left:0;padding-right:.75em;text-align:right;-webkit-border-radius:.3125em 0 0 .3125em;-moz-border-radius:.3125em 0 0 .3125em;border-radius:.3125em 0 0 .3125em}.ui.button.attached.right{display:inline-block;padding-left:.75em;text-align:left;-webkit-border-radius:0 .3125em .3125em 0;-moz-border-radius:0 .3125em .3125em 0;border-radius:0 .3125em .3125em 0}.ui.buttons .or{position:relative;float:left;width:.3em;height:1em;z-index:3}.ui.buttons .or:before{position:absolute;top:50%;left:50%;content:'or';background-color:#FFF;margin-top:-.15em;margin-left:-.9em;width:1.8em;height:1.8em;line-height:1.66;color:#AAA;font-style:normal;font-weight:400;text-align:center;-moz-box-shadow:0 2px 1px 0 rgba(0,0,0,.2) inset;-webkit-box-shadow:0 2px 1px 0 rgba(0,0,0,.2) inset;box-shadow:0 2px 1px 0 rgba(0,0,0,.2) inset;-moz-border-radius:500px;-webkit-border-radius:500px;border-radius:500px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.buttons .or:after{position:absolute;top:0;left:0;content:' ';width:.3em;height:1.8em;background-color:transparent;border-top:.6em solid #FFF;border-bottom:.6em solid #FFF}.ui.fluid.buttons .or{width:0!important}.ui.fluid.buttons .or:after{display:none}.attached.ui.buttons{margin:0;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.attached.ui.buttons .button:first-child{-webkit-border-radius:4px 0 0;-moz-border-radius:4px 0 0;border-radius:4px 0 0}.attached.ui.buttons .button:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0}.bottom.attached.ui.buttons{margin-top:-1px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.bottom.attached.ui.buttons .button:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px}.bottom.attached.ui.buttons .button:last-child{-webkit-border-radius:0 0 4px;-moz-border-radius:0 0 4px;border-radius:0 0 4px}.left.attached.ui.buttons{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.left.attached.ui.buttons .button:first-child{margin-left:-1px;-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0}.left.attached.ui.buttons .button:last-child{margin-left:-1px;-webkit-border-radius:0 0 4px;-moz-border-radius:0 0 4px;border-radius:0 0 4px}.right.attached.ui.buttons,.right.attached.ui.buttons .button{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.right.attached.ui.buttons .button:first-child{margin-left:-1px;-webkit-border-radius:4px 0 0;-moz-border-radius:4px 0 0;border-radius:4px 0 0}.right.attached.ui.buttons .button:last-child{margin-left:-1px;-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px}.ui.fluid.buttons,.ui.button.fluid,.ui.fluid.buttons>.button{display:block;width:100%}.ui.two.buttons>.button{width:50%}.ui.three.buttons>.button{width:33.333%}.ui.four.buttons>.button{width:25%}.ui.five.buttons>.button{width:20%}.ui.six.buttons>.button{width:16.666%}.ui.seven.buttons>.button{width:14.285%}.ui.eight.buttons>.button{width:12.5%}.ui.nine.buttons>.button{width:11.11%}.ui.ten.buttons>.button{width:10%}.ui.eleven.buttons>.button{width:9.09%}.ui.twelve.buttons>.button{width:8.3333%}.ui.fluid.vertical.buttons,.ui.fluid.vertical.buttons>.button{width:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.two.vertical.buttons>.button{height:50%}.ui.three.vertical.buttons>.button{height:33.333%}.ui.four.vertical.buttons>.button{height:25%}.ui.five.vertical.buttons>.button{height:20%}.ui.six.vertical.buttons>.button{height:16.666%}.ui.seven.vertical.buttons>.button{height:14.285%}.ui.eight.vertical.buttons>.button{height:12.5%}.ui.nine.vertical.buttons>.button{height:11.11%}.ui.ten.vertical.buttons>.button{height:10%}.ui.eleven.vertical.buttons>.button{height:9.09%}.ui.twelve.vertical.buttons>.button{height:8.3333%}.ui.buttons:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.buttons .button{float:left;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-left:1px solid rgba(0,0,0,.05)}.ui.buttons .button:first-child{margin-left:0;border-top-left-radius:.3125em;border-bottom-left-radius:.3125em}.ui.buttons .button:last-child{border-top-right-radius:.3125em;border-bottom-right-radius:.3125em}.ui.buttons.vertical{display:inline-block}.ui.buttons.vertical .button{display:block;float:none;border-bottom:1px solid rgba(0,0,0,.05);border-left:0;box-shadow:none}.ui.buttons.vertical .button:first-child,.ui.buttons.vertical .mini.button:first-child,.ui.buttons.vertical .tiny.button:first-child,.ui.buttons.vertical .small.button:first-child,.ui.buttons.vertical .massive.button:first-child,.ui.buttons.vertical .huge.button:first-child{margin-top:0;-moz-border-radius:.3125em .3125em 0 0;-webkit-border-radius:.3125em .3125em 0 0;border-radius:.3125em .3125em 0 0}.ui.buttons.vertical .button:last-child,.ui.buttons.vertical .mini.button:last-child,.ui.buttons.vertical .tiny.button:last-child,.ui.buttons.vertical .small.button:last-child,.ui.buttons.vertical .massive.button:last-child,.ui.buttons.vertical .huge.button:last-child,.ui.buttons.vertical .gigantic.button:last-child{-moz-border-radius:0 0 .3125em .3125em;-webkit-border-radius:0 0 .3125em .3125em;border-radius:0 0 .3125em .3125em}.ui.button.loading,.ui.button.loading.hover{position:relative;cursor:default;background-color:#F3F3F3!important;color:transparent!important;text-shadow:none!important;background-image:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;-webkit-transition:all 0s linear;-moz-transition:all 0s linear;-o-transition:all 0s linear;-ms-transition:all 0s linear;transition:all 0s linear}.ui.button.loading:after{position:absolute;top:0;left:0;width:100%;height:100%;content:'';background:transparent url(../images/loader-mini.gif) no-repeat 50% 50%}.ui.labeled.icon.button.loading .icon{background-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.button.error,.ui.button.error.hover,.ui.button.error.down{cursor:default;position:relative!important;background-color:#D95C5C!important;color:transparent!important;text-shadow:none;-webkit-transition:all 0s linear;-moz-transition:all 0s linear;-o-transition:all 0s linear;-ms-transition:all 0s linear;transition:all 0s linear}.ui.button.error .icon{opacity:1;color:#FFF}.ui.button.error:after{position:absolute;left:50%;content:"Error";margin-left:-1.8em;color:#FFF;-webkit-animation:button-text .5s;-moz-animation:button-text .5s;-ms-animation:button-text .5s;-o-animation:button-text .5s;animation:button-text .5s}.ui.button.error .icon:before{font-family:Icons;content:'\26a0'}.ui.button.success,.ui.button.success.hover,.ui.button.success.down{position:relative!important;background-color:#5BBD72!important;color:transparent!important}.ui.button.success .icon{opacity:1;color:#FFF}.ui.button.success .icon:before{font-family:Icons;content:'\2611'}.ui.button.success:after{position:absolute;left:50%;content:"Success";margin-left:-2em;color:#FFF;-webkit-animation:button-text .5s;-moz-animation:button-text .5s;-ms-animation:button-text .5s;-o-animation:button-text .5s;animation:button-text .5s}@-webkit-keyframes button-text{0%{-webkit-transform:translateY(100%);opacity:0}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes button-text{0%{-moz-transform:translateY(100%);opacity:0}100%{opacity:1;-moz-transform:translateY(0)}}@keyframes button-text{0%{transform:translateY(100%);opacity:0}100%{opacity:1;transform:translateY(0)}} \ No newline at end of file diff --git a/build/minified/elements/icons.min.css b/build/minified/elements/icons.min.css index d26a04ab3..970087e5d 100644 --- a/build/minified/elements/icons.min.css +++ b/build/minified/elements/icons.min.css @@ -1 +1 @@ -@font-face{font-family:Icons;src:url(../fonts/icons.eot);src:url(../fonts/icons.eot?#iefix) format('embedded-opentype'),url(../fonts/icons.woff) format('woff'),url(../fonts/icons.ttf) format('truetype'),url(../fonts/icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon{display:inline-block;opacity:.75;margin:0 .25em 0 0;width:1.23em;height:1em;font-family:Icons;font-style:normal;line-height:1;font-weight:400;text-decoration:inherit;text-align:center;speak:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;font-smoothing:antialiased}i.icon.circle.attention:before{content:'\2757'}i.icon.circle.help:before{content:'\e704'}i.icon.circle.info:before{content:'\e705'}i.icon.add:before{content:'\2795'}i.icon.chart:before{content:'📈'}i.icon.chart.bar:before{content:'📊'}i.icon.chart.pie:before{content:'\e7a2'}i.icon.resize.full:before{content:'\e744'}i.icon.resize.horizontal:before{content:'\2b0d'}i.icon.resize.small:before{content:'\e746'}i.icon.resize.vertical:before{content:'\2b0c'}i.icon.down:before{content:'\2193'}i.icon.down.triangle:before{content:'\25be'}i.icon.down.arrow:before{content:'\e75c'}i.icon.left:before{content:'\2190'}i.icon.left.triangle:before{content:'\25c2'}i.icon.left.arrow:before{content:'\e75d'}i.icon.right:before{content:'\2192'}i.icon.right.triangle:before{content:'\25b8'}i.icon.right.arrow:before{content:'\e75e'}i.icon.up:before{content:'\2191'}i.icon.up.triangle:before{content:'\25b4'}i.icon.up.arrow:before{content:'\e75f'}i.icon.folder:before{content:'\e810'}i.icon.open.folder:before{content:'📂'}i.icon.globe:before{content:'𝌍'}i.icon.desk.globe:before{content:'🌐'}i.icon.star:before{content:'\e801'}i.icon.star.empty:before{content:'\e800'}i.icon.star.half:before{content:'\e701'}i.icon.lock:before{content:'🔒'}i.icon.unlock:before{content:'🔓'}i.icon.layout.grid:before{content:'\e80c'}i.icon.layout.block:before{content:'\e708'}i.icon.layout.list:before{content:'\e80b'}i.icon.heart.empty:before{content:'\2661'}i.icon.heart:before{content:'\2665'}i.icon.asterisk:before{content:'\2731'}i.icon.attachment:before{content:'📎'}i.icon.attention:before{content:'\26a0'}i.icon.trophy:before{content:'🏉'}i.icon.barcode:before{content:'\e792'}i.icon.cart:before{content:'\e813'}i.icon.block:before{content:'🚫'}i.icon.book:before{content:'📖'}i.icon.bookmark:before{content:'🔖'}i.icon.calendar:before{content:'📅'}i.icon.cancel:before{content:'\2716'}i.icon.close:before{content:'\e80d'}i.icon.color:before{content:'\e794'}i.icon.chat:before{content:'\e720'}i.icon.check:before{content:'\2611'}i.icon.time:before{content:'🕔'}i.icon.cloud:before{content:'\2601'}i.icon.code:before{content:'\e714'}i.icon.email:before{content:'\40'}i.icon.settings:before{content:'\26ef'}i.icon.setting:before{content:'\2699'}i.icon.comment:before{content:'\e802'}i.icon.clockwise.counter:before{content:'\27f2'}i.icon.clockwise:before{content:'\27f3'}i.icon.cube:before{content:'\e807'}i.icon.direction:before{content:'\27a2'}i.icon.doc:before{content:'📄'}i.icon.docs:before{content:'\e736'}i.icon.dollar:before{content:'💵'}i.icon.paint:before{content:'\e7b5'}i.icon.edit:before{content:'\270d'}i.icon.eject:before{content:'\2ecf'}i.icon.export:before{content:'\e715'}i.icon.hide:before{content:'\e80f'}i.icon.unhide:before{content:'\e70b'}i.icon.facebook:before{content:'\f301'}i.icon.fast-forward:before{content:'\e804'}i.icon.fire:before{content:'🔥'}i.icon.flag:before{content:'\2691'}i.icon.lightning:before{content:'\26a1'}i.icon.lab:before{content:'\68'}i.icon.flight:before{content:'\2708'}i.icon.forward:before{content:'\27a6'}i.icon.gift:before{content:'🎁'}i.icon.github:before{content:'\f308'}i.icon.globe:before{content:'\e817'}i.icon.headphones:before{content:'🎧'}i.icon.question:before{content:'\2753'}i.icon.home:before{content:'\2302'}i.icon.i:before{content:'\2139'}i.icon.idea:before{content:'💡'}i.icon.open:before{content:'🔗'}i.icon.content:before{content:'\e782'}i.icon.location:before{content:'\e724'}i.icon.mail:before{content:'\2709'}i.icon.mic:before{content:'🎤'}i.icon.minus:before{content:'\2d'}i.icon.money:before{content:'💰'}i.icon.off:before{content:'\e78e'}i.icon.pause:before{content:'\e808'}i.icon.photos:before{content:'\e812'}i.icon.photo:before{content:'🌄'}i.icon.pin:before{content:'📌'}i.icon.play:before{content:'\e809'}i.icon.plus:before{content:'\2b'}i.icon.print:before{content:'\e716'}i.icon.rss:before{content:'\e73a'}i.icon.search:before{content:'🔍'}i.icon.shuffle:before{content:'\e803'}i.icon.tag:before{content:'\e80a'}i.icon.tags:before{content:'\e70d'}i.icon.terminal:before{content:'\e7ac'}i.icon.thumbs.down:before{content:'👎'}i.icon.thumbs.up:before{content:'👍'}i.icon.to-end:before{content:'\e806'}i.icon.to-start:before{content:'\e805'}i.icon.top.list:before{content:'🏆'}i.icon.trash:before{content:'\e729'}i.icon.twitter:before{content:'\f303'}i.icon.upload:before{content:'\e711'}i.icon.user.add:before{content:'\e700'}i.icon.user:before{content:'👤'}i.icon.community:before{content:'\e814'}i.icon.users:before{content:'👥'}i.icon.id:before{content:'\e722'}i.icon.url:before{content:'🔗'}i.icon.zoom.in:before{content:'\e750'}i.icon.zoom.out:before{content:'\e751'}i.dropdown.icon{margin:0 0 0 .5em}i.icon.star{width:auto;margin:0;vertical-align:middle}i.icon.left,i.icon.left,i.icon.left{width:auto;margin:0 .5em 0 0}i.icon.search,i.icon.up,i.icon.down,i.icon.right{width:auto;margin:0 0 0 .5em}i.icon.delete:before{content:'\e80d'}i.icon.dropdown:before{content:'\25be'}i.icon.help:before{content:'\e704'}i.icon.info:before{content:'\e705'}i.icon.error:before{content:'\e80d'}i.icon.dislike:before{content:'\2661'}i.icon.like:before{content:'\2665'}i.icon.eye:before{content:'\e80f'}i.icon.eye.hidden:before{content:'\e70b'}i.icon.date:before{content:'📅'}i.icon.hover{opacity:1}i.icon.active{opacity:1}i.emphasized.icon{opacity:1}i.icon.disabled{opacity:.3}i.link.icon{cursor:pointer;opacity:.7;-webkit-transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;-ms-transition:opacity .3s ease-out;transition:opacity .3s ease-out}.link.icon:hover{opacity:1}i.circular.icon{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;padding:.5em .35em!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;-moz-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;width:2em;height:2em}i.circular.icon:before{vertical-align:middle}i.circular.inverted.icon{border:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}i.square.icon{width:2em;height:2em;padding:.5em .35em!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;-moz-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;vertical-align:baseline}i.square.icon:before{vertical-align:middle}i.square.inverted.icon{border:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}i.inverted.icon{background-color:#222;color:#FFF}i.blue.icon{color:#6ECFF5!important}i.black.icon{color:#5C6166!important}i.green.icon{color:#A1CF64!important}i.red.icon{color:#EF4D6D!important}i.purple.icon{color:#564F8A!important}i.teal.icon{color:#00B5AD!important}i.inverted.black.icon{background-color:#5C6166!important;color:#FFF!important}i.inverted.blue.icon{background-color:#6ECFF5!important;color:#FFF!important}i.inverted.green.icon{background-color:#A1CF64!important;color:#FFF!important}i.inverted.red.icon{background-color:#EF4D6D!important;color:#FFF!important}i.inverted.purple.icon{background-color:#564F8A!important;color:#FFF!important}i.inverted.teal.icon{background-color:#00B5AD!important;color:#FFF!important}i.small.icon{font-size:.875em}i.icon{font-size:1em}i.large.icon{font-size:3em;margin-right:.5em;vertical-align:middle}i.huge.icon{font-size:6em;margin-right:.75em;vertical-align:middle}i.massive.icon{font-size:12em;margin-right:1em;vertical-align:middle}i.sketchy.circular.icon,i.sketchy.square.icon{padding:.35em!important} \ No newline at end of file +@font-face{font-family:Icons;src:url(../fonts/icons.eot);src:url(../fonts/icons.eot?#iefix) format('embedded-opentype'),url(../fonts/icons.woff) format('woff'),url(../fonts/icons.ttf) format('truetype'),url(../fonts/icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon{display:inline-block;opacity:.75;margin:0 .25em 0 0;width:1.23em;height:1em;font-family:Icons;font-style:normal;line-height:1;font-weight:400;text-decoration:inherit;text-align:center;speak:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;font-smoothing:antialiased}i.icon.circle.attention:before{content:'\2757'}i.icon.circle.help:before{content:'\e704'}i.icon.circle.info:before{content:'\e705'}i.icon.add:before{content:'\2795'}i.icon.chart:before{content:'📈'}i.icon.chart.bar:before{content:'📊'}i.icon.chart.pie:before{content:'\e7a2'}i.icon.resize.full:before{content:'\e744'}i.icon.resize.horizontal:before{content:'\2b0d'}i.icon.resize.small:before{content:'\e746'}i.icon.resize.vertical:before{content:'\2b0c'}i.icon.down:before{content:'\2193'}i.icon.down.triangle:before{content:'\25be'}i.icon.down.arrow:before{content:'\e75c'}i.icon.left:before{content:'\2190'}i.icon.left.triangle:before{content:'\25c2'}i.icon.left.arrow:before{content:'\e75d'}i.icon.right:before{content:'\2192'}i.icon.right.triangle:before{content:'\25b8'}i.icon.right.arrow:before{content:'\e75e'}i.icon.up:before{content:'\2191'}i.icon.up.triangle:before{content:'\25b4'}i.icon.up.arrow:before{content:'\e75f'}i.icon.folder:before{content:'\e810'}i.icon.open.folder:before{content:'📂'}i.icon.globe:before{content:'𝌍'}i.icon.desk.globe:before{content:'🌐'}i.icon.star:before{content:'\e801'}i.icon.star.empty:before{content:'\e800'}i.icon.star.half:before{content:'\e701'}i.icon.lock:before{content:'🔒'}i.icon.unlock:before{content:'🔓'}i.icon.layout.grid:before{content:'\e80c'}i.icon.layout.block:before{content:'\e708'}i.icon.layout.list:before{content:'\e80b'}i.icon.heart.empty:before{content:'\2661'}i.icon.heart:before{content:'\2665'}i.icon.asterisk:before{content:'\2731'}i.icon.attachment:before{content:'📎'}i.icon.attention:before{content:'\26a0'}i.icon.trophy:before{content:'🏉'}i.icon.barcode:before{content:'\e792'}i.icon.cart:before{content:'\e813'}i.icon.block:before{content:'🚫'}i.icon.book:before{content:'📖'}i.icon.bookmark:before{content:'🔖'}i.icon.calendar:before{content:'📅'}i.icon.cancel:before{content:'\2716'}i.icon.close:before{content:'\e80d'}i.icon.color:before{content:'\e794'}i.icon.chat:before{content:'\e720'}i.icon.check:before{content:'\2611'}i.icon.time:before{content:'🕔'}i.icon.cloud:before{content:'\2601'}i.icon.code:before{content:'\e714'}i.icon.email:before{content:'\40'}i.icon.settings:before{content:'\26ef'}i.icon.setting:before{content:'\2699'}i.icon.comment:before{content:'\e802'}i.icon.clockwise.counter:before{content:'\27f2'}i.icon.clockwise:before{content:'\27f3'}i.icon.cube:before{content:'\e807'}i.icon.direction:before{content:'\27a2'}i.icon.doc:before{content:'📄'}i.icon.docs:before{content:'\e736'}i.icon.dollar:before{content:'💵'}i.icon.paint:before{content:'\e7b5'}i.icon.edit:before{content:'\270d'}i.icon.eject:before{content:'\2ecf'}i.icon.export:before{content:'\e715'}i.icon.hide:before{content:'\e80f'}i.icon.unhide:before{content:'\e70b'}i.icon.facebook:before{content:'\f301'}i.icon.fast-forward:before{content:'\e804'}i.icon.fire:before{content:'🔥'}i.icon.flag:before{content:'\2691'}i.icon.lightning:before{content:'\26a1'}i.icon.lab:before{content:'\68'}i.icon.flight:before{content:'\2708'}i.icon.forward:before{content:'\27a6'}i.icon.gift:before{content:'🎁'}i.icon.github:before{content:'\f308'}i.icon.globe:before{content:'\e817'}i.icon.headphones:before{content:'🎧'}i.icon.question:before{content:'\2753'}i.icon.home:before{content:'\2302'}i.icon.i:before{content:'\2139'}i.icon.idea:before{content:'💡'}i.icon.open:before{content:'🔗'}i.icon.content:before{content:'\e782'}i.icon.location:before{content:'\e724'}i.icon.mail:before{content:'\2709'}i.icon.mic:before{content:'🎤'}i.icon.minus:before{content:'\2d'}i.icon.money:before{content:'💰'}i.icon.off:before{content:'\e78e'}i.icon.pause:before{content:'\e808'}i.icon.photos:before{content:'\e812'}i.icon.photo:before{content:'🌄'}i.icon.pin:before{content:'📌'}i.icon.play:before{content:'\e809'}i.icon.plus:before{content:'\2b'}i.icon.print:before{content:'\e716'}i.icon.rss:before{content:'\e73a'}i.icon.search:before{content:'🔍'}i.icon.shuffle:before{content:'\e803'}i.icon.tag:before{content:'\e80a'}i.icon.tags:before{content:'\e70d'}i.icon.terminal:before{content:'\e7ac'}i.icon.thumbs.down:before{content:'👎'}i.icon.thumbs.up:before{content:'👍'}i.icon.to-end:before{content:'\e806'}i.icon.to-start:before{content:'\e805'}i.icon.top.list:before{content:'🏆'}i.icon.trash:before{content:'\e729'}i.icon.twitter:before{content:'\f303'}i.icon.upload:before{content:'\e711'}i.icon.user.add:before{content:'\e700'}i.icon.user:before{content:'👤'}i.icon.community:before{content:'\e814'}i.icon.users:before{content:'👥'}i.icon.id:before{content:'\e722'}i.icon.url:before{content:'🔗'}i.icon.zoom.in:before{content:'\e750'}i.icon.zoom.out:before{content:'\e751'}i.dropdown.icon{margin:0 0 0 .5em}i.icon.star{width:auto;margin:0;vertical-align:middle}i.icon.left,i.icon.left,i.icon.left{width:auto;margin:0 .5em 0 0}i.icon.search,i.icon.up,i.icon.down,i.icon.right{width:auto;margin:0 0 0 .5em}i.icon.delete:before{content:'\e80d'}i.icon.dropdown:before{content:'\25be'}i.icon.help:before{content:'\e704'}i.icon.info:before{content:'\e705'}i.icon.error:before{content:'\e80d'}i.icon.dislike:before{content:'\2661'}i.icon.like:before{content:'\2665'}i.icon.eye:before{content:'\e80f'}i.icon.eye.hidden:before{content:'\e70b'}i.icon.date:before{content:'📅'}i.icon.hover{opacity:1}i.icon.active{opacity:1}i.emphasized.icon{opacity:1}i.icon.disabled{opacity:.3}i.link.icon{cursor:pointer;opacity:.7;-webkit-transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;-ms-transition:opacity .3s ease-out;transition:opacity .3s ease-out}.link.icon:hover{opacity:1!important}i.circular.icon{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;padding:.5em .35em!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;-moz-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;width:2em;height:2em}i.circular.icon:before{vertical-align:middle}i.circular.inverted.icon{border:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}i.square.icon{width:2em;height:2em;padding:.5em .35em!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;-moz-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;vertical-align:baseline}i.square.icon:before{vertical-align:middle}i.square.inverted.icon{border:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}i.inverted.icon{background-color:#222;color:#FFF}i.blue.icon{color:#6ECFF5!important}i.black.icon{color:#5C6166!important}i.green.icon{color:#A1CF64!important}i.red.icon{color:#EF4D6D!important}i.purple.icon{color:#564F8A!important}i.teal.icon{color:#00B5AD!important}i.inverted.black.icon{background-color:#5C6166!important;color:#FFF!important}i.inverted.blue.icon{background-color:#6ECFF5!important;color:#FFF!important}i.inverted.green.icon{background-color:#A1CF64!important;color:#FFF!important}i.inverted.red.icon{background-color:#EF4D6D!important;color:#FFF!important}i.inverted.purple.icon{background-color:#564F8A!important;color:#FFF!important}i.inverted.teal.icon{background-color:#00B5AD!important;color:#FFF!important}i.small.icon{font-size:.875em}i.icon{font-size:1em}i.large.icon{font-size:3em;margin-right:.5em;vertical-align:middle}i.huge.icon{font-size:6em;margin-right:.75em;vertical-align:middle}i.massive.icon{font-size:12em;margin-right:1em;vertical-align:middle}i.sketchy.circular.icon,i.sketchy.square.icon{padding:.35em!important} \ No newline at end of file diff --git a/build/minified/modules/accordion.js b/build/minified/modules/accordion.js index 3875be2af..02edd2a6c 100644 --- a/build/minified/modules/accordion.js +++ b/build/minified/modules/accordion.js @@ -329,7 +329,7 @@ $.fn.accordion.settings = { debug : true, verbose : true, - performance : false, + performance : true, exclusive : true, collapsible : true, diff --git a/build/minified/modules/accordion.min.js b/build/minified/modules/accordion.min.js index f95609ee3..ed70d0828 100644 --- a/build/minified/modules/accordion.min.js +++ b/build/minified/modules/accordion.min.js @@ -1 +1 @@ -!function(a,b,c,d){a.fn.accordion=function(b){var c,e=a(this),f=a.isPlainObject(b)?a.extend(!0,{},a.fn.accordion.settings,b):a.fn.accordion.settings,g=("."+f.namespace,"module-"+f.namespace,e.selector||""),h=(new Date).getTime(),i=[],j=arguments[0],k="string"==typeof j,l=[].slice.call(arguments,1);return e.each(function(){var b,e=a(this),m=e.find(f.selector.title),n=(e.find(f.selector.icon),e.find(f.selector.content)),o=(e.selector||"",this),p=e.data("module-"+f.namespace),q=f.className,r=(f.metadata,f.namespace),s=(f.animation,f.errors);b={initialize:function(){b.debug("Initializing accordion with bound events",e),m.on("click",b.event.click),e.data("module",b)},destroy:function(){b.debug("Destroying previous accordion for",e),e.off(r)},event:{click:function(){var c=a(this),d=m.index(c),e=c.hasClass(q.active);b.verbose("Accordion title clicked",c),e?f.collapsible?b.close(d):b.debug("Cannot close accordion content collapsing is disabled"):b.open(d)}},open:function(c){var d=m.eq(c),e=d.next(n),g=m.filter("."+q.active),h=g.next(m),i=g.size()>0;e.is(":animated")||(b.debug("Opening accordion content",d),f.exclusive&&i&&(g.removeClass(q.active),h.stop().children().animate({opacity:0},f.speed).end().slideUp(f.speed,f.easing,function(){h.removeClass(q.active).removeAttr("style").children().removeAttr("style")})),d.addClass(q.active),e.stop().children().removeAttr("style").end().slideDown(f.speed,f.easing,function(){e.addClass(q.active).removeAttr("style"),a.proxy(f.onOpen,e)(),a.proxy(f.onChange,e)()}))},close:function(c){var d=m.eq(c),e=d.next(n);b.debug("Closing accordion content",d),d.removeClass(q.active),e.removeClass(q.active).show().stop().children().animate({opacity:0},f.speed).end().slideUp(f.speed,f.easing,function(){e.removeAttr("style"),a.proxy(f.onClose,e)(),a.proxy(f.onChange,e)()})},setting:function(c,e){return b.debug("Changing setting",c,e),e===d?f[c]:(a.isPlainObject(c)?a.extend(!0,f,c):f[c]=e,void 0)},internal:function(c,e){return b.debug("Changing internal",c,e),e===d?b[c]:(a.isPlainObject(c)?a.extend(!0,b,c):b[c]=e,void 0)},debug:function(){f.debug&&(f.performance?b.performance.log(arguments):b.debug=Function.prototype.bind.call(console.info,console,f.moduleName+":"))},verbose:function(){f.verbose&&f.debug&&(f.performance?b.performance.log(arguments):b.verbose=Function.prototype.bind.call(console.info,console,f.moduleName+":"))},error:function(){b.error=Function.prototype.bind.call(console.log,console,f.moduleName+":")},performance:{log:function(a){var c,d,e;f.performance&&(c=(new Date).getTime(),e=h||c,d=c-e,h=c,i.push({Element:o,Name:a[0],Arguments:a[1]||"","Execution Time":d})),clearTimeout(b.performance.timer),b.performance.timer=setTimeout(b.performance.display,100)},display:function(){var b=f.moduleName+":",c=0;h=!1,a.each(i,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",g&&(b+=" '"+g+"'"),(console.group!==d||console.table!==d)&&i.length>0&&(console.groupCollapsed(b),console.table?console.table(i):a.each(i,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),i=[]}},invoke:function(c,e,f){var g,h;return e=e||l,f=o||f,"string"==typeof c&&p!==d&&(c=c.split("."),g=c.length-1,a.each(c,function(c,e){return a.isPlainObject(p[e])&&c!=g?(p=p[e],!0):p[e]!==d?(h=p[e],!0):(b.error(s.method),!1)})),a.isFunction(h)?(p.verbose("Executing invoked function",h),h.apply(f,e)):h||!1}},k?(p===d&&b.initialize(),c=b.invoke(j)):(p!==d&&b.destroy(),b.initialize())}),c?c:this},a.fn.accordion.settings={moduleName:"Accordion",debug:!0,verbose:!0,performance:!1,exclusive:!0,collapsible:!0,onOpen:function(){},onClose:function(){},onChange:function(){},errors:{method:"The method you called is not defined"},className:{active:"active",hover:"hover"},selector:{title:".title",icon:".icon",content:".content"},speed:500,easing:"easeInOutQuint"}}(jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){a.fn.accordion=function(b){var c,e=a(this),f=a.isPlainObject(b)?a.extend(!0,{},a.fn.accordion.settings,b):a.fn.accordion.settings,g=("."+f.namespace,"module-"+f.namespace,e.selector||""),h=(new Date).getTime(),i=[],j=arguments[0],k="string"==typeof j,l=[].slice.call(arguments,1);return e.each(function(){var b,e=a(this),m=e.find(f.selector.title),n=(e.find(f.selector.icon),e.find(f.selector.content)),o=(e.selector||"",this),p=e.data("module-"+f.namespace),q=f.className,r=(f.metadata,f.namespace),s=(f.animation,f.errors);b={initialize:function(){b.debug("Initializing accordion with bound events",e),m.on("click",b.event.click),e.data("module",b)},destroy:function(){b.debug("Destroying previous accordion for",e),e.off(r)},event:{click:function(){var c=a(this),d=m.index(c),e=c.hasClass(q.active);b.verbose("Accordion title clicked",c),e?f.collapsible?b.close(d):b.debug("Cannot close accordion content collapsing is disabled"):b.open(d)}},open:function(c){var d=m.eq(c),e=d.next(n),g=m.filter("."+q.active),h=g.next(m),i=g.size()>0;e.is(":animated")||(b.debug("Opening accordion content",d),f.exclusive&&i&&(g.removeClass(q.active),h.stop().children().animate({opacity:0},f.speed).end().slideUp(f.speed,f.easing,function(){h.removeClass(q.active).removeAttr("style").children().removeAttr("style")})),d.addClass(q.active),e.stop().children().removeAttr("style").end().slideDown(f.speed,f.easing,function(){e.addClass(q.active).removeAttr("style"),a.proxy(f.onOpen,e)(),a.proxy(f.onChange,e)()}))},close:function(c){var d=m.eq(c),e=d.next(n);b.debug("Closing accordion content",d),d.removeClass(q.active),e.removeClass(q.active).show().stop().children().animate({opacity:0},f.speed).end().slideUp(f.speed,f.easing,function(){e.removeAttr("style"),a.proxy(f.onClose,e)(),a.proxy(f.onChange,e)()})},setting:function(c,e){return b.debug("Changing setting",c,e),e===d?f[c]:(a.isPlainObject(c)?a.extend(!0,f,c):f[c]=e,void 0)},internal:function(c,e){return b.debug("Changing internal",c,e),e===d?b[c]:(a.isPlainObject(c)?a.extend(!0,b,c):b[c]=e,void 0)},debug:function(){f.debug&&(f.performance?b.performance.log(arguments):b.debug=Function.prototype.bind.call(console.info,console,f.moduleName+":"))},verbose:function(){f.verbose&&f.debug&&(f.performance?b.performance.log(arguments):b.verbose=Function.prototype.bind.call(console.info,console,f.moduleName+":"))},error:function(){b.error=Function.prototype.bind.call(console.log,console,f.moduleName+":")},performance:{log:function(a){var c,d,e;f.performance&&(c=(new Date).getTime(),e=h||c,d=c-e,h=c,i.push({Element:o,Name:a[0],Arguments:a[1]||"","Execution Time":d})),clearTimeout(b.performance.timer),b.performance.timer=setTimeout(b.performance.display,100)},display:function(){var b=f.moduleName+":",c=0;h=!1,a.each(i,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",g&&(b+=" '"+g+"'"),(console.group!==d||console.table!==d)&&i.length>0&&(console.groupCollapsed(b),console.table?console.table(i):a.each(i,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),i=[]}},invoke:function(c,e,f){var g,h;return e=e||l,f=o||f,"string"==typeof c&&p!==d&&(c=c.split("."),g=c.length-1,a.each(c,function(c,e){return a.isPlainObject(p[e])&&c!=g?(p=p[e],!0):p[e]!==d?(h=p[e],!0):(b.error(s.method),!1)})),a.isFunction(h)?(p.verbose("Executing invoked function",h),h.apply(f,e)):h||!1}},k?(p===d&&b.initialize(),c=b.invoke(j)):(p!==d&&b.destroy(),b.initialize())}),c?c:this},a.fn.accordion.settings={moduleName:"Accordion",debug:!0,verbose:!0,performance:!0,exclusive:!0,collapsible:!0,onOpen:function(){},onClose:function(){},onChange:function(){},errors:{method:"The method you called is not defined"},className:{active:"active",hover:"hover"},selector:{title:".title",icon:".icon",content:".content"},speed:500,easing:"easeInOutQuint"}}(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/shape.js b/build/minified/modules/shape.js index b6e110f88..9052cc2f1 100644 --- a/build/minified/modules/shape.js +++ b/build/minified/modules/shape.js @@ -40,7 +40,6 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - transitionEnd = 'msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -112,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(transitionEnd + eventNamespace, callback) + .one(module.get.transitionEvent(), callback) ; } else { @@ -138,9 +137,11 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(transitionEnd, function() { + .one(module.get.transitionEvent(), function() { module.debug('Executing queued animation'); - $module.shape(method); + setTimeout(function(){ + $module.shape(method); + }, 0); }) ; }, @@ -175,6 +176,24 @@ $.fn.shape = function(parameters) { get: { + transitionEvent: function() { + var + element = document.createElement('element'), + transitions = { + 'transition' :'transitionend', + 'OTransition' :'oTransitionEnd', + 'MozTransition' :'transitionend', + 'WebkitTransition' :'webkitTransitionEnd' + }, + transition + ; + for(transition in transitions){ + if( element.style[transition] !== undefined ){ + return transitions[transition]; + } + } + }, + nextSide: function() { return ( $activeSide.next(settings.selector.side).size() > 0 ) ? $activeSide.next(settings.selector.side) @@ -501,14 +520,25 @@ $.fn.shape = function(parameters) { return settings[name]; } }, + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, internal: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { - module.verbose('Modifying internal property', name, value); $.extend(true, module, name); } else { - module.verbose('Changing internal method to', value); module[name] = value; } } @@ -537,7 +567,7 @@ $.fn.shape = function(parameters) { } }, error: function() { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); + module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -551,44 +581,42 @@ $.fn.shape = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { diff --git a/build/minified/modules/shape.min.js b/build/minified/modules/shape.min.js index d974442c5..2fb51a2f2 100644 --- a/build/minified/modules/shape.min.js +++ b/build/minified/modules/shape.min.js @@ -1 +1 @@ -!function(a,b,c,d){a.fn.shape=function(b){var e,f=a(this),g=a.extend(!0,{},a.fn.shape.settings,b),h="."+g.namespace,i="module-"+g.namespace,j=f.selector||"",k=(new Date).getTime(),l=[],m=arguments[0],n="string"==typeof m,o=[].slice.call(arguments,1);return f.each(function(){var b,p,q,r=a(this),s=r.find(g.selector.sides),t=r.find(g.selector.side),u="msTransitionEnd oTransitionEnd webkitTransitionEnd",v=this,w=r.data(i),x=(g.namespace,g.error),y=g.className;q={initialize:function(){q.verbose("Initializing module for",v),q.set.defaultSide(),w=q,r.data(i,w)},destroy:function(){q.verbose("Destroying previous module for",v),r.removeData(i).off(h)},refresh:function(){q.verbose("Refreshing selector cache for",v),r=a(v),s=a(this).find(g.selector.shape),t=a(this).find(g.selector.side)},repaint:function(){q.verbose("Forcing repaint event");var a=s.get(0)||c.createElement("div");a.offsetWidth},animate:function(c,d){q.verbose("Animating box with properties",c),d=d||function(b){q.verbose("Executing animation callback",b),b.stopPropagation(),q.reset(),q.set.active(),a.proxy(g.onChange,p)()},g.useCSS?(q.verbose("Starting CSS animation"),r.addClass(y.animating),q.set.stageSize(),q.repaint(),r.addClass(y.css),b.addClass(y.hidden),s.css(c).one(u+h,d)):(q.verbose("Starting javascript animation"),r.addClass(y.animating).removeClass(y.css),q.set.stageSize(),q.repaint(),b.animate({opacity:0},g.duration,g.easing),s.animate(c,g.duration,g.easing,d))},queue:function(a){q.debug("Queueing animation of",a),s.one(u,function(){q.debug("Executing queued animation"),r.shape(a)})},reset:function(){q.verbose("Animating states reset"),r.removeClass(y.css).removeClass(y.animating).removeAttr("style"),s.removeAttr("style"),t.removeAttr("style").removeClass(y.hidden),p.removeClass(y.animating).removeAttr("style")},is:{animating:function(){return r.hasClass(y.animating)}},get:{nextSide:function(){return b.next(g.selector.side).size()>0?b.next(g.selector.side):r.find(g.selector.side).first()}},set:{defaultSide:function(){b=r.find("."+g.className.active),p=b.next(g.selector.side).size()>0?b.next(g.selector.side):r.find(g.selector.side).first(),q.verbose("Active side set to",b),q.verbose("Next side set to",p)},stageSize:function(){var a={width:p.outerWidth(),height:p.outerHeight()};q.verbose("Resizing stage to fit new content",a),r.css({width:a.width,height:a.height})},nextSide:function(a){p=r.find(a),0===p.size()&&q.error(x.side),q.verbose("Next side manually set to",p)},active:function(){q.verbose("Setting new side to active",p),t.removeClass(y.active),p.addClass(y.active),q.set.defaultSide()}},flip:{up:function(){q.debug("Flipping up",p),q.is.animating()?q.queue("flip.up"):(q.stage.above(),q.animate(q.getTransform.up()))},down:function(){q.debug("Flipping down",p),q.is.animating()?q.queue("flip.down"):(q.stage.below(),q.animate(q.getTransform.down()))},left:function(){q.debug("Flipping left",p),q.is.animating()?q.queue("flip.left"):(q.stage.left(),q.animate(q.getTransform.left()))},right:function(){q.debug("Flipping right",p),q.is.animating()?q.queue("flip.right"):(q.stage.right(),q.animate(q.getTransform.right()))},over:function(){q.debug("Flipping over",p),q.is.animating()?q.queue("flip.over"):(q.stage.behind(),q.animate(q.getTransform.behind()))}},getTransform:{up:function(){var a={y:-((b.outerHeight()-p.outerHeight())/2),z:-(b.outerHeight()/2)};return{transform:"translateY("+a.y+"px) translateZ("+a.z+"px) rotateX(-90deg)"}},down:function(){var a={y:-((b.outerHeight()-p.outerHeight())/2),z:-(b.outerHeight()/2)};return{transform:"translateY("+a.y+"px) translateZ("+a.z+"px) rotateX(90deg)"}},left:function(){var a={x:-((b.outerWidth()-p.outerWidth())/2),z:-(b.outerWidth()/2)};return{transform:"translateX("+a.x+"px) translateZ("+a.z+"px) rotateY(90deg)"}},right:function(){var a={x:-((b.outerWidth()-p.outerWidth())/2),z:-(b.outerWidth()/2)};return{transform:"translateX("+a.x+"px) translateZ("+a.z+"px) rotateY(-90deg)"}},behind:function(){var a={x:-((b.outerWidth()-p.outerWidth())/2)};return{transform:"translateX("+a.x+"px) rotateY(180deg)"}}},stage:{above:function(){var a={origin:(b.outerHeight()-p.outerHeight())/2,depth:{active:p.outerHeight()/2,next:b.outerHeight()/2}};q.verbose("Setting the initial animation position as above",p,a),b.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),p.addClass(y.animating).css({display:"block",top:a.origin+"px",transform:"rotateX(90deg) translateZ("+a.depth.next+"px)"})},below:function(){var a={origin:(b.outerHeight()-p.outerHeight())/2,depth:{active:p.outerHeight()/2,next:b.outerHeight()/2}};q.verbose("Setting the initial animation position as below",p,a),b.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),p.addClass(y.animating).css({display:"block",top:a.origin+"px",transform:"rotateX(-90deg) translateZ("+a.depth.next+"px)"})},left:function(){var a={origin:(b.outerWidth()-p.outerWidth())/2,depth:{active:p.outerWidth()/2,next:b.outerWidth()/2}};q.verbose("Setting the initial animation position as left",p,a),b.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),p.addClass(y.animating).css({display:"block",left:a.origin+"px",transform:"rotateY(-90deg) translateZ("+a.depth.next+"px)"})},right:function(){var a={origin:(b.outerWidth()-p.outerWidth())/2,depth:{active:p.outerWidth()/2,next:b.outerWidth()/2}};q.verbose("Setting the initial animation position as left",p,a),b.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),p.addClass(y.animating).css({display:"block",left:a.origin+"px",transform:"rotateY(90deg) translateZ("+a.depth.next+"px)"})},behind:function(){var a={origin:(b.outerWidth()-p.outerWidth())/2,depth:{active:p.outerWidth()/2,next:b.outerWidth()/2}};q.verbose("Setting the initial animation position as behind",p,a),b.css({transform:"rotateY(0deg)"}),p.addClass(y.animating).css({display:"block",left:a.origin+"px",transform:"rotateY(-180deg)"})}},setting:function(b,c){return c===d?g[b]:(a.isPlainObject(b)?(q.verbose("Modifying settings object",b,c),a.extend(!0,g,b)):(q.verbose("Modifying setting",b,c),g[b]=c),void 0)},internal:function(b,c){return c===d?q[b]:(a.isPlainObject(b)?(q.verbose("Modifying internal property",b,c),a.extend(!0,q,b)):(q.verbose("Changing internal method to",c),q[b]=c),void 0)},debug:function(){g.debug&&(g.performance?q.performance.log(arguments):q.debug=Function.prototype.bind.call(console.info,console,g.moduleName+":"))},verbose:function(){g.verbose&&g.debug&&(g.performance?q.performance.log(arguments):q.verbose=Function.prototype.bind.call(console.info,console,g.moduleName+":"))},error:function(){q.error=Function.prototype.bind.call(console.log,console,g.moduleName+":")},performance:{log:function(a){var b,c,d;g.performance&&(b=(new Date).getTime(),d=k||b,c=b-d,k=b,l.push({Element:v,Name:a[0],Arguments:a[1]||"None","Execution Time":c}),clearTimeout(q.performance.timer),q.performance.timer=setTimeout(q.performance.display,100))},display:function(){var b=g.moduleName,c=(g.moduleName+": "+j+"("+f.size()+" elements)",0);j&&(b+=" Performance ("+j+")"),(console.group!==d||console.table!==d)&&l.length>0&&(console.groupCollapsed(b),console.table?(a.each(l,function(a,b){c+=b["Execution Time"]}),console.table(l)):a.each(l,function(a,b){c+=b["Execution Time"],console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.log("Total Execution Time:",c+"ms"),console.groupEnd(),l=[],k=!1)}},invoke:function(b,c,e){var f,g,h=w;return c=c||o,e=v||e,"string"==typeof b&&h!==d&&(b=b.split("."),f=b.length-1,a.each(b,function(b,c){return a.isPlainObject(h[c])&&b!=f?(h=h[c],!0):h[c]!==d?(g=h[c],!0):(q.error(x.method),!1)})),a.isFunction(g)?(w.verbose("Executing invoked function",g),g.apply(e,c)):g||!1}},n?(w===d&&q.initialize(),e=q.invoke(m)):(w!==d&&q.destroy(),q.initialize())}),e?e:this},a.fn.shape.settings={moduleName:"Shape Module",debug:!1,verbose:!1,performance:!1,namespace:"shape",beforeChange:function(){},onChange:function(){},useCSS:!0,duration:1e3,easing:"easeInOutQuad",error:{side:"You tried to switch to a side that does not exist.",method:"The method you called is not defined"},className:{css:"css",animating:"animating",hidden:"hidden",active:"active"},selector:{sides:".sides",side:".side"}}}(jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){a.fn.shape=function(b){var e,f=a(this),g=a.extend(!0,{},a.fn.shape.settings,b),h="."+g.namespace,i="module-"+g.namespace,j=f.selector||"",k=(new Date).getTime(),l=[],m=arguments[0],n="string"==typeof m,o=[].slice.call(arguments,1);return f.each(function(){var b,f,p,q=a(this),r=q.find(g.selector.sides),s=q.find(g.selector.side),t=this,u=q.data(i),v=(g.namespace,g.error),w=g.className;p={initialize:function(){p.verbose("Initializing module for",t),p.set.defaultSide(),u=p,q.data(i,u)},destroy:function(){p.verbose("Destroying previous module for",t),q.removeData(i).off(h)},refresh:function(){p.verbose("Refreshing selector cache for",t),q=a(t),r=a(this).find(g.selector.shape),s=a(this).find(g.selector.side)},repaint:function(){p.verbose("Forcing repaint event");var a=r.get(0)||c.createElement("div");a.offsetWidth},animate:function(c,d){p.verbose("Animating box with properties",c),d=d||function(b){p.verbose("Executing animation callback",b),b.stopPropagation(),p.reset(),p.set.active(),a.proxy(g.onChange,f)()},g.useCSS?(p.verbose("Starting CSS animation"),q.addClass(w.animating),p.set.stageSize(),p.repaint(),q.addClass(w.css),b.addClass(w.hidden),r.css(c).one(p.get.transitionEvent(),d)):(p.verbose("Starting javascript animation"),q.addClass(w.animating).removeClass(w.css),p.set.stageSize(),p.repaint(),b.animate({opacity:0},g.duration,g.easing),r.animate(c,g.duration,g.easing,d))},queue:function(a){p.debug("Queueing animation of",a),r.one(p.get.transitionEvent(),function(){p.debug("Executing queued animation"),setTimeout(function(){q.shape(a)},0)})},reset:function(){p.verbose("Animating states reset"),q.removeClass(w.css).removeClass(w.animating).removeAttr("style"),r.removeAttr("style"),s.removeAttr("style").removeClass(w.hidden),f.removeClass(w.animating).removeAttr("style")},is:{animating:function(){return q.hasClass(w.animating)}},get:{transitionEvent:function(){var a,b=c.createElement("element"),e={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(a in e)if(b.style[a]!==d)return e[a]},nextSide:function(){return b.next(g.selector.side).size()>0?b.next(g.selector.side):q.find(g.selector.side).first()}},set:{defaultSide:function(){b=q.find("."+g.className.active),f=b.next(g.selector.side).size()>0?b.next(g.selector.side):q.find(g.selector.side).first(),p.verbose("Active side set to",b),p.verbose("Next side set to",f)},stageSize:function(){var a={width:f.outerWidth(),height:f.outerHeight()};p.verbose("Resizing stage to fit new content",a),q.css({width:a.width,height:a.height})},nextSide:function(a){f=q.find(a),0===f.size()&&p.error(v.side),p.verbose("Next side manually set to",f)},active:function(){p.verbose("Setting new side to active",f),s.removeClass(w.active),f.addClass(w.active),p.set.defaultSide()}},flip:{up:function(){p.debug("Flipping up",f),p.is.animating()?p.queue("flip.up"):(p.stage.above(),p.animate(p.getTransform.up()))},down:function(){p.debug("Flipping down",f),p.is.animating()?p.queue("flip.down"):(p.stage.below(),p.animate(p.getTransform.down()))},left:function(){p.debug("Flipping left",f),p.is.animating()?p.queue("flip.left"):(p.stage.left(),p.animate(p.getTransform.left()))},right:function(){p.debug("Flipping right",f),p.is.animating()?p.queue("flip.right"):(p.stage.right(),p.animate(p.getTransform.right()))},over:function(){p.debug("Flipping over",f),p.is.animating()?p.queue("flip.over"):(p.stage.behind(),p.animate(p.getTransform.behind()))}},getTransform:{up:function(){var a={y:-((b.outerHeight()-f.outerHeight())/2),z:-(b.outerHeight()/2)};return{transform:"translateY("+a.y+"px) translateZ("+a.z+"px) rotateX(-90deg)"}},down:function(){var a={y:-((b.outerHeight()-f.outerHeight())/2),z:-(b.outerHeight()/2)};return{transform:"translateY("+a.y+"px) translateZ("+a.z+"px) rotateX(90deg)"}},left:function(){var a={x:-((b.outerWidth()-f.outerWidth())/2),z:-(b.outerWidth()/2)};return{transform:"translateX("+a.x+"px) translateZ("+a.z+"px) rotateY(90deg)"}},right:function(){var a={x:-((b.outerWidth()-f.outerWidth())/2),z:-(b.outerWidth()/2)};return{transform:"translateX("+a.x+"px) translateZ("+a.z+"px) rotateY(-90deg)"}},behind:function(){var a={x:-((b.outerWidth()-f.outerWidth())/2)};return{transform:"translateX("+a.x+"px) rotateY(180deg)"}}},stage:{above:function(){var a={origin:(b.outerHeight()-f.outerHeight())/2,depth:{active:f.outerHeight()/2,next:b.outerHeight()/2}};p.verbose("Setting the initial animation position as above",f,a),b.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),f.addClass(w.animating).css({display:"block",top:a.origin+"px",transform:"rotateX(90deg) translateZ("+a.depth.next+"px)"})},below:function(){var a={origin:(b.outerHeight()-f.outerHeight())/2,depth:{active:f.outerHeight()/2,next:b.outerHeight()/2}};p.verbose("Setting the initial animation position as below",f,a),b.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),f.addClass(w.animating).css({display:"block",top:a.origin+"px",transform:"rotateX(-90deg) translateZ("+a.depth.next+"px)"})},left:function(){var a={origin:(b.outerWidth()-f.outerWidth())/2,depth:{active:f.outerWidth()/2,next:b.outerWidth()/2}};p.verbose("Setting the initial animation position as left",f,a),b.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),f.addClass(w.animating).css({display:"block",left:a.origin+"px",transform:"rotateY(-90deg) translateZ("+a.depth.next+"px)"})},right:function(){var a={origin:(b.outerWidth()-f.outerWidth())/2,depth:{active:f.outerWidth()/2,next:b.outerWidth()/2}};p.verbose("Setting the initial animation position as left",f,a),b.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),f.addClass(w.animating).css({display:"block",left:a.origin+"px",transform:"rotateY(90deg) translateZ("+a.depth.next+"px)"})},behind:function(){var a={origin:(b.outerWidth()-f.outerWidth())/2,depth:{active:f.outerWidth()/2,next:b.outerWidth()/2}};p.verbose("Setting the initial animation position as behind",f,a),b.css({transform:"rotateY(0deg)"}),f.addClass(w.animating).css({display:"block",left:a.origin+"px",transform:"rotateY(-180deg)"})}},setting:function(b,c){return c===d?g[b]:(a.isPlainObject(b)?(p.verbose("Modifying settings object",b,c),a.extend(!0,g,b)):(p.verbose("Modifying setting",b,c),g[b]=c),void 0)},setting:function(b,c){return c===d?g[b]:(a.isPlainObject(b)?a.extend(!0,g,b):g[b]=c,void 0)},internal:function(b,c){return c===d?p[b]:(a.isPlainObject(b)?a.extend(!0,p,b):p[b]=c,void 0)},debug:function(){g.debug&&(g.performance?p.performance.log(arguments):p.debug=Function.prototype.bind.call(console.info,console,g.moduleName+":"))},verbose:function(){g.verbose&&g.debug&&(g.performance?p.performance.log(arguments):p.verbose=Function.prototype.bind.call(console.info,console,g.moduleName+":"))},error:function(){p.error=Function.prototype.bind.call(console.error,console,g.moduleName+":")},performance:{log:function(a){var b,c,d;g.performance&&(b=(new Date).getTime(),d=k||b,c=b-d,k=b,l.push({Element:t,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(p.performance.timer),p.performance.timer=setTimeout(p.performance.display,100)},display:function(){var b=g.moduleName+":",c=0;k=!1,a.each(l,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",j&&(b+=" '"+j+"'"),(console.group!==d||console.table!==d)&&l.length>0&&(console.groupCollapsed(b),console.table?console.table(l):a.each(l,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),l=[]}},invoke:function(b,c,e){var f,g,h=u;return c=c||o,e=t||e,"string"==typeof b&&h!==d&&(b=b.split("."),f=b.length-1,a.each(b,function(b,c){return a.isPlainObject(h[c])&&b!=f?(h=h[c],!0):h[c]!==d?(g=h[c],!0):(p.error(v.method),!1)})),a.isFunction(g)?(u.verbose("Executing invoked function",g),g.apply(e,c)):g||!1}},n?(u===d&&p.initialize(),e=p.invoke(m)):(u!==d&&p.destroy(),p.initialize())}),e?e:this},a.fn.shape.settings={moduleName:"Shape Module",debug:!1,verbose:!1,performance:!1,namespace:"shape",beforeChange:function(){},onChange:function(){},useCSS:!0,duration:1e3,easing:"easeInOutQuad",error:{side:"You tried to switch to a side that does not exist.",method:"The method you called is not defined"},className:{css:"css",animating:"animating",hidden:"hidden",active:"active"},selector:{sides:".sides",side:".side"}}}(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/tab.js b/build/minified/modules/tab.js index 545c581cf..36fb0206f 100644 --- a/build/minified/modules/tab.js +++ b/build/minified/modules/tab.js @@ -16,8 +16,8 @@ $module = $(this), $tabs = $(settings.context).find(settings.selector.tabs), - firstLoad = true, cache = {}, + firstLoad = true, recursionDepth = 0, activeTabPath, @@ -62,6 +62,12 @@ return false; } else { + if(!settings.apiSettings) { + module.debug('No API url found, using current url'); + settings.apiSettings = { + url: settings.path + '/{$tab}' + }; + } module.verbose('Address library found adding state change event'); $.address .state(settings.path) @@ -70,7 +76,7 @@ } } // attach events if navigation wasn't set to window - if( !$.isWindow( $module.get(0) ) ) { + if( !$.isWindow( element ) ) { $module .on('click.' + eventNamespace, module.event.click) ; @@ -133,21 +139,22 @@ }, cache: { - read: function(tabPath) { - return (tabPath !== undefined) - ? cache[tabPath] - : cache + + read: function(cacheKey) { + return (cacheKey !== undefined) + ? cache[cacheKey] + : false ; }, - add: function(tabPath, content) { - tabPath = tabPath || activeTabPath; - module.debug('Adding cached content for', tabPath); - cache[tabPath] = content; + add: function(cacheKey, content) { + cacheKey = cacheKey || activeTabPath; + module.debug('Adding cached content for', cacheKey); + cache[cacheKey] = content; }, - remove: function(tabPath) { - tabPath = tabPath || activeTabPath; - module.debug('Removing cached content for', tabPath); - delete cache[tabPath]; + remove: function(cacheKey) { + cacheKey = cacheKey || activeTabPath; + module.debug('Removing cached content for', cacheKey); + delete cache[cacheKey]; } }, @@ -160,61 +167,75 @@ var currentPathArray = pathArray.slice(0, index + 1), currentPath = module.utils.arrayToPath(currentPathArray), - - isLastTab = (module.utils.last(pathArray) == currentPath), + isTab = module.is.tab(currentPath), - isParam = !(isTab), + isLastIndex = (index + 1 == pathArray.length), pushStateAvailable = (window.history && window.history.pushState), shouldIgnoreLoad = (pushStateAvailable && settings.ignoreFirstLoad && firstLoad), remoteContent = $.isPlainObject(settings.apiSettings), - $tab = module.get.tabElement(currentPath) + $tab = module.get.tabElement(currentPath), + nextPathArray, + nextPath, + isLastTab ; module.verbose('Looking for tab', tab); - if(isParam) { - module.verbose('Tab is not found, assuming it is a parameter', tab); - return true; - } - else if(isTab) { - // scope up + if(isTab) { module.verbose('Tab was found', tab); + + // scope up activeTabPath = currentPath; parameterArray = module.utils.filterArray(pathArray, currentPathArray); + + if(isLastIndex) { + isLastTab = true; + } + else { + nextPathArray = pathArray.slice(0, index + 2); + nextPath = module.utils.arrayToPath(nextPathArray); + isLastTab = ( !module.is.tab(nextPath) ); + module.verbose('Tab parameters found', nextPathArray); + } if(isLastTab && remoteContent) { if(!shouldIgnoreLoad) { module.activate.navigation(currentPath); - module.content.fetch(currentPath, settings.onTabLoad); + module.content.fetch(currentPath, tabPath); } else { module.debug('Ignoring remote content on first tab load', currentPath); firstLoad = false; - cache[tabPath] = $tab.html(); + module.cache.add(tabPath, $tab.html()); module.activate.all(currentPath); $.proxy(settings.onTabInit, $tab)(currentPath, parameterArray, historyEvent); } } else { - module.debug('Opened tab', currentPath); + module.debug('Opened local tab', currentPath); module.activate.all(currentPath); $.proxy(settings.onTabLoad, $tab)(currentPath, parameterArray, historyEvent); } - + return false; + } + else { + module.error(errors.missingTab, tab); + return false; } }); }, content: { - fetch: function(tabPath) { + fetch: function(tabPath, fullTabPath) { var $tab = module.get.tabElement(tabPath), - cachedContent = cache[tabPath] || false, + fullTabPath = fullTabPath || tabPath, + cachedContent = module.cache.read(fullTabPath), apiSettings = { dataType : 'html', stateContext : $tab, success : function(response) { - cache[tabPath] = response; + module.cache.add(fullTabPath, response); module.content.update(tabPath, response); if(tabPath == activeTabPath) { module.debug('Content loaded', tabPath); @@ -225,26 +246,26 @@ } $.proxy(settings.onTabInit, $tab)(tabPath, parameterArray, historyEvent); }, - urlData: { tab: tabPath } + urlData: { tab: fullTabPath } }, request = $tab.data(metadata.promise) || false, existingRequest = ( request && request.state() === 'pending' ) ; if(settings.cache && cachedContent) { - module.debug('Showing existing content', tabPath); - // module.content.update(tabPath, cachedContent); + module.debug('Showing existing content', fullTabPath); + module.content.update(tabPath, cachedContent); module.activate.tab(tabPath); - $.proxy(settings.onTabLoad, $tab)(tabPath, parameterArray, historyEvent); + $.proxy(settings.onTabInit, $tab)(tabPath, parameterArray, historyEvent); } else if(existingRequest) { - module.debug('Content is already loading', tabPath); + module.debug('Content is already loading', fullTabPath); $tab .addClass(className.loading) ; } else if($.api !== undefined) { - module.debug('Retrieving content', tabPath); - $.api( $.extend(true, {}, settings.apiSettings, apiSettings) ); + module.debug('Retrieving remote content', fullTabPath); + $.api( $.extend(true, { headers: { 'X-Remote': true } }, settings.apiSettings, apiSettings) ); } else { module.error(errors.api); @@ -302,7 +323,10 @@ is: { tab: function(tabName) { - return ( module.get.tabElement(tabName).size() > 0 ); + return (tabName !== undefined) + ? ( module.get.tabElement(tabName).size() > 0 ) + : false + ; } }, @@ -310,6 +334,9 @@ initialPath: function() { return $module.eq(0).data(metadata.tab) || $tabs.eq(0).data(metadata.tab); }, + path: function() { + return $.address.value(); + }, // adds default tabs to tab path defaultPathArray: function(tabPath) { return module.utils.pathToArray( module.get.defaultPath(tabPath) ); @@ -449,7 +476,7 @@ performance.push({ 'Element' : element, 'Name' : message[0], - 'Arguments' : message[1] || '', + 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); } @@ -577,7 +604,7 @@ noContent : 'The tab you specified is missing a content url.', method : 'The method you called is not defined', state : 'The state library has not been initialized', - missingTab : 'Missing tab: ', + missingTab : 'Tab cannot be found', path : 'History enabled, but no path was specified', recursion : 'Max recursive depth reached' }, diff --git a/build/minified/modules/tab.min.css b/build/minified/modules/tab.min.css index 8597a60dc..a66f64c7c 100644 --- a/build/minified/modules/tab.min.css +++ b/build/minified/modules/tab.min.css @@ -1 +1 @@ -.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.simple{background-color:transparent;border:0}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px;text-indent:-9999px}.ui.tab.loading:after{position:absolute;top:50px;left:50%;content:'Loading...';margin-left:-32px;text-indent:5px;color:rgba(0,0,0,.4);width:100%;height:100%;padding-top:75px;background:url(../images/loader-large.gif) no-repeat 0 0;visibility:visible} \ No newline at end of file +.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px;text-indent:-10000px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading:after{position:absolute;top:50px;left:50%;content:'Loading...';margin-left:-32px;text-indent:5px;color:rgba(0,0,0,.4);width:100%;height:100%;padding-top:75px;background:url(../images/loader-large.gif) no-repeat 0 0;visibility:visible} \ No newline at end of file diff --git a/build/minified/modules/tab.min.js b/build/minified/modules/tab.min.js index 804407158..a57626097 100644 --- a/build/minified/modules/tab.min.js +++ b/build/minified/modules/tab.min.js @@ -1 +1 @@ -!function(a,b,c,d){a.fn.tabNavigation=function(c){var e,f,g,h,i,j=a.extend(!0,{},a.fn.tabNavigation.settings,c),k=a(this),l=a(j.context).find(j.selector.tabs),m=!0,n={},o=0,p=this,q=(new Date).getTime(),r=[],s=k.selector||"",t="."+j.namespace,u="module-"+j.namespace,v=j.className,w=j.metadata,x=j.namespace,y=j.errors,z=k.data(u),A=arguments[0],B=z!==d&&"string"==typeof A,C=[].slice.call(arguments,1);return h={initialize:function(){if(h.debug("Initializing Tabs",k),j.history){if(a.address===d)return h.error(y.state),!1;if(j.path===!1)return h.error(y.path),!1;h.verbose("Address library found adding state change event"),a.address.state(j.path).change(h.event.history.change)}a.isWindow(k.get(0))||k.on("click."+t,h.event.click),k.data(u,h)},destroy:function(){h.debug("Destroying tabs",k),k.off("."+x)},event:{click:function(){h.debug("Navigation clicked");var b=a(this).data(w.tab);b!==d?b!==e&&(j.history?a.address.value(b):h.change(b)):h.debug("No tab specified")},history:{change:function(b){var c=b.pathNames.join("/")||h.get.initialPath(),e=j.templates.determineTitle(c)||!1;h.debug("History change event",c,b),g=b,c!==d&&h.change(c),e&&a.address.title(e)}}},refresh:function(){e&&(h.debug("Refreshing tab",e),h.change(e))},cache:{read:function(a){return a!==d?n[a]:n},add:function(a,b){a=a||e,h.debug("Adding cached content for",a),n[a]=b},remove:function(a){a=a||e,h.debug("Removing cached content for",a),delete n[a]}},change:function(c){var d=h.get.defaultPathArray(c);h.deactivate.all(),a.each(d,function(i,k){var l=d.slice(0,i+1),o=h.utils.arrayToPath(l),p=h.utils.last(d)==o,q=h.is.tab(o),r=!q,s=b.history&&b.history.pushState,t=s&&j.ignoreFirstLoad&&m,u=a.isPlainObject(j.apiSettings),v=h.get.tabElement(o);return h.verbose("Looking for tab",k),r?(h.verbose("Tab is not found, assuming it is a parameter",k),!0):(q&&(h.verbose("Tab was found",k),e=o,f=h.utils.filterArray(d,l),p&&u?t?(h.debug("Ignoring remote content on first tab load",o),m=!1,n[c]=v.html(),h.activate.all(o),a.proxy(j.onTabInit,v)(o,f,g)):(h.activate.navigation(o),h.content.fetch(o,j.onTabLoad)):(h.debug("Opened tab",o),h.activate.all(o),a.proxy(j.onTabLoad,v)(o,f,g))),void 0)})},content:{fetch:function(b){var c=h.get.tabElement(b),i=n[b]||!1,k={dataType:"html",stateContext:c,success:function(d){n[b]=d,h.content.update(b,d),b==e?(h.debug("Content loaded",b),h.activate.tab(b)):h.debug("Content loaded in background",b),a.proxy(j.onTabInit,c)(b,f,g)},urlData:{tab:b}},l=c.data(w.promise)||!1,m=l&&"pending"===l.state();j.cache&&i?(h.debug("Showing existing content",b),h.activate.tab(b),a.proxy(j.onTabLoad,c)(b,f,g)):m?(h.debug("Content is already loading",b),c.addClass(v.loading)):a.api!==d?(h.debug("Retrieving content",b),a.api(a.extend(!0,{},j.apiSettings,k))):h.error(y.api)},update:function(a,b){h.debug("Updating html for",a);var c=h.get.tabElement(a);c.html(b)}},activate:{all:function(a){h.activate.tab(a),h.activate.navigation(a)},tab:function(a){var b=h.get.tabElement(a);h.verbose("Showing tab content for",b),b.addClass(v.active)},navigation:function(a){var b=h.get.navElement(a);h.verbose("Activating tab navigation for",b),b.addClass(v.active)}},deactivate:{all:function(){h.deactivate.navigation(),h.deactivate.tabs()},navigation:function(){k.removeClass(v.active)},tabs:function(){l.removeClass(v.active+" "+v.loading)}},is:{tab:function(a){return h.get.tabElement(a).size()>0}},get:{initialPath:function(){return k.eq(0).data(w.tab)||l.eq(0).data(w.tab)},defaultPathArray:function(a){return h.utils.pathToArray(h.get.defaultPath(a))},defaultPath:function(a){var b=k.filter("[data-"+w.tab+'^="'+a+'/"]').eq(0),c=b.data(w.tab)||!1;if(c){if(h.debug("Found default tab",c),o0?b:c},tab:function(){return e}},utils:{filterArray:function(b,c){return a.grep(b,function(b){return-1==a.inArray(b,c)})},last:function(b){return a.isArray(b)?b[b.length-1]:!1},pathToArray:function(a){return a===d&&(a=e),"string"==typeof a?a.split("/"):[a]},arrayToPath:function(b){return a.isArray(b)?b.join("/"):!1}},setting:function(b,c){return c===d?j[b]:(a.isPlainObject(b)?a.extend(!0,j,b):j[b]=c,void 0)},internal:function(b,c){return c===d?h[b]:(a.isPlainObject(b)?a.extend(!0,h,b):h[b]=c,void 0)},debug:function(){j.debug&&(j.performance?h.performance.log(arguments):h.debug=Function.prototype.bind.call(console.info,console,j.moduleName+":"))},verbose:function(){j.verbose&&j.debug&&(j.performance?h.performance.log(arguments):h.verbose=Function.prototype.bind.call(console.info,console,j.moduleName+":"))},error:function(){h.error=Function.prototype.bind.call(console.error,console,j.moduleName+":")},performance:{log:function(a){var b,c,d;j.performance&&(b=(new Date).getTime(),d=q||b,c=b-d,q=b,r.push({Element:p,Name:a[0],Arguments:a[1]||"","Execution Time":c})),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,100)},display:function(){var b=j.moduleName+":",c=0;q=!1,a.each(r,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",s&&(b+=" '"+s+"'"),(console.group!==d||console.table!==d)&&r.length>0&&(console.groupCollapsed(b),console.table?console.table(r):a.each(r,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),r=[]}},invoke:function(b,c,e){var f,g;return c=c||C,e=p||e,"string"==typeof b&&z!==d&&(b=b.split("."),f=b.length-1,a.each(b,function(b,c){a.isPlainObject(z[c])&&b!=f?z=z[c]:z[c]!==d?g=z[c]:h.error(y.method)})),a.isFunction(g)?(h.verbose("Executing invoked function",g),g.apply(e,c)):g||!1}},B?(z===d&&h.initialize(),i=h.invoke(A)):(z!==d&&h.destroy(),h.initialize()),i!==d?i:this},a.tabNavigation=function(c){a(b).tabNavigation(c)},a.fn.tabNavigation.settings={moduleName:"Tab Module",verbose:!0,debug:!0,performance:!0,namespace:"tab",onTabInit:function(){},onTabLoad:function(){},templates:{determineTitle:function(){}},history:!1,path:!1,context:"body",maxDepth:25,ignoreFirstLoad:!0,alwaysRefresh:!1,cache:!0,apiSettings:!1,errors:{api:"You attempted to load content without API module",noContent:"The tab you specified is missing a content url.",method:"The method you called is not defined",state:"The state library has not been initialized",missingTab:"Missing tab: ",path:"History enabled, but no path was specified",recursion:"Max recursive depth reached"},metadata:{tab:"tab",loaded:"loaded",promise:"promise"},className:{loading:"loading",active:"active"},selector:{tabs:".tab"}}}(jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){a.fn.tabNavigation=function(c){var e,f,g,h,i,j=a.extend(!0,{},a.fn.tabNavigation.settings,c),k=a(this),l=a(j.context).find(j.selector.tabs),m={},n=!0,o=0,p=this,q=(new Date).getTime(),r=[],s=k.selector||"",t="."+j.namespace,u="module-"+j.namespace,v=j.className,w=j.metadata,x=j.namespace,y=j.errors,z=k.data(u),A=arguments[0],B=z!==d&&"string"==typeof A,C=[].slice.call(arguments,1);return h={initialize:function(){if(h.debug("Initializing Tabs",k),j.history){if(a.address===d)return h.error(y.state),!1;if(j.path===!1)return h.error(y.path),!1;j.apiSettings||(h.debug("No API url found, using current url"),j.apiSettings={url:j.path+"/{$tab}"}),h.verbose("Address library found adding state change event"),a.address.state(j.path).change(h.event.history.change)}a.isWindow(p)||k.on("click."+t,h.event.click),k.data(u,h)},destroy:function(){h.debug("Destroying tabs",k),k.off("."+x)},event:{click:function(){h.debug("Navigation clicked");var b=a(this).data(w.tab);b!==d?b!==e&&(j.history?a.address.value(b):h.change(b)):h.debug("No tab specified")},history:{change:function(b){var c=b.pathNames.join("/")||h.get.initialPath(),e=j.templates.determineTitle(c)||!1;h.debug("History change event",c,b),g=b,c!==d&&h.change(c),e&&a.address.title(e)}}},refresh:function(){e&&(h.debug("Refreshing tab",e),h.change(e))},cache:{read:function(a){return a!==d?m[a]:!1},add:function(a,b){a=a||e,h.debug("Adding cached content for",a),m[a]=b},remove:function(a){a=a||e,h.debug("Removing cached content for",a),delete m[a]}},change:function(c){var d=h.get.defaultPathArray(c);h.deactivate.all(),a.each(d,function(i,k){var l,m,o,p=d.slice(0,i+1),q=h.utils.arrayToPath(p),r=h.is.tab(q),s=i+1==d.length,t=b.history&&b.history.pushState,u=t&&j.ignoreFirstLoad&&n,v=a.isPlainObject(j.apiSettings),w=h.get.tabElement(q);return h.verbose("Looking for tab",k),r?(h.verbose("Tab was found",k),e=q,f=h.utils.filterArray(d,p),s?o=!0:(l=d.slice(0,i+2),m=h.utils.arrayToPath(l),o=!h.is.tab(m),h.verbose("Tab parameters found",l)),o&&v?u?(h.debug("Ignoring remote content on first tab load",q),n=!1,h.cache.add(c,w.html()),h.activate.all(q),a.proxy(j.onTabInit,w)(q,f,g)):(h.activate.navigation(q),h.content.fetch(q,c)):(h.debug("Opened local tab",q),h.activate.all(q),a.proxy(j.onTabLoad,w)(q,f,g)),!1):(h.error(y.missingTab,k),!1)})},content:{fetch:function(b,c){var i=h.get.tabElement(b),c=c||b,k=h.cache.read(c),l={dataType:"html",stateContext:i,success:function(d){h.cache.add(c,d),h.content.update(b,d),b==e?(h.debug("Content loaded",b),h.activate.tab(b)):h.debug("Content loaded in background",b),a.proxy(j.onTabInit,i)(b,f,g)},urlData:{tab:c}},m=i.data(w.promise)||!1,n=m&&"pending"===m.state();j.cache&&k?(h.debug("Showing existing content",c),h.content.update(b,k),h.activate.tab(b),a.proxy(j.onTabInit,i)(b,f,g)):n?(h.debug("Content is already loading",c),i.addClass(v.loading)):a.api!==d?(h.debug("Retrieving remote content",c),a.api(a.extend(!0,{headers:{"X-Remote":!0}},j.apiSettings,l))):h.error(y.api)},update:function(a,b){h.debug("Updating html for",a);var c=h.get.tabElement(a);c.html(b)}},activate:{all:function(a){h.activate.tab(a),h.activate.navigation(a)},tab:function(a){var b=h.get.tabElement(a);h.verbose("Showing tab content for",b),b.addClass(v.active)},navigation:function(a){var b=h.get.navElement(a);h.verbose("Activating tab navigation for",b),b.addClass(v.active)}},deactivate:{all:function(){h.deactivate.navigation(),h.deactivate.tabs()},navigation:function(){k.removeClass(v.active)},tabs:function(){l.removeClass(v.active+" "+v.loading)}},is:{tab:function(a){return a!==d?h.get.tabElement(a).size()>0:!1}},get:{initialPath:function(){return k.eq(0).data(w.tab)||l.eq(0).data(w.tab)},path:function(){return a.address.value()},defaultPathArray:function(a){return h.utils.pathToArray(h.get.defaultPath(a))},defaultPath:function(a){var b=k.filter("[data-"+w.tab+'^="'+a+'/"]').eq(0),c=b.data(w.tab)||!1;if(c){if(h.debug("Found default tab",c),o0?b:c},tab:function(){return e}},utils:{filterArray:function(b,c){return a.grep(b,function(b){return-1==a.inArray(b,c)})},last:function(b){return a.isArray(b)?b[b.length-1]:!1},pathToArray:function(a){return a===d&&(a=e),"string"==typeof a?a.split("/"):[a]},arrayToPath:function(b){return a.isArray(b)?b.join("/"):!1}},setting:function(b,c){return c===d?j[b]:(a.isPlainObject(b)?a.extend(!0,j,b):j[b]=c,void 0)},internal:function(b,c){return c===d?h[b]:(a.isPlainObject(b)?a.extend(!0,h,b):h[b]=c,void 0)},debug:function(){j.debug&&(j.performance?h.performance.log(arguments):h.debug=Function.prototype.bind.call(console.info,console,j.moduleName+":"))},verbose:function(){j.verbose&&j.debug&&(j.performance?h.performance.log(arguments):h.verbose=Function.prototype.bind.call(console.info,console,j.moduleName+":"))},error:function(){h.error=Function.prototype.bind.call(console.error,console,j.moduleName+":")},performance:{log:function(a){var b,c,d;j.performance&&(b=(new Date).getTime(),d=q||b,c=b-d,q=b,r.push({Element:p,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,100)},display:function(){var b=j.moduleName+":",c=0;q=!1,a.each(r,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",s&&(b+=" '"+s+"'"),(console.group!==d||console.table!==d)&&r.length>0&&(console.groupCollapsed(b),console.table?console.table(r):a.each(r,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),r=[]}},invoke:function(b,c,e){var f,g;return c=c||C,e=p||e,"string"==typeof b&&z!==d&&(b=b.split("."),f=b.length-1,a.each(b,function(b,c){a.isPlainObject(z[c])&&b!=f?z=z[c]:z[c]!==d?g=z[c]:h.error(y.method)})),a.isFunction(g)?(h.verbose("Executing invoked function",g),g.apply(e,c)):g||!1}},B?(z===d&&h.initialize(),i=h.invoke(A)):(z!==d&&h.destroy(),h.initialize()),i!==d?i:this},a.tabNavigation=function(c){a(b).tabNavigation(c)},a.fn.tabNavigation.settings={moduleName:"Tab Module",verbose:!0,debug:!0,performance:!0,namespace:"tab",onTabInit:function(){},onTabLoad:function(){},templates:{determineTitle:function(){}},history:!1,path:!1,context:"body",maxDepth:25,ignoreFirstLoad:!0,alwaysRefresh:!1,cache:!0,apiSettings:!1,errors:{api:"You attempted to load content without API module",noContent:"The tab you specified is missing a content url.",method:"The method you called is not defined",state:"The state library has not been initialized",missingTab:"Tab cannot be found",path:"History enabled, but no path was specified",recursion:"Max recursive depth reached"},metadata:{tab:"tab",loaded:"loaded",promise:"promise"},className:{loading:"loading",active:"active"},selector:{tabs:".tab"}}}(jQuery,window,document); \ No newline at end of file diff --git a/build/packaged/modules/accordion.js b/build/packaged/modules/accordion.js index 3875be2af..02edd2a6c 100644 --- a/build/packaged/modules/accordion.js +++ b/build/packaged/modules/accordion.js @@ -329,7 +329,7 @@ $.fn.accordion.settings = { debug : true, verbose : true, - performance : false, + performance : true, exclusive : true, collapsible : true, diff --git a/build/packaged/modules/shape.js b/build/packaged/modules/shape.js index b6e110f88..9052cc2f1 100644 --- a/build/packaged/modules/shape.js +++ b/build/packaged/modules/shape.js @@ -40,7 +40,6 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - transitionEnd = 'msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -112,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(transitionEnd + eventNamespace, callback) + .one(module.get.transitionEvent(), callback) ; } else { @@ -138,9 +137,11 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(transitionEnd, function() { + .one(module.get.transitionEvent(), function() { module.debug('Executing queued animation'); - $module.shape(method); + setTimeout(function(){ + $module.shape(method); + }, 0); }) ; }, @@ -175,6 +176,24 @@ $.fn.shape = function(parameters) { get: { + transitionEvent: function() { + var + element = document.createElement('element'), + transitions = { + 'transition' :'transitionend', + 'OTransition' :'oTransitionEnd', + 'MozTransition' :'transitionend', + 'WebkitTransition' :'webkitTransitionEnd' + }, + transition + ; + for(transition in transitions){ + if( element.style[transition] !== undefined ){ + return transitions[transition]; + } + } + }, + nextSide: function() { return ( $activeSide.next(settings.selector.side).size() > 0 ) ? $activeSide.next(settings.selector.side) @@ -501,14 +520,25 @@ $.fn.shape = function(parameters) { return settings[name]; } }, + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, internal: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { - module.verbose('Modifying internal property', name, value); $.extend(true, module, name); } else { - module.verbose('Changing internal method to', value); module[name] = value; } } @@ -537,7 +567,7 @@ $.fn.shape = function(parameters) { } }, error: function() { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); + module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -551,44 +581,42 @@ $.fn.shape = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { diff --git a/build/packaged/modules/tab.js b/build/packaged/modules/tab.js index 545c581cf..36fb0206f 100644 --- a/build/packaged/modules/tab.js +++ b/build/packaged/modules/tab.js @@ -16,8 +16,8 @@ $module = $(this), $tabs = $(settings.context).find(settings.selector.tabs), - firstLoad = true, cache = {}, + firstLoad = true, recursionDepth = 0, activeTabPath, @@ -62,6 +62,12 @@ return false; } else { + if(!settings.apiSettings) { + module.debug('No API url found, using current url'); + settings.apiSettings = { + url: settings.path + '/{$tab}' + }; + } module.verbose('Address library found adding state change event'); $.address .state(settings.path) @@ -70,7 +76,7 @@ } } // attach events if navigation wasn't set to window - if( !$.isWindow( $module.get(0) ) ) { + if( !$.isWindow( element ) ) { $module .on('click.' + eventNamespace, module.event.click) ; @@ -133,21 +139,22 @@ }, cache: { - read: function(tabPath) { - return (tabPath !== undefined) - ? cache[tabPath] - : cache + + read: function(cacheKey) { + return (cacheKey !== undefined) + ? cache[cacheKey] + : false ; }, - add: function(tabPath, content) { - tabPath = tabPath || activeTabPath; - module.debug('Adding cached content for', tabPath); - cache[tabPath] = content; + add: function(cacheKey, content) { + cacheKey = cacheKey || activeTabPath; + module.debug('Adding cached content for', cacheKey); + cache[cacheKey] = content; }, - remove: function(tabPath) { - tabPath = tabPath || activeTabPath; - module.debug('Removing cached content for', tabPath); - delete cache[tabPath]; + remove: function(cacheKey) { + cacheKey = cacheKey || activeTabPath; + module.debug('Removing cached content for', cacheKey); + delete cache[cacheKey]; } }, @@ -160,61 +167,75 @@ var currentPathArray = pathArray.slice(0, index + 1), currentPath = module.utils.arrayToPath(currentPathArray), - - isLastTab = (module.utils.last(pathArray) == currentPath), + isTab = module.is.tab(currentPath), - isParam = !(isTab), + isLastIndex = (index + 1 == pathArray.length), pushStateAvailable = (window.history && window.history.pushState), shouldIgnoreLoad = (pushStateAvailable && settings.ignoreFirstLoad && firstLoad), remoteContent = $.isPlainObject(settings.apiSettings), - $tab = module.get.tabElement(currentPath) + $tab = module.get.tabElement(currentPath), + nextPathArray, + nextPath, + isLastTab ; module.verbose('Looking for tab', tab); - if(isParam) { - module.verbose('Tab is not found, assuming it is a parameter', tab); - return true; - } - else if(isTab) { - // scope up + if(isTab) { module.verbose('Tab was found', tab); + + // scope up activeTabPath = currentPath; parameterArray = module.utils.filterArray(pathArray, currentPathArray); + + if(isLastIndex) { + isLastTab = true; + } + else { + nextPathArray = pathArray.slice(0, index + 2); + nextPath = module.utils.arrayToPath(nextPathArray); + isLastTab = ( !module.is.tab(nextPath) ); + module.verbose('Tab parameters found', nextPathArray); + } if(isLastTab && remoteContent) { if(!shouldIgnoreLoad) { module.activate.navigation(currentPath); - module.content.fetch(currentPath, settings.onTabLoad); + module.content.fetch(currentPath, tabPath); } else { module.debug('Ignoring remote content on first tab load', currentPath); firstLoad = false; - cache[tabPath] = $tab.html(); + module.cache.add(tabPath, $tab.html()); module.activate.all(currentPath); $.proxy(settings.onTabInit, $tab)(currentPath, parameterArray, historyEvent); } } else { - module.debug('Opened tab', currentPath); + module.debug('Opened local tab', currentPath); module.activate.all(currentPath); $.proxy(settings.onTabLoad, $tab)(currentPath, parameterArray, historyEvent); } - + return false; + } + else { + module.error(errors.missingTab, tab); + return false; } }); }, content: { - fetch: function(tabPath) { + fetch: function(tabPath, fullTabPath) { var $tab = module.get.tabElement(tabPath), - cachedContent = cache[tabPath] || false, + fullTabPath = fullTabPath || tabPath, + cachedContent = module.cache.read(fullTabPath), apiSettings = { dataType : 'html', stateContext : $tab, success : function(response) { - cache[tabPath] = response; + module.cache.add(fullTabPath, response); module.content.update(tabPath, response); if(tabPath == activeTabPath) { module.debug('Content loaded', tabPath); @@ -225,26 +246,26 @@ } $.proxy(settings.onTabInit, $tab)(tabPath, parameterArray, historyEvent); }, - urlData: { tab: tabPath } + urlData: { tab: fullTabPath } }, request = $tab.data(metadata.promise) || false, existingRequest = ( request && request.state() === 'pending' ) ; if(settings.cache && cachedContent) { - module.debug('Showing existing content', tabPath); - // module.content.update(tabPath, cachedContent); + module.debug('Showing existing content', fullTabPath); + module.content.update(tabPath, cachedContent); module.activate.tab(tabPath); - $.proxy(settings.onTabLoad, $tab)(tabPath, parameterArray, historyEvent); + $.proxy(settings.onTabInit, $tab)(tabPath, parameterArray, historyEvent); } else if(existingRequest) { - module.debug('Content is already loading', tabPath); + module.debug('Content is already loading', fullTabPath); $tab .addClass(className.loading) ; } else if($.api !== undefined) { - module.debug('Retrieving content', tabPath); - $.api( $.extend(true, {}, settings.apiSettings, apiSettings) ); + module.debug('Retrieving remote content', fullTabPath); + $.api( $.extend(true, { headers: { 'X-Remote': true } }, settings.apiSettings, apiSettings) ); } else { module.error(errors.api); @@ -302,7 +323,10 @@ is: { tab: function(tabName) { - return ( module.get.tabElement(tabName).size() > 0 ); + return (tabName !== undefined) + ? ( module.get.tabElement(tabName).size() > 0 ) + : false + ; } }, @@ -310,6 +334,9 @@ initialPath: function() { return $module.eq(0).data(metadata.tab) || $tabs.eq(0).data(metadata.tab); }, + path: function() { + return $.address.value(); + }, // adds default tabs to tab path defaultPathArray: function(tabPath) { return module.utils.pathToArray( module.get.defaultPath(tabPath) ); @@ -449,7 +476,7 @@ performance.push({ 'Element' : element, 'Name' : message[0], - 'Arguments' : message[1] || '', + 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); } @@ -577,7 +604,7 @@ noContent : 'The tab you specified is missing a content url.', method : 'The method you called is not defined', state : 'The state library has not been initialized', - missingTab : 'Missing tab: ', + missingTab : 'Tab cannot be found', path : 'History enabled, but no path was specified', recursion : 'Max recursive depth reached' }, diff --git a/build/packaged/semantic.min.css.REMOVED.git-id b/build/packaged/semantic.min.css.REMOVED.git-id index 67ca5204e..92b157712 100644 --- a/build/packaged/semantic.min.css.REMOVED.git-id +++ b/build/packaged/semantic.min.css.REMOVED.git-id @@ -1 +1 @@ -0e7e71cc0f359032a27e430bc6b2528f60297a3a \ No newline at end of file +359f25c642789e5c6cb0787aa48fbe7faf94687c \ No newline at end of file diff --git a/build/packaged/semantic.min.js.REMOVED.git-id b/build/packaged/semantic.min.js.REMOVED.git-id index 21afde2dc..a5bbe06df 100644 --- a/build/packaged/semantic.min.js.REMOVED.git-id +++ b/build/packaged/semantic.min.js.REMOVED.git-id @@ -1 +1 @@ -90bbc11aa0dcba1f4d6d3ed26f2c5abd44e0d938 \ No newline at end of file +c61968fec0531359a6ac8e706842ef6817cbeba9 \ No newline at end of file diff --git a/build/uncompressed/collections/message.css b/build/uncompressed/collections/message.css index 02646a647..57aeba2b1 100644 --- a/build/uncompressed/collections/message.css +++ b/build/uncompressed/collections/message.css @@ -143,6 +143,10 @@ /*-------------- Icon ---------------*/ +.ui.icon.message { + display: table; + width: 100%; +} .ui.icon.message > .icon { display: table-cell; vertical-align: middle; diff --git a/build/uncompressed/elements/button.css b/build/uncompressed/elements/button.css index ebfa33daf..7e4169104 100644 --- a/build/uncompressed/elements/button.css +++ b/build/uncompressed/elements/button.css @@ -119,138 +119,6 @@ -moz-box-shadow: 0em 0em 0.125em 1px rgba(0, 0, 0, 0.1) inset; box-shadow: 0em 0em 0.125em 1px rgba(0, 0, 0, 0.1) inset; } -/*-------------- - Error ----------------*/ -.ui.button.error, -.ui.button.error.hover, -.ui.button.error.down { - cursor: default; - position: relative !important; - background-color: #D95C5C !important; - color: transparent !important; - text-shadow: none; - -webkit-transition: all 0s linear; - -moz-transition: all 0s linear; - -o-transition: all 0s linear; - -ms-transition: all 0s linear; - transition: all 0s linear; -} -.ui.button.error .icon { - opacity: 1; - color: #FFFFFF; -} -.ui.button.error:after { - position: absolute; - left: 50%; - content: "Error"; - margin-left: -1.8em; - color: #FFFFFF; - -webkit-animation: button-text 0.5s; - -moz-animation: button-text 0.5s; - -ms-animation: button-text 0.5s; - -o-animation: button-text 0.5s; - animation: button-text 0.5s; -} -.ui.button.error .icon:before { - font-family: 'Icons'; - content: '\26a0'; -} -/*-------------- - Success ----------------*/ -.ui.button.success, -.ui.button.success.hover, -.ui.button.success.down { - position: relative !important; - background-color: #5BBD72 !important; - color: transparent !important; -} -.ui.button.success .icon { - opacity: 1; - color: #FFFFFF; -} -.ui.button.success .icon:before { - font-family: 'Icons'; - content: '\2611'; -} -.ui.button.success:after { - position: absolute; - left: 50%; - content: "Success"; - margin-left: -2em; - color: #FFFFFF; - -webkit-animation: button-text 0.5s; - -moz-animation: button-text 0.5s; - -ms-animation: button-text 0.5s; - -o-animation: button-text 0.5s; - animation: button-text 0.5s; -} -@-webkit-keyframes button-text { - 0% { - -webkit-transform: translateY(100%); - opacity: 0; - } - 100% { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes button-text { - 0% { - -moz-transform: translateY(100%); - opacity: 0; - } - 100% { - opacity: 1; - -moz-transform: translateY(0); - } -} -@keyframes button-text { - 0% { - transform: translateY(100%); - opacity: 0; - } - 100% { - opacity: 1; - transform: translateY(0); - } -} -/*-------------- - Loading ----------------*/ -.ui.button.loading, -.ui.button.loading.hover { - position: relative; - cursor: default; - background-color: #F3F3F3 !important; - color: transparent !important; - text-shadow: none !important; - background-image: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-shadow: none !important; - -webkit-transition: all 0s linear; - -moz-transition: all 0s linear; - -o-transition: all 0s linear; - -ms-transition: all 0s linear; - transition: all 0s linear; -} -.ui.button.loading:after { - position: absolute; - top: 0em; - left: 0em; - width: 100%; - height: 100%; - content: ''; - background: transparent url(../images/loader-mini.gif) no-repeat 50% 50%; -} -.ui.labeled.icon.button.loading .icon { - background-color: transparent; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} /*------------------- Disabled --------------------*/ @@ -959,3 +827,135 @@ -webkit-border-radius: 0px 0px 0.3125em 0.3125em; border-radius: 0px 0px 0.3125em 0.3125em; } +/*-------------- + Loading +---------------*/ +.ui.button.loading, +.ui.button.loading.hover { + position: relative; + cursor: default; + background-color: #F3F3F3 !important; + color: transparent !important; + text-shadow: none !important; + background-image: none !important; + -webkit-box-shadow: none !important; + -moz-box-shadow: none !important; + box-shadow: none !important; + -webkit-transition: all 0s linear; + -moz-transition: all 0s linear; + -o-transition: all 0s linear; + -ms-transition: all 0s linear; + transition: all 0s linear; +} +.ui.button.loading:after { + position: absolute; + top: 0em; + left: 0em; + width: 100%; + height: 100%; + content: ''; + background: transparent url(../images/loader-mini.gif) no-repeat 50% 50%; +} +.ui.labeled.icon.button.loading .icon { + background-color: transparent; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +/*-------------- + Error +---------------*/ +.ui.button.error, +.ui.button.error.hover, +.ui.button.error.down { + cursor: default; + position: relative !important; + background-color: #D95C5C !important; + color: transparent !important; + text-shadow: none; + -webkit-transition: all 0s linear; + -moz-transition: all 0s linear; + -o-transition: all 0s linear; + -ms-transition: all 0s linear; + transition: all 0s linear; +} +.ui.button.error .icon { + opacity: 1; + color: #FFFFFF; +} +.ui.button.error:after { + position: absolute; + left: 50%; + content: "Error"; + margin-left: -1.8em; + color: #FFFFFF; + -webkit-animation: button-text 0.5s; + -moz-animation: button-text 0.5s; + -ms-animation: button-text 0.5s; + -o-animation: button-text 0.5s; + animation: button-text 0.5s; +} +.ui.button.error .icon:before { + font-family: 'Icons'; + content: '\26a0'; +} +/*-------------- + Success +---------------*/ +.ui.button.success, +.ui.button.success.hover, +.ui.button.success.down { + position: relative !important; + background-color: #5BBD72 !important; + color: transparent !important; +} +.ui.button.success .icon { + opacity: 1; + color: #FFFFFF; +} +.ui.button.success .icon:before { + font-family: 'Icons'; + content: '\2611'; +} +.ui.button.success:after { + position: absolute; + left: 50%; + content: "Success"; + margin-left: -2em; + color: #FFFFFF; + -webkit-animation: button-text 0.5s; + -moz-animation: button-text 0.5s; + -ms-animation: button-text 0.5s; + -o-animation: button-text 0.5s; + animation: button-text 0.5s; +} +@-webkit-keyframes button-text { + 0% { + -webkit-transform: translateY(100%); + opacity: 0; + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + } +} +@-moz-keyframes button-text { + 0% { + -moz-transform: translateY(100%); + opacity: 0; + } + 100% { + opacity: 1; + -moz-transform: translateY(0); + } +} +@keyframes button-text { + 0% { + transform: translateY(100%); + opacity: 0; + } + 100% { + opacity: 1; + transform: translateY(0); + } +} diff --git a/build/uncompressed/elements/icons.css b/build/uncompressed/elements/icons.css index 00311461a..257f90c96 100644 --- a/build/uncompressed/elements/icons.css +++ b/build/uncompressed/elements/icons.css @@ -647,7 +647,7 @@ i.link.icon { transition: opacity 0.3s ease-out; } .link.icon:hover { - opacity: 1; + opacity: 1 !important; } /*------------------- Circular diff --git a/build/uncompressed/modules/accordion.js b/build/uncompressed/modules/accordion.js index 3875be2af..02edd2a6c 100644 --- a/build/uncompressed/modules/accordion.js +++ b/build/uncompressed/modules/accordion.js @@ -329,7 +329,7 @@ $.fn.accordion.settings = { debug : true, verbose : true, - performance : false, + performance : true, exclusive : true, collapsible : true, diff --git a/build/uncompressed/modules/shape.css b/build/uncompressed/modules/shape.css index 71929d392..6c7ccdcae 100644 --- a/build/uncompressed/modules/shape.css +++ b/build/uncompressed/modules/shape.css @@ -1,5 +1,16 @@ +/* + * # Semantic Button + * http://github.com/quirkyinc/semantic + * + * + * Copyright 2013 Contributors + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + * Released: April 17 2013 + */ /******************************* - Shape + Shape *******************************/ .ui.shape { position: relative; @@ -22,14 +33,15 @@ -ms-backface-visibility: hidden; backface-visibility: hidden; } -/*--------------- - States -----------------*/ -/* Standard */ .ui.shape .side { display: none; } -/* Animating */ +/******************************* + States +*******************************/ +/*-------------- + Animating +---------------*/ .ui.shape.animating .sides { position: absolute; } @@ -43,7 +55,9 @@ .ui.shape .hidden.side { opacity: 0.7; } -/* css animation */ +/*-------------- + CSS +---------------*/ .ui.shape.css { -webkit-transition: all 0.6s ease-in-out; -moz-transition: all 0.6s ease-in-out; @@ -65,7 +79,9 @@ -ms-transition: opacity 0.6s ease-in-out; transition: opacity 0.6s ease-in-out; } -/* Active */ +/*-------------- + Active +---------------*/ .ui.shape .active.side { display: block; } diff --git a/build/uncompressed/modules/shape.js b/build/uncompressed/modules/shape.js index b6e110f88..9052cc2f1 100644 --- a/build/uncompressed/modules/shape.js +++ b/build/uncompressed/modules/shape.js @@ -40,7 +40,6 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - transitionEnd = 'msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -112,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(transitionEnd + eventNamespace, callback) + .one(module.get.transitionEvent(), callback) ; } else { @@ -138,9 +137,11 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(transitionEnd, function() { + .one(module.get.transitionEvent(), function() { module.debug('Executing queued animation'); - $module.shape(method); + setTimeout(function(){ + $module.shape(method); + }, 0); }) ; }, @@ -175,6 +176,24 @@ $.fn.shape = function(parameters) { get: { + transitionEvent: function() { + var + element = document.createElement('element'), + transitions = { + 'transition' :'transitionend', + 'OTransition' :'oTransitionEnd', + 'MozTransition' :'transitionend', + 'WebkitTransition' :'webkitTransitionEnd' + }, + transition + ; + for(transition in transitions){ + if( element.style[transition] !== undefined ){ + return transitions[transition]; + } + } + }, + nextSide: function() { return ( $activeSide.next(settings.selector.side).size() > 0 ) ? $activeSide.next(settings.selector.side) @@ -501,14 +520,25 @@ $.fn.shape = function(parameters) { return settings[name]; } }, + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, internal: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { - module.verbose('Modifying internal property', name, value); $.extend(true, module, name); } else { - module.verbose('Changing internal method to', value); module[name] = value; } } @@ -537,7 +567,7 @@ $.fn.shape = function(parameters) { } }, error: function() { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); + module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -551,44 +581,42 @@ $.fn.shape = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { diff --git a/build/uncompressed/modules/tab.css b/build/uncompressed/modules/tab.css index 69585203a..1ef6bf8fd 100644 --- a/build/uncompressed/modules/tab.css +++ b/build/uncompressed/modules/tab.css @@ -1,3 +1,14 @@ +/* + * # Semantic Button + * http://github.com/quirkyinc/semantic + * + * + * Copyright 2013 Contributors + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + * Released: April 17 2013 + */ /******************************* UI Tabs *******************************/ @@ -8,20 +19,22 @@ .ui.tab.open { display: block; } -.ui.tab.simple { - background-color: transparent; - border: none; -} +/******************************* + States +*******************************/ /*-------------------- - Loading State + Loading ---------------------*/ -/* On Form */ .ui.tab.loading { position: relative; overflow: hidden; display: block; min-height: 250px; - text-indent: -9999px; + text-indent: -10000px; +} +.ui.tab.loading * { + position: relative !important; + left: -10000px !important; } .ui.tab.loading:after { position: absolute; diff --git a/build/uncompressed/modules/tab.js b/build/uncompressed/modules/tab.js index 545c581cf..36fb0206f 100644 --- a/build/uncompressed/modules/tab.js +++ b/build/uncompressed/modules/tab.js @@ -16,8 +16,8 @@ $module = $(this), $tabs = $(settings.context).find(settings.selector.tabs), - firstLoad = true, cache = {}, + firstLoad = true, recursionDepth = 0, activeTabPath, @@ -62,6 +62,12 @@ return false; } else { + if(!settings.apiSettings) { + module.debug('No API url found, using current url'); + settings.apiSettings = { + url: settings.path + '/{$tab}' + }; + } module.verbose('Address library found adding state change event'); $.address .state(settings.path) @@ -70,7 +76,7 @@ } } // attach events if navigation wasn't set to window - if( !$.isWindow( $module.get(0) ) ) { + if( !$.isWindow( element ) ) { $module .on('click.' + eventNamespace, module.event.click) ; @@ -133,21 +139,22 @@ }, cache: { - read: function(tabPath) { - return (tabPath !== undefined) - ? cache[tabPath] - : cache + + read: function(cacheKey) { + return (cacheKey !== undefined) + ? cache[cacheKey] + : false ; }, - add: function(tabPath, content) { - tabPath = tabPath || activeTabPath; - module.debug('Adding cached content for', tabPath); - cache[tabPath] = content; + add: function(cacheKey, content) { + cacheKey = cacheKey || activeTabPath; + module.debug('Adding cached content for', cacheKey); + cache[cacheKey] = content; }, - remove: function(tabPath) { - tabPath = tabPath || activeTabPath; - module.debug('Removing cached content for', tabPath); - delete cache[tabPath]; + remove: function(cacheKey) { + cacheKey = cacheKey || activeTabPath; + module.debug('Removing cached content for', cacheKey); + delete cache[cacheKey]; } }, @@ -160,61 +167,75 @@ var currentPathArray = pathArray.slice(0, index + 1), currentPath = module.utils.arrayToPath(currentPathArray), - - isLastTab = (module.utils.last(pathArray) == currentPath), + isTab = module.is.tab(currentPath), - isParam = !(isTab), + isLastIndex = (index + 1 == pathArray.length), pushStateAvailable = (window.history && window.history.pushState), shouldIgnoreLoad = (pushStateAvailable && settings.ignoreFirstLoad && firstLoad), remoteContent = $.isPlainObject(settings.apiSettings), - $tab = module.get.tabElement(currentPath) + $tab = module.get.tabElement(currentPath), + nextPathArray, + nextPath, + isLastTab ; module.verbose('Looking for tab', tab); - if(isParam) { - module.verbose('Tab is not found, assuming it is a parameter', tab); - return true; - } - else if(isTab) { - // scope up + if(isTab) { module.verbose('Tab was found', tab); + + // scope up activeTabPath = currentPath; parameterArray = module.utils.filterArray(pathArray, currentPathArray); + + if(isLastIndex) { + isLastTab = true; + } + else { + nextPathArray = pathArray.slice(0, index + 2); + nextPath = module.utils.arrayToPath(nextPathArray); + isLastTab = ( !module.is.tab(nextPath) ); + module.verbose('Tab parameters found', nextPathArray); + } if(isLastTab && remoteContent) { if(!shouldIgnoreLoad) { module.activate.navigation(currentPath); - module.content.fetch(currentPath, settings.onTabLoad); + module.content.fetch(currentPath, tabPath); } else { module.debug('Ignoring remote content on first tab load', currentPath); firstLoad = false; - cache[tabPath] = $tab.html(); + module.cache.add(tabPath, $tab.html()); module.activate.all(currentPath); $.proxy(settings.onTabInit, $tab)(currentPath, parameterArray, historyEvent); } } else { - module.debug('Opened tab', currentPath); + module.debug('Opened local tab', currentPath); module.activate.all(currentPath); $.proxy(settings.onTabLoad, $tab)(currentPath, parameterArray, historyEvent); } - + return false; + } + else { + module.error(errors.missingTab, tab); + return false; } }); }, content: { - fetch: function(tabPath) { + fetch: function(tabPath, fullTabPath) { var $tab = module.get.tabElement(tabPath), - cachedContent = cache[tabPath] || false, + fullTabPath = fullTabPath || tabPath, + cachedContent = module.cache.read(fullTabPath), apiSettings = { dataType : 'html', stateContext : $tab, success : function(response) { - cache[tabPath] = response; + module.cache.add(fullTabPath, response); module.content.update(tabPath, response); if(tabPath == activeTabPath) { module.debug('Content loaded', tabPath); @@ -225,26 +246,26 @@ } $.proxy(settings.onTabInit, $tab)(tabPath, parameterArray, historyEvent); }, - urlData: { tab: tabPath } + urlData: { tab: fullTabPath } }, request = $tab.data(metadata.promise) || false, existingRequest = ( request && request.state() === 'pending' ) ; if(settings.cache && cachedContent) { - module.debug('Showing existing content', tabPath); - // module.content.update(tabPath, cachedContent); + module.debug('Showing existing content', fullTabPath); + module.content.update(tabPath, cachedContent); module.activate.tab(tabPath); - $.proxy(settings.onTabLoad, $tab)(tabPath, parameterArray, historyEvent); + $.proxy(settings.onTabInit, $tab)(tabPath, parameterArray, historyEvent); } else if(existingRequest) { - module.debug('Content is already loading', tabPath); + module.debug('Content is already loading', fullTabPath); $tab .addClass(className.loading) ; } else if($.api !== undefined) { - module.debug('Retrieving content', tabPath); - $.api( $.extend(true, {}, settings.apiSettings, apiSettings) ); + module.debug('Retrieving remote content', fullTabPath); + $.api( $.extend(true, { headers: { 'X-Remote': true } }, settings.apiSettings, apiSettings) ); } else { module.error(errors.api); @@ -302,7 +323,10 @@ is: { tab: function(tabName) { - return ( module.get.tabElement(tabName).size() > 0 ); + return (tabName !== undefined) + ? ( module.get.tabElement(tabName).size() > 0 ) + : false + ; } }, @@ -310,6 +334,9 @@ initialPath: function() { return $module.eq(0).data(metadata.tab) || $tabs.eq(0).data(metadata.tab); }, + path: function() { + return $.address.value(); + }, // adds default tabs to tab path defaultPathArray: function(tabPath) { return module.utils.pathToArray( module.get.defaultPath(tabPath) ); @@ -449,7 +476,7 @@ performance.push({ 'Element' : element, 'Name' : message[0], - 'Arguments' : message[1] || '', + 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); } @@ -577,7 +604,7 @@ noContent : 'The tab you specified is missing a content url.', method : 'The method you called is not defined', state : 'The state library has not been initialized', - missingTab : 'Missing tab: ', + missingTab : 'Tab cannot be found', path : 'History enabled, but no path was specified', recursion : 'Max recursive depth reached' }, diff --git a/node/src/files/components/semantic/collections/message.css b/node/src/files/components/semantic/collections/message.css index 02646a647..57aeba2b1 100644 --- a/node/src/files/components/semantic/collections/message.css +++ b/node/src/files/components/semantic/collections/message.css @@ -143,6 +143,10 @@ /*-------------- Icon ---------------*/ +.ui.icon.message { + display: table; + width: 100%; +} .ui.icon.message > .icon { display: table-cell; vertical-align: middle; diff --git a/node/src/files/components/semantic/elements/button.css b/node/src/files/components/semantic/elements/button.css index ebfa33daf..7e4169104 100644 --- a/node/src/files/components/semantic/elements/button.css +++ b/node/src/files/components/semantic/elements/button.css @@ -119,138 +119,6 @@ -moz-box-shadow: 0em 0em 0.125em 1px rgba(0, 0, 0, 0.1) inset; box-shadow: 0em 0em 0.125em 1px rgba(0, 0, 0, 0.1) inset; } -/*-------------- - Error ----------------*/ -.ui.button.error, -.ui.button.error.hover, -.ui.button.error.down { - cursor: default; - position: relative !important; - background-color: #D95C5C !important; - color: transparent !important; - text-shadow: none; - -webkit-transition: all 0s linear; - -moz-transition: all 0s linear; - -o-transition: all 0s linear; - -ms-transition: all 0s linear; - transition: all 0s linear; -} -.ui.button.error .icon { - opacity: 1; - color: #FFFFFF; -} -.ui.button.error:after { - position: absolute; - left: 50%; - content: "Error"; - margin-left: -1.8em; - color: #FFFFFF; - -webkit-animation: button-text 0.5s; - -moz-animation: button-text 0.5s; - -ms-animation: button-text 0.5s; - -o-animation: button-text 0.5s; - animation: button-text 0.5s; -} -.ui.button.error .icon:before { - font-family: 'Icons'; - content: '\26a0'; -} -/*-------------- - Success ----------------*/ -.ui.button.success, -.ui.button.success.hover, -.ui.button.success.down { - position: relative !important; - background-color: #5BBD72 !important; - color: transparent !important; -} -.ui.button.success .icon { - opacity: 1; - color: #FFFFFF; -} -.ui.button.success .icon:before { - font-family: 'Icons'; - content: '\2611'; -} -.ui.button.success:after { - position: absolute; - left: 50%; - content: "Success"; - margin-left: -2em; - color: #FFFFFF; - -webkit-animation: button-text 0.5s; - -moz-animation: button-text 0.5s; - -ms-animation: button-text 0.5s; - -o-animation: button-text 0.5s; - animation: button-text 0.5s; -} -@-webkit-keyframes button-text { - 0% { - -webkit-transform: translateY(100%); - opacity: 0; - } - 100% { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes button-text { - 0% { - -moz-transform: translateY(100%); - opacity: 0; - } - 100% { - opacity: 1; - -moz-transform: translateY(0); - } -} -@keyframes button-text { - 0% { - transform: translateY(100%); - opacity: 0; - } - 100% { - opacity: 1; - transform: translateY(0); - } -} -/*-------------- - Loading ----------------*/ -.ui.button.loading, -.ui.button.loading.hover { - position: relative; - cursor: default; - background-color: #F3F3F3 !important; - color: transparent !important; - text-shadow: none !important; - background-image: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-shadow: none !important; - -webkit-transition: all 0s linear; - -moz-transition: all 0s linear; - -o-transition: all 0s linear; - -ms-transition: all 0s linear; - transition: all 0s linear; -} -.ui.button.loading:after { - position: absolute; - top: 0em; - left: 0em; - width: 100%; - height: 100%; - content: ''; - background: transparent url(../images/loader-mini.gif) no-repeat 50% 50%; -} -.ui.labeled.icon.button.loading .icon { - background-color: transparent; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} /*------------------- Disabled --------------------*/ @@ -959,3 +827,135 @@ -webkit-border-radius: 0px 0px 0.3125em 0.3125em; border-radius: 0px 0px 0.3125em 0.3125em; } +/*-------------- + Loading +---------------*/ +.ui.button.loading, +.ui.button.loading.hover { + position: relative; + cursor: default; + background-color: #F3F3F3 !important; + color: transparent !important; + text-shadow: none !important; + background-image: none !important; + -webkit-box-shadow: none !important; + -moz-box-shadow: none !important; + box-shadow: none !important; + -webkit-transition: all 0s linear; + -moz-transition: all 0s linear; + -o-transition: all 0s linear; + -ms-transition: all 0s linear; + transition: all 0s linear; +} +.ui.button.loading:after { + position: absolute; + top: 0em; + left: 0em; + width: 100%; + height: 100%; + content: ''; + background: transparent url(../images/loader-mini.gif) no-repeat 50% 50%; +} +.ui.labeled.icon.button.loading .icon { + background-color: transparent; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +/*-------------- + Error +---------------*/ +.ui.button.error, +.ui.button.error.hover, +.ui.button.error.down { + cursor: default; + position: relative !important; + background-color: #D95C5C !important; + color: transparent !important; + text-shadow: none; + -webkit-transition: all 0s linear; + -moz-transition: all 0s linear; + -o-transition: all 0s linear; + -ms-transition: all 0s linear; + transition: all 0s linear; +} +.ui.button.error .icon { + opacity: 1; + color: #FFFFFF; +} +.ui.button.error:after { + position: absolute; + left: 50%; + content: "Error"; + margin-left: -1.8em; + color: #FFFFFF; + -webkit-animation: button-text 0.5s; + -moz-animation: button-text 0.5s; + -ms-animation: button-text 0.5s; + -o-animation: button-text 0.5s; + animation: button-text 0.5s; +} +.ui.button.error .icon:before { + font-family: 'Icons'; + content: '\26a0'; +} +/*-------------- + Success +---------------*/ +.ui.button.success, +.ui.button.success.hover, +.ui.button.success.down { + position: relative !important; + background-color: #5BBD72 !important; + color: transparent !important; +} +.ui.button.success .icon { + opacity: 1; + color: #FFFFFF; +} +.ui.button.success .icon:before { + font-family: 'Icons'; + content: '\2611'; +} +.ui.button.success:after { + position: absolute; + left: 50%; + content: "Success"; + margin-left: -2em; + color: #FFFFFF; + -webkit-animation: button-text 0.5s; + -moz-animation: button-text 0.5s; + -ms-animation: button-text 0.5s; + -o-animation: button-text 0.5s; + animation: button-text 0.5s; +} +@-webkit-keyframes button-text { + 0% { + -webkit-transform: translateY(100%); + opacity: 0; + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + } +} +@-moz-keyframes button-text { + 0% { + -moz-transform: translateY(100%); + opacity: 0; + } + 100% { + opacity: 1; + -moz-transform: translateY(0); + } +} +@keyframes button-text { + 0% { + transform: translateY(100%); + opacity: 0; + } + 100% { + opacity: 1; + transform: translateY(0); + } +} diff --git a/node/src/files/components/semantic/elements/icons.css b/node/src/files/components/semantic/elements/icons.css index 00311461a..257f90c96 100644 --- a/node/src/files/components/semantic/elements/icons.css +++ b/node/src/files/components/semantic/elements/icons.css @@ -647,7 +647,7 @@ i.link.icon { transition: opacity 0.3s ease-out; } .link.icon:hover { - opacity: 1; + opacity: 1 !important; } /*------------------- Circular diff --git a/node/src/files/components/semantic/modules/accordion.js b/node/src/files/components/semantic/modules/accordion.js index 3875be2af..02edd2a6c 100644 --- a/node/src/files/components/semantic/modules/accordion.js +++ b/node/src/files/components/semantic/modules/accordion.js @@ -329,7 +329,7 @@ $.fn.accordion.settings = { debug : true, verbose : true, - performance : false, + performance : true, exclusive : true, collapsible : true, diff --git a/node/src/files/components/semantic/modules/shape.css b/node/src/files/components/semantic/modules/shape.css index 71929d392..6c7ccdcae 100644 --- a/node/src/files/components/semantic/modules/shape.css +++ b/node/src/files/components/semantic/modules/shape.css @@ -1,5 +1,16 @@ +/* + * # Semantic Button + * http://github.com/quirkyinc/semantic + * + * + * Copyright 2013 Contributors + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + * Released: April 17 2013 + */ /******************************* - Shape + Shape *******************************/ .ui.shape { position: relative; @@ -22,14 +33,15 @@ -ms-backface-visibility: hidden; backface-visibility: hidden; } -/*--------------- - States -----------------*/ -/* Standard */ .ui.shape .side { display: none; } -/* Animating */ +/******************************* + States +*******************************/ +/*-------------- + Animating +---------------*/ .ui.shape.animating .sides { position: absolute; } @@ -43,7 +55,9 @@ .ui.shape .hidden.side { opacity: 0.7; } -/* css animation */ +/*-------------- + CSS +---------------*/ .ui.shape.css { -webkit-transition: all 0.6s ease-in-out; -moz-transition: all 0.6s ease-in-out; @@ -65,7 +79,9 @@ -ms-transition: opacity 0.6s ease-in-out; transition: opacity 0.6s ease-in-out; } -/* Active */ +/*-------------- + Active +---------------*/ .ui.shape .active.side { display: block; } diff --git a/node/src/files/components/semantic/modules/shape.js b/node/src/files/components/semantic/modules/shape.js index b6e110f88..9052cc2f1 100644 --- a/node/src/files/components/semantic/modules/shape.js +++ b/node/src/files/components/semantic/modules/shape.js @@ -40,7 +40,6 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - transitionEnd = 'msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -112,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(transitionEnd + eventNamespace, callback) + .one(module.get.transitionEvent(), callback) ; } else { @@ -138,9 +137,11 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(transitionEnd, function() { + .one(module.get.transitionEvent(), function() { module.debug('Executing queued animation'); - $module.shape(method); + setTimeout(function(){ + $module.shape(method); + }, 0); }) ; }, @@ -175,6 +176,24 @@ $.fn.shape = function(parameters) { get: { + transitionEvent: function() { + var + element = document.createElement('element'), + transitions = { + 'transition' :'transitionend', + 'OTransition' :'oTransitionEnd', + 'MozTransition' :'transitionend', + 'WebkitTransition' :'webkitTransitionEnd' + }, + transition + ; + for(transition in transitions){ + if( element.style[transition] !== undefined ){ + return transitions[transition]; + } + } + }, + nextSide: function() { return ( $activeSide.next(settings.selector.side).size() > 0 ) ? $activeSide.next(settings.selector.side) @@ -501,14 +520,25 @@ $.fn.shape = function(parameters) { return settings[name]; } }, + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, internal: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { - module.verbose('Modifying internal property', name, value); $.extend(true, module, name); } else { - module.verbose('Changing internal method to', value); module[name] = value; } } @@ -537,7 +567,7 @@ $.fn.shape = function(parameters) { } }, error: function() { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); + module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -551,44 +581,42 @@ $.fn.shape = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { diff --git a/node/src/files/components/semantic/modules/tab.css b/node/src/files/components/semantic/modules/tab.css index 69585203a..1ef6bf8fd 100644 --- a/node/src/files/components/semantic/modules/tab.css +++ b/node/src/files/components/semantic/modules/tab.css @@ -1,3 +1,14 @@ +/* + * # Semantic Button + * http://github.com/quirkyinc/semantic + * + * + * Copyright 2013 Contributors + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + * Released: April 17 2013 + */ /******************************* UI Tabs *******************************/ @@ -8,20 +19,22 @@ .ui.tab.open { display: block; } -.ui.tab.simple { - background-color: transparent; - border: none; -} +/******************************* + States +*******************************/ /*-------------------- - Loading State + Loading ---------------------*/ -/* On Form */ .ui.tab.loading { position: relative; overflow: hidden; display: block; min-height: 250px; - text-indent: -9999px; + text-indent: -10000px; +} +.ui.tab.loading * { + position: relative !important; + left: -10000px !important; } .ui.tab.loading:after { position: absolute; diff --git a/node/src/files/components/semantic/modules/tab.js b/node/src/files/components/semantic/modules/tab.js index 545c581cf..36fb0206f 100644 --- a/node/src/files/components/semantic/modules/tab.js +++ b/node/src/files/components/semantic/modules/tab.js @@ -16,8 +16,8 @@ $module = $(this), $tabs = $(settings.context).find(settings.selector.tabs), - firstLoad = true, cache = {}, + firstLoad = true, recursionDepth = 0, activeTabPath, @@ -62,6 +62,12 @@ return false; } else { + if(!settings.apiSettings) { + module.debug('No API url found, using current url'); + settings.apiSettings = { + url: settings.path + '/{$tab}' + }; + } module.verbose('Address library found adding state change event'); $.address .state(settings.path) @@ -70,7 +76,7 @@ } } // attach events if navigation wasn't set to window - if( !$.isWindow( $module.get(0) ) ) { + if( !$.isWindow( element ) ) { $module .on('click.' + eventNamespace, module.event.click) ; @@ -133,21 +139,22 @@ }, cache: { - read: function(tabPath) { - return (tabPath !== undefined) - ? cache[tabPath] - : cache + + read: function(cacheKey) { + return (cacheKey !== undefined) + ? cache[cacheKey] + : false ; }, - add: function(tabPath, content) { - tabPath = tabPath || activeTabPath; - module.debug('Adding cached content for', tabPath); - cache[tabPath] = content; + add: function(cacheKey, content) { + cacheKey = cacheKey || activeTabPath; + module.debug('Adding cached content for', cacheKey); + cache[cacheKey] = content; }, - remove: function(tabPath) { - tabPath = tabPath || activeTabPath; - module.debug('Removing cached content for', tabPath); - delete cache[tabPath]; + remove: function(cacheKey) { + cacheKey = cacheKey || activeTabPath; + module.debug('Removing cached content for', cacheKey); + delete cache[cacheKey]; } }, @@ -160,61 +167,75 @@ var currentPathArray = pathArray.slice(0, index + 1), currentPath = module.utils.arrayToPath(currentPathArray), - - isLastTab = (module.utils.last(pathArray) == currentPath), + isTab = module.is.tab(currentPath), - isParam = !(isTab), + isLastIndex = (index + 1 == pathArray.length), pushStateAvailable = (window.history && window.history.pushState), shouldIgnoreLoad = (pushStateAvailable && settings.ignoreFirstLoad && firstLoad), remoteContent = $.isPlainObject(settings.apiSettings), - $tab = module.get.tabElement(currentPath) + $tab = module.get.tabElement(currentPath), + nextPathArray, + nextPath, + isLastTab ; module.verbose('Looking for tab', tab); - if(isParam) { - module.verbose('Tab is not found, assuming it is a parameter', tab); - return true; - } - else if(isTab) { - // scope up + if(isTab) { module.verbose('Tab was found', tab); + + // scope up activeTabPath = currentPath; parameterArray = module.utils.filterArray(pathArray, currentPathArray); + + if(isLastIndex) { + isLastTab = true; + } + else { + nextPathArray = pathArray.slice(0, index + 2); + nextPath = module.utils.arrayToPath(nextPathArray); + isLastTab = ( !module.is.tab(nextPath) ); + module.verbose('Tab parameters found', nextPathArray); + } if(isLastTab && remoteContent) { if(!shouldIgnoreLoad) { module.activate.navigation(currentPath); - module.content.fetch(currentPath, settings.onTabLoad); + module.content.fetch(currentPath, tabPath); } else { module.debug('Ignoring remote content on first tab load', currentPath); firstLoad = false; - cache[tabPath] = $tab.html(); + module.cache.add(tabPath, $tab.html()); module.activate.all(currentPath); $.proxy(settings.onTabInit, $tab)(currentPath, parameterArray, historyEvent); } } else { - module.debug('Opened tab', currentPath); + module.debug('Opened local tab', currentPath); module.activate.all(currentPath); $.proxy(settings.onTabLoad, $tab)(currentPath, parameterArray, historyEvent); } - + return false; + } + else { + module.error(errors.missingTab, tab); + return false; } }); }, content: { - fetch: function(tabPath) { + fetch: function(tabPath, fullTabPath) { var $tab = module.get.tabElement(tabPath), - cachedContent = cache[tabPath] || false, + fullTabPath = fullTabPath || tabPath, + cachedContent = module.cache.read(fullTabPath), apiSettings = { dataType : 'html', stateContext : $tab, success : function(response) { - cache[tabPath] = response; + module.cache.add(fullTabPath, response); module.content.update(tabPath, response); if(tabPath == activeTabPath) { module.debug('Content loaded', tabPath); @@ -225,26 +246,26 @@ } $.proxy(settings.onTabInit, $tab)(tabPath, parameterArray, historyEvent); }, - urlData: { tab: tabPath } + urlData: { tab: fullTabPath } }, request = $tab.data(metadata.promise) || false, existingRequest = ( request && request.state() === 'pending' ) ; if(settings.cache && cachedContent) { - module.debug('Showing existing content', tabPath); - // module.content.update(tabPath, cachedContent); + module.debug('Showing existing content', fullTabPath); + module.content.update(tabPath, cachedContent); module.activate.tab(tabPath); - $.proxy(settings.onTabLoad, $tab)(tabPath, parameterArray, historyEvent); + $.proxy(settings.onTabInit, $tab)(tabPath, parameterArray, historyEvent); } else if(existingRequest) { - module.debug('Content is already loading', tabPath); + module.debug('Content is already loading', fullTabPath); $tab .addClass(className.loading) ; } else if($.api !== undefined) { - module.debug('Retrieving content', tabPath); - $.api( $.extend(true, {}, settings.apiSettings, apiSettings) ); + module.debug('Retrieving remote content', fullTabPath); + $.api( $.extend(true, { headers: { 'X-Remote': true } }, settings.apiSettings, apiSettings) ); } else { module.error(errors.api); @@ -302,7 +323,10 @@ is: { tab: function(tabName) { - return ( module.get.tabElement(tabName).size() > 0 ); + return (tabName !== undefined) + ? ( module.get.tabElement(tabName).size() > 0 ) + : false + ; } }, @@ -310,6 +334,9 @@ initialPath: function() { return $module.eq(0).data(metadata.tab) || $tabs.eq(0).data(metadata.tab); }, + path: function() { + return $.address.value(); + }, // adds default tabs to tab path defaultPathArray: function(tabPath) { return module.utils.pathToArray( module.get.defaultPath(tabPath) ); @@ -449,7 +476,7 @@ performance.push({ 'Element' : element, 'Name' : message[0], - 'Arguments' : message[1] || '', + 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); } @@ -577,7 +604,7 @@ noContent : 'The tab you specified is missing a content url.', method : 'The method you called is not defined', state : 'The state library has not been initialized', - missingTab : 'Missing tab: ', + missingTab : 'Tab cannot be found', path : 'History enabled, but no path was specified', recursion : 'Max recursive depth reached' }, diff --git a/node/src/files/overrides/views/card.css b/node/src/files/overrides/views/card.css index 8b83e22c6..92f2642c6 100755 --- a/node/src/files/overrides/views/card.css +++ b/node/src/files/overrides/views/card.css @@ -43,6 +43,7 @@ .ui.cards .card .dimmer, .ui.card .dimmer { background-color: rgba(80, 80, 80, 0.6); + -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; @@ -60,11 +61,6 @@ font-size: 2em; color: #FFFFFF; } - -.ui.cards .card .dimmer .content, -.ui.card .dimmer .content { - -} .ui.cards .card .dimmer .buttons, .ui.card .dimmer .buttons { display: inline-block; diff --git a/node/src/files/stylesheets/semantic.css b/node/src/files/stylesheets/semantic.css index c0c5d4b25..3b8842bb1 100755 --- a/node/src/files/stylesheets/semantic.css +++ b/node/src/files/stylesheets/semantic.css @@ -331,11 +331,11 @@ a:hover { width: auto !important; margin-right: 1em; } -#example .masthead h1 { +#example .masthead.segment h1 { font-size: 5em; color: #FFFFFF; line-height: 1.2; - margin-bottom: 0px; + margin: 0em; padding-bottom: 0px; } #example .masthead strike { diff --git a/src/elements/button.less b/src/elements/button.less index 59da40dd1..b1a6bf97a 100755 --- a/src/elements/button.less +++ b/src/elements/button.less @@ -193,155 +193,6 @@ } -/*-------------- - Error ----------------*/ - -.ui.button.error, -.ui.button.error.hover, -.ui.button.error.down { - cursor: default; - - position: relative !important; - background-color: #D95C5C !important; - color: transparent !important; - text-shadow: none; - - -webkit-transition: all 0s linear; - -moz-transition: all 0s linear; - -o-transition: all 0s linear; - -ms-transition: all 0s linear; - transition: all 0s linear; -} -.ui.button.error .icon { - opacity: 1; - color: #FFFFFF; -} -.ui.button.error:after { - position: absolute; - left: 50%; - content: "Error"; - margin-left: -1.8em; - color: #FFFFFF; - - -webkit-animation: button-text 0.5s; - -moz-animation: button-text 0.5s; - -ms-animation: button-text 0.5s; - -o-animation: button-text 0.5s; - animation: button-text 0.5s; -} -.ui.button.error .icon:before { - font-family: 'Icons'; - content: '\26a0'; -} - -/*-------------- - Success ----------------*/ - -.ui.button.success, -.ui.button.success.hover, -.ui.button.success.down { - position: relative !important; - background-color: #5BBD72 !important; - color: transparent !important; -} -.ui.button.success .icon { - opacity: 1; - color: #FFFFFF; -} -.ui.button.success .icon:before { - font-family: 'Icons'; - content: '\2611'; -} -.ui.button.success:after { - position: absolute; - left: 50%; - content: "Success"; - margin-left: -2em; - color: #FFFFFF; - - -webkit-animation: button-text 0.5s; - -moz-animation: button-text 0.5s; - -ms-animation: button-text 0.5s; - -o-animation: button-text 0.5s; - animation: button-text 0.5s; -} - -@-webkit-keyframes button-text { - 0% { - -webkit-transform: translateY(100%); - opacity: 0; - } - 100% { - opacity: 1; - -webkit-transform: translateY(0); - } -} - -@-moz-keyframes button-text { - 0% { - -moz-transform: translateY(100%); - opacity: 0; - } - 100% { - opacity: 1; - -moz-transform: translateY(0); - } -} - -@keyframes button-text { - 0% { - transform: translateY(100%); - opacity: 0; - } - 100% { - opacity: 1; - transform: translateY(0); - } -} - -/*-------------- - Loading ----------------*/ - -.ui.button.loading, -.ui.button.loading.hover { - position: relative; - cursor: default; - - background-color: #F3F3F3 !important; - color: transparent !important; - text-shadow: none !important; - background-image: none !important; - - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-shadow: none !important; - - -webkit-transition: all 0s linear; - -moz-transition: all 0s linear; - -o-transition: all 0s linear; - -ms-transition: all 0s linear; - transition: all 0s linear; -} -.ui.button.loading:after { - position: absolute; - top: 0em; - left: 0em; - width: 100%; - height: 100%; - content: ''; - background: transparent url(../images/loader-mini.gif) no-repeat 50% 50%; -} - -.ui.labeled.icon.button.loading .icon { - background-color: transparent; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - /*------------------- Disabled --------------------*/ @@ -1130,4 +981,155 @@ -moz-border-radius: 0px 0px 0.3125em 0.3125em; -webkit-border-radius: 0px 0px 0.3125em 0.3125em; border-radius: 0px 0px 0.3125em 0.3125em; +} + + + +/*-------------- + Loading +---------------*/ + +.ui.button.loading, +.ui.button.loading.hover { + position: relative; + cursor: default; + + background-color: #F3F3F3 !important; + color: transparent !important; + text-shadow: none !important; + background-image: none !important; + + -webkit-box-shadow: none !important; + -moz-box-shadow: none !important; + box-shadow: none !important; + + -webkit-transition: all 0s linear; + -moz-transition: all 0s linear; + -o-transition: all 0s linear; + -ms-transition: all 0s linear; + transition: all 0s linear; +} +.ui.button.loading:after { + position: absolute; + top: 0em; + left: 0em; + width: 100%; + height: 100%; + content: ''; + background: transparent url(../images/loader-mini.gif) no-repeat 50% 50%; +} + +.ui.labeled.icon.button.loading .icon { + background-color: transparent; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +/*-------------- + Error +---------------*/ + +.ui.button.error, +.ui.button.error.hover, +.ui.button.error.down { + cursor: default; + + position: relative !important; + background-color: #D95C5C !important; + color: transparent !important; + text-shadow: none; + + -webkit-transition: all 0s linear; + -moz-transition: all 0s linear; + -o-transition: all 0s linear; + -ms-transition: all 0s linear; + transition: all 0s linear; +} +.ui.button.error .icon { + opacity: 1; + color: #FFFFFF; +} +.ui.button.error:after { + position: absolute; + left: 50%; + content: "Error"; + margin-left: -1.8em; + color: #FFFFFF; + + -webkit-animation: button-text 0.5s; + -moz-animation: button-text 0.5s; + -ms-animation: button-text 0.5s; + -o-animation: button-text 0.5s; + animation: button-text 0.5s; +} +.ui.button.error .icon:before { + font-family: 'Icons'; + content: '\26a0'; +} + +/*-------------- + Success +---------------*/ + +.ui.button.success, +.ui.button.success.hover, +.ui.button.success.down { + position: relative !important; + background-color: #5BBD72 !important; + color: transparent !important; +} +.ui.button.success .icon { + opacity: 1; + color: #FFFFFF; +} +.ui.button.success .icon:before { + font-family: 'Icons'; + content: '\2611'; +} +.ui.button.success:after { + position: absolute; + left: 50%; + content: "Success"; + margin-left: -2em; + color: #FFFFFF; + + -webkit-animation: button-text 0.5s; + -moz-animation: button-text 0.5s; + -ms-animation: button-text 0.5s; + -o-animation: button-text 0.5s; + animation: button-text 0.5s; +} + +@-webkit-keyframes button-text { + 0% { + -webkit-transform: translateY(100%); + opacity: 0; + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + } +} + +@-moz-keyframes button-text { + 0% { + -moz-transform: translateY(100%); + opacity: 0; + } + 100% { + opacity: 1; + -moz-transform: translateY(0); + } +} + +@keyframes button-text { + 0% { + transform: translateY(100%); + opacity: 0; + } + 100% { + opacity: 1; + transform: translateY(0); + } } \ No newline at end of file diff --git a/src/modules/accordion.js b/src/modules/accordion.js index 3875be2af..02edd2a6c 100755 --- a/src/modules/accordion.js +++ b/src/modules/accordion.js @@ -329,7 +329,7 @@ $.fn.accordion.settings = { debug : true, verbose : true, - performance : false, + performance : true, exclusive : true, collapsible : true, diff --git a/src/modules/shape.js b/src/modules/shape.js index b6e110f88..9052cc2f1 100755 --- a/src/modules/shape.js +++ b/src/modules/shape.js @@ -40,7 +40,6 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - transitionEnd = 'msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -112,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(transitionEnd + eventNamespace, callback) + .one(module.get.transitionEvent(), callback) ; } else { @@ -138,9 +137,11 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(transitionEnd, function() { + .one(module.get.transitionEvent(), function() { module.debug('Executing queued animation'); - $module.shape(method); + setTimeout(function(){ + $module.shape(method); + }, 0); }) ; }, @@ -175,6 +176,24 @@ $.fn.shape = function(parameters) { get: { + transitionEvent: function() { + var + element = document.createElement('element'), + transitions = { + 'transition' :'transitionend', + 'OTransition' :'oTransitionEnd', + 'MozTransition' :'transitionend', + 'WebkitTransition' :'webkitTransitionEnd' + }, + transition + ; + for(transition in transitions){ + if( element.style[transition] !== undefined ){ + return transitions[transition]; + } + } + }, + nextSide: function() { return ( $activeSide.next(settings.selector.side).size() > 0 ) ? $activeSide.next(settings.selector.side) @@ -501,14 +520,25 @@ $.fn.shape = function(parameters) { return settings[name]; } }, + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, internal: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { - module.verbose('Modifying internal property', name, value); $.extend(true, module, name); } else { - module.verbose('Changing internal method to', value); module[name] = value; } } @@ -537,7 +567,7 @@ $.fn.shape = function(parameters) { } }, error: function() { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); + module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -551,44 +581,42 @@ $.fn.shape = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { diff --git a/src/modules/shape.less b/src/modules/shape.less index a377a914a..af9a4402f 100755 --- a/src/modules/shape.less +++ b/src/modules/shape.less @@ -1,5 +1,18 @@ +/* + * # Semantic Button + * http://github.com/quirkyinc/semantic + * + * + * Copyright 2013 Contributors + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + * Released: April 17 2013 + */ + + /******************************* - Shape + Shape *******************************/ .ui.shape { @@ -27,16 +40,21 @@ backface-visibility: hidden; } -/*--------------- - States -----------------*/ - -/* Standard */ .ui.shape .side { display: none; } -/* Animating */ + + +/******************************* + States +*******************************/ + + +/*-------------- + Animating +---------------*/ + .ui.shape.animating .sides { position: absolute; } @@ -51,7 +69,11 @@ opacity: 0.7; } -/* css animation */ + +/*-------------- + CSS +---------------*/ + .ui.shape.css { -webkit-transition: all 0.6s ease-in-out; @@ -84,7 +106,10 @@ transition: opacity 0.6s ease-in-out; } -/* Active */ +/*-------------- + Active +---------------*/ + .ui.shape .active.side { display: block; } \ No newline at end of file