Khafid Prayoga a9c286bd0a feat(division): impl division list+entry
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
2025-09-03 15:13:44 +07:00
2025-08-27 13:06:40 +07:00
2025-08-27 13:06:40 +07:00
2025-08-27 13:06:40 +07:00
2025-08-08 11:44:42 +07:00
2025-08-10 15:46:15 +07:00

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 layout
  • components : 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 logic
  • components/app : View-layer components that manage and present data. These are used within flow/ to render or handle specific parts of the UI, and return results back to the flow
  • components/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 type naming
    • Uses camelCase for variable and const naming
    • Underscore can be used to indicates that a variable has derived from an attribute of an object
      for example: person_name indicates it is an attribute name from object person
  • Looping
    • Uses i, j, k as variable for for looping index
    • Uses item as object instantition for forEach loop callback
    • Uses item as object instantition for v-for loop callback in the template

Git Workflows

The basic git workflow follows these steps:

  1. Create a new branch on dev
    • branch name should be feat/<feature-name> or fix/<bug-name>
  2. Make your changes
  3. Commit your changes
    • commit msg format: [type]: [description]
      • type can be feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
      • description should be a brief description of the changes
      • Example: feat: add new feature
  4. Push your changes to dev
  5. Create a pull request from dev to main
Description
No description provided
Readme 6.5 MiB