diff --git a/src/resources/js/app.js b/src/resources/js/app.js --- a/src/resources/js/app.js +++ b/src/resources/js/app.js @@ -82,18 +82,16 @@ let feedback = $('
').text(msg_text) - if (input.is('.listinput')) { + if (input.is('.list-input')) { // List input widget - let list = input.next('.listinput-widget') - - list.children(':not(:first-child)').each((index, element) => { + input.children(':not(:first-child)').each((index, element) => { if (msg[index]) { $(element).find('input').addClass('is-invalid') } }) - list.addClass('is-invalid').next('.invalid-feedback').remove() - list.after(feedback) + input.addClass('is-invalid').next('.invalid-feedback').remove() + input.after(feedback) } else { // Standard form element diff --git a/src/resources/js/fontawesome.js b/src/resources/js/fontawesome.js --- a/src/resources/js/fontawesome.js +++ b/src/resources/js/fontawesome.js @@ -13,6 +13,7 @@ faInfoCircle, faLock, faKey, + faPlus, faSignInAlt, faSyncAlt, faTrashAlt, @@ -30,6 +31,7 @@ faInfoCircle, faLock, faKey, + faPlus, faSignInAlt, faSquare, faSyncAlt, diff --git a/src/resources/sass/app.scss b/src/resources/sass/app.scss --- a/src/resources/sass/app.scss +++ b/src/resources/sass/app.scss @@ -79,11 +79,7 @@ font-weight: bold; } -.listinput { - display: none; -} - -.listinput-widget { +.list-input { & > div { &:not(:last-child) { margin-bottom: -1px; @@ -103,6 +99,10 @@ } } } + + input.is-invalid { + z-index: 2; + } } .range-input { diff --git a/src/resources/vue/User/Info.vue b/src/resources/vue/User/Info.vue --- a/src/resources/vue/User/Info.vue +++ b/src/resources/vue/User/Info.vue @@ -31,9 +31,9 @@
- +
- +
@@ -147,7 +147,12 @@ diff --git a/src/resources/vue/Widgets/ListInput.vue b/src/resources/vue/Widgets/ListInput.vue new file mode 100644 --- /dev/null +++ b/src/resources/vue/Widgets/ListInput.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/tests/Browser/Components/ListInput.php b/src/tests/Browser/Components/ListInput.php --- a/src/tests/Browser/Components/ListInput.php +++ b/src/tests/Browser/Components/ListInput.php @@ -22,7 +22,7 @@ */ public function selector() { - return $this->selector . ' + .listinput-widget'; + return $this->selector; } /** @@ -34,13 +34,9 @@ */ public function assert($browser) { -// $list = explode("\n", $browser->value($this->selector)); - - $browser->waitFor($this->selector()) - ->assertMissing($this->selector) + $browser->assertVisible($this->selector()) ->assertVisible('@input') ->assertVisible('@add-btn'); -// ->assertListInputValue($list); } /** diff --git a/src/tests/Browser/UsersTest.php b/src/tests/Browser/UsersTest.php --- a/src/tests/Browser/UsersTest.php +++ b/src/tests/Browser/UsersTest.php @@ -142,7 +142,7 @@ ->assertValue('div.row:nth-child(4) input[type=text]', 'john@kolab.org') ->assertDisabled('div.row:nth-child(4) input[type=text]') ->assertSeeIn('div.row:nth-child(5) label', 'Email aliases') - ->assertVisible('div.row:nth-child(5) .listinput-widget') + ->assertVisible('div.row:nth-child(5) .list-input') ->with(new ListInput('#aliases'), function (Browser $browser) { $browser->assertListInputValue(['john.doe@kolab.org']) ->assertValue('@input', ''); @@ -343,7 +343,7 @@ ->assertValue('div.row:nth-child(3) input[type=text]', '') ->assertEnabled('div.row:nth-child(3) input[type=text]') ->assertSeeIn('div.row:nth-child(4) label', 'Email aliases') - ->assertVisible('div.row:nth-child(4) .listinput-widget') + ->assertVisible('div.row:nth-child(4) .list-input') ->with(new ListInput('#aliases'), function (Browser $browser) { $browser->assertListInputValue([]) ->assertValue('@input', '');