Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
224 commits
Select commit Hold shift + click to select a range
b4c3739
Add ts-minimal sample project
mstijak Aug 19, 2025
4cfea0b
Setup claude and build commands
mstijak Aug 19, 2025
5bd83f8
...
mstijak Aug 20, 2025
4bfa6f7
...
mstijak Aug 22, 2025
f8513a7
files rename
vedranvucic77 Sep 8, 2025
cb43340
fix errors
vedranvucic77 Sep 8, 2025
d826d4d
add cx global tsconfig
vedranvucic77 Sep 8, 2025
0ceae2b
fix vdom error
vedranvucic77 Sep 8, 2025
54b0d81
register css helper
vedranvucic77 Sep 8, 2025
905ca76
move things to typescript
vedranvucic77 Sep 8, 2025
7349665
fix bindings
vedranvucic77 Sep 8, 2025
330be1d
Merge branch 'master' into all-things-typescript
vedranvucic77 Sep 8, 2025
9f3b951
fix testWidget errors
vedranvucic77 Sep 9, 2025
2866435
imports clenaup
vedranvucic77 Sep 9, 2025
05ce51f
use map.get
vedranvucic77 Sep 9, 2025
924189f
fixes
vedranvucic77 Sep 9, 2025
c66a17d
color fixes
vedranvucic77 Sep 9, 2025
ec366b4
move calendar, checkbox, color field and color picker to typescript
vedranvucic77 Sep 9, 2025
63411a9
fixes etc
vedranvucic77 Sep 12, 2025
5894bce
update tsconfig
vedranvucic77 Sep 17, 2025
3a08b62
cleanup
vedranvucic77 Sep 17, 2025
783e755
move cx to typescript
vedranvucic77 Sep 17, 2025
28f8a41
fix lock files
vedranvucic77 Sep 22, 2025
d47cad7
ts migration
vedranvucic77 Sep 22, 2025
c90170d
ts migration
vedranvucic77 Sep 22, 2025
ba4c339
Merge branch 'all-things-typescript' of github.com:codaxy/cxjs into a…
vedranvucic77 Sep 23, 2025
d9f9d75
ts migration
vedranvucic77 Sep 23, 2025
d45c5f6
fix tests
vedranvucic77 Sep 26, 2025
94cbfff
Minor tweaks
mstijak Sep 26, 2025
91902d3
...
mstijak Sep 26, 2025
f601536
Merge branch 'all-things-typescript' of github.com:codaxy/cxjs into a…
vedranvucic77 Oct 7, 2025
5ab24b1
Add build folder
mstijak Oct 8, 2025
2e412a0
...
mstijak Oct 9, 2025
859d458
Migrate util directory to TS
mstijak Oct 9, 2025
c0beeb3
Move data dir to ts
mstijak Oct 10, 2025
6a176fc
...
mstijak Oct 10, 2025
2b09435
move adapters to typescript
vedranvucic77 Oct 10, 2025
11f56d3
remove d.ts
vedranvucic77 Oct 10, 2025
b4827a4
ts migration
vedranvucic77 Oct 10, 2025
d4ef7a0
move selection and ui to typescript
vedranvucic77 Oct 10, 2025
abfa6b3
fixes
vedranvucic77 Oct 10, 2025
4da3c30
Fix errors
mstijak Oct 10, 2025
396021a
moving things to typescript
vedranvucic77 Oct 10, 2025
418bf01
fixes
vedranvucic77 Oct 10, 2025
896375c
fixes
vedranvucic77 Oct 10, 2025
08720bc
fixes
vedranvucic77 Oct 11, 2025
06629aa
fixes
vedranvucic77 Oct 11, 2025
344fd9d
ts migration
vedranvucic77 Oct 11, 2025
6fd7f47
cleanup
vedranvucic77 Oct 11, 2025
20d76a3
...
mstijak Oct 11, 2025
bba8ab2
fix hoversync and widget
vedranvucic77 Oct 11, 2025
1c1fe38
add generic type for computable
vedranvucic77 Oct 11, 2025
11ab8bf
use instance and widget types
vedranvucic77 Oct 11, 2025
c80cdcf
remove ts ignore from tests
vedranvucic77 Oct 13, 2025
c31e838
moving things to typescript
vedranvucic77 Oct 14, 2025
863df2a
types
vedranvucic77 Oct 14, 2025
96118b4
move svg folder to typescript
vedranvucic77 Oct 14, 2025
0442079
ts migration
vedranvucic77 Oct 14, 2025
05c6396
ts migration
vedranvucic77 Oct 14, 2025
480b373
ts migration
vedranvucic77 Oct 15, 2025
6c10593
ts migration, widgets init
vedranvucic77 Oct 15, 2025
e7ed66e
core fixes etc
vedranvucic77 Oct 17, 2025
d9147fe
fixes
vedranvucic77 Oct 17, 2025
e90cf51
fixes
vedranvucic77 Oct 17, 2025
80894bc
moving things to ts
vedranvucic77 Oct 17, 2025
7cfb490
fixes etc
vedranvucic77 Oct 17, 2025
0fb7e9e
fixes
vedranvucic77 Oct 17, 2025
2c5dcf7
Type work
mstijak Oct 18, 2025
0434eea
Fix type errors
mstijak Oct 18, 2025
c897089
Minor fixes
mstijak Oct 18, 2025
e5c242b
...
mstijak Oct 18, 2025
f2a1cb8
...
mstijak Oct 19, 2025
da0d76c
fixes
vedranvucic77 Oct 20, 2025
47ddcac
Merge branch 'all-things-typescript' of github.com:codaxy/cxjs into a…
vedranvucic77 Oct 20, 2025
5ea65c3
Fix type errors
mstijak Oct 20, 2025
b7e32fe
Cleaning up
mstijak Oct 20, 2025
4b19eff
More work
mstijak Oct 21, 2025
7109819
Fix errors in the ui folder
mstijak Oct 22, 2025
92d1ba2
More fixes
mstijak Oct 26, 2025
6888d0e
More fixes
mstijak Oct 27, 2025
94e9be9
More fixes
mstijak Oct 28, 2025
c9ad917
...
mstijak Oct 28, 2025
2cb22a6
...
mstijak Oct 30, 2025
45c7b7d
...
mstijak Oct 30, 2025
25859ea
...
mstijak Oct 30, 2025
bdd132f
...
mstijak Nov 3, 2025
e94a348
...
mstijak Nov 4, 2025
d9af9e2
More ts stuff
mstijak Nov 9, 2025
9a4c757
More fixes
mstijak Nov 9, 2025
8527100
...
mstijak Nov 9, 2025
ddf3b9c
...
mstijak Nov 11, 2025
746b738
...
mstijak Nov 11, 2025
83ba76f
...
mstijak Nov 13, 2025
5c88bfb
...
mstijak Nov 13, 2025
d4d9438
...
mstijak Nov 14, 2025
d159623
...
mstijak Nov 14, 2025
98a4025
...
mstijak Nov 20, 2025
ca127c4
...
mstijak Nov 20, 2025
317b00d
...
mstijak Nov 21, 2025
f6462db
...
mstijak Nov 21, 2025
87101a5
...
mstijak Nov 21, 2025
267d9cc
...
mstijak Nov 21, 2025
6be1acd
...
mstijak Nov 22, 2025
cd6c653
...
mstijak Nov 22, 2025
b86c7fe
...
mstijak Nov 22, 2025
bcae50a
...
mstijak Nov 22, 2025
28c85f3
...
mstijak Nov 22, 2025
7ef5c33
...
mstijak Nov 23, 2025
bb69eb4
...
mstijak Nov 23, 2025
6cf66cb
...
mstijak Nov 24, 2025
181b76b
...
mstijak Nov 24, 2025
05c7d96
Tests passing
mstijak Nov 24, 2025
42cc1f3
cleanup
mstijak Nov 24, 2025
ea00383
...
mstijak Nov 25, 2025
6134cff
Finishing charts
mstijak Nov 26, 2025
cb7bc4c
Fix build paths
mstijak Nov 26, 2025
3d88c4c
...
mstijak Nov 26, 2025
bec99a6
...
mstijak Nov 27, 2025
35163de
...
mstijak Nov 27, 2025
36105ec
...
mstijak Nov 27, 2025
8bb1a40
...
mstijak Nov 28, 2025
0a8aa57
...
mstijak Nov 28, 2025
8fad689
...
mstijak Nov 28, 2025
5f94eed
...
mstijak Nov 28, 2025
7e6c0fc
...
mstijak Nov 29, 2025
ae9800a
More work
mstijak Dec 2, 2025
8baf84e
Gallery worksgit status!
mstijak Dec 2, 2025
164da0e
...
mstijak Dec 2, 2025
9ea73c8
Add test workflow
mstijak Dec 2, 2025
aa14719
...
mstijak Dec 2, 2025
1edb375
...
mstijak Dec 2, 2025
5459fc4
Add missing Config interfaces and constructors to widgets
mstijak Dec 3, 2025
c20d352
...
mstijak Dec 3, 2025
b8019cd
...
mstijak Dec 3, 2025
f6448f6
...
mstijak Dec 4, 2025
dac4fce
Fix component create
mstijak Dec 5, 2025
2a358fb
Simplify creatable
mstijak Dec 5, 2025
4111380
Rename
mstijak Dec 5, 2025
4f0d7d9
...
mstijak Dec 5, 2025
b96badd
Safe changes
mstijak Dec 6, 2025
72c5104
...
mstijak Dec 7, 2025
1385774
Add find controller methods
mstijak Dec 7, 2025
e097367
...
mstijak Dec 7, 2025
0f30182
Typed contexts
mstijak Dec 7, 2025
ab07040
Typed ContentResolver
mstijak Dec 7, 2025
c818895
update swc imports plugin dependencies
vedranvucic77 Sep 26, 2025
c49ca46
update swc plugin
vedranvucic77 Sep 26, 2025
62eef89
remove npm pack test
vedranvucic77 Sep 29, 2025
33231e5
new plugins version
vedranvucic77 Sep 29, 2025
de2bb68
add license and readme files
vedranvucic77 Sep 29, 2025
5db354c
Pie Slice active bind issue
ognjenst Oct 20, 2025
b51f463
Port master changes to TypeScript branch
mstijak Dec 8, 2025
6cd040d
Merge master (changes manually ported to TypeScript)
mstijak Dec 8, 2025
3e06062
Type dropdownOptions as Partial<DropdownConfig>
mstijak Dec 8, 2025
8e33d74
Type selection config with all selection types
mstijak Dec 8, 2025
80bd725
...
mstijak Dec 8, 2025
19f3b1e
...
mstijak Dec 9, 2025
83f5d90
...
mstijak Dec 9, 2025
95f3cc4
...
mstijak Dec 9, 2025
9cc01d6
...
mstijak Dec 9, 2025
6cb8f16
Build fixes
mstijak Dec 9, 2025
2162ca0
...
mstijak Dec 9, 2025
0b814e6
add missing jsdocs
mstijak Dec 9, 2025
e6dd437
Remove remaining type check comments
mstijak Dec 9, 2025
a10bd62
publish cx@ts
mstijak Dec 9, 2025
00ea13f
...
mstijak Dec 9, 2025
6c6639c
...
mstijak Dec 9, 2025
4b25252
...
mstijak Dec 9, 2025
e1ab375
Minor tweaks
mstijak Dec 10, 2025
0f25440
...
mstijak Dec 10, 2025
a9ad5fb
...
mstijak Dec 10, 2025
69b8d6d
...
mstijak Dec 10, 2025
c3dd8c6
Minor improvements
mstijak Dec 10, 2025
f957bc1
...
mstijak Dec 11, 2025
dea19ca
update tests
vedranvucic77 Dec 11, 2025
9c30ced
Merge branch 'all-things-typescript' of github.com:codaxy/cxjs into a…
vedranvucic77 Dec 11, 2025
3044056
...
mstijak Dec 11, 2025
4a6c94c
fixes etc
vedranvucic77 Dec 12, 2025
aaabbae
add more tests
vedranvucic77 Dec 12, 2025
ecf1b40
Merge branch 'all-things-typescript' of github.com:codaxy/cxjs into a…
vedranvucic77 Dec 12, 2025
1719de0
add tracing
vedranvucic77 Dec 12, 2025
8e3f5e4
add documentation
vedranvucic77 Dec 12, 2025
1184f58
cleanup
vedranvucic77 Dec 12, 2025
c215372
use makefile instead of package.json
vedranvucic77 Dec 12, 2025
2ff59ff
update lock
vedranvucic77 Dec 12, 2025
d88ea5a
...
mstijak Dec 12, 2025
9277daa
Merge branch 'all-things-typescript' of github.com:codaxy/cxjs into a…
mstijak Dec 12, 2025
332a2c1
...
mstijak Dec 12, 2025
b469903
...
mstijak Dec 12, 2025
39be181
...
mstijak Dec 13, 2025
95b2f59
...
mstijak Dec 13, 2025
19c1c1a
Type improvements
mstijak Dec 15, 2025
5435970
...
mstijak Dec 15, 2025
d0e2fef
...
mstijak Dec 15, 2025
3568311
...
mstijak Dec 16, 2025
44d6edd
update swc
vedranvucic77 Dec 16, 2025
261c2d5
fix array adapter
vedranvucic77 Dec 16, 2025
a551e98
fix icons and themes
vedranvucic77 Dec 16, 2025
7ab53dc
...
mstijak Dec 16, 2025
61d6947
...
mstijak Dec 16, 2025
f10484c
...
mstijak Dec 17, 2025
59320a1
Merge branch 'all-things-typescript' of github.com:codaxy/cxjs into a…
mstijak Dec 17, 2025
09ae946
...
mstijak Dec 17, 2025
892b6e5
...
mstijak Dec 17, 2025
3426308
...
mstijak Dec 17, 2025
5263ebe
...
mstijak Dec 18, 2025
57c26b5
Change package exports
mstijak Dec 18, 2025
0b03cb6
Split HTML and React elements
mstijak Dec 19, 2025
dff992e
...
mstijak Dec 20, 2025
90594a5
Merge branch 'no-react-wrapper' into all-things-typescript
mstijak Dec 20, 2025
c0c17f8
...
mstijak Dec 20, 2025
b4e8c01
...
mstijak Dec 20, 2025
e5c2b3d
...
mstijak Dec 20, 2025
5eead73
New cx@ts release
mstijak Dec 21, 2025
2aad3b2
Fix tests
mstijak Dec 22, 2025
55e188e
Remove one strange line
mstijak Dec 22, 2025
bf4735f
...
mstijak Dec 24, 2025
736d799
...
mstijak Dec 24, 2025
98c99ad
...
mstijak Dec 24, 2025
cb44335
Remove old warning about styled not being set
mstijak Dec 24, 2025
987dbdf
Properly apply key inside icons
mstijak Dec 24, 2025
d43e065
Make tests use act
mstijak Dec 24, 2025
9485a99
Build cx-react before cx
mstijak Dec 24, 2025
1f6b3bd
Merge remote-tracking branch 'origin/master' into all-things-typescript
mstijak Dec 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
132 changes: 132 additions & 0 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

