initial commit
This commit is contained in:
commit
dc0c4a302f
|
@ -0,0 +1,3 @@
|
|||
node_modules
|
||||
dist
|
||||
.angular
|
|
@ -0,0 +1,30 @@
|
|||
# Source files
|
||||
src/
|
||||
*.ts
|
||||
!*.d.ts
|
||||
|
||||
# Config files
|
||||
tsconfig*.json
|
||||
ng-package.json
|
||||
angular.json
|
||||
.angular/
|
||||
.git/
|
||||
.gitignore
|
||||
|
||||
# Development files
|
||||
**/*.spec.ts
|
||||
**/*.spec.js
|
||||
test/
|
||||
tests/
|
||||
spec/
|
||||
|
||||
# Documentation (keep only README.md and LICENSE)
|
||||
docs/
|
||||
*.md
|
||||
!README.md
|
||||
|
||||
# Build artifacts
|
||||
node_modules/
|
||||
dist/
|
||||
build/
|
||||
out-tsc/
|
|
@ -0,0 +1,58 @@
|
|||
Workshack Form Builder Library License
|
||||
|
||||
Copyright (c) 2025 Workshack Team
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to use,
|
||||
copy, modify, merge, publish, and distribute the Software, subject to the
|
||||
following conditions:
|
||||
|
||||
NON-COMMERCIAL USE:
|
||||
For non-commercial applications (applications that do not generate revenue,
|
||||
do not contain paid features, subscriptions, advertisements, or any form of
|
||||
monetization), the Software may be used freely without any additional
|
||||
requirements.
|
||||
|
||||
COMMERCIAL USE:
|
||||
For commercial applications (applications that generate revenue through sales,
|
||||
subscriptions, advertisements, in-app purchases, or any other form of
|
||||
monetization), the following additional requirement applies:
|
||||
|
||||
- The application MUST include attribution to the Workshack Form Builder Library in a
|
||||
publicly accessible location within the application. This can be:
|
||||
* An "About" page or section
|
||||
* A "Credits" or "Acknowledgments" page
|
||||
* A "For Developers" page
|
||||
* Any other location where users can reasonably find it
|
||||
|
||||
The attribution must include:
|
||||
- The name "Workshack Form Builder Library"
|
||||
- A link to the library's repository or npm package page
|
||||
- The copyright notice "© 2025 Workshack Team"
|
||||
|
||||
Example attribution:
|
||||
"This application uses Workshack Form Builder Library (https://www.npmjs.com/package/@workshack/form-builder) © 2025 Workshack Team"
|
||||
|
||||
GENERAL CONDITIONS:
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
DEFINITIONS:
|
||||
- "Commercial application" means any software application, website, or service
|
||||
that generates revenue or is intended to generate revenue through any means
|
||||
including but not limited to: sales, subscriptions, advertisements, in-app
|
||||
purchases, premium features, licensing fees, or any other monetization
|
||||
strategy.
|
||||
|
||||
- "Non-commercial application" means any software application, website, or
|
||||
service that does not generate revenue and is not intended to generate
|
||||
revenue through any means, including personal projects, educational projects,
|
||||
open-source projects, and research projects.
|
|
@ -0,0 +1,105 @@
|
|||
# @workshack/form-builder
|
||||
|
||||
Workshack Form Builder Library provides typed FormGroup helpers and utilities for Angular reactive forms. This library integrates seamlessly with `@workshack/ui` and `@workshack/input` to provide a complete form building solution with strong TypeScript typing.
|
||||
|
||||
## Features
|
||||
|
||||
- 🔧 **Typed FormGroup Helpers** - Strongly typed reactive forms with IntelliSense support
|
||||
- 🎮 **Gaming UI Integration** - Works seamlessly with @workshack/ui components
|
||||
- 🎯 **Input Navigation** - Integrates with @workshack/input for gamepad/keyboard navigation
|
||||
- 📝 **Form Validation** - Enhanced validation helpers with typed error messages
|
||||
- 🚀 **Angular 20+** - Built for modern Angular applications
|
||||
- 💡 **TypeScript First** - Full TypeScript support with strict typing
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
npm install @workshack/form-builder @workshack/ui @workshack/input
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
```typescript
|
||||
import { FormBuilderModule } from '@workshack/form-builder';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
FormBuilderModule,
|
||||
// ... other imports
|
||||
],
|
||||
})
|
||||
export class AppModule { }
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This library requires the following peer dependencies:
|
||||
|
||||
- `@angular/core`: ^20.1.3
|
||||
- `@angular/common`: ^20.1.3
|
||||
- `@angular/forms`: ^20.1.3
|
||||
- `@workshack/ui`: ^1.0.0
|
||||
- `@workshack/input`: ^1.0.0
|
||||
|
||||
## Documentation
|
||||
|
||||
> 📚 **Coming Soon**: Detailed documentation and examples will be added when the typed FormGroup helpers are implemented.
|
||||
|
||||
### Planned Features
|
||||
|
||||
- **TypedFormGroup<T>** - Strongly typed FormGroup with IntelliSense
|
||||
- **FormBuilderService** - Service for creating typed forms
|
||||
- **ValidationHelpers** - Typed validation functions
|
||||
- **FormFieldComponents** - Pre-built form field components
|
||||
- **FormLayoutComponents** - Layout components for forms
|
||||
|
||||
## Example Usage (Planned)
|
||||
|
||||
```typescript
|
||||
// Example of planned API - will be implemented soon
|
||||
interface UserForm {
|
||||
name: string;
|
||||
email: string;
|
||||
age: number;
|
||||
}
|
||||
|
||||
const form = this.typedFormBuilder.group<UserForm>({
|
||||
name: ['', [Validators.required]],
|
||||
email: ['', [Validators.required, Validators.email]],
|
||||
age: [0, [Validators.required, Validators.min(18)]]
|
||||
});
|
||||
|
||||
// Full TypeScript support
|
||||
form.get('name')?.value; // string | null
|
||||
form.value; // Partial<UserForm>
|
||||
```
|
||||
|
||||
## Integration with Workshack Libraries
|
||||
|
||||
This library is designed to work seamlessly with:
|
||||
|
||||
- **@workshack/ui** - Gaming-inspired UI components
|
||||
- **@workshack/input** - Gamepad and keyboard navigation support
|
||||
|
||||
## License
|
||||
|
||||
This library is licensed under a custom license. See [LICENSE](./LICENSE) for details.
|
||||
|
||||
### Commercial Use
|
||||
|
||||
For commercial applications, attribution is required. Include the following in your application:
|
||||
|
||||
```
|
||||
This application uses Workshack Form Builder Library (https://www.npmjs.com/package/@workshack/form-builder) © 2025 Workshack Team
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
This library is part of the Workshack ecosystem. For contributions and issues, please refer to the main repository.
|
||||
|
||||
## Changelog
|
||||
|
||||
### 1.0.0
|
||||
- Initial release with basic module structure
|
||||
- Ready for typed FormGroup helpers implementation
|
||||
- Integration foundation for @workshack/ui and @workshack/input
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
|
||||
"dest": "../../dist/form-builder",
|
||||
"lib": {
|
||||
"entryFile": "src/public-api.ts"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"name": "@workshack/form-builder",
|
||||
"version": "1.0.0",
|
||||
"description": "Workshack form builder library with typed FormGroup helpers for Angular applications",
|
||||
"author": "Workshack Team",
|
||||
"license": "SEE LICENSE IN LICENSE",
|
||||
"keywords": ["angular", "forms", "form-builder", "typed", "formgroup", "workshack", "reactive-forms"],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.fufle.net/Tools/FormBuilder.git",
|
||||
"directory": "."
|
||||
},
|
||||
"homepage": "https://git.fufle.net/Tools/FormBuilder",
|
||||
"bugs": {
|
||||
"url": "https://git.fufle.net/Tools/FormBuilder/issues"
|
||||
},
|
||||
"main": "bundles/workshack-form-builder.umd.js",
|
||||
"module": "fesm2022/workshack-form-builder.mjs",
|
||||
"typings": "index.d.ts",
|
||||
"peerDependencies": {
|
||||
"@angular/common": "^20.1.3",
|
||||
"@angular/core": "^20.1.3",
|
||||
"@angular/forms": "^20.1.3",
|
||||
"@workshack/ui": "^1.0.0",
|
||||
"@workshack/input": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { ReactiveFormsModule } from '@angular/forms';
|
||||
|
||||
/**
|
||||
* Workshack Form Builder Module
|
||||
*
|
||||
* This module provides typed FormGroup helpers and utilities for Angular reactive forms.
|
||||
* It integrates with @workshack/ui and @workshack/input libraries to provide
|
||||
* a complete form building solution.
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { FormBuilderModule } from '@workshack/form-builder';
|
||||
*
|
||||
* @NgModule({
|
||||
* imports: [FormBuilderModule],
|
||||
* // ...
|
||||
* })
|
||||
* export class AppModule { }
|
||||
* ```
|
||||
*/
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
ReactiveFormsModule
|
||||
],
|
||||
exports: [
|
||||
CommonModule,
|
||||
ReactiveFormsModule
|
||||
]
|
||||
})
|
||||
export class FormBuilderModule { }
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* Public API Surface of form-builder
|
||||
*/
|
||||
|
||||
// Form Builder Module
|
||||
export * from './lib/form-builder.module';
|
||||
|
||||
// TODO: Add exports for typed FormGroup helpers when implemented
|
||||
// export * from './lib/helpers';
|
||||
// export * from './lib/types';
|
||||
// export * from './lib/interfaces';
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../out-tsc/lib",
|
||||
"target": "es2022",
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"inlineSources": true,
|
||||
"types": [],
|
||||
"lib": [
|
||||
"es2022",
|
||||
"dom"
|
||||
]
|
||||
},
|
||||
"exclude": [
|
||||
"src/test.ts",
|
||||
"**/*.spec.ts"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"extends": "./tsconfig.lib.json",
|
||||
"compilerOptions": {
|
||||
"declarationMap": false
|
||||
},
|
||||
"angularCompilerOptions": {
|
||||
"compilationMode": "partial"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../out-tsc/spec",
|
||||
"types": [
|
||||
"jasmine"
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"**/*.spec.ts",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue