diff --git a/docs/src/App.vue b/docs/src/App.vue index cb3ffed..5e87f18 100644 --- a/docs/src/App.vue +++ b/docs/src/App.vue @@ -75,6 +75,10 @@ Icon + + Image Loader + + Input diff --git a/docs/src/assets/avatar.jpg b/docs/src/assets/avatar.jpg index bfcbeff..cff854b 100644 Binary files a/docs/src/assets/avatar.jpg and b/docs/src/assets/avatar.jpg differ diff --git a/docs/src/assets/card-example.jpg b/docs/src/assets/card-example.jpg index f83e3fe..ad5cc4e 100644 Binary files a/docs/src/assets/card-example.jpg and b/docs/src/assets/card-example.jpg differ diff --git a/docs/src/assets/card-sky.jpg b/docs/src/assets/card-sky.jpg index 4c07815..4f8e324 100644 Binary files a/docs/src/assets/card-sky.jpg and b/docs/src/assets/card-sky.jpg differ diff --git a/docs/src/assets/cover.png b/docs/src/assets/cover.png index 0f7a19d..691a817 100644 Binary files a/docs/src/assets/cover.png and b/docs/src/assets/cover.png differ diff --git a/docs/src/assets/favicon/mstile-150x150.png b/docs/src/assets/favicon/mstile-150x150.png index 27bb1f5..fc52e99 100644 Binary files a/docs/src/assets/favicon/mstile-150x150.png and b/docs/src/assets/favicon/mstile-150x150.png differ diff --git a/docs/src/assets/joker-1.jpg b/docs/src/assets/joker-1.jpg new file mode 100644 index 0000000..5d970c9 Binary files /dev/null and b/docs/src/assets/joker-1.jpg differ diff --git a/docs/src/assets/joker-2.jpg b/docs/src/assets/joker-2.jpg new file mode 100644 index 0000000..b44b508 Binary files /dev/null and b/docs/src/assets/joker-2.jpg differ diff --git a/docs/src/assets/joker-3.jpg b/docs/src/assets/joker-3.jpg new file mode 100644 index 0000000..0bda0e2 Binary files /dev/null and b/docs/src/assets/joker-3.jpg differ diff --git a/docs/src/pages/components/ImageLoader.vue b/docs/src/pages/components/ImageLoader.vue new file mode 100644 index 0000000..870f522 --- /dev/null +++ b/docs/src/pages/components/ImageLoader.vue @@ -0,0 +1,103 @@ + + + diff --git a/docs/src/routes.js b/docs/src/routes.js index bebeb8c..95d7a8d 100644 --- a/docs/src/routes.js +++ b/docs/src/routes.js @@ -15,6 +15,7 @@ const Checkbox = (resolve) => require(['./pages/components/Checkbox'], resolve); const Chips = (resolve) => require(['./pages/components/Chips'], resolve); const Dialog = (resolve) => require(['./pages/components/Dialog'], resolve); const Icon = (resolve) => require(['./pages/components/Icon'], resolve); +const ImageLoader = (resolve) => require(['./pages/components/ImageLoader'], resolve); const InkRipple = (resolve) => require(['./pages/components/InkRipple'], resolve); const Input = (resolve) => require(['./pages/components/Input'], resolve); const List = (resolve) => require(['./pages/components/List'], resolve); @@ -114,6 +115,11 @@ const components = [ name: 'components:icon', component: Icon }, + { + path: '/components/image-loader', + name: 'components:image-loader', + component: ImageLoader + }, { path: '/components/ink-ripple', name: 'components:ink-ripple', diff --git a/src/components/mdCard/mdCardMediaCover.vue b/src/components/mdCard/mdCardMediaCover.vue index ce9a6dc..e99dddc 100644 --- a/src/components/mdCard/mdCardMediaCover.vue +++ b/src/components/mdCard/mdCardMediaCover.vue @@ -6,40 +6,7 @@ diff --git a/src/components/mdTabs/mdTabs.vue b/src/components/mdTabs/mdTabs.vue index 807f440..c68a109 100644 --- a/src/components/mdTabs/mdTabs.vue +++ b/src/components/mdTabs/mdTabs.vue @@ -134,10 +134,11 @@ return idList.indexOf(id); }, calculateIndicatorPos() { - if (this.$refs.tabHeader) { + let activeTab = this.$refs.tabHeader && this.$refs.tabHeader[this.activeTabNumber]; + + if (activeTab) { let tabsWidth = this.$el.offsetWidth; - let activeTab = this.$refs.tabHeader[this.activeTabNumber]; - let left = activeTab ? activeTab.offsetLeft : 0; + let left = activeTab.offsetLeft; let right = tabsWidth - left - activeTab.offsetWidth; this.$refs.indicator.style.left = left + 'px'; diff --git a/src/core/stylesheets/base.scss b/src/core/stylesheets/base.scss index 433c0bc..811abb2 100644 --- a/src/core/stylesheets/base.scss +++ b/src/core/stylesheets/base.scss @@ -44,9 +44,12 @@ canvas, video, iframe { max-width: 100%; - height: auto; font-style: italic; vertical-align: middle; + + &:not(.md-image) { + height: auto; + } } diff --git a/src/core/utils/getImageLightness.js b/src/core/utils/getImageLightness.js new file mode 100644 index 0000000..1aa7e29 --- /dev/null +++ b/src/core/utils/getImageLightness.js @@ -0,0 +1,36 @@ +const getImageLightness = (image, onLoad) => { + let canvas = document.createElement('canvas'); + + image.onload = function() { + let colorSum = 0; + let ctx; + let imageData; + let imageMetadata; + let r; + let g; + let b; + let average; + + canvas.width = this.width; + canvas.height = this.height; + ctx = canvas.getContext('2d'); + + ctx.drawImage(this, 0, 0); + + imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); + imageMetadata = imageData.data; + + for (let x = 0, len = imageMetadata.length; x < len; x += 4) { + r = imageMetadata[x]; + g = imageMetadata[x + 1]; + b = imageMetadata[x + 2]; + + average = Math.floor((r + g + b) / 3); + colorSum += average; + } + + onLoad(Math.floor(colorSum / (this.width * this.height))); + }; +}; + +export default getImageLightness; diff --git a/src/index.js b/src/index.js index a280e5c..99f21e7 100644 --- a/src/index.js +++ b/src/index.js @@ -10,6 +10,7 @@ import MdChips from './components/mdChips'; import MdDialog from './components/mdDialog'; import MdDivider from './components/mdDivider'; import MdIcon from './components/mdIcon'; +import MdImage from './components/mdImage'; import MdInputContainer from './components/mdInputContainer'; import MdLayout from './components/mdLayout'; import MdList from './components/mdList'; @@ -40,6 +41,7 @@ const options = { MdDialog, MdDivider, MdIcon, + MdImage, MdInputContainer, MdLayout, MdList,