a9c286bd0aeea7f809a941387b7db0a404057602
feat(form): add accessibility improvements to form components - Add labelFor prop to Label component for better form element association - Enhance Combobox with ARIA attributes for better screen reader support - Update form fields with proper IDs and label associations feat(pagination): adjust button width based on page number length Add dynamic button sizing for pagination items to accommodate different digit lengths (1-99, 100-999, 1000+). This improves visual consistency when displaying varying page numbers. feat(modal): add reusable dialog component and refactor division form - Create new Dialog.vue component with configurable size and outside click prevention - Replace inline dialog implementation in division list with new Dialog component - Fix formatting in entry-form.vue feat(data-table): add click handling for action cells Implement handleActionCellClick function to manage click events on action cells, triggering dropdown buttons when clicked outside interactive elements. Add cursor-pointer class and click handler to action cells for better UX. refactor(custom-ui): centralize action event strings in types Replace hardcoded action event strings with constants from types.ts to improve maintainability and reduce potential typos feat(confirmation): add reusable confirmation modal components - Implement base confirmation.vue component with customizable props - Create record-specific record-confirmation.vue for data operations - Add comprehensive README.md documentation for usage - Integrate confirmation flow in division list component refactor(components): move dialog component to base directory and update imports The dialog component was moved from custom-ui/modal to base/modal to better reflect its shared usage across the application. All import paths referencing the old location have been updated accordingly. refactor(select): reorganize imports and adjust conditional formatting - Reorder imports in Select.vue for better organization - Adjust logical operator formatting in SelectContent.vue for consistency
SIMRS - FE
RSSA - Front End
Important
Read this following instructions before doing your job
Framework Guide
Configuration
nuxt.config.ts
Nuxt configuration file.env
Some environment variables
Directory Structure for app/
app.vue: Main layoutcomponents: Contains all reusable UI components.components/flow: Entry point for business logic and workflows. Pages or routes call these flow components to handle API requests and process application logiccomponents/app: View-layer components that manage and present data. These are used withinflow/to render or handle specific parts of the UI, and return results back to the flowcomponents/pub: Public/shared components used across different parts of the app.composables: Contains reusable logic and utility functions (e.g. composables, hooks)..layouts: Reusable UI layout patterns used across pages.
Directory Structure for app/pages
pages/auth: Authentication related pages.pages/(features): Grouped feature modules that reflect specific business flow or domains.
Directory Structure for server/
server/api: API or proxy requests
Workflows
The basic development workflow follows these steps:
Define Your Data in models/
- Create data definitions or interfaces.
- These should represent the structure of the data used across your app.
Build UI Components in components/app
- Create reusable UI and app specific components.
- Keep components pure, avoid making HTTP requests directly within them.
- They receive data via props and emit events upward.
Business Logic in components/flow
- This layer connects the UI with the logic (API calls, validations, navigation).
- It composes components from
components/app/,components/pub/, and other flow. - Also responsible for managing state, side effects, and interactions.
Create Pages in pages/
- Define permissions and guards for each page.
- Pages load the appropriate flow from
components/flow/. - They do not contain UI or logic directly, just route level layout or guards.
Code Conventions
- Under the script setup block, putting things in group with the following order:
- Imports → all dependencies, sorted by external, alias (~), and relative imports.
- Props & Emits → clearly define component inputs & outputs.
- State & Computed → all ref, reactive, and computed variables grouped together.
- Lifecycle Hooks → grouped by mounting → updating → unmounting order.
- Functions → async first (fetching, API calls), then utility & event handlers.
- Watchers → if needed, put them at the bottom.
- Template → keep clean and minimal logic, use methods/computed instead of inline JS.
- Declaration Naming
- Uses PascalCase for
typenaming - Uses camelCase for
variableandconstnaming - Underscore can be used to indicates that a variable has derived from an attribute of an object
for example:person_nameindicates it is an attributenamefrom objectperson
- Uses PascalCase for
- Looping
- Uses
i,j,kas variable forforlooping index - Uses
itemas object instantition forforEachloop callback - Uses
itemas object instantition forv-forloop callback in the template
- Uses
Git Workflows
The basic git workflow follows these steps:
- Create a new branch on
dev- branch name should be
feat/<feature-name>orfix/<bug-name>
- branch name should be
- Make your changes
- Commit your changes
- commit msg format:
[type]: [description]typecan befeat,fix,docs,style,refactor,perf,test,build,ci,chore,revertdescriptionshould be a brief description of the changes- Example:
feat: add new feature
- commit msg format:
- Push your changes to
dev - Create a pull request from
devtomain
Description