diff --git a/e2e/helpers/extensions.js b/e2e/helpers/extensions.js index 2484728f4..5ab02cfea 100644 --- a/e2e/helpers/extensions.js +++ b/e2e/helpers/extensions.js @@ -125,7 +125,7 @@ let actions = { let $state = angular.element(document.body).injector().get('$state'); return !$state.transition && $state.is(state); }, {}, state); - await this.waitForSpinnerLoad(state); + await this.waitForSpinnerLoad(); }, waitForTransition: async function() { @@ -133,6 +133,7 @@ let actions = { const $state = angular.element(document.body).injector().get('$state'); return !$state.transition; }); + await this.waitForSpinnerLoad(); }, accessToSection: async function(state) { @@ -142,7 +143,11 @@ let actions = { }, state); if (nested) { - await this.waitToClick('vn-left-menu vn-item-section > vn-icon[icon=keyboard_arrow_down]'); + let selector = 'vn-left-menu vn-item-section > vn-icon[icon=keyboard_arrow_down]'; + await this.evaluate(selector => { + document.querySelector(selector).scrollIntoViewIfNeeded(); + }, selector); + await this.waitToClick(selector); await this.wait('vn-left-menu .expanded'); } @@ -167,11 +172,17 @@ let actions = { await this.waitToClick(`vn-left-menu li > a[ui-sref="${sectionRoute}"]`); }, - accessToSearchResult: async function(searchValue) { + doSearch: async function(searchValue) { await this.clearInput('vn-searchbar'); - await this.write('vn-searchbar', searchValue); + if (searchValue) + await this.write('vn-searchbar', searchValue); + await this.waitToClick('vn-searchbar vn-icon[icon="search"]'); await this.waitForTransition(); + }, + + accessToSearchResult: async function(searchValue) { + await this.doSearch(searchValue); await this.waitFor('.vn-descriptor'); }, @@ -228,6 +239,11 @@ let actions = { await this.waitForTextInField(selector, text); }, + overwrite: async function(selector, text) { + await this.clearInput(selector); + await this.write(selector, text); + }, + waitToClick: async function(selector) { await this.waitForSelector(selector); await this.waitForFunction(checkVisibility, {}, selector); @@ -546,7 +562,7 @@ let actions = { }, waitForContentLoaded: async function() { - // await this.waitFor(250); + await this.waitForSpinnerLoad(); } }; diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 826f5b6ec..4e94c73ff 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -178,12 +178,11 @@ export default { }, clientBalance: { - balanceButton: 'vn-left-menu a[ui-sref="client.card.balance.index"]', company: 'vn-client-balance-index vn-autocomplete[ng-model="$ctrl.companyId"]', newPaymentButton: `vn-float-button`, newPaymentBank: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.receipt.bankFk"]', newPaymentAmount: '.vn-dialog.shown vn-input-number[ng-model="$ctrl.receipt.amountPaid"]', - saveButton: '.vn-dialog.shown vn-button[label="Save"]', + saveButton: '.vn-dialog.shown [response="accept"]', firstBalanceLine: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(8)' }, @@ -373,7 +372,7 @@ export default { payoutButton: 'vn-ticket-index vn-button[icon="icon-recovery"]', payoutCompany: '.vn-dialog vn-autocomplete[ng-model="$ctrl.receipt.companyFk"]', payoutBank: '.vn-dialog vn-autocomplete[ng-model="$ctrl.receipt.bankFk"]', - submitPayout: '.vn-dialog vn-button[label="Save"]', + submitPayout: '.vn-dialog button[response="accept"]', searchWeeklyResult: 'vn-ticket-weekly-index vn-table vn-tbody > vn-tr', searchResultDate: 'vn-ticket-summary [label=Landed] span', topbarSearch: 'vn-searchbar', @@ -545,8 +544,8 @@ export default { firstPrice: 'vn-ticket-service vn-horizontal:nth-child(1) vn-input-number[ng-model="service.price"]', firstVatType: 'vn-ticket-service vn-autocomplete[label="Tax class"]', fistDeleteServiceButton: 'vn-ticket-service form vn-horizontal:nth-child(1) vn-icon-button[icon="delete"]', - newServiceTypeName: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.newServiceType.name"]', - newServiceTypeExpense: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.newServiceType.expenseFk"]', + newServiceTypeName: '.vn-dialog.shown vn-textfield[ng-model="newServiceType.name"]', + newServiceTypeExpense: '.vn-dialog.shown vn-autocomplete[ng-model="newServiceType.expenseFk"]', serviceLine: 'vn-ticket-service > form > vn-card > vn-one:nth-child(2) > vn-horizontal', saveServiceButton: 'button[type=submit]', saveServiceTypeButton: '.vn-dialog.shown tpl-buttons > button' diff --git a/e2e/paths/02-client/01_create_client.spec.js b/e2e/paths/02-client/01_create_client.spec.js index 0b8c96c16..2efd10d2b 100644 --- a/e2e/paths/02-client/01_create_client.spec.js +++ b/e2e/paths/02-client/01_create_client.spec.js @@ -15,9 +15,7 @@ describe('Client create path', async() => { }); it(`should search for the user Carol Danvers to confirm it isn't created yet`, async() => { - await page.write(selectors.clientsIndex.topbarSearch, 'Carol Danvers'); - await page.waitToClick(selectors.clientsIndex.searchButton); - await page.waitForNumberOfElements(selectors.clientsIndex.searchResult, 0); + await page.doSearch('Carol Danvers'); const result = await page.countElement(selectors.clientsIndex.searchResult); expect(result).toEqual(0); diff --git a/e2e/paths/02-client/04_edit_billing_data.spec.js b/e2e/paths/02-client/04_edit_billing_data.spec.js index b757940be..b02c87de0 100644 --- a/e2e/paths/02-client/04_edit_billing_data.spec.js +++ b/e2e/paths/02-client/04_edit_billing_data.spec.js @@ -60,7 +60,6 @@ describe('Client Edit billing data path', () => { }); it(`should save the form with all its new data`, async() => { - await page.waitFor(3000); await page.waitForWatcherData(selectors.clientBillingData.watcher); await page.waitToClick(selectors.clientBillingData.saveButton); let snackbarMessage = await page.waitForLastSnackbar(); diff --git a/e2e/paths/02-client/07_edit_web_access.spec.js b/e2e/paths/02-client/07_edit_web_access.spec.js index f9b023716..cbcc8723d 100644 --- a/e2e/paths/02-client/07_edit_web_access.spec.js +++ b/e2e/paths/02-client/07_edit_web_access.spec.js @@ -27,10 +27,8 @@ describe('Client Edit web access path', () => { }); it('should confirm web access is now unchecked', async() => { - await page.waitToClick(selectors.clientBasicData.basicDataButton); - await page.wait(selectors.clientBasicData.name); - await page.waitToClick(selectors.clientsIndex.othersButton); - await page.waitToClick(selectors.clientWebAccess.webAccessButton); + await page.accessToSection('client.card.basicData'); + await page.accessToSection('client.card.webAccess'); const result = await page.checkboxState(selectors.clientWebAccess.enableWebAccessCheckbox); expect(result).toBe('unchecked'); diff --git a/e2e/paths/02-client/13_log.spec.js b/e2e/paths/02-client/13_log.spec.js index fc4b98b8b..338083d8b 100644 --- a/e2e/paths/02-client/13_log.spec.js +++ b/e2e/paths/02-client/13_log.spec.js @@ -26,8 +26,7 @@ describe('Client log path', () => { }); it('should navigate to the log section', async() => { - await page.waitToClick(selectors.clientLog.logButton); - await page.waitForState('client.card.log'); + await page.accessToSection('client.card.log'); }); it('should check the previous value of the last logged change', async() => { diff --git a/e2e/paths/02-client/14_balance.spec.js b/e2e/paths/02-client/14_balance.spec.js index 87dc84a8e..cfa72c024 100644 --- a/e2e/paths/02-client/14_balance.spec.js +++ b/e2e/paths/02-client/14_balance.spec.js @@ -67,9 +67,7 @@ describe('Client balance path', () => { it('should create a new payment that sets the balance to positive value', async() => { await page.waitToClick(selectors.clientBalance.newPaymentButton); - await page.waitFor(3000); // didn't manage to make this dynamic to allow clearInput to find the icon clear... :( - await page.clearInput(selectors.clientBalance.newPaymentAmount); - await page.write(selectors.clientBalance.newPaymentAmount, '100'); + await page.overwrite(selectors.clientBalance.newPaymentAmount, '100'); await page.waitToClick(selectors.clientBalance.saveButton); let result = await page.waitForLastSnackbar(); @@ -85,10 +83,7 @@ describe('Client balance path', () => { it('should create a new payment that sets the balance back to the original negative value', async() => { await page.waitToClick(selectors.clientBalance.newPaymentButton); - await page.waitFor(3000); // didn't manage to make this dynamic to allow clearInput to find the icon clear... :( - await page.waitForSelector('.vn-dialog.vn-popup.shown', {visible: true}); - await page.clearInput(selectors.clientBalance.newPaymentAmount); - await page.write(selectors.clientBalance.newPaymentAmount, '-150'); + await page.overwrite(selectors.clientBalance.newPaymentAmount, '-150'); await page.waitToClick(selectors.clientBalance.saveButton); let result = await page.waitForLastSnackbar(); @@ -113,8 +108,7 @@ describe('Client balance path', () => { it('should now search for the user Petter Parker', async() => { await page.accessToSearchResult('Petter Parker'); - await page.waitToClick(selectors.clientBalance.balanceButton); - await page.waitForState('client.card.balance.index'); + await page.accessToSection('client.card.balance.index'); }); it('should not be able to click the new payment button as it isnt present', async() => { diff --git a/e2e/paths/02-client/15_user_config.spec.js b/e2e/paths/02-client/15_user_config.spec.js index 89d4e004a..2d412377a 100644 --- a/e2e/paths/02-client/15_user_config.spec.js +++ b/e2e/paths/02-client/15_user_config.spec.js @@ -16,7 +16,6 @@ describe('User config', () => { describe('as salesPerson', () => { it('should login', async() => { await page.login('salesPerson'); - await page.waitForContentLoaded(); }); it('should now open the user config form to check the settings', async() => { @@ -26,7 +25,6 @@ describe('User config', () => { let expectedLocalWarehouse = await page .expectPropertyValue(selectors.globalItems.userLocalWarehouse, 'value', ''); - let expectedLocalBank = await page .expectPropertyValue(selectors.globalItems.userLocalBank, 'value', ''); @@ -50,7 +48,6 @@ describe('User config', () => { describe('as employee', () => { it('should log in', async() => { await page.login('employee'); - await page.waitForContentLoaded(); }); it('should open the user config form to check the settings', async() => { @@ -59,7 +56,6 @@ describe('User config', () => { let expectedLocalWarehouse = await page .expectPropertyValue(selectors.globalItems.userLocalWarehouse, 'value', ''); - let expectedLocalBank = await page .expectPropertyValue(selectors.globalItems.userLocalBank, 'value', ''); @@ -92,7 +88,6 @@ describe('User config', () => { describe('as salesPerson 2nd run', () => { it('should log in once more', async() => { await page.login('salesPerson'); - await page.waitForContentLoaded(); }); it('should again open the user config form to check the local settings', async() => { diff --git a/e2e/paths/04-item/01_summary.spec.js b/e2e/paths/04-item/01_summary.spec.js index 6f2c2c926..7658cb752 100644 --- a/e2e/paths/04-item/01_summary.spec.js +++ b/e2e/paths/04-item/01_summary.spec.js @@ -15,14 +15,14 @@ describe('Item summary path', () => { }); it('should search for an item', async() => { - await page.clearInput(selectors.itemsIndex.topbarSearch); - await page.write(selectors.itemsIndex.topbarSearch, 'Ranged weapon'); - await page.waitToClick(selectors.itemsIndex.searchButton); - await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 3); + await page.doSearch('Ranged weapon'); + const nResults = await page.countElement(selectors.itemsIndex.searchResult); + await page.waitForTextInElement(selectors.itemsIndex.searchResult, 'Ranged weapon'); await page.waitToClick(selectors.itemsIndex.firstResultPreviewButton); const isVisible = await page.isVisible(selectors.itemSummary.basicData); + expect(nResults).toBe(3); expect(isVisible).toBeTruthy(); }); @@ -67,12 +67,13 @@ describe('Item summary path', () => { }); it('should search for other item', async() => { - await page.clearInput('vn-searchbar'); - await page.write(selectors.itemsIndex.topbarSearch, 'Melee Reinforced'); - await page.keyboard.press('Enter'); - await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 2); + await page.doSearch('Melee Reinforced'); + const nResults = await page.countElement(selectors.itemsIndex.searchResult); + await page.waitToClick(selectors.itemsIndex.firstResultPreviewButton); await page.waitForSelector(selectors.itemSummary.basicData, {visible: true}); + + expect(nResults).toBe(2); }); it(`should now check the item summary preview shows fields from basic data`, async() => { diff --git a/e2e/paths/04-item/08_create_and_clone.spec.js b/e2e/paths/04-item/08_create_and_clone.spec.js index 73249a0b9..8fa40ed82 100644 --- a/e2e/paths/04-item/08_create_and_clone.spec.js +++ b/e2e/paths/04-item/08_create_and_clone.spec.js @@ -16,13 +16,10 @@ describe('Item Create/Clone path', () => { describe('create', () => { it(`should search for the item Infinity Gauntlet to confirm it isn't created yet`, async() => { - await page.clearInput(selectors.itemsIndex.topbarSearch); - await page.write(selectors.itemsIndex.topbarSearch, 'Infinity Gauntlet'); - await page.waitToClick(selectors.itemsIndex.searchButton); - await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 0); - const result = await page.countElement(selectors.itemsIndex.searchResult); + await page.doSearch('Infinity Gauntlet'); + const nResults = await page.countElement(selectors.itemsIndex.searchResult); - expect(result).toEqual(0); + expect(nResults).toEqual(0); }); it('should access to the create item view by clicking the create floating button', async() => { @@ -85,13 +82,10 @@ describe('Item Create/Clone path', () => { }); it(`should search for the item Infinity Gauntlet`, async() => { - await page.clearInput(selectors.itemsIndex.topbarSearch); - await page.write(selectors.itemsIndex.topbarSearch, 'Infinity Gauntlet'); - await page.waitToClick(selectors.itemsIndex.searchButton); - await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 1); - const result = await page.countElement(selectors.itemsIndex.searchResult); + await page.doSearch('Infinity Gauntlet'); + const nResults = await page.countElement(selectors.itemsIndex.searchResult); - expect(result).toEqual(1); + expect(nResults).toEqual(1); }); it(`should clone the Infinity Gauntlet`, async() => { @@ -102,14 +96,10 @@ describe('Item Create/Clone path', () => { }); it('should search for the item Infinity Gauntlet and find two', async() => { - await page.waitToClick(selectors.itemTags.goToItemIndexButton); - await page.clearInput(selectors.itemsIndex.topbarSearch); - await page.write(selectors.itemsIndex.topbarSearch, 'Infinity Gauntlet'); - await page.waitToClick(selectors.itemsIndex.searchButton); - await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 2); - const result = await page.countElement(selectors.itemsIndex.searchResult); + await page.doSearch('Infinity Gauntlet'); + const nResults = await page.countElement(selectors.itemsIndex.searchResult); - expect(result).toEqual(2); + expect(nResults).toEqual(2); }); }); }); diff --git a/e2e/paths/04-item/09_regularize.spec.js b/e2e/paths/04-item/09_regularize.spec.js index a37d97fa3..9c07d5916 100644 --- a/e2e/paths/04-item/09_regularize.spec.js +++ b/e2e/paths/04-item/09_regularize.spec.js @@ -65,8 +65,8 @@ describe('Item regularize path', () => { }); it('should clear the user local settings now', async() => { - await page.waitForContentLoaded(); await page.waitToClick(selectors.globalItems.userMenuButton); + await page.waitForContentLoaded(); await page.clearInput(selectors.globalItems.userConfigFirstAutocomplete); const result = await page.waitForLastSnackbar(); diff --git a/e2e/paths/04-item/11_item_log.spec.js b/e2e/paths/04-item/11_item_log.spec.js index 82800b9b8..40025de74 100644 --- a/e2e/paths/04-item/11_item_log.spec.js +++ b/e2e/paths/04-item/11_item_log.spec.js @@ -15,12 +15,10 @@ describe('Item log path', () => { }); it(`should search for the Knowledge artifact to confirm it isn't created yet`, async() => { - await page.write(selectors.itemsIndex.topbarSearch, 'Knowledge artifact'); - await page.waitToClick(selectors.itemsIndex.searchButton); - await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 0); - const result = await page.countElement(selectors.itemsIndex.searchResult); + await page.doSearch('Knowledge artifact'); + const nResults = await page.countElement(selectors.itemsIndex.searchResult); - expect(result).toEqual(0); + expect(nResults).toEqual(0); }); it('should access to the create item view by clicking the create floating button', async() => { diff --git a/e2e/paths/05-ticket/02_expeditions_and_log.spec.js b/e2e/paths/05-ticket/02_expeditions_and_log.spec.js index f0accedaf..2d046e3a9 100644 --- a/e2e/paths/05-ticket/02_expeditions_and_log.spec.js +++ b/e2e/paths/05-ticket/02_expeditions_and_log.spec.js @@ -30,7 +30,7 @@ describe('Ticket expeditions and log path', () => { }); it(`should confirm the expedition deleted is shown now in the ticket log`, async() => { - await page.waitToClick(selectors.ticketLog.logButton); + await page.accessToSection('ticket.card.log'); const changedBy = await page .waitToGetProperty(selectors.ticketLog.changedBy, 'innerText'); diff --git a/e2e/paths/05-ticket/09_weekly.spec.js b/e2e/paths/05-ticket/09_weekly.spec.js index 1629107fb..f0b814dd8 100644 --- a/e2e/paths/05-ticket/09_weekly.spec.js +++ b/e2e/paths/05-ticket/09_weekly.spec.js @@ -17,7 +17,6 @@ describe('Ticket descriptor path', () => { }); it('should count the amount of tickets in the turns section', async() => { - await page.waitForNumberOfElements(selectors.ticketsIndex.weeklyTicket, 5); const result = await page.countElement(selectors.ticketsIndex.weeklyTicket); expect(result).toEqual(5); @@ -87,12 +86,10 @@ describe('Ticket descriptor path', () => { }); it('should now search for the weekly ticket 11', async() => { - await page.write(selectors.ticketsIndex.topbarSearch, '11'); - await page.waitToClick(selectors.ticketsIndex.searchButton); - await page.waitForNumberOfElements(selectors.ticketsIndex.searchWeeklyResult, 1); - const result = await page.countElement(selectors.ticketsIndex.searchWeeklyResult); + await page.doSearch('11'); + const nResults = await page.countElement(selectors.ticketsIndex.searchWeeklyResult); - expect(result).toEqual(1); + expect(nResults).toEqual(1); }); it('should delete the weekly ticket 11', async() => { @@ -104,12 +101,9 @@ describe('Ticket descriptor path', () => { }); it('should confirm the sixth weekly ticket was deleted', async() => { - await page.waitForContentLoaded(); - await page.clearInput('vn-searchbar'); - await page.waitToClick(selectors.ticketsIndex.searchWeeklyButton); - await page.waitForNumberOfElements(selectors.ticketsIndex.searchWeeklyResult, 5); - const result = await page.countElement(selectors.ticketsIndex.searchWeeklyResult); + await page.doSearch(); + const nResults = await page.countElement(selectors.ticketsIndex.searchWeeklyResult); - expect(result).toEqual(5); + expect(nResults).toEqual(5); }); }); diff --git a/e2e/paths/05-ticket/12_descriptor.spec.js b/e2e/paths/05-ticket/12_descriptor.spec.js index ce9f064dd..4e2fce19e 100644 --- a/e2e/paths/05-ticket/12_descriptor.spec.js +++ b/e2e/paths/05-ticket/12_descriptor.spec.js @@ -99,8 +99,8 @@ describe('Ticket descriptor path', () => { }); it('should delete the stowaway', async() => { - await page.waitForContentLoaded(); await page.waitToClick(selectors.ticketDescriptor.moreMenu); + await page.waitForContentLoaded(); await page.waitToClick(selectors.ticketDescriptor.moreMenuDeleteStowawayButton); await page.waitToClick(selectors.ticketDescriptor.acceptDeleteStowawayButton); const result = await page.waitForLastSnackbar(); @@ -130,8 +130,8 @@ describe('Ticket descriptor path', () => { }); it('should invoice the ticket using the descriptor more menu', async() => { - await page.waitForContentLoaded(); await page.waitToClick(selectors.ticketDescriptor.moreMenu); + await page.waitForContentLoaded(); await page.waitToClick(selectors.ticketDescriptor.moreMenuMakeInvoice); await page.waitToClick(selectors.ticketDescriptor.acceptInvoiceOutButton); const result = await page.waitForLastSnackbar(); diff --git a/e2e/paths/05-ticket/13_services.spec.js b/e2e/paths/05-ticket/13_services.spec.js index 1a32ea944..aaab0791b 100644 --- a/e2e/paths/05-ticket/13_services.spec.js +++ b/e2e/paths/05-ticket/13_services.spec.js @@ -81,7 +81,6 @@ describe('Ticket services path', () => { await page.autocompleteSearch(selectors.ticketService.newServiceTypeExpense, 'Retencion'); await page.waitToClick(selectors.ticketService.saveServiceTypeButton); await page.write(selectors.ticketService.firstPrice, '999'); - await page.waitFor(1000); // time needed for the button to be clickable await page.waitToClick(selectors.ticketService.saveServiceButton); const result = await page.waitForLastSnackbar(); @@ -120,7 +119,6 @@ describe('Ticket services path', () => { it('should delete the service', async() => { await page.waitToClick(selectors.ticketService.fistDeleteServiceButton); await page.waitForNumberOfElements(selectors.ticketService.serviceLine, 0); - await page.waitFor(1000); // without this wait it fails to click the save button await page.waitToClick(selectors.ticketService.saveServiceButton); const result = await page.waitForLastSnackbar(); @@ -129,10 +127,9 @@ describe('Ticket services path', () => { it(`should confirm the service was removed`, async() => { await page.reloadSection('ticket.card.service'); - await page.waitForNumberOfElements(selectors.ticketService.serviceLine, 0); - const result = await page.countElement(selectors.ticketService.serviceLine); + const nResults = await page.countElement(selectors.ticketService.serviceLine); - expect(result).toEqual(0); + expect(nResults).toEqual(0); }); }); }); diff --git a/e2e/paths/05-ticket/17_log.spec.js b/e2e/paths/05-ticket/17_log.spec.js index c677d2e62..1ea7c9f26 100644 --- a/e2e/paths/05-ticket/17_log.spec.js +++ b/e2e/paths/05-ticket/17_log.spec.js @@ -34,7 +34,6 @@ describe('Ticket log path', () => { it('should navigate to the log section', async() => { await page.accessToSection('ticket.card.log'); - await page.waitForState('ticket.card.log'); }); it('should set the viewport width to 1920 to see the table full width', async() => { diff --git a/e2e/paths/05-ticket/18_index_payout.spec.js b/e2e/paths/05-ticket/18_index_payout.spec.js index 749428c44..3bbe4b550 100644 --- a/e2e/paths/05-ticket/18_index_payout.spec.js +++ b/e2e/paths/05-ticket/18_index_payout.spec.js @@ -16,9 +16,7 @@ describe('Ticket index payout path', () => { it('should navigate to the ticket index', async() => { await page.loginAndModule('administrative', 'ticket'); - let url = await page.expectURL('#!/ticket/index'); - - expect(url).toBe(true); + await page.waitForState('ticket.index'); }); it('should check three tickets 2 of a clinet and 1 of another', async() => { diff --git a/e2e/paths/06-claim/04_claim_action.spec.js b/e2e/paths/06-claim/04_claim_action.spec.js index a482e21c3..fedb5e0cb 100644 --- a/e2e/paths/06-claim/04_claim_action.spec.js +++ b/e2e/paths/06-claim/04_claim_action.spec.js @@ -25,7 +25,10 @@ describe('Claim action path', () => { }); it('should import the second importable ticket', async() => { - await page.waitFor(3000); // the animation adding the header element for the claimed total obscures somehow other elements for about 2 seconds + // the animation adding the header element for the claimed total + // obscures somehow other elements for about 2 seconds + await page.waitFor(3000); + await page.waitToClick(selectors.claimAction.importTicketButton); await page.waitToClick(selectors.claimAction.secondImportableTicket); const result = await page.waitForLastSnackbar(); diff --git a/e2e/paths/06-claim/06_descriptor.spec.js b/e2e/paths/06-claim/06_descriptor.spec.js index ee49fe245..ea18e223b 100644 --- a/e2e/paths/06-claim/06_descriptor.spec.js +++ b/e2e/paths/06-claim/06_descriptor.spec.js @@ -50,11 +50,9 @@ describe('claim Descriptor path', () => { }); it(`should search for the deleted claim to find no results`, async() => { - await page.write(selectors.claimsIndex.searchClaimInput, claimId); - await page.waitToClick(selectors.claimsIndex.searchButton); - await page.waitForNumberOfElements(selectors.claimsIndex.searchResult, 0); - const result = await page.countElement(selectors.claimsIndex.searchResult); + await page.doSearch(claimId); + const nResults = await page.countElement(selectors.claimsIndex.searchResult); - expect(result).toEqual(0); + expect(nResults).toEqual(0); }); }); diff --git a/e2e/paths/08-route/03_create.spec.js b/e2e/paths/08-route/03_create.spec.js index dafccff7f..88d7c8d28 100644 --- a/e2e/paths/08-route/03_create.spec.js +++ b/e2e/paths/08-route/03_create.spec.js @@ -17,7 +17,6 @@ describe('Route create path', () => { describe('as employee', () => { it('should click on the add new route button and open the creation form', async() => { - await page.waitForContentLoaded(); await page.waitToClick(selectors.routeIndex.addNewRouteButton); await page.waitForState('route.create'); }); diff --git a/e2e/paths/09-invoice-out/02_descriptor.spec.js b/e2e/paths/09-invoice-out/02_descriptor.spec.js index ceb2175e2..9f378bf3e 100644 --- a/e2e/paths/09-invoice-out/02_descriptor.spec.js +++ b/e2e/paths/09-invoice-out/02_descriptor.spec.js @@ -50,12 +50,10 @@ describe('InvoiceOut descriptor path', () => { }); it(`should search for the deleted invouceOut to find no results`, async() => { - await page.write(selectors.invoiceOutIndex.topbarSearch, 'T2222222'); - await page.waitToClick(selectors.invoiceOutIndex.searchButton); - await page.waitForNumberOfElements(selectors.invoiceOutIndex.searchResult, 0); - const result = await page.countElement(selectors.invoiceOutIndex.searchResult); + await page.doSearch('T2222222'); + const nResults = await page.countElement(selectors.invoiceOutIndex.searchResult); - expect(result).toEqual(0); + expect(nResults).toEqual(0); }); it('should navigate to the ticket index', async() => { @@ -66,17 +64,13 @@ describe('InvoiceOut descriptor path', () => { }); it('should search for tickets with an specific invoiceOut to find no results', async() => { - await page.waitToClick(selectors.ticketsIndex.openAdvancedSearchButton); - await page.write(selectors.ticketsIndex.advancedSearchInvoiceOut, 'T2222222'); - await page.waitToClick(selectors.ticketsIndex.advancedSearchButton); - await page.waitForNumberOfElements(selectors.ticketsIndex.searchResult, 0); - const result = await page.countElement(selectors.ticketsIndex.searchResult); + await page.doSearch('T2222222'); + const nResults = await page.countElement(selectors.ticketsIndex.searchResult); - expect(result).toEqual(0); + expect(nResults).toEqual(0); }); it('should now navigate to the invoiceOut index', async() => { - await page.waitForContentLoaded(); await page.waitToClick(selectors.globalItems.applicationsMenuButton); await page.wait(selectors.globalItems.applicationsMenuVisible); await page.waitToClick(selectors.globalItems.invoiceOutButton); diff --git a/front/core/components/autocomplete/index.html b/front/core/components/autocomplete/index.html index 725d38977..feaa47bdb 100755 --- a/front/core/components/autocomplete/index.html +++ b/front/core/components/autocomplete/index.html @@ -1,5 +1,6 @@
vn-icon { vertical-align: middle; color: inherit; - font-size: 1.7em; } } &.colored { color: white; background-color: $color-button; - box-shadow: 0 .15em .15em 0 rgba(0, 0, 0, .3); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .3); transition: background 200ms ease-in-out; &:not(.disabled) { @@ -80,27 +79,27 @@ } &.round { border-radius: 50%; - height: 3.8em; - width: 3.8em; + height: 54px; + width: 54px; & > button > span { display: none; } &.xs { - font-size: 0.5em; + font-size: .5rem; } &.sm { - font-size: 0.7em; + font-size: .7rem; } &.md { - font-size: 0.9em; + font-size: .875rem; } &.lg { - font-size: 1.2em; + font-size: 1.2rem; } } &.disabled { diff --git a/front/core/components/calendar/style.scss b/front/core/components/calendar/style.scss index 8492d09f1..28c87793b 100644 --- a/front/core/components/calendar/style.scss +++ b/front/core/components/calendar/style.scss @@ -6,14 +6,14 @@ & > div { & > .header { display: flex; - margin-bottom: 0.5em; + margin-bottom: 8px; align-items: center; - height: 2.4em; + height: 38px; & > .title { flex: 1; text-align: center; - padding: 0.2em 0; + padding: 3px 0; } & > .vn-button { color: inherit; @@ -22,10 +22,10 @@ & > .weekdays { display: flex; color: $color-font-secondary; - margin-bottom: 0.5em; - padding: 0.5em 0; + margin-bottom: 8px; + padding: 8px 0; font-weight: bold; - font-size: 0.8em; + font-size: .8rem; text-align: center; & > section { @@ -62,9 +62,9 @@ justify-content: center; align-items: center; border-radius: 50%; - font-size: 14px; - width: 2.2em; - height: 2.2em; + font-size: .9rem; + width: 30px; + height: 30px; cursor: pointer; outline: 0; transition: background-color 300ms ease-in-out; diff --git a/front/core/components/chip/style.scss b/front/core/components/chip/style.scss index 974a55a82..34ee947ba 100644 --- a/front/core/components/chip/style.scss +++ b/front/core/components/chip/style.scss @@ -1,23 +1,23 @@ @import "variables"; vn-chip { - border-radius: 1em; + border-radius: 16px; background-color: $color-bg; color: $color-font; font-size: .9rem; - margin: .25em; + margin: 4px; display: inline-flex; align-items: center; - height: 2em; + height: 28px; max-width: 100%; box-sizing: border-box; &.small { - height: 1.5em; + height: 24px; & > div { - padding: 0.6em; - font-size: 0.8rem; + padding: 9px; + font-size: .8rem; } } @@ -46,22 +46,22 @@ vn-chip { display: flex; align-items: center; height: 100%; - padding: 0 .7em; + padding: 0 11px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; & > vn-avatar { - margin-left: -0.7em; - margin-right: .3em; + margin-left: -11px; + margin-right: 6px; vertical-align: middle; - height: 2em; - width: 2em; + height: 28px; + width: 28px; } } & > vn-icon { - margin-right: .12em; - margin-left: -.12em; + margin-right: 2px; + margin-left: -2px; vertical-align: middle; opacity: .6; cursor: pointer; @@ -76,6 +76,6 @@ vn-chip { vn-avatar { display: inline-block; - min-width: 2em; + min-width: 28px; border-radius: 50%; } \ No newline at end of file diff --git a/front/core/components/confirm/confirm.js b/front/core/components/confirm/confirm.js index f187a3cb4..c0a1cc0c5 100644 --- a/front/core/components/confirm/confirm.js +++ b/front/core/components/confirm/confirm.js @@ -6,10 +6,7 @@ import './style.scss'; export default class Confirm extends Dialog { constructor($element, $, $transclude) { super($element, $, $transclude); - - let $template = angular.element(template); - this.fillSlot('body', $template.find('tpl-body')); - this.fillSlot('buttons', $template.find('tpl-buttons')); + this.fillSlots(template); } } diff --git a/front/core/components/confirm/style.scss b/front/core/components/confirm/style.scss index d3cea6cb1..154e3b478 100644 --- a/front/core/components/confirm/style.scss +++ b/front/core/components/confirm/style.scss @@ -1,3 +1,3 @@ .vn-confirm .window { - max-width: 30em + max-width: 480px } \ No newline at end of file diff --git a/front/core/components/data-viewer/style.scss b/front/core/components/data-viewer/style.scss index d0b3c727d..bb2cc2a83 100644 --- a/front/core/components/data-viewer/style.scss +++ b/front/core/components/data-viewer/style.scss @@ -6,9 +6,9 @@ vn-data-viewer { & > .empty-rows { display: block; text-align: center; - padding: 1.5em; + padding: 24px; box-sizing: border-box; color: $color-font-secondary; - font-size: 1.4em; + font-size: 1.375rem; } } \ No newline at end of file diff --git a/front/core/components/debug-info/style.scss b/front/core/components/debug-info/style.scss index 95c024a6d..b6171d4da 100644 --- a/front/core/components/debug-info/style.scss +++ b/front/core/components/debug-info/style.scss @@ -2,10 +2,10 @@ vn-debug-info { position: fixed; - bottom: 1em; - left: 1em; - padding: 1em; - min-width: 8em; + bottom: 16px; + left: 16px; + padding: 16px; + min-width: 128px; background-color: #3f51b5; color: $color-font-dark; border-radius: 4px; @@ -19,7 +19,7 @@ vn-debug-info { & > h6 { font-weight: normal; color: rgba(255, 255, 255, .5); - font-size: 1em; + font-size: 1rem; } ul { list-style-type: none; @@ -27,11 +27,11 @@ vn-debug-info { margin: 0; & > li { - margin-top: .2em; - font-size: .95em; + margin-top: 3px; + font-size: .94rem; & > span { - padding: .05em .2em; + padding: 1px 3px; border-radius: 4px; transition: background-color 200ms ease-in-out; diff --git a/front/core/components/dialog/index.js b/front/core/components/dialog/index.js index 7a7cb5f9f..dfc1e5d3a 100644 --- a/front/core/components/dialog/index.js +++ b/front/core/components/dialog/index.js @@ -21,6 +21,17 @@ export default class Dialog extends Popup { this.fillDefaultSlot(template); } + /** + * Fills the dialog slots, it is intended to be used by child classes. + * + * @param {String} template The HTML template string + */ + fillSlots(template) { + let $template = angular.element(template); + this.fillSlot('body', $template.find('tpl-body')); + this.fillSlot('buttons', $template.find('tpl-buttons')); + } + /** * Shows the dialog and optionally registers a handler for the response. * @@ -68,7 +79,17 @@ export default class Dialog extends Popup { respond(response) { if (!this.shown) return this.$q.resolve(); + return this.responseHandler(response); + } + /** + * The default response handler, it can be overriden by child classes to + * add custom logic. + * + * @param {String} response The response code + * @return {Boolean} The response handler return + */ + responseHandler(response) { let handlerArgs = { $response: response, $data: this.data diff --git a/front/core/components/dialog/style.scss b/front/core/components/dialog/style.scss index 2f3d9a028..e4884c362 100644 --- a/front/core/components/dialog/style.scss +++ b/front/core/components/dialog/style.scss @@ -8,11 +8,11 @@ text-transform: uppercase; background-color: transparent; border: none; - border-radius: .1em; + border-radius: 1px; position: absolute; top: 0; right: 0; - padding: .3em; + padding: 4px; color: #666; } & > form { @@ -20,11 +20,11 @@ & > .body > tpl-body { display: block; - min-width: 16em; + min-width: 256px; } & > .buttons > tpl-buttons { display: block; - margin-top: 1.5em; + margin-top: 24px; text-align: right; button, @@ -35,12 +35,12 @@ text-transform: uppercase; background-color: transparent; border: none; - border-radius: .1em; + border-radius: 1px; color: $color-button; font-family: vn-font-bold; - padding: .7em; - margin: -0.7em; - margin-left: .7em; + padding: 11px; + margin: -11px; + margin-left: 11px; } } } diff --git a/front/core/components/drop-down/style.scss b/front/core/components/drop-down/style.scss index fb346135f..085f94c97 100755 --- a/front/core/components/drop-down/style.scss +++ b/front/core/components/drop-down/style.scss @@ -19,13 +19,13 @@ display: none; cursor: pointer; position: absolute; - right: .5em; - top: .6em; - height: 1em; + right: 8px; + top: 9px; + height: 16px; color: #888; border-radius: 50%; background-color: rgba(255, 255, 255, .8); - font-size: 18px; + font-size: 1.125rem; &:hover { color: $color-font; @@ -36,7 +36,7 @@ } } & > .list { - max-height: 20em; + max-height: 320px; overflow: auto; ul { @@ -46,13 +46,13 @@ } li, .status { @extend %clickable; - padding: .6em; + padding: 9px; white-space: nowrap; display: flex; & > input[type=checkbox] { margin: 0; - margin-right: .6em; + margin-right: 9px; } &.active { @extend %active; diff --git a/front/core/components/field/index.html b/front/core/components/field/index.html index d614d157f..c31fe2862 100644 --- a/front/core/components/field/index.html +++ b/front/core/components/field/index.html @@ -1,4 +1,4 @@ -
+
diff --git a/front/core/components/field/index.js b/front/core/components/field/index.js index 62adf3233..81fd4cc6a 100644 --- a/front/core/components/field/index.js +++ b/front/core/components/field/index.js @@ -9,20 +9,17 @@ export default class Field extends FormInput { this.prefix = null; this.suffix = null; - this.control = this.element.querySelector('.control'); - this.element.addEventListener('click', e => this.onClick(e)); - this.container = this.element.querySelector('.container'); - this.container.addEventListener('mousedown', e => this.onMouseDown(e)); + this.container.addEventListener('focusout', () => this.onFocus(false)); + this.container.addEventListener('focusin', () => this.onFocus(true)); + + this.control = this.element.querySelector('.control'); } $onInit() { super.$onInit(); if (this.info) this.classList.add('has-icons'); - - this.input.addEventListener('focus', () => this.onFocus(true)); - this.input.addEventListener('blur', () => this.onFocus(false)); this.input.addEventListener('change', () => this.onChange()); } @@ -160,19 +157,6 @@ export default class Field extends FormInput { fix.innerText = text || ''; } - onClick() { - // if (event.defaultPrevented) return; - - if (this.input !== document.activeElement) - this.focus(); - } - - onMouseDown(event) { - if (event.target == this.input) return; - event.preventDefault(); - this.focus(); - } - onFocus(hasFocus) { this.classList.toggle('focused', hasFocus); } diff --git a/front/core/components/field/style.scss b/front/core/components/field/style.scss index f3bc0ae04..5f77e904e 100644 --- a/front/core/components/field/style.scss +++ b/front/core/components/field/style.scss @@ -9,6 +9,7 @@ display: flex; align-items: stretch; position: relative; + outline: none; & > .infix { position: relative; @@ -30,7 +31,6 @@ & > .required { display: none; - color: $color-alert } } & > .fix { @@ -135,7 +135,7 @@ align-items: center; & > vn-icon { - font-size: 24px; + font-size: 1.5rem; } } & > .prepend > prepend { @@ -197,7 +197,7 @@ } } &.standout { - border-radius: .1em; + border-radius: 1px; background-color: rgba(255, 255, 255, .1); padding: 0 12px; transition-property: background-color, color; @@ -248,7 +248,7 @@ top: 5px; color: $color-primary; padding: 0; - font-size: 12px; + font-size: .75rem; } & > .control > * { &[type=time], @@ -298,7 +298,7 @@ padding: 4px 0; height: 12px; color: rgba(0, 0, 0, .4); - font-size: 12px; + font-size: .75rem; transform: translateY(-12px); transition-property: opacity, transform, color; transition-duration: 200ms; diff --git a/front/core/components/icon-button/style.scss b/front/core/components/icon-button/style.scss index d59980a62..2b52d48bd 100644 --- a/front/core/components/icon-button/style.scss +++ b/front/core/components/icon-button/style.scss @@ -5,7 +5,7 @@ color: $color-button; & > button { - padding: .2em !important; + padding: 3px !important; } &:focus { opacity: .6; diff --git a/front/core/components/icon/style.scss b/front/core/components/icon/style.scss index 07a1584e3..86345cbf4 100644 --- a/front/core/components/icon/style.scss +++ b/front/core/components/icon/style.scss @@ -1,6 +1,6 @@ vn-icon { display: inline-block; - font-size: 18pt; + font-size: 1.7em; text-align: center; outline: 0; diff --git a/front/core/components/input-number/index.html b/front/core/components/input-number/index.html index 2c6f7d824..acce849e2 100644 --- a/front/core/components/input-number/index.html +++ b/front/core/components/input-number/index.html @@ -1,4 +1,4 @@ -
+
diff --git a/front/core/components/label-value/style.scss b/front/core/components/label-value/style.scss index e4a2cca03..10f3c016c 100644 --- a/front/core/components/label-value/style.scss +++ b/front/core/components/label-value/style.scss @@ -4,6 +4,6 @@ vn-label-value > section { & > vn-icon { vertical-align: middle; color: $color-font-secondary; - font-size: 1.2em + font-size: 1.2rem } } \ No newline at end of file diff --git a/front/core/components/list/style.scss b/front/core/components/list/style.scss index 6f12ce7c6..fdadf460b 100644 --- a/front/core/components/list/style.scss +++ b/front/core/components/list/style.scss @@ -11,7 +11,7 @@ ul.menu { @extend %clickable; display: block; color: inherit; - padding: .6em 2em; + padding: 9px 32px; } } */ @@ -76,7 +76,7 @@ vn-item, margin-right: $spacing-md; & > .vn-icon { - font-size: 1.2em; + font-size: 1.2rem; } } &[side] { @@ -86,10 +86,10 @@ vn-item, & > .vn-button { opacity: .4; - margin-left: .5em; + margin-left: 8px; transition: opacity 250ms ease-out; padding: 0; - font-size: 1.05em; + font-size: 1rem; &:hover { opacity: 1; diff --git a/front/core/components/multi-check/style.scss b/front/core/components/multi-check/style.scss index bc6a0e8c5..79c2397bc 100644 --- a/front/core/components/multi-check/style.scss +++ b/front/core/components/multi-check/style.scss @@ -1,5 +1,5 @@ vn-multi-check { .vn-check { - margin-bottom: 0.8em + margin-bottom: 12px } } \ No newline at end of file diff --git a/front/core/components/pagination/style.scss b/front/core/components/pagination/style.scss index 2610bc502..413a6fb5f 100644 --- a/front/core/components/pagination/style.scss +++ b/front/core/components/pagination/style.scss @@ -4,7 +4,7 @@ vn-pagination { text-align: center; & > div > vn-icon-button { - font-size: 2em; + font-size: 2rem; padding: 0; } } \ No newline at end of file diff --git a/front/core/components/popover/style.scss b/front/core/components/popover/style.scss index decfc4733..e27ef6012 100644 --- a/front/core/components/popover/style.scss +++ b/front/core/components/popover/style.scss @@ -10,7 +10,7 @@ color: $color-font; opacity: 0; - transform: translateY(-.6em); + transform: translateY(-9px); transition-property: opacity, transform; transition-duration: 200ms; transition-timing-function: ease-in-out; @@ -21,21 +21,21 @@ } & > .window { position: absolute; - box-shadow: 0 .1em .4em $color-shadow; + box-shadow: 0 1px 6px $color-shadow; z-index: 0; & > .arrow { - width: 1em; - height: 1em; - margin: -.5em; + width: 16px; + height: 16px; + margin: -8px; background-color: $color-bg-panel; - box-shadow: 0 .1em .4em $color-shadow; + box-shadow: 0 1px 6px $color-shadow; position: absolute; transform: rotate(45deg); z-index: -1; } & > .content { - border-radius: .1em; + border-radius: 1px; background-color: $color-bg-panel; height: inherit; overflow: auto; diff --git a/front/core/components/popup/index.html b/front/core/components/popup/index.html index 3e542d51f..ad8fb2598 100644 --- a/front/core/components/popup/index.html +++ b/front/core/components/popup/index.html @@ -2,6 +2,7 @@
\ No newline at end of file diff --git a/front/core/components/popup/index.js b/front/core/components/popup/index.js index 994f4a0e7..0dea66254 100644 --- a/front/core/components/popup/index.js +++ b/front/core/components/popup/index.js @@ -51,6 +51,7 @@ export default class Popup extends Component { {parentBoundTranscludeFn: this.$transclude} )[0]; this.windowEl = this.popup.querySelector('.window'); + this.windowEl.focus(); let classList = this.popup.classList; classList.add(this.displayMode); diff --git a/front/core/components/popup/style.scss b/front/core/components/popup/style.scss index 42d69141d..c3e45ccf0 100644 --- a/front/core/components/popup/style.scss +++ b/front/core/components/popup/style.scss @@ -19,19 +19,20 @@ justify-content: center; align-items: center; background-color: rgba(0, 0, 0, .6); - padding: 1em; + padding: 16px; box-sizing: border-box; & > .window { position: relative; - box-shadow: 0 0 .4em $color-shadow; + box-shadow: 0 0 6px $color-shadow; background-color: $color-bg-panel; - border-radius: .2em; + border-radius: 3px; overflow: auto; box-sizing: border-box; max-height: 100%; transform: scale3d(.9, .9, .9); transition: transform 200ms ease-in-out; + outline: none; } &.shown > .window { transform: scale3d(1, 1, 1); diff --git a/front/core/components/range/style.scss b/front/core/components/range/style.scss index 6898f8cda..2a894492e 100644 --- a/front/core/components/range/style.scss +++ b/front/core/components/range/style.scss @@ -37,7 +37,7 @@ .vn-range { & > label { - font-size: 12px; + font-size: .75rem; &.main { color: $color-button; @@ -57,7 +57,7 @@ background: transparent; border-color: transparent; -webkit-appearance: none; - margin: .2em 0; + margin: 3px 0; &:focus { outline: none; diff --git a/front/core/components/scroll-up/style.scss b/front/core/components/scroll-up/style.scss index 1bf7ea982..44d12f14f 100644 --- a/front/core/components/scroll-up/style.scss +++ b/front/core/components/scroll-up/style.scss @@ -1,6 +1,6 @@ vn-scroll-up { - top: 5.5em; - right: 2em; + top: 88px; + right: 32px; display: none; position: fixed; } \ No newline at end of file diff --git a/front/core/components/searchbar/style.scss b/front/core/components/searchbar/style.scss index 31907792c..c1d4be21c 100644 --- a/front/core/components/searchbar/style.scss +++ b/front/core/components/searchbar/style.scss @@ -2,24 +2,24 @@ vn-searchbar { display: block; - max-width: 35em; + max-width: 560px; margin: 0 auto; .search-params { flex: 1; - margin: .05em 0; + margin: 1px 0; overflow: visible; display: flex; - max-width: 24em; + max-width: 384px; & > .search-param { color: rgba(0, 0, 0, .6); background-color: rgba(0, 0, 0, .1); - padding: .1em .4em; - margin-left: .2em; + padding: 1px 6px; + margin-left: 3px; display: inline-block; - border-radius: .8em; - max-width: 12em; + border-radius: 12px; + max-width: 192px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; @@ -39,7 +39,7 @@ vn-searchbar { } .search-panel { - max-height: 48em; + max-height: 768px; & > form { padding: $spacing-lg; diff --git a/front/core/components/snackbar/style.scss b/front/core/components/snackbar/style.scss index deaf010fc..465c53851 100644 --- a/front/core/components/snackbar/style.scss +++ b/front/core/components/snackbar/style.scss @@ -1,33 +1,33 @@ @import "variables"; vn-snackbar #shapes { - max-height: 20.625em; - margin-left: -12.5em; + max-height: 330px; + margin-left: -160px; position: fixed; z-index: 100; - width: 25em; + width: 320px; left: 50%; bottom: 0 } vn-snackbar .shape { - background-color: rgba(0, 0, 0, 0.8); - box-shadow: 0 0 .4em $color-shadow; + background-color: rgba(0, 0, 0, .8); + box-shadow: 0 0 6px $color-shadow; transition: transform 300ms ease-in-out; - transform: translateY(20em); + transform: translateY(320px); box-sizing: border-box; - border-radius: .2em; + border-radius: 3px; margin-bottom: 15px; color: white; - padding: 0.8em; + padding: 12px; & > .text { text-align: center; vn-chip { position: absolute; - left: -1em; - top: -1em; + left: -16px; + top: -16px; } } @@ -36,32 +36,32 @@ vn-snackbar .shape { } &.success { - background-color: rgba(163, 209, 49, 0.8); + background-color: rgba(163, 209, 49, .8); color: #445911; & > button { - color: rgba(1, 1, 1, 0.6); + color: rgba(1, 1, 1, .6); } } &.error { - background-color: rgba(198, 40, 40, 0.8); + background-color: rgba(198, 40, 40, .8); & > button { - color: rgba(1, 1, 1, 0.6); + color: rgba(1, 1, 1, .6); } } & > button { background-color: transparent; text-transform: uppercase; - margin-left: .5em; + margin-left: 8px; font-weight: bold; cursor: pointer; color: $color-main; float: right; border: none; - padding: .5em; - margin: -.5em + padding: 8px; + margin: -8px; } } \ No newline at end of file diff --git a/front/core/components/step-control/style.scss b/front/core/components/step-control/style.scss index 9acc1f314..b4d0d5afe 100644 --- a/front/core/components/step-control/style.scss +++ b/front/core/components/step-control/style.scss @@ -22,11 +22,11 @@ vn-step-control { border: 2px solid $color-main; background-color: white; align-content: center; - margin-top: -9.5px; + margin-top: -10px; border-radius: 50%; cursor: pointer; height: 15px; - width: 15px + width: 15px; } & > .steps > .step .circle.active { background-color: $color-main; @@ -36,7 +36,7 @@ vn-step-control { flex: auto; flex-direction: row; justify-content: space-between; - margin-top: 10px + margin-top: 10px; } & > .buttons > .step { display: flex diff --git a/front/core/components/table/style.scss b/front/core/components/table/style.scss index 41d1f6db8..7dd69d89f 100644 --- a/front/core/components/table/style.scss +++ b/front/core/components/table/style.scss @@ -14,7 +14,7 @@ vn-table { & > vn-thead, & > thead { display: table-header-group; - border-bottom: .15em solid $color-spacer; + border-bottom: 2px solid $color-spacer; & > * > th { font-weight: normal; @@ -52,14 +52,14 @@ vn-table { } & > vn-tfoot, & > tfoot { - border-top: .15em solid $color-spacer; + border-top: 2px solid $color-spacer; display: table-footer-group } & > * > vn-tr, & > * > a.vn-tr, & > * > tr { display: table-row; - height: 3em; + height: 48px; } vn-thead, vn-tbody, vn-tfoot, thead, tbody, tfoot { @@ -69,8 +69,8 @@ vn-table { & > vn-th, & > th { color: $color-font-light; - padding-top: 1em; - padding-bottom: .8em; + padding-top: 16px; + padding-bottom: 12px; } & > vn-th, & > vn-td, @@ -86,14 +86,14 @@ vn-table { vertical-align: middle; display: table-cell; text-align: left; - padding: .6em .5em; + padding: 9px 8px; white-space: nowrap; text-overflow: ellipsis; - max-width: 5em; + max-width: 80px; &[number] { text-align: right; - width: 6em; + width: 96px; } &[center] { text-align: center; @@ -103,7 +103,7 @@ vn-table { text-align: center; } &[expand] { - max-width: 25em; + max-width: 400px; min-width: 0; } vn-icon.bright, i.bright { @@ -111,10 +111,10 @@ vn-table { } } & > :last-child { - padding-right: 1.4em; + padding-right: 22px; } & > :first-child { - padding-left: 1.4em; + padding-left: 22px; } } & > a.vn-tr { @@ -123,7 +123,7 @@ vn-table { } vn-tbody > *, tbody > * { - border-bottom: .1em solid $color-spacer-light; + border-bottom: 1px solid $color-spacer-light; &:last-child { border-bottom: none; @@ -134,8 +134,8 @@ vn-table { & > vn-td, & > td { .chip { - padding: .3em; - border-radius: .3em; + padding: 4px; + border-radius: 4px; color: $color-font-bg; &.notice { @@ -158,7 +158,7 @@ vn-table { vn-icon-menu { display: inline-block; color: $color-main; - padding: .25em + padding: 4px } } & > [actions] { diff --git a/front/core/components/td-editable/style.scss b/front/core/components/td-editable/style.scss index e37e1086c..a1fe4664e 100644 --- a/front/core/components/td-editable/style.scss +++ b/front/core/components/td-editable/style.scss @@ -8,7 +8,7 @@ vn-td-editable { text { border: 1px dashed rgba(0, 0, 0, .15); - border-radius: 1em; + border-radius: 16px; padding: 5px 10px; min-height: 15px; display: block; @@ -36,16 +36,16 @@ vn-td-editable { left: 0; box-sizing: border-box; align-items: center; - padding: .6em; + padding: 9px; overflow: visible; & > field { flex: 1; background-color: $color-bg-panel; - padding: .5em; - box-shadow: 0 0 .4em rgba(0, 0, 0, .2); - border-radius: .1em; - min-width: 6em; + padding: 8px; + box-shadow: 0 0 6px rgba(0, 0, 0, .2); + border-radius: 1px; + min-width: 96px; & > * { width: 100%; diff --git a/front/core/components/toggle/style.scss b/front/core/components/toggle/style.scss index 31769d2a5..5213215d6 100644 --- a/front/core/components/toggle/style.scss +++ b/front/core/components/toggle/style.scss @@ -22,7 +22,7 @@ height: 20px; min-width: 20px; margin: 6px 0; - margin-right: .6em; + margin-right: 9px; border: 2px solid #666; } & > .btn > .focus-mark { diff --git a/front/core/components/tooltip/style.scss b/front/core/components/tooltip/style.scss index 926142582..926419c24 100644 --- a/front/core/components/tooltip/style.scss +++ b/front/core/components/tooltip/style.scss @@ -6,7 +6,7 @@ z-index: 150; background-color: $color-bg-dark; color: $color-active-font; - border-radius: .2em; + border-radius: 3px; &.show { display: inherit; diff --git a/front/core/components/treeview/style.scss b/front/core/components/treeview/style.scss index 7cd8c8bea..b8af114c1 100644 --- a/front/core/components/treeview/style.scss +++ b/front/core/components/treeview/style.scss @@ -11,7 +11,7 @@ vn-treeview-childs { list-style: none; ul { - padding-left: 2.2em; + padding-left: 35px; } } } @@ -37,7 +37,7 @@ vn-treeview-childs { vn-treeview-child { line-height: 38px; - font-size: 16px; + font-size: 1rem; display: block; .node { diff --git a/front/core/components/wday-picker/style.scss b/front/core/components/wday-picker/style.scss index be610c733..a8e3a65ab 100644 --- a/front/core/components/wday-picker/style.scss +++ b/front/core/components/wday-picker/style.scss @@ -9,11 +9,11 @@ & > span { @extend %clickable; border-radius: 50%; - padding: .4em; - margin: .2em; + padding: 6px; + margin: 3px; display: inline-flex; - width: 1.5em; - height: 1.5em; + width: 24px; + height: 24px; justify-content: center; align-items: center; outline: none; diff --git a/front/core/directives/droppable.scss b/front/core/directives/droppable.scss index f2e18a3ad..02261b5bc 100644 --- a/front/core/directives/droppable.scss +++ b/front/core/directives/droppable.scss @@ -5,8 +5,8 @@ .vn-draggable, [vn-droppable] { border: 2px dashed transparent; - border-radius: 0.5em; - transition: all 0.5s; + border-radius: 8px; + transition: all .5s; } .vn-droppable, diff --git a/front/core/directives/focus.js b/front/core/directives/focus.js index 869e9a7f0..8b75adcbc 100644 --- a/front/core/directives/focus.js +++ b/front/core/directives/focus.js @@ -1,11 +1,11 @@ import ngModule from '../module'; import isMobile from '../lib/is-mobile'; -export function focus($scope, input) { +export function focus($timeout, input) { if (isMobile) return; const element = input; - let selector = 'input, textarea, button, submit'; + const selector = 'input, textarea, button, submit'; if (!input.matches(selector)) input = input.querySelector(selector); @@ -20,26 +20,24 @@ export function focus($scope, input) { return; } - input.focus(); - - if (input.select) { - $scope.$applyAsync(() => { + $timeout(() => { + input.focus(); + if (input.select) input.select(); - }); - } + }); } -/** +/* * Sets the focus and selects the text on the input. - * - * @return {Object} The directive */ -export function directive() { +export function directive($timeout) { return { restrict: 'A', link: function($scope, $element) { - $scope.$watch('', () => focus($scope, $element[0])); + $scope.$watch('', () => focus($timeout, $element[0])); } }; } +directive.$inject = ['$timeout']; + ngModule.directive('vnFocus', directive); diff --git a/front/core/directives/specs/focus.spec.js b/front/core/directives/specs/focus.spec.js index 11c60688a..dd917dc29 100644 --- a/front/core/directives/specs/focus.spec.js +++ b/front/core/directives/specs/focus.spec.js @@ -6,7 +6,7 @@ describe('Directive focus', () => { beforeEach(ngModule('vnCore')); compile = (_element, _childElement) => { - inject(($compile, $rootScope) => { + inject(($compile, $rootScope, $flushPendingTasks) => { $scope = $rootScope.$new(); $element = angular.element(_element); if (_childElement) @@ -15,7 +15,7 @@ describe('Directive focus', () => { $element[0].focus = jasmine.createSpy('focus'); $element[0].select = jasmine.createSpy('select'); $compile($element)($scope); - $scope.$digest(); + $flushPendingTasks(); }); }; diff --git a/front/core/directives/uvc.scss b/front/core/directives/uvc.scss index 5221b8bdd..0cdf0ba1a 100644 --- a/front/core/directives/uvc.scss +++ b/front/core/directives/uvc.scss @@ -1,6 +1,6 @@ vn-table vn-dialog[vn-id="uvc"]{ & > div { - min-width: 18em; + min-width: 288px; align-items: center; } diff --git a/front/core/directives/zoom-image.scss b/front/core/directives/zoom-image.scss index e075ff3a1..7debed995 100644 --- a/front/core/directives/zoom-image.scss +++ b/front/core/directives/zoom-image.scss @@ -5,7 +5,7 @@ position: fixed; top: 0; z-index: 25; - background-color: rgba(1, 1, 1, 0.6); + background-color: rgba(1, 1, 1, .6); & > div { display: flex; @@ -14,13 +14,13 @@ width: inherit; height: inherit; box-sizing: border-box; - padding: 1em; + padding: 16px; & > img { cursor: zoom-out; max-height: 100%; max-width: 100%; - border-radius: .2em; + border-radius: 3px; } } } diff --git a/front/core/styles/animations.scss b/front/core/styles/animations.scss index 039f79c77..8ae119fb4 100644 --- a/front/core/styles/animations.scss +++ b/front/core/styles/animations.scss @@ -2,7 +2,7 @@ @keyframes nothing {} @keyframes slideIn { from { - transform: translate3d(-2em, 0, 0); + transform: translate3d(-32px, 0, 0); opacity: 0; } to { diff --git a/front/core/styles/border.scss b/front/core/styles/border.scss index 7450b5857..757ab453f 100644 --- a/front/core/styles/border.scss +++ b/front/core/styles/border.scss @@ -19,5 +19,5 @@ /* Border Radius */ .border-radius { - border-radius: .3em; + border-radius: 4px; } \ No newline at end of file diff --git a/front/core/styles/font-family.scss b/front/core/styles/font-family.scss index b461917ce..db41ad750 100644 --- a/front/core/styles/font-family.scss +++ b/front/core/styles/font-family.scss @@ -21,7 +21,7 @@ font-family: 'Material Icons'; font-weight: normal; font-style: normal; - font-size: 24px; /* Preferred icon size */ + font-size: 1.5rem; /* Preferred icon size */ display: inline-block; line-height: 1; text-transform: none; diff --git a/front/core/styles/global.scss b/front/core/styles/global.scss index 8b3d465f1..555b54f9e 100644 --- a/front/core/styles/global.scss +++ b/front/core/styles/global.scss @@ -1,6 +1,7 @@ @import "variables"; html { + font-size: $font-size; background-color: $color-bg; overflow: auto; height: 100%; @@ -9,7 +10,6 @@ body { height: 100%; font-family: vn-font; color: $color-font; - font-size: $font-size; margin: 0; padding: 0; } @@ -44,4 +44,4 @@ a { .ng-leave, .ng-enter { transition: none; -} \ No newline at end of file +} diff --git a/front/core/styles/layout.scss b/front/core/styles/layout.scss index 925526dca..85088db6a 100644 --- a/front/core/styles/layout.scss +++ b/front/core/styles/layout.scss @@ -40,7 +40,7 @@ html [vn-nine], html [vn-ten], html [vn-eleven], html [vn-twelve]{ - flex-basis: 0.000000001px; + flex-basis: .1px; } html [vn-auto], vn-auto, .vn-auto { flex-basis: auto; diff --git a/front/core/styles/responsive.scss b/front/core/styles/responsive.scss index 9cc58dd12..3e16cf128 100644 --- a/front/core/styles/responsive.scss +++ b/front/core/styles/responsive.scss @@ -1,52 +1,53 @@ @import "variables"; - -/* Desktop - Laptop 1360x768 */ +/* +// Desktop - Laptop 1360x768 @media (max-resolution: 119dpi) and (min-device-width: 1340px) and (max-device-width: 1899px) { - body { font-size: 10pt; } + html { font-size: 10pt; } } -/* Mobile - Low DPI */ +// Mobile - Low DPI @media (min-resolution: 120dpi), (-webkit-min-device-pixel-ratio: 1.5) { - body { font-size: 9pt; } + html { font-size: 9pt; } } @media (min-resolution: 144dpi), (-webkit-min-device-pixel-ratio: 1.5) { - body { font-size: 11pt; } + html { font-size: 11pt; } } -/* Mobile - Normal DPI */ +// Mobile - Normal DPI @media (max-device-width: 383px) and (min-resolution: 192dpi), (max-device-width: 383px) and (-webkit-min-device-pixel-ratio: 2) { - body { font-size: 10pt; } + html { font-size: 10pt; } } @media (min-device-width: 384px) and (min-resolution: 192dpi), (min-device-width: 384px) and (-webkit-min-device-pixel-ratio: 2) { - body { font-size: 11pt; } + html { font-size: 11pt; } } -/* Mobile - High DPI */ +// Mobile - High DPI @media (max-device-width: 411px) and (min-resolution: 249dpi), (max-device-width: 411px) and (-webkit-min-device-pixel-ratio: 3) { - body { font-size: 10pt; } + html { font-size: 10pt; } } @media (min-device-width: 412px) and (min-resolution: 249dpi), (min-device-width: 412px) and (-webkit-min-device-pixel-ratio: 3) { - body { font-size: 11pt; } + html { font-size: 11pt; } } +*/ .vn-hide-narrow { @media (max-width: $mobile-width) { diff --git a/front/core/styles/text.scss b/front/core/styles/text.scss index b1624cd26..751a5594b 100644 --- a/front/core/styles/text.scss +++ b/front/core/styles/text.scss @@ -3,46 +3,46 @@ /* Headings */ .text-h1, h1 { - font-size: 32pt; + font-size: 2.3rem; } .text-h2, h2 { - font-size: 28pt; + font-size: 2.25rem; } .text-h3, h3 { - font-size: 24pt; + font-size: 2rem; } .text-h4, h4 { - font-size: 20pt; + font-size: 1.6rem; } .text-h5, h5 { - font-size: 16pt; + font-size: 1.3rem; } .text-h6, h6 { - font-size: 14pt; + font-size: 1.125rem; } .text-subtitle1 { - font-size: 13pt; + font-size: 1.06rem; } .text-subtitle2 { - font-size: 12pt; + font-size: 1rem; } .text-body1 { - font-size: 11pt; + font-size: .875rem; } .text-body2 { - font-size: 11pt; + font-size: .875rem; } .text-caption { - font-size: 11pt; + font-size: .875rem; } .text-overline { - font-size: 10pt; + font-size: .8rem; } h1, h2, h3, h4, h5, h6 { padding: 0; margin-top: 0; - margin-bottom: .3em; + margin-bottom: 4px; } /* Colors */ diff --git a/front/core/styles/variables.scss b/front/core/styles/variables.scss index 89e487ad7..0958c88b8 100644 --- a/front/core/styles/variables.scss +++ b/front/core/styles/variables.scss @@ -1,17 +1,17 @@ @import "./util"; -$menu-width: 16em; -$topbar-height: 4em; +$font-size: 12pt; +$menu-width: 256px; +$topbar-height: 56px; $mobile-width: 800px; -$font-size: 16px; // Width -$width-xs: 25em; -$width-sm: 34em; -$width-md: 50em; -$width-lg: 80em; -$width-xl: 100em; +$width-xs: 400px; +$width-sm: 544px; +$width-md: 800px; +$width-lg: 1280px; +$width-xl: 1600px; // Spacing @@ -115,6 +115,6 @@ $color-alert-light: darken($color-alert, 35%); // Border -$border-thin: .05em solid $color-spacer; -$border-thin-light: .05em solid $color-spacer-light; -$shadow: 0 .15em .15em 0 rgba(0, 0, 0, .3); +$border-thin: 1px solid $color-spacer; +$border-thin-light: 1px solid $color-spacer-light; +$shadow: 0 2px 2px 0 rgba(0, 0, 0, .3); diff --git a/front/salix/components/descriptor/style.scss b/front/salix/components/descriptor/style.scss index af719cc0d..a048c12b3 100644 --- a/front/salix/components/descriptor/style.scss +++ b/front/salix/components/descriptor/style.scss @@ -3,7 +3,7 @@ @import "./variables"; .vn-descriptor { - box-shadow: 0 .1em .2em $color-shadow; + box-shadow: 0 1px 3px $color-shadow; & > .header { display: flex; @@ -26,7 +26,7 @@ padding: 10px; } vn-icon { - font-size: 1.8em; + font-size: 1.75rem; } } } @@ -51,7 +51,7 @@ & > vn-icon { padding: $spacing-sm; color: $color-marginal; - font-size: 1.5em; + font-size: 1.5rem; &.bright { color: $color-main; @@ -70,7 +70,7 @@ margin: 0 $spacing-sm; & > vn-icon { - font-size: 1.8em; + font-size: 1.75rem; padding: 0; } } diff --git a/front/salix/components/home/style.scss b/front/salix/components/home/style.scss index 268260bbd..7524d2be3 100644 --- a/front/salix/components/home/style.scss +++ b/front/salix/components/home/style.scss @@ -2,7 +2,7 @@ vn-home { display: block; - padding: .5em; + padding: 8px; & > div { & > h6 { @@ -16,7 +16,7 @@ vn-home { flex-direction: row; justify-content: center; flex-wrap: wrap; - max-width: 44em; + max-width: 704px; margin: 0 auto; & > a { @@ -27,10 +27,10 @@ vn-home { color: $color-font-dark; display: flex; flex-direction: column; - height: 8em; - width: 8em; - margin: .5em; - padding: 1em; + height: 128px; + width: 128px; + margin: 8px; + padding: 16px; justify-content: center; & > div { @@ -41,21 +41,21 @@ vn-home { & > vn-icon { display: block; - font-size: 3.5em; + font-size: 3.5rem; } } & > span { - font-size: 0.9em; + font-size: .875rem; text-align: center; } & > h4 { max-width: 100%; text-align: center; - font-size: 12pt; + font-size: 1rem; overflow: hidden; color: inherit; margin: 0; - line-height: 1.5em; + line-height: 24px; /* & > .bind-letter { color: #FD0; diff --git a/front/salix/components/layout/style.scss b/front/salix/components/layout/style.scss index 1a483ab96..14af8ac23 100644 --- a/front/salix/components/layout/style.scss +++ b/front/salix/components/layout/style.scss @@ -7,42 +7,42 @@ vn-layout { right: 0; left: 0; z-index: 10; - box-shadow: 0 .1em .2em $color-shadow; + box-shadow: 0 1px 3px $color-shadow; height: $topbar-height; - padding: 0 1em; + padding: 0 16px; justify-content: space-between; & > .side { flex: auto; display: flex; align-items: center; - width: 5em; + width: 80px; transition: width 200ms; } & > .start { - padding-right: 1em; + padding-right: 16px; overflow: hidden; & > .logo > img { - height: 2em; + height: 32px; display: block; } & > .main-title { - font-size: 1.6em; + font-size: 1.56rem; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; - padding-left: .4em; + padding-left: 6px; } & > vn-spinner { - padding: 0 .4em; + padding: 0 6px; } } & > vn-slot { flex: auto; } & > .end { - padding-left: 1em; + padding-left: 16px; justify-content: flex-end; } .show-menu { @@ -50,7 +50,7 @@ vn-layout { } .vn-button { color: inherit; - font-size: 1.05em; + font-size: 1.05rem; padding: 0; } } @@ -66,7 +66,7 @@ vn-layout { } &.left-menu { & > vn-topbar > .start { - width: 5em + $menu-width; + width: 80px + $menu-width; } & > .main-view { padding-left: $menu-width; @@ -74,11 +74,14 @@ vn-layout { } &.right-menu { & > vn-topbar > .end { - width: 5em + $menu-width; + width: 80px + $menu-width; } & > .main-view { padding-right: $menu-width; } + [fixed-bottom-right] { + right: 64px + $menu-width; + } } & > .main-view { padding-top: $topbar-height; @@ -89,6 +92,11 @@ vn-layout { padding: $spacing-md; box-sizing: border-box } + [fixed-bottom-right] { + position: fixed; + bottom: 32px; + right: 32px; + } &.ng-enter { vn-side-menu { opacity: 0; @@ -124,6 +132,9 @@ vn-layout { & > .main-view { padding-right: 0; } + [fixed-bottom-right] { + right: 32px; + } } ui-view > * { padding-left: 0; @@ -139,22 +150,22 @@ vn-layout { & > li { @extend %clickable-light; background-color: $color-main; - margin-bottom: .6em; - padding: .8em; - border-radius: .1em; - min-width: 8em; + margin-bottom: 9px; + padding: 12px; + border-radius: 1px; + min-width: 128px; white-space: nowrap; &:last-child { margin-bottom: 0; } & > vn-icon { - padding-right: .3em; + padding-right: 4px; vertical-align: middle; } } } #user { - font-size: 1.5em; + font-size: 1.5rem; height: auto; } diff --git a/front/salix/components/login/style.scss b/front/salix/components/login/style.scss index e098fbdb4..8ebf2a68c 100644 --- a/front/salix/components/login/style.scss +++ b/front/salix/components/login/style.scss @@ -7,7 +7,7 @@ vn-login { margin: 0; padding: 0; color: $color-font; - font-size: 1.1em; + font-size: 1.1rem; font-weight: normal; background-color: $color-bg-dark; display: flex; @@ -18,16 +18,16 @@ vn-login { & > .box { box-sizing: border-box; position: absolute; - max-width: 19em; - min-width: 15em; - padding: 3em; + max-width: 304px; + min-width: 240px; + padding: 48px; background-color: $color-bg-panel; - box-shadow: 0 0 1em 0 rgba(0, 0, 0, .6); - border-radius: .5em; + box-shadow: 0 0 16px 0 rgba(0, 0, 0, .6); + border-radius: 8px; & > img { width: 100%; - padding-bottom: 1em; + padding-bottom: 16px; } & > form { & > .vn-textfield { @@ -40,7 +40,7 @@ vn-login { } } & > .footer { - margin-top: 2em; + margin-top: 32px; text-align: center; position: relative; @@ -55,8 +55,8 @@ vn-login { & > .spinner-wrapper { position: absolute; width: 0; - top: .2em; - right: -.5em; + top: 3px; + right: -8px; overflow: visible; } } @@ -67,7 +67,7 @@ vn-login { background-color: $color-bg-panel; & > .box { - padding: 1em; + padding: 16px; box-shadow: none; } } diff --git a/front/salix/components/side-menu/style.scss b/front/salix/components/side-menu/style.scss index 239d15cf6..b9722d519 100644 --- a/front/salix/components/side-menu/style.scss +++ b/front/salix/components/side-menu/style.scss @@ -11,7 +11,7 @@ vn-side-menu > .menu { width: $menu-width; min-width: $menu-width; background-color: $color-bg-panel; - box-shadow: 0 .1em .2em $color-shadow; + box-shadow: 0 1px 3px $color-shadow; overflow: auto; top: $topbar-height; diff --git a/front/salix/components/summary/style.scss b/front/salix/components/summary/style.scss index f0d6ae038..5c53eea95 100644 --- a/front/salix/components/summary/style.scss +++ b/front/salix/components/summary/style.scss @@ -11,7 +11,7 @@ color: $color-font-dark; margin: 0; text-align: center; - line-height: 1.3em; + line-height: 20px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -25,27 +25,27 @@ h4 { margin-bottom: $spacing-md; text-transform: uppercase; - font-size: 15pt; + font-size: 1.25rem; line-height: 1; padding: 7px; padding-bottom: 4px; /* Bottom line-height fix */ font-weight: lighter; background-color: $color-main-light; - border-bottom: .1em solid $color-main; + border-bottom: 1px solid $color-main; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } & > * { margin: $spacing-sm; - min-width: 14em; + min-width: 224px; padding: 0; } & > vn-auto { width: 100%; } vn-label-value > section { - margin-bottom: .3em; + margin-bottom: 4px; } } p:after { diff --git a/front/salix/components/user-popover/style.scss b/front/salix/components/user-popover/style.scss index c8325c9f6..5f17ed293 100644 --- a/front/salix/components/user-popover/style.scss +++ b/front/salix/components/user-popover/style.scss @@ -1,14 +1,14 @@ @import "variables"; .vn-popover .user-popover { - width: 16em; + width: 256px; & > .profile-card { display: flex; align-items: center; & > vn-icon { - font-size: 80px; + font-size: 5rem; color: $color-font-bg-marginal; } & > div { @@ -19,11 +19,11 @@ & > div { display: flex; - padding-bottom: .5em; + padding-bottom: 8px; & > .user { flex: 1; - max-width: 8em; + max-width: 128px; } } } @@ -33,5 +33,5 @@ float: right; height: initial; vertical-align: middle; - font-size: 1em; + font-size: 1rem; } \ No newline at end of file diff --git a/front/salix/styles/misc.scss b/front/salix/styles/misc.scss index 1f2d79981..55de5eb0c 100644 --- a/front/salix/styles/misc.scss +++ b/front/salix/styles/misc.scss @@ -3,7 +3,7 @@ form vn-horizontal { align-items: center; - min-height: 2.8em; + min-height: 44px; & > * { box-sizing: border-box; @@ -55,9 +55,9 @@ form vn-horizontal { vn-bg-title { display: block; text-align: center; - padding: 1em; + padding: 16px; color: gray; - font-size: 1.3em; + font-size: 1.25rem; } .totalBox { border: 1px solid #CCC; @@ -65,7 +65,7 @@ vn-bg-title { justify-content: center; align-items: center; padding: $spacing-md; - max-width: 14em; + max-width: 224px; } .form { height: 100%; @@ -73,11 +73,6 @@ vn-bg-title { padding: $spacing-lg; max-width: 1000px; } -html [fixed-bottom-right] { - position: fixed; - bottom: 2em; - right: 2em; -} .list > vn-none { min-width: 60px; } @@ -103,13 +98,13 @@ vn-tool-bar { display: flex; & > * { - margin-right: .6em; + margin-right: 9px; } } html [scrollable] { min-height: 1px; flex: 1; - flex-basis: 0.000000001px; + flex-basis: .1px; } .ellipsize { text-overflow: ellipsis; @@ -120,7 +115,7 @@ html [scrollable] { @extend %active; &.small { - font-size: 0.7em + font-size: .7rem } } diff --git a/front/salix/styles/order-product.scss b/front/salix/styles/order-product.scss index df14f5558..bd77144f2 100644 --- a/front/salix/styles/order-product.scss +++ b/front/salix/styles/order-product.scss @@ -8,16 +8,16 @@ & > .product { box-sizing: border-box; padding: $spacing-sm; - width: 28em; + width: 448px; overflow: hidden; & > vn-card { display: flex; - height: 12em; + height: 192px; .image { - width: 12em; - height: 12em; + width: 192px; + height: 192px; img { width: 100%; @@ -32,37 +32,37 @@ height: 100%; width: 100%; overflow: hidden; - padding: .8em; + padding: 12px; & > h3 { font-family: vn-font; margin: 0; - margin-bottom: .3em; + margin-bottom: 4px; font-weight: normal; line-height: initial; - font-size: 1.05em; - max-height:2.4em; + font-size: 1rem; + max-height: 38px; overflow: hidden; } & > h4 { color: $color-font-secondary; text-transform: uppercase; - margin-bottom: .3em; + margin-bottom: 4px; line-height: initial; - font-size: 1em; + font-size: 1rem; flex: 1; } & > .tags { - padding-bottom: .2em; - height: 3em; + padding-bottom: 3px; + height: 48px; & > vn-label-value { - font-size: .8em; + font-size: .75rem; } } } .footer { - font-size: .8em; + font-size: .8rem; & > .price { overflow: hidden; @@ -77,7 +77,7 @@ &:first-child, &:last-child { - font-size: 1.4em; + font-size: 1.375rem; } } @@ -87,7 +87,7 @@ } & > .priceKg { color: $color-font-secondary; - font-size: .8em; + font-size: .75rem; } } } diff --git a/front/salix/styles/photo-list.scss b/front/salix/styles/photo-list.scss index b0c926def..67d848fa7 100644 --- a/front/salix/styles/photo-list.scss +++ b/front/salix/styles/photo-list.scss @@ -8,10 +8,10 @@ .photo { box-sizing: border-box; - transition: all 0.5s; + transition: all .5s; padding: $spacing-sm; position: relative; - width: 28em; + width: 448px; .image { box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), @@ -30,8 +30,8 @@ } .actions { position: absolute; - right: 1em; - top: 1em + right: 16px; + top: 16px } } .photo:hover .image { diff --git a/modules/claim/front/action/style.scss b/modules/claim/front/action/style.scss index aef8d2cfd..bac316287 100644 --- a/modules/claim/front/action/style.scss +++ b/modules/claim/front/action/style.scss @@ -36,7 +36,7 @@ vn-claim-action { div.ticketList { overflow: auto; - max-height: 350px + max-height: 350px; } } } \ No newline at end of file diff --git a/modules/claim/front/basic-data/style.scss b/modules/claim/front/basic-data/style.scss index 5f1432879..e80361ca8 100644 --- a/modules/claim/front/basic-data/style.scss +++ b/modules/claim/front/basic-data/style.scss @@ -1,3 +1,3 @@ vn-claim-basic-data vn-date-picker { - padding-left: 5em; + padding-left: 80px; } diff --git a/modules/claim/front/detail/style.scss b/modules/claim/front/detail/style.scss index 6229e56fb..63d6e2e04 100644 --- a/modules/claim/front/detail/style.scss +++ b/modules/claim/front/detail/style.scss @@ -1,7 +1,7 @@ @import "variables"; .vn-popover .discount-popover { - width: 16em; + width: 256px; .header { background-color: $color-main; @@ -13,8 +13,8 @@ } } .simulatorTitle { - margin-bottom: 0px; - font-size: 12px; + margin-bottom: 0; + font-size: .75rem; color: $color-main; } vn-label-value { diff --git a/modules/claim/front/photos/style.scss b/modules/claim/front/photos/style.scss index 35f548560..d747dd9b8 100644 --- a/modules/claim/front/photos/style.scss +++ b/modules/claim/front/photos/style.scss @@ -6,17 +6,17 @@ vn-claim-photos { .drop-zone { color: $color-font-secondary; box-sizing: border-box; - border-radius: 0.5em; + border-radius: 8px; text-align: center; min-height: 100%; .empty-rows { - padding: 5em $spacing-md; - font-size: 1.4em + padding: 80px $spacing-md; + font-size: 1.375rem } vn-icon { - font-size: 3em + font-size: 3rem } } @@ -25,8 +25,8 @@ vn-claim-photos { min-height: 100%; .photo { - width: 32em; - height: 18em; + width: 512px; + height: 288px; } } } \ No newline at end of file diff --git a/modules/claim/front/summary/style.scss b/modules/claim/front/summary/style.scss index afd3838be..e0542dea0 100644 --- a/modules/claim/front/summary/style.scss +++ b/modules/claim/front/summary/style.scss @@ -2,9 +2,9 @@ vn-claim-summary { section.photo { - height: 15.5em + height: 248px; } .photo .image { - border-radius: 0.2em + border-radius: 3px; } } \ No newline at end of file diff --git a/modules/client/front/balance/create/index.html b/modules/client/front/balance/create/index.html index 36f45653f..07c4de531 100644 --- a/modules/client/front/balance/create/index.html +++ b/modules/client/front/balance/create/index.html @@ -1,11 +1,6 @@ - +
- - -
New payment
-
+
New payment
- -
- - - -
- \ No newline at end of file + + + + +
\ No newline at end of file diff --git a/modules/client/front/balance/create/index.js b/modules/client/front/balance/create/index.js index 1a7d8b97b..5844e2204 100644 --- a/modules/client/front/balance/create/index.js +++ b/modules/client/front/balance/create/index.js @@ -1,10 +1,12 @@ import ngModule from '../../module'; -import Section from 'salix/components/section'; -import './style.scss'; +import Dialog from 'core/components/dialog'; +import template from './index.html'; + +class Controller extends Dialog { + constructor($element, $, $transclude) { + super($element, $, $transclude); + this.fillSlots(template); -class Controller extends Section { - constructor($element, $) { - super($element, $); this.receipt = { payed: new Date(), clientFk: this.$params.id, @@ -51,46 +53,35 @@ class Controller extends Section { } getAmountPaid() { - let filter = { + const filter = { where: { clientFk: this.$params.id, companyFk: this.receipt.companyFk } }; - let query = `ClientRisks?filter=${JSON.stringify(filter)}`; - this.$http.get(query).then(res => { + this.$http.get(`ClientRisks`, {filter}).then(res => { this.receipt.amountPaid = (res.data.length && res.data[0].amount) || null; }); } - show() { - this.$.dialog.show(); - } + responseHandler(response) { + if (response !== 'accept') + return super.responseHandler(response); - hide() { - this.$.dialog.hide(); - } - - save() { - let query = `receipts`; - this.$http.post(query, this.receipt).then(() => { - this.vnApp.showSuccess(this.$translate.instant('Data saved!')); - this.hide(); - if (this.onResponse) - this.onResponse(); - }); + return this.$http.post(`Receipts`, this.receipt) + .then(() => super.responseHandler(response)) + .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); } } -ngModule.component('vnClientBalanceCreate', { - template: require('./index.html'), +ngModule.vnComponent('vnClientBalanceCreate', { controller: Controller, + transclude: true, bindings: { payed: ' + +
+ + +
+
Total by company
+ + +
+
+
- - - - - - - - -
-
Total by company
- - - - -
-
-
-
@@ -117,10 +113,12 @@ vn-tooltip="New payment" vn-bind="+" fixed-bottom-right - ng-click="$ctrl.openCreateDialog()"> + ng-click="balanceCreate.show()"> + vn-id="balance-create" + on-accept="$ctrl.getData()" + company-fk="$ctrl.companyId"> this.getData(); - this.$.balanceCreateDialog.show(); - } - showWorkerDescriptor(event, workerFk) { if (event.defaultPrevented) return; diff --git a/modules/client/front/balance/index/style.scss b/modules/client/front/balance/index/style.scss deleted file mode 100644 index 74d3bc09b..000000000 --- a/modules/client/front/balance/index/style.scss +++ /dev/null @@ -1,10 +0,0 @@ - -@import "./variables"; - -vn-client-balance-index { - .totalBox { - border: $border-thin-light; - text-align: left; - float: right - } -} \ No newline at end of file diff --git a/modules/client/front/billing-data/index.html b/modules/client/front/billing-data/index.html index 891c9364f..3be5de972 100644 --- a/modules/client/front/billing-data/index.html +++ b/modules/client/front/billing-data/index.html @@ -106,7 +106,8 @@ vn-one label="Name" ng-model="$ctrl.newBankEntity.name" - required="true"> + required="true" + vn-focus> diff --git a/modules/client/front/descriptor-popover/style.scss b/modules/client/front/descriptor-popover/style.scss index 0262c4ac0..8de03b90b 100644 --- a/modules/client/front/descriptor-popover/style.scss +++ b/modules/client/front/descriptor-popover/style.scss @@ -1,7 +1,7 @@ vn-client-descriptor-popover { vn-client-descriptor { display: block; - width: 16em; + width: 256px; & > vn-card{ margin: 0!important; } diff --git a/modules/client/front/sample/create/style.scss b/modules/client/front/sample/create/style.scss index fdd01f729..b6cb688b5 100644 --- a/modules/client/front/sample/create/style.scss +++ b/modules/client/front/sample/create/style.scss @@ -4,7 +4,7 @@ div.vn-dialog { .container, .container h1 { font-family: "Roboto","Helvetica","Arial",sans-serif; - font-size: 1em !important; + font-size: 1rem !important; h1 { font-weight: bold; @@ -12,18 +12,18 @@ div.vn-dialog { } p { - margin: 1em 0 + margin: 16px 0 } footer p { - font-size: 10px !important; - line-height: 10px + font-size: .625rem !important; + line-height: 10px; } } .title h1 { - font-size: 2em !important; + font-size: 2rem !important; margin: 0 } diff --git a/modules/client/front/sms/style.scss b/modules/client/front/sms/style.scss index 89723b196..84571a5f4 100644 --- a/modules/client/front/sms/style.scss +++ b/modules/client/front/sms/style.scss @@ -1,5 +1,5 @@ @import "variables"; .SMSDialog { - min-width: 25em + min-width: 400px } \ No newline at end of file diff --git a/modules/invoiceOut/front/descriptor-popover/style.scss b/modules/invoiceOut/front/descriptor-popover/style.scss index 58e65d320..f50481083 100644 --- a/modules/invoiceOut/front/descriptor-popover/style.scss +++ b/modules/invoiceOut/front/descriptor-popover/style.scss @@ -1,8 +1,8 @@ vn-ticket-descriptor-popover { vn-ticket-descriptor { display: block; - width: 16em; - max-height: 28em; + width: 256px; + max-height: 448px; & > vn-card { margin: 0!important; diff --git a/modules/invoiceOut/front/descriptor/index.html b/modules/invoiceOut/front/descriptor/index.html index 981c23e34..1c18d92ed 100644 --- a/modules/invoiceOut/front/descriptor/index.html +++ b/modules/invoiceOut/front/descriptor/index.html @@ -40,11 +40,11 @@
\ No newline at end of file diff --git a/modules/invoiceOut/front/descriptor/index.js b/modules/invoiceOut/front/descriptor/index.js index fea3c8bad..b813214bc 100644 --- a/modules/invoiceOut/front/descriptor/index.js +++ b/modules/invoiceOut/front/descriptor/index.js @@ -5,9 +5,18 @@ class Controller extends Component { constructor($element, $) { super($element, $); this.moreOptions = [ - {callback: this.showInvoiceOutPdf, name: 'Show invoice PDF'}, - {callback: this.showDeleteInvoiceOutDialog, name: 'Delete Invoice', acl: 'invoicing'}, - {callback: this.showBookInvoiceOutDialog, name: 'Book invoice', acl: 'invoicing'} + { + name: 'Show invoice PDF', + callback: this.showInvoiceOutPdf + }, { + name: 'Delete Invoice', + callback: this.showDeleteInvoiceOutDialog, + acl: 'invoicing' + }, { + name: 'Book invoice', + callback: this.showBookInvoiceOutDialog, + acl: 'invoicing' + } ]; } @@ -60,24 +69,18 @@ class Controller extends Component { this.$.bookConfirmation.show(); } - deleteInvoiceOut(response) { - if (response === 'accept') { - const query = `InvoiceOuts/${this.invoiceOut.id}/delete`; - this.$http.post(query).then(() => { - this.vnApp.showSuccess(this.$translate.instant('InvoiceOut deleted')); - this.$state.go('invoiceOut.index'); - }); - } + deleteInvoiceOut() { + const query = `InvoiceOuts/${this.invoiceOut.id}/delete`; + return this.$http.post(query) + .then(() => this.$state.go('invoiceOut.index')) + .then(() => this.vnApp.showSuccess(this.$t('InvoiceOut deleted'))); } - bookInvoiceOut(response) { - if (response === 'accept') { - const query = `InvoiceOuts/${this.invoiceOut.ref}/book`; - this.$http.post(query).then(() => { - this.vnApp.showSuccess(this.$translate.instant('InvoiceOut booked')); - this.$state.reload(); - }); - } + bookInvoiceOut() { + const query = `InvoiceOuts/${this.invoiceOut.ref}/book`; + return this.$http.post(query) + .then(() => this.$state.reload()) + .then(() => this.vnApp.showSuccess(this.$t('InvoiceOut booked'))); } set quicklinks(value = {}) { diff --git a/modules/item/front/descriptor-popover/style.scss b/modules/item/front/descriptor-popover/style.scss index 6c03a004e..219e68bae 100644 --- a/modules/item/front/descriptor-popover/style.scss +++ b/modules/item/front/descriptor-popover/style.scss @@ -1,5 +1,5 @@ body > .vn-popover vn-item-descriptor { display: block; - width: 16em; - min-height: 28em; + width: 256px; + min-height: 448px; } \ No newline at end of file diff --git a/modules/item/front/fetched-tags/style.scss b/modules/item/front/fetched-tags/style.scss index a15907232..393c17651 100644 --- a/modules/item/front/fetched-tags/style.scss +++ b/modules/item/front/fetched-tags/style.scss @@ -10,7 +10,7 @@ vn-fetched-tags { & > vn-one { overflow: hidden; text-overflow: ellipsis; - min-width: 5em; + min-width: 80px; } & > vn-one:nth-child(2) h3 { @@ -18,25 +18,25 @@ vn-fetched-tags { text-transform: uppercase; line-height: initial; text-align: center; - font-size: 1em + font-size: 1rem } & > vn-auto { display: flex; - padding-left: .4em; - min-width: 12em; + padding-left: 6px; + min-width: 192px; & > .inline-tag { display: inline-block; color: $color-font-secondary; - margin-left: .4em; + margin-left: 6px; text-align: center; - font-size: .8em; - height: 1.25em; - padding: .1em; - border-radius: .1em; - width: 4em; - min-width: 4em; + font-size: .75rem; + height: 20px; + padding: 1px; + border-radius: 1px; + width: 64px; + min-width: 64px; border: 1px solid $color-spacer; &.empty { @@ -48,7 +48,7 @@ vn-fetched-tags { flex-direction: column; & > vn-one { - padding-bottom: .2em + padding-bottom: 3px } & > vn-auto { white-space: initial; @@ -57,7 +57,7 @@ vn-fetched-tags { justify-content: center; & > .inline-tag { - margin: .1em; + margin: 1px; } } } diff --git a/modules/item/front/index/style.scss b/modules/item/front/index/style.scss index 1cbc88124..c3d65349e 100644 --- a/modules/item/front/index/style.scss +++ b/modules/item/front/index/style.scss @@ -6,23 +6,23 @@ vn-item-product { .id { background-color: $color-main; color: $color-font-dark; - margin-bottom: 0em; + margin-bottom: 0; } .image { - height: 7em; - width: 7em; + height: 112px; + width: 112px; & > img { max-height: 100%; max-width: 100%; - border-radius: .2em; + border-radius: 3px; } } vn-label-value:first-of-type section{ - margin-top: 0.6em; + margin-top: 9px; } vn-fetched-tags vn-horizontal{ - margin-top: 0.9em; + margin-top: 14px; } } diff --git a/modules/item/front/summary/style.scss b/modules/item/front/summary/style.scss index bb7e5d227..7d5e3b609 100644 --- a/modules/item/front/summary/style.scss +++ b/modules/item/front/summary/style.scss @@ -7,12 +7,12 @@ vn-item-summary { } .item-state { - padding: .4em; + padding: 6px; background-color: $color-main; color: $color-font-dark; p { - font-size: .8em; + font-size: .75rem; text-align: center; margin: 0; @@ -21,7 +21,7 @@ vn-item-summary { line-height: 1; } &:last-child { - font-size: 1.5em; + font-size: 1.5rem; font-weight: bold; } } @@ -29,7 +29,7 @@ vn-item-summary { padding: 0; &:nth-child(1) { - border-right: .1em solid white; + border-right: 1px solid white; } } } \ No newline at end of file diff --git a/modules/item/front/waste/style.scss b/modules/item/front/waste/style.scss index 59e9a3b68..55a6eb2ef 100644 --- a/modules/item/front/waste/style.scss +++ b/modules/item/front/waste/style.scss @@ -4,14 +4,14 @@ vn-item-waste { .header { margin-bottom: 16px; text-transform: uppercase; - font-size: 15pt; + font-size: 1.25rem; line-height: 1; padding: 7px; padding-bottom: 7px; padding-bottom: 4px; font-weight: lighter; background-color: #fde6ca; - border-bottom: 0.1em solid #f7931e; + border-bottom: 1px solid #f7931e; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -19,7 +19,7 @@ vn-item-waste { vn-table vn-th.waste-family, vn-table vn-td.waste-family { - max-width: 4em; - width: 4em + max-width: 64px; + width: 64px } } \ No newline at end of file diff --git a/modules/order/front/catalog-view/style.scss b/modules/order/front/catalog-view/style.scss index 18dc51bb0..aa4e301a9 100644 --- a/modules/order/front/catalog-view/style.scss +++ b/modules/order/front/catalog-view/style.scss @@ -15,7 +15,7 @@ vn-order-catalog { } } & > vn-auto { - width: 28em; + width: 448px; display: flex; overflow: hidden; diff --git a/modules/order/front/catalog/style.scss b/modules/order/front/catalog/style.scss index 308acb6b2..9ffe81dfb 100644 --- a/modules/order/front/catalog/style.scss +++ b/modules/order/front/catalog/style.scss @@ -34,9 +34,9 @@ vn-order-catalog vn-side-menu div { color: #FFF } & > i:before { - font-size: 32pt; - width: 1em; - height: 1em; + font-size: 2.6rem; + width: 16px; + height: 16px; } } } @@ -49,6 +49,6 @@ vn-order-catalog vn-side-menu div { max-width: 100%; } vn-autocomplete[vn-id="type"] .list { - max-height: 20em + max-height: 320px } } \ No newline at end of file diff --git a/modules/order/front/prices-popover/style.scss b/modules/order/front/prices-popover/style.scss index 150c2296a..edd2d1513 100644 --- a/modules/order/front/prices-popover/style.scss +++ b/modules/order/front/prices-popover/style.scss @@ -14,15 +14,15 @@ .prices { vn-table { .warehouse { - width: 3em; - max-width: 3em; + width: 48px; + max-width: 48px; } .price-kg { color: $color-font-secondary; - font-size: .8em + font-size: .75rem } .vn-input-number { - width: 3.5em; + width: 56px; } } .footer { diff --git a/modules/order/front/summary/style.scss b/modules/order/front/summary/style.scss index c225b4b49..a0ed56d42 100644 --- a/modules/order/front/summary/style.scss +++ b/modules/order/front/summary/style.scss @@ -4,16 +4,16 @@ vn-order-summary .summary{ max-width: $width-lg; & > div > vn-horizontal > vn-one { - min-width: 10em !important; + min-width: 160px !important; &.taxes { border: $border-thin-light; text-align: right; - padding: .5em !important; + padding: 8px !important; & > p { - font-size: 1.2em; - margin: .2em; + font-size: 1.2rem; + margin: 3px; } } } diff --git a/modules/route/front/descriptor-popover/style.scss b/modules/route/front/descriptor-popover/style.scss index 0c84ff2fe..163a032e3 100644 --- a/modules/route/front/descriptor-popover/style.scss +++ b/modules/route/front/descriptor-popover/style.scss @@ -1,7 +1,7 @@ vn-route-descriptor-popover { vn-route-descriptor { display: block; - width: 16em; + width: 256px; & > vn-card{ margin: 0!important; } diff --git a/modules/ticket/front/card/index.js b/modules/ticket/front/card/index.js index 3872259a9..8dce23aa7 100644 --- a/modules/ticket/front/card/index.js +++ b/modules/ticket/front/card/index.js @@ -57,13 +57,13 @@ class Controller extends ModuleCard { ], }; - this.$http.get(`Tickets/${this.$params.id}`, {filter}) + return this.$http.get(`Tickets/${this.$params.id}`, {filter}) .then(res => this.onData(res.data)); } onData(data) { this.ticket = data; - this.$http.get(`Clients/${data.client.id}/getDebt`) + return this.$http.get(`Clients/${data.client.id}/getDebt`) .then(res => this.ticket.client.debt = res.data.debt); } } diff --git a/modules/ticket/front/component/style.scss b/modules/ticket/front/component/style.scss index c20b8f720..d1a8ac9c4 100644 --- a/modules/ticket/front/component/style.scss +++ b/modules/ticket/front/component/style.scss @@ -3,23 +3,23 @@ vn-ticket-components { .vn-table > tbody { &:not(:last-child) { - border-bottom: .1em solid $color-spacer-light; + border-bottom: 1px solid $color-spacer-light; } & > tr { border-bottom: none; &.components { - height: 1em; + height: 16px; & > td { - padding-top: .1em; - padding-bottom: .1em; + padding-top: 1px; + padding-bottom: 1px; } &:nth-child(2) > td { - padding-top: 1em; + padding-top: 16px; } &:last-child > td { - padding-bottom: 1em; + padding-bottom: 16px; } } } diff --git a/modules/ticket/front/descriptor-popover/style.scss b/modules/ticket/front/descriptor-popover/style.scss index 58e65d320..f50481083 100644 --- a/modules/ticket/front/descriptor-popover/style.scss +++ b/modules/ticket/front/descriptor-popover/style.scss @@ -1,8 +1,8 @@ vn-ticket-descriptor-popover { vn-ticket-descriptor { display: block; - width: 16em; - max-height: 28em; + width: 256px; + max-height: 448px; & > vn-card { margin: 0!important; diff --git a/modules/ticket/front/descriptor/index.html b/modules/ticket/front/descriptor/index.html index f47f3d6ef..2ea87839b 100644 --- a/modules/ticket/front/descriptor/index.html +++ b/modules/ticket/front/descriptor/index.html @@ -153,20 +153,14 @@ + on-accept="$ctrl.changeShipped()"> -
-
- Change shipped hour -
- - -
+
Change shipped hour
+ +
diff --git a/modules/ticket/front/descriptor/index.js b/modules/ticket/front/descriptor/index.js index d60e2ce67..28fdfe3a2 100644 --- a/modules/ticket/front/descriptor/index.js +++ b/modules/ticket/front/descriptor/index.js @@ -9,38 +9,45 @@ class Controller extends Component { this.moreOptions = [ { name: 'Add turn', - acl: 'buyer', - callback: this.showAddTurnDialog - }, - {name: 'Show Delivery Note', callback: this.showDeliveryNote}, - {name: 'Send Delivery Note', callback: this.confirmDeliveryNote}, - {name: 'Delete ticket', callback: this.showDeleteTicketDialog}, - {name: 'Change shipped hour', callback: this.showChangeShipped}, - {name: 'SMS Pending payment', callback: this.sendPaymentSms}, - {name: 'SMS Minimum import', callback: this.sendImportSms}, - { + callback: this.showAddTurnDialog, + acl: 'buyer' + }, { + name: 'Show Delivery Note', + callback: this.showDeliveryNote + }, { + name: 'Send Delivery Note', + callback: this.confirmDeliveryNote + }, { + name: 'Delete ticket', + callback: this.showDeleteTicketDialog + }, { + name: 'Change shipped hour', + callback: this.showChangeShipped + }, { + name: 'SMS Pending payment', + callback: this.sendPaymentSms + }, { + name: 'SMS Minimum import', + callback: this.sendImportSms + }, { name: 'Add stowaway', callback: this.showAddStowaway, show: () => this.canShowStowaway - }, - { + }, { name: 'Delete stowaway', callback: this.showDeleteStowaway, show: () => this.shouldShowDeleteStowaway() - }, - { + }, { name: 'Make invoice', - acl: 'invoicing', callback: this.showMakeInvoiceDialog, - show: () => !this.hasInvoice() - }, - { + show: () => !this.hasInvoice(), + acl: 'invoicing' + }, { name: 'Regenerate invoice', - acl: 'invoicing', callback: this.showRegenerateInvoiceDialog, - show: () => this.hasInvoice() - }, - { + show: () => this.hasInvoice(), + acl: 'invoicing' + }, { name: 'Recalculate components', callback: this.comfirmRecalculateComponents, show: () => this.isEditable @@ -98,22 +105,20 @@ class Controller extends Component { showChangeShipped() { if (!this.isEditable) { - this.vnApp.showError(this.$translate.instant(`This ticket can't be modified`)); + this.vnApp.showError(this.$t(`This ticket can't be modified`)); return; } + this.newShipped = this.ticket.shipped; this.$.changeShippedDialog.show(); } - changeShipped(response) { - if (response === 'accept') { - let data = {shipped: this.newShipped}; - let query = `Tickets/${this.ticket.id}/updateEditableTicket`; - this.$http.post(query, data).then(() => { - this.vnApp.showSuccess(this.$translate.instant('Shipped hour updated')); - this.cardReload(); - }); - } + changeShipped() { + let data = {shipped: this.newShipped}; + let query = `Tickets/${this.ticket.id}/updateEditableTicket`; + this.$http.post(query, data) + .then(() => this.cardReload()) + .then(() => this.vnApp.showSuccess(this.$t('Shipped hour updated'))); } isTicketModule() { @@ -161,13 +166,13 @@ class Controller extends Component { let params = {ticketFk: this.ticket.id, weekDay: day}; this.$http.patch(`TicketWeeklies`, params).then(() => { this.$.addTurn.hide(); - this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + this.vnApp.showSuccess(this.$t('Data saved!')); }); } showDeleteTicketDialog() { if (!this.isEditable) { - this.vnApp.showError(this.$translate.instant('This ticket cant be deleted')); + this.vnApp.showError(this.$t('This ticket cant be deleted')); return; } @@ -179,7 +184,7 @@ class Controller extends Component { const query = `Tickets/${this.ticket.id}/setDeleted`; this.$http.post(query).then(() => { this.$state.go('ticket.index'); - this.vnApp.showSuccess(this.$translate.instant('Ticket deleted')); + this.vnApp.showSuccess(this.$t('Ticket deleted')); }); } } @@ -213,7 +218,7 @@ class Controller extends Component { deleteStowaway() { const query = `Tickets/${this.ticket.id}/deleteStowaway`; this.$http.post(query).then(res => { - this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + this.vnApp.showSuccess(this.$t('Data saved!')); this.cardReload(); }); } @@ -236,7 +241,7 @@ class Controller extends Component { ticketId: this.ticket.id }; this.$http.get(`email/delivery-note`, {params}).then( - () => this.vnApp.showMessage(this.$translate.instant('Notification sent!')) + () => this.vnApp.showMessage(this.$t('Notification sent!')) ); } @@ -245,13 +250,13 @@ class Controller extends Component { ticketId: this.ticket.id, created: this.ticket.created }; - const message = this.$params.message || this.$translate.instant('Minimum is needed', params); + const message = this.$params.message || this.$t('Minimum is needed', params); this.newSMS = {message}; this.showSMSDialog(); } sendPaymentSms() { - const message = this.$params.message || this.$translate.instant('Make a payment'); + const message = this.$params.message || this.$t('Make a payment'); this.newSMS = {message}; this.showSMSDialog(); } @@ -284,7 +289,7 @@ class Controller extends Component { if (response === 'accept') { const query = `Tickets/${this.ticket.id}/makeInvoice`; this.$http.post(query).then(() => { - this.vnApp.showSuccess(this.$translate.instant('Ticket invoiced')); + this.vnApp.showSuccess(this.$t('Ticket invoiced')); this.$state.reload(); }); } @@ -308,7 +313,7 @@ class Controller extends Component { const invoiceId = this.ticket.invoiceOut.id; const query = `InvoiceOuts/${invoiceId}/regenerate`; this.$http.post(query).then(() => { - const snackbarMessage = this.$translate.instant( + const snackbarMessage = this.$t( `Invoice sent for a regeneration, will be available in a few minutes`); this.vnApp.showSuccess(snackbarMessage); }); @@ -341,7 +346,7 @@ class Controller extends Component { recalculateComponents() { const query = `Tickets/${this.ticket.id}/recalculateComponents`; this.$http.post(query).then(res => { - this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + this.vnApp.showSuccess(this.$t('Data saved!')); }); } } diff --git a/modules/ticket/front/descriptor/index.spec.js b/modules/ticket/front/descriptor/index.spec.js index 3f4b87682..4f43ac010 100644 --- a/modules/ticket/front/descriptor/index.spec.js +++ b/modules/ticket/front/descriptor/index.spec.js @@ -157,8 +157,7 @@ describe('Ticket Component vnTicketDescriptor', () => { jest.spyOn(controller.vnApp, 'showSuccess'); jest.spyOn(controller, 'cardReload'); - $httpBackend.when('POST', 'Tickets/12/updateEditableTicket').respond(); - $httpBackend.expect('POST', 'Tickets/12/updateEditableTicket').respond(); + $httpBackend.expectRoute('POST', 'Tickets/:id/updateEditableTicket').respond(); controller.changeShipped('accept'); $httpBackend.flush(); diff --git a/modules/ticket/front/descriptor/style.scss b/modules/ticket/front/descriptor/style.scss index 4becf9789..1a69feeff 100644 --- a/modules/ticket/front/descriptor/style.scss +++ b/modules/ticket/front/descriptor/style.scss @@ -2,7 +2,7 @@ .add-stowaway { vn-data-viewer { - width: 40em + width: 640px } } diff --git a/modules/ticket/front/sale/style.scss b/modules/ticket/front/sale/style.scss index 1eb7556e9..142c72295 100644 --- a/modules/ticket/front/sale/style.scss +++ b/modules/ticket/front/sale/style.scss @@ -13,14 +13,14 @@ vn-ticket-sale { } } .taxes { - max-width: 10em; + max-width: 160px; border: $border-thin-light; text-align: right; - padding: .5em !important; + padding: 8px !important; & > p { - font-size: 1.2em; - margin: .2em; + font-size: 1.2rem; + margin: 3px; } } vn-dialog.edit { @@ -61,24 +61,24 @@ vn-ticket-sale { vn-horizontal { & > vn-one:nth-child(1) { border-right: 1px solid $color-bg; - padding-right: 1em; + padding-right: 16px; } & > vn-one:nth-child(2) { - margin-left: 1em + margin-left: 16px } } vn-table, table { - margin-bottom: 10px + margin-bottom: 10px; } vn-table { overflow-x: hidden; overflow-y: auto; - max-height: 25em; - width: 30em; + max-height: 400px; + width: 480px; } table { - width: 25em + width: 400px } } .edit-price { @@ -96,8 +96,8 @@ vn-ticket-sale { } p.simulatorTitle { - margin-bottom: 0px; - font-size: 12px; + margin-bottom: 0; + font-size: .75rem; color: $color-main; } vn-label-value { diff --git a/modules/ticket/front/services/index.html b/modules/ticket/front/services/index.html index 419110eac..57146661c 100644 --- a/modules/ticket/front/services/index.html +++ b/modules/ticket/front/services/index.html @@ -22,7 +22,7 @@ @@ -72,26 +72,28 @@ + vn-id="newServiceTypeDialog" + on-accept="$ctrl.onNewServiceTypeAccept($data)" + on-close="newServiceType = null">
New service type
- + ng-model="newServiceType.expenseFk">
diff --git a/modules/ticket/front/services/index.js b/modules/ticket/front/services/index.js index 8627360c6..efb62fe2e 100644 --- a/modules/ticket/front/services/index.js +++ b/modules/ticket/front/services/index.js @@ -17,43 +17,33 @@ class Controller extends Section { } add() { - if (this.defaultTaxClass) { - this.$.model.insert({ - taxClassFk: this.defaultTaxClass.id, - quantity: 1, - ticketFk: this.$params.id - }); - } + this.$.model.insert({ + taxClassFk: this.defaultTaxClass.id, + quantity: 1, + ticketFk: this.$params.id + }); } - onNewServiceTypeOpen() { - this.newServiceType = {}; - } - - newServiceTypeDialog(elementIndex, event) { + onNewServiceTypeClick(service, event) { event.preventDefault(); - this.$.createServiceTypeDialog.show(); - this.currentServiceIndex = elementIndex; + this.$.newServiceType = {}; + this.$.newServiceTypeDialog.show(service); } - onNewServiceTypeResponse(response) { - if (response == 'accept') { - if (!this.newServiceType.name) - throw new UserError(`Name can't be empty`); + onNewServiceTypeAccept(service) { + if (!this.$.newServiceType.name) + throw new UserError(`Name can't be empty`); - this.$http.post(`TicketServiceTypes`, this.newServiceType).then(response => { - this.services[this.currentServiceIndex].ticketServiceTypeFk = response.data.id; - }); - } + return this.$http.post(`TicketServiceTypes`, this.$.newServiceType) + .then(res => service.ticketServiceTypeFk = res.data.id); } onSubmit() { this.$.watcher.check(); - this.$.model.save().then(() => { - this.$.watcher.notifySaved(); - this.$.model.refresh(); - }); + this.$.model.save() + .then(() => this.$.model.refresh()) + .then(() => this.$.watcher.notifySaved()); } } diff --git a/modules/ticket/front/services/index.spec.js b/modules/ticket/front/services/index.spec.js index 30bcd821a..10e3ad47e 100644 --- a/modules/ticket/front/services/index.spec.js +++ b/modules/ticket/front/services/index.spec.js @@ -3,17 +3,16 @@ import './index.js'; describe('Ticket component vnTicketService', () => { let controller; let $httpBackend; - let $httpParamSerializer; let $scope; let $element; beforeEach(ngModule('ticket')); - beforeEach(angular.mock.inject(($componentController, _$httpBackend_, _$httpParamSerializer_, $rootScope) => { - $element = angular.element(`
`); + beforeEach(angular.mock.inject(($componentController, _$httpBackend_, $rootScope) => { $httpBackend = _$httpBackend_; - $httpParamSerializer = _$httpParamSerializer_; $scope = $rootScope.$new(); + + $element = angular.element(`
`); controller = $componentController('vnTicketService', {$scope, $element}); })); @@ -32,13 +31,13 @@ describe('Ticket component vnTicketService', () => { }); }); - describe('onNewServiceTypeResponse', () => { - it(`should throw an error if the new service description is empty`, () => { - controller.newServiceType = {name: undefined}; + describe('onNewServiceTypeAccept', () => { + it(`should throw an error if the new service type name is empty`, () => { + $scope.newServiceType = {}; let error; try { - controller.onNewServiceTypeResponse('accept'); + controller.onNewServiceTypeAccept({}); } catch (e) { error = e.message; } @@ -47,18 +46,22 @@ describe('Ticket component vnTicketService', () => { }); it('should set the description of the selected service upon service type creation', () => { - controller.services = [ - {id: 1, description: 'not too great service'} - ]; + const service = { + id: 1, + quantity: 10 + }; + $scope.newServiceType = { + name: 'Totally new stuff' + }; - controller.newServiceType = {name: 'totally new stuff'}; - controller.currentServiceIndex = 0; - - $httpBackend.when('POST', 'TicketServiceTypes').respond({id: 4001, name: 'totally new stuff'}); - controller.onNewServiceTypeResponse('accept'); + $httpBackend.when('POST', 'TicketServiceTypes').respond({ + id: 4001, + name: 'Totally new stuff' + }); + controller.onNewServiceTypeAccept(service); $httpBackend.flush(); - expect(controller.services[0].ticketServiceTypeFk).toEqual(4001); + expect(service.ticketServiceTypeFk).toEqual(4001); }); }); }); diff --git a/modules/ticket/front/sms/style.scss b/modules/ticket/front/sms/style.scss index 89723b196..84571a5f4 100644 --- a/modules/ticket/front/sms/style.scss +++ b/modules/ticket/front/sms/style.scss @@ -1,5 +1,5 @@ @import "variables"; .SMSDialog { - min-width: 25em + min-width: 400px } \ No newline at end of file diff --git a/modules/ticket/front/summary/style.scss b/modules/ticket/front/summary/style.scss index 4502c5dca..d92121194 100644 --- a/modules/ticket/front/summary/style.scss +++ b/modules/ticket/front/summary/style.scss @@ -32,29 +32,29 @@ vn-ticket-summary .summary { } & > vn-horizontal > vn-one { - min-width: 10em; + min-width: 160px; &.taxes { border: $border-thin-light; text-align: right; - padding: .5em; + padding: 8px; & > p { - font-size: 1.2em; - margin: .2em; + font-size: 1.2rem; + margin: 3px; } } &.services { .vn-table > vn-thead .identifier, .vn-table > vn-tbody .identifier { - min-width: 3.5em + min-width: 56px } .vn-table > vn-thead .tax-class, .vn-table > vn-tbody .tax-class { - min-width: 11em; - width: 1px + min-width: 176px; + width: 1px; } .vn-table > vn-tbody vn-td:first-child { diff --git a/modules/worker/front/calendar/style.scss b/modules/worker/front/calendar/style.scss index e622dda64..9b3fc749b 100644 --- a/modules/worker/front/calendar/style.scss +++ b/modules/worker/front/calendar/style.scss @@ -13,7 +13,7 @@ vn-worker-calendar { border: 1px solid #ddd; margin: $spacing-md; padding: $spacing-xs; - max-width: 18em; + max-width: 288px; } } } diff --git a/modules/worker/front/time-control/style.scss b/modules/worker/front/time-control/style.scss index 8555e827b..99a21883f 100644 --- a/modules/worker/front/time-control/style.scss +++ b/modules/worker/front/time-control/style.scss @@ -13,11 +13,11 @@ vn-worker-time-control { display: flex; align-items: center; justify-content: center; - padding: .3em 0; + padding: 4px 0; & > vn-icon { color: $color-font-secondary; - padding-right: .1em; + padding-right: 1px; } } } diff --git a/modules/zone/front/calendar/style.scss b/modules/zone/front/calendar/style.scss index 3fe23278e..14d234c1b 100644 --- a/modules/zone/front/calendar/style.scss +++ b/modules/zone/front/calendar/style.scss @@ -24,7 +24,7 @@ vn-zone-calendar { justify-content: space-evenly; & > .vn-calendar { - max-width: 18em; + max-width: 288px; .day { &.event .day-number { diff --git a/modules/zone/front/delivery-days/style.scss b/modules/zone/front/delivery-days/style.scss index a279ca0b9..3dd4abb7c 100644 --- a/modules/zone/front/delivery-days/style.scss +++ b/modules/zone/front/delivery-days/style.scss @@ -7,7 +7,7 @@ vn-zone-delivery-days { flex-wrap: wrap; & > vn-calendar { - min-width: 16.5em; + min-width: 264px; } } form {