CxJS is a feature-rich JavaScript framework for building complex web front-ends, such as BI tools, dashboards and admin apps. This is a monorepo using yarn workspaces that contains the main cx package, documentation, gallery, testing environments, and various themes.

## Development Commands

### Build System
- `yarn build` or `npm run build` - Builds the main CxJS library using custom build tools
- `node packages/cx/build/index.js` - Direct build command for the cx package

### Testing
- `yarn test` or `npm test` - Runs tests using Mocha with custom configuration
- Tests are configured in `test/mocha.config.js`

### Development Servers
- `yarn start` or `npm start` - Runs documentation site development server
- `yarn docs` - Alternative command for documentation
- `yarn gallery` - Runs the gallery application showcasing widgets and themes
- `yarn litmus` - Runs the litmus testing environment for bug reproduction
- `yarn fiddle` - Runs the online code editor/playground

### TypeScript Examples
- `cd ts-minimal && yarn start` - Runs TypeScript minimal example development server
- `cd ts-minimal && yarn build` - Builds TypeScript minimal example for production

### Theme Building
- `npm run build:theme:core` - Builds core theme
- `npm run build:theme:dark` - Builds dark theme
- `npm run build:theme:frost` - Builds frost theme
- `npm run build:theme:material` - Builds material theme

## Architecture

