@jigx/mdk
Version:
Jigx Mobile Development Kit - SDK for building Jigx applications
46 lines • 6.65 kB
JavaScript
/**
* Add expense screen with form validation and category selection.
* Saves new expense records to local database with offline sync capability.
* @param app - Application builder instance
* @returns Configured add expense screen
*/
export function addExpenseScreen(app) {
const screen = app.addScreen.default('add-expense', 'Add New Expense');
// Main form container
const form = screen.addControl.form({ instanceId: 'expense-form' });
form.addControl.textField({ instanceId: 'title' })
.label('Title')
.required(true);
form.addControl.numberField({ instanceId: 'amount' })
.label('Amount')
.required(true);
// Category selection dropdown
const categoryDropdown = form.addControl
.dropdown({ instanceId: 'category', isRequired: true })
.label('Category')
.data({ datasourceId: 'data-expense-categories' });
categoryDropdown.item('=@ctx.current.item.id')
.title('=@ctx.current.item.name')
.value('=@ctx.current.item.id');
form.addControl.datePicker({ instanceId: 'date', isRequired: true })
.label('Date')
.value('=@ctx.jig.state.now');
form.addControl.textField({ instanceId: 'description' })
.label('Description')
.isMultiline(true);
// Bottom panel save action
const buttons = screen.bottomPanel.buttons();
buttons.add.executeEntity('Save Expense', 'sequential')
.dynamicData('default/expenses', 'save')
.data({
title: '=@ctx.components.title.state.value',
amount: '=@ctx.components.amount.state.value',
category: '=@ctx.components.category.state.selected',
date: '=@ctx.components.date.state.value',
description: '=@ctx.components.description.state.value',
timestamp: '=@ctx.solution.state.now'
})
.goBack('previous');
return screen;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWV4cGVuc2Utc2NyZWVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVtcGxhdGUtYXBwLTEvc2NyZWVucy9hZGQtZXhwZW5zZS1zY3JlZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBdUI7SUFDdEQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLENBQUE7SUFFdEUsc0JBQXNCO0lBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUE7SUFFbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDL0MsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUVqQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUNsRCxLQUFLLENBQUMsUUFBUSxDQUFDO1NBQ2YsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWpCLDhCQUE4QjtJQUM5QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVO1NBQ3JDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3RELEtBQUssQ0FBQyxVQUFVLENBQUM7U0FDakIsSUFBSSxDQUFDLEVBQUUsWUFBWSxFQUFFLHlCQUF5QixFQUFFLENBQUMsQ0FBQTtJQUVwRCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7U0FDM0MsS0FBSyxDQUFDLHlCQUF5QixDQUFDO1NBQ2hDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0lBRWpDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDakUsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUNiLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBRS9CLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDO1NBQ3JELEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDcEIsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXBCLDJCQUEyQjtJQUMzQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUM7U0FDcEQsV0FBVyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQztTQUN2QyxJQUFJLENBQUM7UUFDSixLQUFLLEVBQUUsb0NBQW9DO1FBQzNDLE1BQU0sRUFBRSxxQ0FBcUM7UUFDN0MsUUFBUSxFQUFFLDBDQUEwQztRQUNwRCxJQUFJLEVBQUUsbUNBQW1DO1FBQ3pDLFdBQVcsRUFBRSwwQ0FBMEM7UUFDdkQsU0FBUyxFQUFFLDBCQUEwQjtLQUN0QyxDQUFDO1NBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRXJCLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uQnVpbGRlciwgRGVmYXVsdFNjcmVlbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5cbi8qKlxuICogQWRkIGV4cGVuc2Ugc2NyZWVuIHdpdGggZm9ybSB2YWxpZGF0aW9uIGFuZCBjYXRlZ29yeSBzZWxlY3Rpb24uXG4gKiBTYXZlcyBuZXcgZXhwZW5zZSByZWNvcmRzIHRvIGxvY2FsIGRhdGFiYXNlIHdpdGggb2ZmbGluZSBzeW5jIGNhcGFiaWxpdHkuXG4gKiBAcGFyYW0gYXBwIC0gQXBwbGljYXRpb24gYnVpbGRlciBpbnN0YW5jZVxuICogQHJldHVybnMgQ29uZmlndXJlZCBhZGQgZXhwZW5zZSBzY3JlZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEV4cGVuc2VTY3JlZW4oYXBwOiBBcHBsaWNhdGlvbkJ1aWxkZXIpOiBEZWZhdWx0U2NyZWVuQnVpbGRlciB7XG4gIGNvbnN0IHNjcmVlbiA9IGFwcC5hZGRTY3JlZW4uZGVmYXVsdCgnYWRkLWV4cGVuc2UnLCAnQWRkIE5ldyBFeHBlbnNlJylcblxuICAvLyBNYWluIGZvcm0gY29udGFpbmVyXG4gIGNvbnN0IGZvcm0gPSBzY3JlZW4uYWRkQ29udHJvbC5mb3JtKHsgaW5zdGFuY2VJZDogJ2V4cGVuc2UtZm9ybScgfSlcblxuICBmb3JtLmFkZENvbnRyb2wudGV4dEZpZWxkKHsgaW5zdGFuY2VJZDogJ3RpdGxlJyB9KVxuICAgIC5sYWJlbCgnVGl0bGUnKVxuICAgIC5yZXF1aXJlZCh0cnVlKVxuXG4gIGZvcm0uYWRkQ29udHJvbC5udW1iZXJGaWVsZCh7IGluc3RhbmNlSWQ6ICdhbW91bnQnIH0pXG4gICAgLmxhYmVsKCdBbW91bnQnKVxuICAgIC5yZXF1aXJlZCh0cnVlKVxuXG4gIC8vIENhdGVnb3J5IHNlbGVjdGlvbiBkcm9wZG93blxuICBjb25zdCBjYXRlZ29yeURyb3Bkb3duID0gZm9ybS5hZGRDb250cm9sXG4gICAgLmRyb3Bkb3duKHsgaW5zdGFuY2VJZDogJ2NhdGVnb3J5JywgaXNSZXF1aXJlZDogdHJ1ZSB9KVxuICAgIC5sYWJlbCgnQ2F0ZWdvcnknKVxuICAgIC5kYXRhKHsgZGF0YXNvdXJjZUlkOiAnZGF0YS1leHBlbnNlLWNhdGVnb3JpZXMnIH0pXG5cbiAgY2F0ZWdvcnlEcm9wZG93bi5pdGVtKCc9QGN0eC5jdXJyZW50Lml0ZW0uaWQnKVxuICAgIC50aXRsZSgnPUBjdHguY3VycmVudC5pdGVtLm5hbWUnKVxuICAgIC52YWx1ZSgnPUBjdHguY3VycmVudC5pdGVtLmlkJylcblxuICBmb3JtLmFkZENvbnRyb2wuZGF0ZVBpY2tlcih7IGluc3RhbmNlSWQ6ICdkYXRlJywgaXNSZXF1aXJlZDogdHJ1ZSB9KVxuICAgIC5sYWJlbCgnRGF0ZScpXG4gICAgLnZhbHVlKCc9QGN0eC5qaWcuc3RhdGUubm93JylcblxuICBmb3JtLmFkZENvbnRyb2wudGV4dEZpZWxkKHsgaW5zdGFuY2VJZDogJ2Rlc2NyaXB0aW9uJyB9KVxuICAgIC5sYWJlbCgnRGVzY3JpcHRpb24nKVxuICAgIC5pc011bHRpbGluZSh0cnVlKVxuXG4gIC8vIEJvdHRvbSBwYW5lbCBzYXZlIGFjdGlvblxuICBjb25zdCBidXR0b25zID0gc2NyZWVuLmJvdHRvbVBhbmVsLmJ1dHRvbnMoKVxuICBidXR0b25zLmFkZC5leGVjdXRlRW50aXR5KCdTYXZlIEV4cGVuc2UnLCAnc2VxdWVudGlhbCcpXG4gICAgLmR5bmFtaWNEYXRhKCdkZWZhdWx0L2V4cGVuc2VzJywgJ3NhdmUnKVxuICAgIC5kYXRhKHtcbiAgICAgIHRpdGxlOiAnPUBjdHguY29tcG9uZW50cy50aXRsZS5zdGF0ZS52YWx1ZScsXG4gICAgICBhbW91bnQ6ICc9QGN0eC5jb21wb25lbnRzLmFtb3VudC5zdGF0ZS52YWx1ZScsXG4gICAgICBjYXRlZ29yeTogJz1AY3R4LmNvbXBvbmVudHMuY2F0ZWdvcnkuc3RhdGUuc2VsZWN0ZWQnLFxuICAgICAgZGF0ZTogJz1AY3R4LmNvbXBvbmVudHMuZGF0ZS5zdGF0ZS52YWx1ZScsXG4gICAgICBkZXNjcmlwdGlvbjogJz1AY3R4LmNvbXBvbmVudHMuZGVzY3JpcHRpb24uc3RhdGUudmFsdWUnLFxuICAgICAgdGltZXN0YW1wOiAnPUBjdHguc29sdXRpb24uc3RhdGUubm93J1xuICAgIH0pXG4gICAgLmdvQmFjaygncHJldmlvdXMnKVxuXG4gIHJldHVybiBzY3JlZW5cbn0iXX0=