UNPKG

@ng-formworks/daisyui

Version:

Angular ng-formworks - JSON Schema Form builder using DaisyUI

179 lines (133 loc) 5.91 kB
# @ng-formworks/daisyui This module is a dependency of the [ng-formworks project][npm_core_ver] and is meant to work as a framework installation module for using DaisyUI in the forms. ## Getting started If you are unfamiliar with with the ng-formworks project, it is highly recommended to first have a look at the [@ng-formworks pages][npm_core_ver] for examples, demos, options and documentation. Before installing also have a look at the Angular/ng-formworks [version compatibility table][npm_core_ver#versions] ## Getting started ```shell npm install @ng-formworks/core @ng-formworks/cssframework @ng-formworks/daisyui ``` With YARN, run the following: ```shell yarn add @ng-formworks/core @ng-formworks/cssframework @ng-formworks/daisyui ``` Then import `DaisyUIFrameworkModule` in your main application module if you want to use `daisyui` UI, like this: ```javascript import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { DaisyUIFrameworkModule } from '@ng-formworks/daisyui'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent ], imports: [ DaisyUIFrameworkModule ], providers: [], bootstrap: [ AppComponent ] }) export class AppModule { } ``` For basic use, after loading JsonSchemaFormModule as described above, to display a form in your Angular component, simply add the following to your component's template: ```html <json-schema-form loadExternalAssets="true" [schema]="yourJsonSchema" framework="daisyui" [theme]="yourTheme" (onSubmit)="yourOnSubmitFn($event)"> </json-schema-form> ``` Where `schema` is a valid JSON schema object, and `onSubmit` calls a function to process the submitted JSON form data. If you don't already have your own schemas, you can find a bunch of samples to test with in the `demo/assets/example-schemas` folder, as described above. `framework` is for the template you want to use, the default value is `no-framwork`. The possible values are: * `material-design` for Material Design (if installed). * `bootstrap-3` for Bootstrap 3 (if installed). * `bootstrap-4` for Bootstrap 4 (if installed). * `bootstrap-5` for Bootstrap 5 (if installed). * `daisyui` for DaisyUi. * `no-framework` for (plain HTML). `theme` is for the framework theme you want to use. The possible values for this framework are: * `daisyui_default` for the default theme. * `light` for the light theme. * `dark` for the dark theme. * `cupcake` for the cupcake theme. * `cmyk` for the cmyk theme. * `pastel` for the pastel theme. * `daisyui_leaf` for the leaf theme. the list of available themes can also be gotten using the FrameworkLibraryService(found in '@ng-formworks/core'): ```typescript getFrameworkThemes() ``` method ## Custom theming Custom theming can be achieved in two ways: * the simplest is to overwrite the default theme(or any other themes) with css rules: css changes can be made using the `data-theme` attribute selector so for example to change the .btn class of the default theme, you would include the following rule in your application's styles ```css [data-theme="daisyui_default"] .btn { border-radius: 1rem } ``` * the other method is to add a new theme: the first step will be to create the entire theme (see the specific frameworks underlying documentation for how this can be done) and have it use the `data-theme` attribute selector for example: ```css [data-theme="daisyui_custom"] { background-color: green; font: 15px Arial, sans-serif; . . . } [data-theme="daisyui_custom"] .btn { border-color: coral; . . . } ``` after making the css available, the theme will need to be registered using the FrameworkLibraryService(found in '@ng-formworks/core'): for example ```typescript constructor( . private frameworkLibrary: FrameworkLibraryService, . . ) { frameworkLibrary.registerTheme({name:'daisyui_custom',text:'DaisyUi custom theme'}) } ``` ## Using default DaisyUI css class names By default, the framework prefixes all standard DaisyUI class names with 'dui-' for example '.btn' will become '.dui-btn'. The standard names can be switched back without the 'dui-' prefix if need be. To switch opf the 'dui-' prefixing, the DUIOPTIONS token value needs to be provided with the classPrefix property set to false-see code snippet below. By default the classPrefix property is true. ```typescript import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import {DUIOPTIONS, DaisyUIFrameworkModule } from '@ng-formworks/daisyui'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent ], imports: [ DaisyUIFrameworkModule ], providers: [ { provide: DUIOPTIONS, useValue: {classPrefix:false} } ], bootstrap: [ AppComponent ] }) export class AppModule { } ``` ## Code scaffolding Run `ng generate component component-name --project @ng-formworks/daisyui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project @ng-formworks/daisyui`. > Note: Don't forget to add `--project @ng-formworks/daisyui` or else it will be added to the default project in your `angular.json` file. ## Build Run `ng build @ng-formworks/daisyui` to build the project. The build artifacts will be stored in the `dist/` directory. ## Running unit tests Run `ng test @ng-formworks/daisyui` to execute the unit tests via [Karma](https://karma-runner.github.io). [npm_core_ver]:https://www.npmjs.com/package/@ng-formworks/core [npm_core_ver#versions]:https://www.npmjs.com/package/@ng-formworks/core#versions