### Monorepo Structure
The project uses yarn workspaces with these main areas:
- `packages/cx/` - Core framework source code
- `docs/` - Documentation site and content
- `gallery/` - Widget gallery and theme showcase
- `litmus/` - Bug reproduction and testing environment
- `fiddle/` - Online code editor
- `ts-minimal/` - TypeScript minimal example
- `themes/` - Various UI themes

### Core Package Structure (packages/cx/)
- `src/util/` - Utility functions and helpers
- `src/data/` - Data binding, stores, and state management
- `src/ui/` - Core UI framework and widgets
- `src/widgets/` - Form controls, grids, overlays
- `src/charts/` - Charting components
- `src/svg/` - SVG drawing utilities
- `src/hooks/` - React-like hooks for functional components

### Build System
- Custom build tools located in `cx-build-tools` package
- Uses Rollup for JavaScript bundling
- SCSS compilation for stylesheets
- Modular builds for different parts (util, data, ui, widgets, charts, svg, hooks)

## TypeScript Configuration

### JSX Configuration
- The project uses custom JSX configuration with `jsxImportSource: "cx"`
- For newer TypeScript projects, use `"jsx": "react-jsx"` and `"jsxImportSource": "cx"`
- For legacy projects, use `"jsxFactory": "cx"`

### Path Mapping
Configure TypeScript paths for development:
```json
{
"paths": {
"cx": ["../packages/cx/src"],
"cx-react": ["../packages/cx-react"]
}
}
```

