diff --git a/demo/angularjs/components/uploader/controller.js b/demo/angularjs/components/uploader/controller.js index 3f46f96a94..b710b1d556 100644 --- a/demo/angularjs/components/uploader/controller.js +++ b/demo/angularjs/components/uploader/controller.js @@ -1,4 +1,4 @@ -import { mdiUpload } from 'LumX/icons'; +import { mdiImagePlus } from 'LumX/icons'; ///////////////////////////// @@ -21,7 +21,7 @@ function DemoUploaderController() { * @readonly */ vm.icons = { - mdiUpload, + mdiImagePlus, }; } diff --git a/demo/angularjs/components/uploader/partials/default.html b/demo/angularjs/components/uploader/partials/default.html index a805d48bac..c5a92d6570 100644 --- a/demo/angularjs/components/uploader/partials/default.html +++ b/demo/angularjs/components/uploader/partials/default.html @@ -1,5 +1,8 @@ - - - Pick from - - + diff --git a/demo/angularjs/layout/main-nav/main-nav_controller.js b/demo/angularjs/layout/main-nav/main-nav_controller.js index 40a01536a8..8f301b1425 100644 --- a/demo/angularjs/layout/main-nav/main-nav_controller.js +++ b/demo/angularjs/layout/main-nav/main-nav_controller.js @@ -157,6 +157,10 @@ function MainNavController($state) { label: 'Tooltip', state: 'app.product.components.tooltip', }, + { + label: 'Uploader', + state: 'app.product.components.uploader', + }, { label: 'User block', state: 'app.product.components.user-block', diff --git a/src/components/uploader/angularjs/uploader.html b/src/components/uploader/angularjs/uploader.html index 7ed3ab5ce7..ed4908478a 100644 --- a/src/components/uploader/angularjs/uploader.html +++ b/src/components/uploader/angularjs/uploader.html @@ -1,13 +1,11 @@ -
+
- +
{{ lumx.label }} - -
diff --git a/src/components/uploader/angularjs/uploader_directive.js b/src/components/uploader/angularjs/uploader_directive.js index a0401a6222..5e6e1f8dfc 100644 --- a/src/components/uploader/angularjs/uploader_directive.js +++ b/src/components/uploader/angularjs/uploader_directive.js @@ -26,6 +26,7 @@ function UploaderController() { */ const _DEFAULT_PROPS = { aspectRatio: 'horizontal', + theme: 'light', variant: 'squared', }; @@ -49,16 +50,22 @@ function UploaderController() { classes.push(`${CSS_PREFIX}-uploader--aspect-ratio-${_DEFAULT_PROPS.aspectRatio}`); } + if (angular.isDefined(lumx.size) && lumx.size) { + classes.push(`${CSS_PREFIX}-uploader--size-${lumx.size}`); + } + + if (angular.isDefined(lumx.theme) && lumx.theme) { + classes.push(`${CSS_PREFIX}-uploader--theme-${lumx.theme}`); + } else { + classes.push(`${CSS_PREFIX}-uploader--theme-${_DEFAULT_PROPS.theme}`); + } + if (angular.isDefined(lumx.variant) && lumx.variant) { classes.push(`${CSS_PREFIX}-uploader--variant-${lumx.variant}`); } else { classes.push(`${CSS_PREFIX}-uploader--variant-${_DEFAULT_PROPS.variant}`); } - if (angular.isDefined(lumx.size) && lumx.size) { - classes.push(`${CSS_PREFIX}-uploader--size-${lumx.size}`); - } - return classes; } @@ -83,12 +90,10 @@ function UploaderDirective() { icon: '@?lumxIcon', label: '@?lumxLabel', size: '@?lumxSize', + theme: '@?lumxTheme', variant: '@?lumxVariant', }, template, - transclude: { - action: `${COMPONENT_PREFIX}UploaderAction`, - }, }; } diff --git a/src/components/uploader/style/lumapps/_index.scss b/src/components/uploader/style/lumapps/_index.scss index 0c1df550cd..b2ad9de5e6 100644 --- a/src/components/uploader/style/lumapps/_index.scss +++ b/src/components/uploader/style/lumapps/_index.scss @@ -3,8 +3,45 @@ ========================================================================== */ .#{$lumx-base-prefix}-uploader { + $self: &; + + @include lumx-state-transition; + position: relative; - background-color: lumx-theme-color-variant('dark', 'L5'); + cursor: pointer; + outline: none; + + &--theme-light { + @include lumx-state('state-default', 'emphasis-medium', 'dark'); + + &:hover { + @include lumx-state('state-hover', 'emphasis-medium', 'dark'); + } + + &:active { + @include lumx-state('state-active', 'emphasis-medium', 'dark'); + } + + &[data-focus-visible-added] { + @include lumx-state('state-focus', 'emphasis-medium', 'dark'); + } + } + + &--theme-dark { + @include lumx-state('state-default', 'emphasis-medium', 'light'); + + &:hover { + @include lumx-state('state-hover', 'emphasis-medium', 'light'); + } + + &:active { + @include lumx-state('state-active', 'emphasis-medium', 'light'); + } + + &[data-focus-visible-added] { + @include lumx-state('state-focus', 'emphasis-medium', 'light'); + } + } &--variant-square { border-radius: 0; @@ -28,16 +65,34 @@ flex-direction: column; align-items: center; justify-content: center; + padding: 0 $lumx-spacing-unit * 2; + user-select: none; } &__icon { - margin-bottom: 2px; + margin-bottom: $lumx-spacing-unit; + + #{$self}--theme-light & { + color: lumx-theme-color-variant('dark', 'N'); + } + + #{$self}--theme-dark & { + color: lumx-theme-color-variant('light', 'N'); + } } &__label { @include lumx-typography('subtitle1'); - margin-bottom: $lumx-spacing-unit; + text-align: center; + + #{$self}--theme-light & { + color: lumx-theme-color-variant('dark', 'N'); + } + + #{$self}--theme-dark & { + color: lumx-theme-color-variant('light', 'N'); + } } }