diff --git a/docs/src/pages/components/Progress.vue b/docs/src/pages/components/Progress.vue index fab2713..f0767be 100644 --- a/docs/src/pages/components/Progress.vue +++ b/docs/src/pages/components/Progress.vue @@ -23,9 +23,15 @@ - empty - Type - Description + md-indeterminate + Boolean + Enable the indeterminate state. Default false + + + + md-progress + Number + Define the current progress of the progress. Default 0 @@ -35,24 +41,56 @@
- +
+ + + +
+ + Restart
- + <md-progress :md-progress="progress"></md-progress> + <md-progress class="md-accent" :md-progress="progress"></md-progress> + <md-progress class="md-warn" :md-progress="progress"></md-progress>
- +
+ + + +
+ <md-progress md-indeterminate></md-progress> + <md-progress class="md-accent" md-indeterminate></md-progress> + <md-progress class="md-warn" md-indeterminate></md-progress> + +
+
+ +
+
+ + + +
+
+ +
+ + <md-progress md-theme="orange" md-indeterminate></md-progress> + <md-progress md-theme="green" :md-progress="progress"></md-progress> + <md-progress md-theme="purple" md-indeterminate></md-progress>
@@ -62,19 +100,49 @@ diff --git a/src/components/mdProgress/mdProgress.scss b/src/components/mdProgress/mdProgress.scss index b1efbfc..792a9b0 100644 --- a/src/components/mdProgress/mdProgress.scss +++ b/src/components/mdProgress/mdProgress.scss @@ -1,5 +1,84 @@ @import '../../core/stylesheets/variables.scss'; .md-progress { + width: 100%; + height: 4px; + position: relative; + overflow: hidden; + transition: $swift-ease-out; + &.md-indeterminate .md-progress-track { + right: 0; + + &:before, + &:after { + position: absolute; + top: 0; + bottom: 0; + left: 0; + will-change: left, right; + content: ''; + } + + &:before { + animation: progress-indeterminate 2.3s cubic-bezier(.65, .815, .735, .395) infinite; + } + + &:after { + animation: progress-indeterminate-short 2.3s cubic-bezier(.165, .84, .44, 1) infinite; + animation-delay: 1.15s; + } + } + + &.md-progress-enter, + &.md-progress-leave-active { + opacity: 0; + transform: scaleY(0) translateZ(0); + } + + &.md-progress-enter-active { + transform: scaleY(1) translateZ(0); + } +} + +.md-progress-track { + position: absolute; + top: 0; + bottom: 0; + left: 0; + transition: $swift-ease-out; +} + +@keyframes progress-indeterminate { + 0% { + right: 100%; + left: -35%; + } + + 60% { + right: -100%; + left: 100%; + } + + 100% { + right: -100%; + left: 100%; + } +} + +@keyframes progress-indeterminate-short { + 0% { + right: 100%; + left: -200%; + } + + 60% { + right: -8%; + left: 107%; + } + + 100% { + right: -8%; + left: 107%; + } } diff --git a/src/components/mdProgress/mdProgress.theme b/src/components/mdProgress/mdProgress.theme index d3192a0..a1c3d5c 100644 --- a/src/components/mdProgress/mdProgress.theme +++ b/src/components/mdProgress/mdProgress.theme @@ -1,5 +1,46 @@ .THEME_NAME { &.md-progress { + background-color: #{'PRIMARY-COLOR-0.38'}; + &:not(.md-indeterminate) .md-progress-track { + background-color: #{'PRIMARY-COLOR'}; + } + + .md-progress-track { + &:after, + &:before { + background-color: #{'PRIMARY-COLOR'}; + } + } + + &.md-accent { + background-color: #{'ACCENT-COLOR-0.38'}; + + &:not(.md-indeterminate) .md-progress-track { + background-color: #{'ACCENT-COLOR'}; + } + + .md-progress-track { + &:after, + &:before { + background-color: #{'ACCENT-COLOR'}; + } + } + } + + &.md-warn { + background-color: #{'WARN-COLOR-0.38'}; + + &:not(.md-indeterminate) .md-progress-track { + background-color: #{'WARN-COLOR'}; + } + + .md-progress-track { + &:after, + &:before { + background-color: #{'WARN-COLOR'}; + } + } + } } } diff --git a/src/components/mdProgress/mdProgress.vue b/src/components/mdProgress/mdProgress.vue index 8b27a3e..4c0a715 100644 --- a/src/components/mdProgress/mdProgress.vue +++ b/src/components/mdProgress/mdProgress.vue @@ -1,6 +1,7 @@ @@ -12,26 +13,26 @@ export default { props: { - + mdIndeterminate: Boolean, + mdProgress: { + type: Number, + default: 0 + } }, mixins: [theme], computed: { classes() { return { - + 'md-indeterminate': this.mdIndeterminate }; }, styles() { - return { - - }; + if (!this.mdIndeterminate) { + return { + width: this.mdProgress + '%' + }; + } } - }, - data: () => ({ - - }), - methods: { - } }; diff --git a/src/components/mdSpinner/mdSpinner.theme b/src/components/mdSpinner/mdSpinner.theme index ad8abf4..25f5cb9 100644 --- a/src/components/mdSpinner/mdSpinner.theme +++ b/src/components/mdSpinner/mdSpinner.theme @@ -1,18 +1,18 @@ .THEME_NAME { &.md-spinner { .md-spinner-path { - stroke: #{'PRIMARY-COLOR'} + stroke: #{'PRIMARY-COLOR'}; } &.md-accent { .md-spinner-path { - stroke: #{'ACCENT-COLOR'} + stroke: #{'ACCENT-COLOR'}; } } &.md-warn { .md-spinner-path { - stroke: #{'WARN-COLOR'} + stroke: #{'WARN-COLOR'}; } } } diff --git a/src/components/mdSpinner/mdSpinner.vue b/src/components/mdSpinner/mdSpinner.vue index 8ef1c6d..0262f40 100644 --- a/src/components/mdSpinner/mdSpinner.vue +++ b/src/components/mdSpinner/mdSpinner.vue @@ -57,12 +57,6 @@ return `${progress}, 200`; } - }, - data: () => ({ - - }), - methods: { - } };