## Key Framework Concepts

### Data Binding
- Uses two-way data binding with store-based state management
- Accessor chains for deep property access (e.g., `{bind: "user.profile.name"}`)
- Controllers for computed values and business logic

### Widget System
- All UI components inherit from Widget base class
- Supports both declarative configuration and functional components
- Rich set of form controls, grids, charts, and layout components

### Theming
- SCSS-based theming system with variables and mixins
- Multiple ready-to-use themes available as separate packages
- Theme packages follow pattern: `cx-theme-{name}`

## Testing Strategy

### Test Environments
- `litmus/` - Manual testing environment for bug reproduction and feature development
- Organized by bugs, features, and performance tests
- Examples in `litmus/bugs/`, `litmus/features/`, `litmus/performance/`

### Running Specific Tests
- Tests are located in various subdirectories
- Use Mocha test runner with Babel transpilation
- Configuration in `test/mocha.config.js`

## Development Workflow

### Adding New Features
1. Implement in appropriate `packages/cx/src/` subdirectory
2. Add TypeScript definitions (.d.ts files)
3. Create examples in `litmus/features/`
4. Add documentation in `docs/content/`
5. Update gallery examples if relevant

### Working with Themes
- Theme source files are in individual theme packages
- Use webpack configurations for building theme assets
- Test themes using gallery application

### Package Management
- Use yarn for consistency with workspace configuration
- Install dependencies at root level for shared packages
- Individual packages have their own package.json for specific dependencies

## Claude Code Notes

### File Paths
- Always use relative paths (e.g., `gallery/tsconfig.json`) instead of absolute paths (e.g., `D:/Code/CxJS/cxjs/gallery/tsconfig.json`) when reading and editing files to avoid "File has been unexpectedly modified" errors on Windows.
36 changes: 36 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"permissions": {
"allow": [
"Bash(yarn build)",
"Bash(for f in packages/cx/src/util/date/*.ts)",
"Bash(do [ ! -f \"$f%.ts.d.ts\" ])",
"Bash(echo:*)",
"Bash(done)",
"Bash(find:*)",
"Bash(head:*)",
"Bash(npx tsc:*)",
"Bash(cut:*)",
"WebFetch(domain:github.com)",
"Bash(curl -s https://raw.githubusercontent.com/codaxy/cxjs/master/packages/cx/src/data/View.d.ts)",
"Bash(yarn build2:*)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(cat package.json)",
"Bash(curl:*)",
"Bash(yarn check-types:*)",
"Bash(yarn test)",
"Bash(claude mcp list:*)",
"mcp__playwright__browser_navigate",
"mcp__playwright__browser_tabs",
"mcp__playwright__browser_console_messages",
"mcp__playwright__browser_network_requests",
"mcp__playwright__browser_snapshot",
"mcp__playwright__browser_wait_for",
"mcp__playwright__browser_run_code",
"mcp__playwright__browser_click",
"mcp__playwright__browser_take_screenshot",
"Bash(yarn compile:*)"
],
"deny": [],
"ask": []
}
}
29 changes: 29 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Tests

