@notiz/prisma-formly-generator
v0.7.0
Published
Prisma Formly Generator
Readme
prisma-formly-generator
Installation
npm i -D @notiz/prisma-formly-generatorAdd the generator to your schema.prisma
generator formly {
provider = "prisma-formly-generator"
output = "change/output/dir"
}Prisma decorators
Add comments /// to model fields including one of the following decorators to change the generated output.
⚙️ Field type and template options
Use @Formly.field({ OPTIONS }) to change the field type and template options for the generated formly field.
The OPTIONS are
| Option | Example |
| ------------- | --------------------------- |
| fieldType | color-picker |
| label | Email Address |
| description | Identify user |
| placeholder | [email protected] |
| type | email, password, file |
| disabled | true | false |
| validators | ['email'] |
| min | 3 |
| minLength | 3 |
| max | 150 |
| maxLength | 150 |
| rows | 3 |
| cols | 3 |
| tabindex | 3 |
| step | 3 |
model User {
id Int @id @default(autoincrement())
/// @Formly.field({ label: 'Email Address', type: 'email' })
email String @unique
name String?
/// @Formly.field({ fieldType: 'color-picker' })
color String?
}🕶️ Hide model or field
Use @Formly.hide or @Formly.hide() to hide a model or field from the generated output for example for secrets or internal models.
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
/// @Formly.hide()
password String
}
/// @Formly.hide()
model Logs {
id Int @id @default(autoincrement())
logs Json
}⛔️ Excluded fields
Certain fields are filled on database or Prisma level. Thus, these fields are excluded automatically from being generated.
| Description | Field | Example |
| --------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Id field with default value | fieldName Type @id @default(...) | id Int @id @default(autoincrement()) |
| DateTime field with default now | fieldName DateTime @default(now()) | createdAt DateTime @default(now()) |
| DateTime filed with @updateAt | fieldName DateTime @updateAt | updatedAt DateTime @updatedAt |
| Foreign keys of relations | fieldName Model? @relation(fields: [foreignKey], references: [id]) | user User? @relation(fields: [userId], references: [id]), userId is excluded |
💻 Development
npm i
# generate formly new
npm run prisma:generate
# test out formly
cd ng-formly && npm i && ng s💡 Ideas
- add groups/layout to builder
