diff --git a/front/core/components/account-number/index.html b/front/core/components/account-number/index.html
index 1035dff89b..ff8bd763af 100644
--- a/front/core/components/account-number/index.html
+++ b/front/core/components/account-number/index.html
@@ -1,8 +1,5 @@
diff --git a/front/core/components/account-number/index.js b/front/core/components/account-number/index.js
index 15f5b0c94b..54380372ca 100644
--- a/front/core/components/account-number/index.js
+++ b/front/core/components/account-number/index.js
@@ -1,15 +1,16 @@
-import Component from '../../lib/component';
+import Textfield from '../textfield/textfield';
+import './style.scss';
import ngModule from '../../module';
-export default class AccountNumber extends Component {
+export default class AccountNumber extends Textfield {
constructor($element, $) {
super($element, $);
this.$ = $;
}
- accountShortToStandard(value) {
- this.accountNumber = value.replace('.', '0'.repeat(11 - value.length));
- this.$.$emit('accountShortToStandard', this.accountNumber);
+ accountShortToStandard() {
+ this.field = this.field.replace('.', '0'.repeat(11 - this.field.length));
+ this.$.$emit('accountShortToStandard', this.field);
}
}
@@ -18,7 +19,4 @@ AccountNumber.$inject = ['$element', '$scope'];
ngModule.vnComponent('vnAccountNumber', {
template: require('./index.html'),
controller: AccountNumber,
- bindings: {
- accountNumber: '<'
- }
});
diff --git a/front/core/components/account-number/style.scss b/front/core/components/account-number/style.scss
new file mode 100644
index 0000000000..d4dcd19ec0
--- /dev/null
+++ b/front/core/components/account-number/style.scss
@@ -0,0 +1,356 @@
+@import "variables";
+
+.vn-field {
+ display: inline-block;
+ box-sizing: border-box;
+ width: 100%;
+
+ & > .container {
+ display: flex;
+ align-items: stretch;
+ position: relative;
+ outline: none;
+
+ & > .infix {
+ position: relative;
+ display: flex;
+ flex: auto;
+ width: 100%;
+ min-width: 0;
+
+ & > label {
+ position: absolute;
+ left: 0;
+ top: 18px;
+ line-height: 20px;
+ pointer-events: none;
+ color: $color-font-bg-marginal;
+ transition-property: top, color, font-size;
+ transition-duration: 400ms;
+ transition-timing-function: cubic-bezier(.4, 0, .2, 1);
+
+ & > .required {
+ display: none;
+ }
+ }
+ & > .fix {
+ padding-top: 24px;
+ line-height: 24px;
+ font-size: 1rem;
+ opacity: 0;
+ transition: opacity 200ms ease-in-out;
+
+ &.prefix {
+ padding-right: 5px;
+ }
+ &.suffix {
+ padding-left: 5px;
+ }
+ }
+ & > .control {
+ height: 100%;
+ flex: auto;
+
+ & > * {
+ padding-top: 24px;
+ padding-bottom: 8px;
+ height: inherit;
+ outline: none;
+ border: none;
+ font-family: Arial, sans-serif;
+ display: block;
+ font-size: 1rem;
+ width: 100%;
+ background: 0;
+ color: inherit;
+ box-sizing: border-box;
+ min-height: 56px;
+ }
+ & > input {
+ position: relative;
+ color: $color-font;
+
+ &::placeholder {
+ color: $color-font-bg-marginal;
+ }
+ &[type=time],
+ &[type=date],
+ &[type=password] {
+ opacity: 0;
+ transition: opacity 200ms ease-in-out;
+ cursor: pointer;
+ }
+ &[type=time],
+ &[type=date] {
+ &::-webkit-inner-spin-button,
+ &::-webkit-clear-button {
+ display: none;
+ -webkit-appearance: none;
+ }
+ &::-webkit-calendar-picker-indicator {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+ opacity: 0;
+ cursor: pointer;
+ }
+ }
+ &[type=number] {
+ -moz-appearance: textfield;
+
+ &::-webkit-outer-spin-button,
+ &::-webkit-inner-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+ }
+ }
+ &:invalid {
+ box-shadow: none;
+ }
+ &:-internal-autofill-selected {
+ &,
+ &:hover,
+ &:focus,
+ &:active,
+ &:valid {
+ box-shadow: 0 0 0 40px $color-bg-panel inset;
+ -webkit-text-fill-color: $color-primary-medium
+ }
+ }
+ }
+ }
+ }
+ & > .prepend,
+ & > .append,
+ & > .icons {
+ display: flex;
+ align-items: center;
+ color: $color-font-bg-marginal;
+ }
+ & > .prepend > prepend,
+ & > .append > append,
+ & > .icons {
+ display: flex;
+ align-items: center;
+
+ & > vn-icon {
+ font-size: 1.5rem;
+ }
+ }
+ & > .prepend > prepend {
+ padding-right: 12px;
+ }
+ & > .icons {
+ &.pre {
+ padding-left: 12px;
+ }
+ & > vn-icon {
+ cursor: pointer;
+ }
+ & > vn-icon[icon=clear] {
+ display: none;
+ }
+ }
+ & > .icons.pre.clearable {
+ min-width: 22px
+ }
+ & > .underline {
+ position: absolute;
+ bottom: 0;
+ content: ' ';
+ pointer-events: none;
+ width: 100%;
+
+ &.blur {
+ border-bottom: 1px solid $color-input-underline;
+ transition: border-color 200ms ease-in-out;
+ }
+ &.focus {
+ height: 2px;
+ background-color: $color-primary;
+ left: 50%;
+ width: 0;
+ transition-property: width, left, background-color;
+ transition-duration: 300ms;
+ transition-timing-function: cubic-bezier(.4, 0, .2, 1);
+ }
+ }
+ }
+ &.dense {
+ & > .hint {
+ display: none;
+ }
+ & > .container > .infix {
+ & > label {
+ top: 8px;
+ }
+ & > .control > * {
+ padding-top: 8px;
+ min-height: 40px;
+ }
+ }
+ &.not-empty,
+ &.focused,
+ &.invalid {
+ & > .container > .infix > label {
+ top: 0;
+ line-height: 8px;
+ }
+ }
+ }
+ &.standout {
+ border-radius: 1px;
+ background-color: rgba(161, 161, 161, 0.1);
+ padding: 0 12px;
+ transition-property: background-color, color;
+ transition-duration: 200ms;
+ transition-timing-function: ease-in-out;
+
+ & > .container {
+ & > .underline {
+ display: none;
+ }
+ & > .infix > .control > input {
+ &:-internal-autofill-selected {
+ &,
+ &:hover,
+ &:active,
+ &:valid {
+ box-shadow: 0 0 0 40px #474747 inset;
+ -webkit-text-fill-color: $color-font-dark
+ }
+ }
+ }
+ & > .infix > .control > * {
+ color: $color-font-dark;
+
+ &::placeholder {
+ color: $color-font-bg-dark;
+ }
+ }
+ & > .prepend,
+ & > .append,
+ & > .icons {
+ color: $color-font-bg-dark-marginal;
+ }
+ }
+ &.focused {
+ background-color: $color-font-dark;
+
+ & > .container {
+ & > .infix > .control > input {
+ &:-internal-autofill-selected {
+ &,
+ &:hover,
+ &:active,
+ &:valid {
+ box-shadow: 0 0 0 40px $color-font-dark inset;
+ -webkit-text-fill-color: $color-font-bg
+ }
+ }
+ }
+ & > .infix > .control > * {
+ color: $color-marginal;
+
+ &::placeholder {
+ color: $color-font-bg;
+ }
+ }
+ & > .prepend,
+ & > .append,
+ & > .icons {
+ color: $color-marginal;
+ }
+ }
+ }
+ }
+ &.not-empty,
+ &.focused,
+ &.invalid {
+ & > .container > .infix {
+ & > label {
+ top: 5px;
+ color: $color-primary;
+ padding: 0;
+ font-size: .75rem;
+ }
+ & > .control > * {
+ &[type=time],
+ &[type=date],
+ &[type=password] {
+ opacity: 1;
+ }
+ }
+ }
+ }
+ &.has-icons,
+ &.not-empty:hover,
+ &.not-empty.focused {
+ & > .container {
+ & > .append > append {
+ padding-left: 0;
+ }
+ & > .icons.pre {
+ padding-left: 12px;
+ }
+ }
+ }
+ &:not(.disabled):not(.readonly) {
+ &.focused > .container > .underline.focus {
+ left: 0;
+ width: 100%;
+ }
+ & > .container:hover > .underline.blur {
+ border-color: $color-input-underline-hover;
+ }
+ &.not-empty:hover,
+ &.not-empty.focused {
+ & > .container > .icons > vn-icon[icon=clear] {
+ display: initial;
+ }
+ }
+ }
+ &.readonly > .container {
+ & > .infix > .control > * {
+ caret-color: transparent;
+ }
+ & > .underline.blur {
+ border-bottom-style: dashed;
+ }
+ }
+ & > .hint {
+ padding: 4px 0;
+ height: 12px;
+ color: rgba(0, 0, 0, .4);
+ font-size: .75rem;
+ transform: translateY(-12px);
+ transition-property: opacity, transform, color;
+ transition-duration: 200ms;
+ transition-timing-function: ease-in-out;
+ opacity: 0;
+ visibility: hidden;
+
+ &.filled {
+ opacity: 1;
+ transform: translateY(0);
+ visibility: visible;
+ }
+ }
+ &.invalid {
+ & > .container {
+ & > .infix > label {
+ color: $color-alert;
+ }
+ & > .underline.focus {
+ background-color: $color-alert;
+ }
+ & > .underline.blur {
+ border-bottom-color: $color-alert;
+ opacity: 1;
+ }
+ }
+ & > .hint {
+ color: $color-alert;
+ }
+ }
+}
diff --git a/modules/supplier/front/fiscal-data/index.html b/modules/supplier/front/fiscal-data/index.html
index dbd45d09b1..3fe60a99a9 100644
--- a/modules/supplier/front/fiscal-data/index.html
+++ b/modules/supplier/front/fiscal-data/index.html
@@ -58,16 +58,12 @@
-
-
+ ng-model="$ctrl.supplier.account">
+