on:
push:
pull_request:

jobs:
test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Enable Corepack
run: corepack enable

- name: Install dependencies
run: yarn install --immutable

- name: Build cx package
run: yarn build

- name: Run tests
run: yarn test
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,7 @@ node_modules
*.hot-update.js
*.log
dist
build

Thumbs.db
Thumbs.db
.playwright-mcp
3 changes: 2 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"request": "launch",
"name": "Debug Tests",
"skipFiles": ["<node_internals>/**"],
"runtimeArgs": ["test", "--inspect"]
"runtimeArgs": ["test", "--inspect"],
"cwd": "${workspaceFolder}/packages/cx"
},
{
"type": "node",
Expand Down
38 changes: 37 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,39 @@
{
"cSpell.words": ["flexbox", "hscroll", "immer", "lookupfield", "resizer", "trello"]
"cSpell.words": ["flexbox", "hscroll", "immer", "lookupfield", "resizer", "trello"],
"explorer.autoRevealExclude": {
"**/node_modules": false
},
"javascript.preferences.importModuleSpecifier": "relative",
"files.watcherExclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true,
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true
},
"search.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true
},
"workbench.colorCustomizations": {
"activityBar.activeBackground": "#1c95fe",
"activityBar.background": "#1c95fe",
"activityBar.foreground": "#e7e7e7",
"activityBar.inactiveForeground": "#e7e7e799",
"activityBarBadge.background": "#be0166",
"activityBarBadge.foreground": "#e7e7e7",
"commandCenter.border": "#e7e7e799",
"sash.hoverBorder": "#1c95fe",
"statusBar.background": "#017ce6",
"statusBar.foreground": "#e7e7e7",
"statusBarItem.hoverBackground": "#1c95fe",
"statusBarItem.remoteBackground": "#017ce6",
"statusBarItem.remoteForeground": "#e7e7e7",
"titleBar.activeBackground": "#017ce6",
"titleBar.activeForeground": "#e7e7e7",
"titleBar.inactiveBackground": "#017ce699",
"titleBar.inactiveForeground": "#e7e7e799"
},
"peacock.color": "#017ce6"
}
Loading