@ng-simplicity/forms-bootstrap 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @ng-simplicity/forms-bootstrap
2
2
 
3
- A package containing pre-styled Bootstrap form inputs, containers, and templates for the **NG-Simplicity Forms** dynamic engine.
3
+ A package containing pre-styled Bootstrap form inputs, containers, and templates. It serves as a visual UI extension of the reactive [@ng-simplicity/forms-core](https://www.npmjs.com/package/@ng-simplicity/forms-core) engine, inheriting its powerful dynamic capabilities. This allows you to construct highly dynamic, complex forms where control properties (such as visibility, enabled/disabled state, select options, and validation rules) reactively adapt in real-time based on the current values inside the form. The package is highly customizable; because it utilizes the core registry system, you can develop and add your own custom form controls to the registry to be used in the form rendering alongside the Bootstrap presets.
4
4
 
5
5
  ---
6
6
 
@@ -9,7 +9,7 @@ A package containing pre-styled Bootstrap form inputs, containers, and templates
9
9
  Ensure that you have `bootstrap` installed and imported in your application styles, along with the core forms package:
10
10
 
11
11
  ```bash
12
- npm install @ng-simplicity/forms-core @ng-simplicity/forms-bootstrap bootstrap lodash
12
+ npm install @ng-simplicity/forms-core @ng-simplicity/forms-bootstrap bootstrap
13
13
  ```
14
14
 
15
15
  Make sure to include Bootstrap's CSS inside your `angular.json` styles or `index.scss`:
@@ -21,66 +21,286 @@ Make sure to include Bootstrap's CSS inside your `angular.json` styles or `index
21
21
 
22
22
  ## Quick Start & Registration
23
23
 
24
- To make these styling components available to the dynamic renderer, register them using `NgsFormsBootstrapModule` in your page component constructor:
24
+ To render Bootstrap form elements dynamically, follow these steps:
25
+ 1. Provide the `NgsFormsService` at the component level to isolate the form state.
26
+ 2. Register the Bootstrap components in your component constructor using `NgsFormsBootstrapModule.registerAllBootStrapComponents(registry)`.
27
+ 3. Construct the layout schema (`NgsFormsFormConfig`) using Bootstrap controls.
28
+ 4. Pass the schema to `this.ngsFormsService.setFormConfig(formConfig)`.
29
+ 5. Add `<ngs-form></ngs-form>` to your component's template.
30
+
31
+ Here is a complete usage example:
25
32
 
26
33
  ```typescript
27
- import { Component } from '@angular/core';
28
- import { NgsFormsComponentRegistryService } from '@ng-simplicity/forms-core';
29
- import { NgsFormsBootstrapModule } from '@ng-simplicity/forms-bootstrap';
34
+ import { Component, OnInit, inject } from '@angular/core';
35
+ import { Validators } from '@angular/forms';
36
+ import {
37
+ NgsFormComponent,
38
+ NgsFormsComponentRegistryService,
39
+ NgsFormsService,
40
+ NgsFormsFormConfig,
41
+ NgsFormsFormGroupComponent,
42
+ NgsFormsRowComponent
43
+ } from '@ng-simplicity/forms-core';
44
+ import {
45
+ NgsFormsBootstrapModule,
46
+ NgsFormsBootstrapFormItemInputComponent,
47
+ NgsFormsBootstrapFormsItemTextAreaComponent
48
+ } from '@ng-simplicity/forms-bootstrap';
30
49
 
31
50
  @Component({
32
51
  selector: 'app-bootstrap-form-page',
33
- templateUrl: './bootstrap-form-page.component.html'
52
+ standalone: true,
53
+ imports: [NgsFormComponent],
54
+ providers: [NgsFormsService],
55
+ template: `
56
+ <div class="container mt-4">
57
+ <h2>Bootstrap Dynamic Form</h2>
58
+ <ngs-form></ngs-form>
59
+ <button class="btn btn-primary" (click)="onSubmit()">Submit</button>
60
+ </div>
61
+ `
34
62
  })
35
- export class BootstrapFormPageComponent {
63
+ export class BootstrapFormPageComponent implements OnInit {
64
+ private ngsFormsService = inject(NgsFormsService);
65
+
36
66
  constructor(registry: NgsFormsComponentRegistryService) {
37
- // Registers input-text, input-textarea, row, column, and other components
67
+ // Registers input-text, input-textarea, row, column, checkbox, radio, and other components
38
68
  NgsFormsBootstrapModule.registerAllBootStrapComponents(registry);
39
69
  }
70
+
71
+ ngOnInit() {
72
+ // Construct the form configuration
73
+ const formConfig: NgsFormsFormConfig = {
74
+ inputUpdateDebounce: 150,
75
+ root: NgsFormsFormGroupComponent.create({ name: 'profileForm' }, [
76
+ NgsFormsRowComponent.create({
77
+ items: [
78
+ NgsFormsBootstrapFormItemInputComponent.create({
79
+ name: 'username',
80
+ label: 'Username',
81
+ placeholder: 'Enter username...',
82
+ type: 'text',
83
+ labelLocation: 'top',
84
+ validators: [Validators.required],
85
+ errorMessageMap: {
86
+ required: 'Username is required.'
87
+ }
88
+ }),
89
+ NgsFormsBootstrapFormsItemTextAreaComponent.create({
90
+ name: 'bio',
91
+ label: 'Biography',
92
+ placeholder: 'Write a short bio...',
93
+ labelLocation: 'left',
94
+ inputCssClass: 'shadow-sm'
95
+ })
96
+ ]
97
+ })
98
+ ])
99
+ };
100
+
101
+ // Initialize the dynamic form controls
102
+ this.ngsFormsService.setFormConfig(formConfig);
103
+ }
104
+
105
+ onSubmit() {
106
+ if (!this.ngsFormsService.isValid) {
107
+ this.ngsFormsService.setIsSubmitted(true); // Triggers visual error styling
108
+ return;
109
+ }
110
+ console.log('Form data submitted:', this.ngsFormsService.formValue);
111
+ }
40
112
  }
41
113
  ```
42
114
 
43
115
  ---
44
116
 
117
+ ## Common Properties & Core Integration
118
+
119
+ This package relies on the main core engine: [@ng-simplicity/forms-core](https://www.npmjs.com/package/@ng-simplicity/forms-core). The core package provides all standard layout structures and non-styling-specific form components, including:
120
+ - **Form Groups**: `NgsFormsFormGroupComponent` (Key: `'form-group'`)
121
+ - **Sections**: `NgsFormsFormSectionComponent` (Key: `'section'`)
122
+ - **Row Containers**: `NgsFormsRowComponent` (Key: `'form-row'`)
123
+ - **Columns**: `NgsFormsColumnComponent` (Key: `'column'`)
124
+ - **Form Arrays & Support**: `NgsFormsFormArrayContainerComponent` (Key: `'form-array'`), `NgsFormsFormArrayAddItemComponent` (Key: `'form-array-add-item'`), and `NgsFormsFormArrayRemoveItemComponent` (Key: `'form-array-remove-item'`)
125
+ - **Static Content**: `NgsFormsHtmlContentComponent` (Key: `'content-html'`) and `NgsFormsTextDivComponent` (Key: `'text-div'`)
126
+
127
+ Please refer to the [@ng-simplicity/forms-core README](file:///home/bryan/git/bryan-projects/angular-open-source/ng-simplicity/forms/libs/forms-core/README.md) for full details on constructing layouts and managing core form structures.
128
+
129
+ ### Common Control Properties
130
+
131
+ Most controls in this styling library support a standard set of core properties that are managed by the dynamic forms engine. These properties allow passing either a static/basic value or an asynchronous stream (Observable):
132
+
133
+ 1. **Visibility**:
134
+ - `visible` (boolean): Controls whether the item is mounted in the DOM.
135
+ - `visible$` (`Observable<boolean>`): Stream version to dynamically show/hide components.
136
+ - *Note: Visibility is configured at the wrapper component layer (`NgsFormsFormItem`).*
137
+
138
+ 2. **Disabled Status**:
139
+ - `disabled` (boolean): Sets the initial disabled state of the form control.
140
+ - `disabled$` (`Observable<boolean>`): Stream to toggle disabled state.
141
+ - *Configured at the inner `config` level.*
142
+
143
+ 3. **Validators**:
144
+ - `validators` (`Array<ValidatorFn>`): Array of standard/custom Angular Validator functions.
145
+ - `validators$` (`Observable<Array<ValidatorFn>>`): Stream of validator functions to change validators dynamically.
146
+ - *Configured at the inner `config` level.*
147
+
148
+ 4. **Options** (Only for components with choice selection like `select` and `radio`):
149
+ - `options` (`Array<NgsFormsFormInputOption>`): Static array of choices `{ id: string | number, label: string, disabled?: boolean }`.
150
+ - `options$` (`Observable<Array<NgsFormsFormInputOption>>`): Stream to dynamically populate choices.
151
+ - *Configured at the inner `config` level.*
152
+
153
+ > [!TIP]
154
+ > By supplying **Observable** streams (such as `visible$`, `disabled$`, `validators$`, or `options$`), you can build highly dynamic and reactive forms. Because these observables can be piped directly from the form service's value change stream (`this.ngsFormsService.formValue$`), fields can dynamically enable/disable, appear/disappear, change options, or update validation rules in real-time based on user input in other fields.
155
+
156
+ ---
157
+
45
158
  ## Available Components & Schemas
46
159
 
160
+ Here is the full list of available Bootstrap components along with code examples showing their required and optional configuration parameters:
161
+
47
162
  ### 1. Text Input (`input-text`)
48
163
  Uses `NgsFormsBootstrapFormItemInputComponent`.
49
-
50
- - **Selector/Key**: `input-text`
164
+ - **Key**: `input-text`
51
165
  - **Config Type**: `NgsFormsFormItemConfigBootstrapTextInput`
52
- - **Features**: Supports label locations (`top` or `left`), validation status borders, invalid feedback, custom types (`text`, `email`, `password`), and placeholder bindings.
53
166
 
54
167
  ```typescript
55
168
  import { NgsFormsBootstrapFormItemInputComponent } from '@ng-simplicity/forms-bootstrap';
56
169
  import { Validators } from '@angular/forms';
57
170
 
58
171
  const usernameField = NgsFormsBootstrapFormItemInputComponent.create({
172
+ // Required Parameters
59
173
  name: 'username',
60
174
  label: 'Username',
175
+
176
+ // Optional Parameters
177
+ id: 'custom-username-id',
61
178
  placeholder: 'Enter username...',
62
- type: 'text',
63
- labelLocation: 'top',
64
- validators: [Validators.required]
179
+ type: 'text', // 'text' | 'email' | 'password'
180
+ value: 'default_user', // Initial value
181
+ labelLocation: 'top', // 'top' | 'left' (default is 'top')
182
+ disabled: false,
183
+ validators: [Validators.required],
184
+ errorMessageMap: {
185
+ required: 'Username is required.'
186
+ }
65
187
  });
66
188
  ```
67
189
 
68
190
  ### 2. Text Area (`input-textarea`)
69
191
  Uses `NgsFormsBootstrapFormsItemTextAreaComponent`.
70
-
71
- - **Selector/Key**: `input-textarea`
192
+ - **Key**: `input-textarea`
72
193
  - **Config Type**: `NgsFormsFormItemConfigBootstrapTextArea`
73
- - **Features**: Supports rows configuration, css classes override, validation classes, label locations, and placeholder bindings.
74
194
 
75
195
  ```typescript
76
196
  import { NgsFormsBootstrapFormsItemTextAreaComponent } from '@ng-simplicity/forms-bootstrap';
197
+ import { Validators } from '@angular/forms';
77
198
 
78
199
  const bioField = NgsFormsBootstrapFormsItemTextAreaComponent.create({
200
+ // Required Parameters
79
201
  name: 'bio',
80
- label: 'About Me',
202
+ label: 'Biography',
203
+
204
+ // Optional Parameters
205
+ id: 'custom-bio-id',
81
206
  placeholder: 'Tell us about yourself...',
82
- labelLocation: 'left',
83
- inputCssClass: 'shadow-sm'
207
+ value: '',
208
+ labelLocation: 'left', // 'top' | 'left' (default is 'top')
209
+ inputCssClass: 'shadow-sm', // Custom css classes applied to textarea
210
+ disabled: false,
211
+ validators: [Validators.required],
212
+ errorMessageMap: {
213
+ required: 'Biography is required.'
214
+ }
215
+ });
216
+ ```
217
+
218
+ ### 3. Checkbox (`checkbox`)
219
+ Uses `NgsFormsBootstrapFormsItemCheckboxComponent`.
220
+ - **Key**: `checkbox`
221
+ - **Config Type**: `NgsFormsFormItemConfigBootstrapCheckbox`
222
+
223
+ ```typescript
224
+ import { NgsFormsBootstrapFormsItemCheckboxComponent } from '@ng-simplicity/forms-bootstrap';
225
+ import { Validators } from '@angular/forms';
226
+
227
+ const acceptTermsField = NgsFormsBootstrapFormsItemCheckboxComponent.create({
228
+ // Required Parameters
229
+ name: 'agreeTerms',
230
+ label: 'I accept the terms and conditions',
231
+
232
+ // Optional Parameters
233
+ id: 'terms-checkbox-id',
234
+ value: false, // Initial checked state
235
+ disabled: false,
236
+ validators: [Validators.requiredTrue],
237
+ errorMessageMap: {
238
+ required: 'You must check this box to agree.'
239
+ }
240
+ });
241
+ ```
242
+
243
+ ### 4. Select Dropdown (`select`)
244
+ Uses `NgsFormsBootstrapFormItemSelectInputComponent`.
245
+ - **Key**: `select`
246
+ - **Config Type**: `NgsFormsFormItemConfigBootstrapSelectInput`
247
+
248
+ ```typescript
249
+ import { NgsFormsBootstrapFormItemSelectInputComponent } from '@ng-simplicity/forms-bootstrap';
250
+ import { Validators } from '@angular/forms';
251
+
252
+ const countrySelectField = NgsFormsBootstrapFormItemSelectInputComponent.create({
253
+ // Required Parameters
254
+ name: 'country',
255
+ label: 'Country',
256
+
257
+ // Optional Parameters
258
+ id: 'country-select-id',
259
+ placeholder: 'Select country', // Text displayed for the placeholder option
260
+ placeHolderValue: '', // Custom value for placeholder selection
261
+ value: 'us', // Initial selected option ID
262
+ labelLocation: 'top', // 'top' | 'left' (default is 'top')
263
+ disabled: false,
264
+ options: [
265
+ { id: 'us', label: 'United States' },
266
+ { id: 'ca', label: 'Canada', disabled: false },
267
+ { id: 'mx', label: 'Mexico', disabled: true }
268
+ ],
269
+ validators: [Validators.required],
270
+ errorMessageMap: {
271
+ required: 'Please select a country.'
272
+ }
273
+ });
274
+ ```
275
+
276
+ ### 5. Radio Buttons (`radio`)
277
+ Uses `NgsFormsBootstrapRadioInputComponent`.
278
+ - **Key**: `radio`
279
+ - **Config Type**: `NgsFormsFormsItemConfigBoostrapRadio`
280
+
281
+ ```typescript
282
+ import { NgsFormsBootstrapRadioInputComponent } from '@ng-simplicity/forms-bootstrap';
283
+ import { Validators } from '@angular/forms';
284
+
285
+ const notificationPrefField = NgsFormsBootstrapRadioInputComponent.create({
286
+ // Required Parameters
287
+ name: 'notificationPreference',
288
+ label: 'Preferred notifications',
289
+
290
+ // Optional Parameters
291
+ id: 'notification-pref-id',
292
+ value: 'email', // Initial selected radio option ID
293
+ alignment: 'horizontal', // 'horizontal' | 'vertical' (default is 'vertical')
294
+ disabled: false,
295
+ options: [
296
+ { id: 'email', label: 'Email' },
297
+ { id: 'sms', label: 'SMS / Text Message' },
298
+ { id: 'none', label: 'None' }
299
+ ],
300
+ validators: [Validators.required],
301
+ errorMessageMap: {
302
+ required: 'Please select a contact method.'
303
+ }
84
304
  });
85
305
  ```
86
306
 
@@ -98,3 +318,17 @@ To run with coverage enabled:
98
318
  ```bash
99
319
  nx test forms-bootstrap --codeCoverage
100
320
  ```
321
+
322
+ ---
323
+
324
+ ## Example Applications
325
+
326
+ Fully functional example applications demonstrating the form engine functionality are located in the [`apps/`](../../apps) folder of this monorepo:
327
+ - **`forms-bootstrap-demo`**: Integrates and showcases the `@ng-simplicity/forms-bootstrap` package.
328
+ - **`forms-material-demo`**: Integrates and showcases the `@ng-simplicity/forms-material` package.
329
+
330
+ ---
331
+
332
+ ## Support & Contributions
333
+
334
+ If you have feature suggestions, need a feature to make `@ng-simplicity/forms-bootstrap` work for your project, or encounter any bugs, please log an issue in the GitHub issue tracker.
@@ -1,10 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
- import { NgsFormsBaseClassFormInputComponent, NgsFormsBaseClassFormItemInputWithOptionsComponent, NgsFormsCoreModule } from '@ng-simplicity/forms-core';
3
+ import { NgsFormsBaseClassFormInputComponent, ngsDefaults, NgsFormsBaseClassFormItemInputWithOptionsComponent, NgsFormsCoreModule } from '@ng-simplicity/forms-core';
4
4
  import * as i1 from '@angular/forms';
5
5
  import { ReactiveFormsModule, FormsModule } from '@angular/forms';
6
6
  import { v4 } from 'uuid';
7
- import { defaults } from 'lodash';
8
7
  import { NgIf, CommonModule } from '@angular/common';
9
8
 
10
9
  class NgsFormsBootstrapFormsItemCheckboxComponent extends NgsFormsBaseClassFormInputComponent {
@@ -18,11 +17,11 @@ class NgsFormsBootstrapFormsItemCheckboxComponent extends NgsFormsBaseClassFormI
18
17
  };
19
18
  }
20
19
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapFormsItemCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapFormsItemCheckboxComponent, isStandalone: true, selector: "ngs-form-item-bs-checkbox", usesInheritance: true, ngImport: i0, template: "@if (control) {\n <div class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" class=\"form-check-input\" id=\"{{id}}\"\n type=\"checkbox\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\" for=\"{{id}}\">\n {{ checkboxConfig.label }}\n </label>\n </div>\n}\n\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapFormsItemCheckboxComponent, isStandalone: true, selector: "ngs-form-item-bs-checkbox", usesInheritance: true, ngImport: i0, template: "@if (control) {\n <div class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n class=\"form-check-input\" \n id=\"{{id}}\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n type=\"checkbox\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\" for=\"{{id}}\">\n {{ checkboxConfig.label }}\n </label>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n}\n\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
21
  }
23
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapFormsItemCheckboxComponent, decorators: [{
24
23
  type: Component,
25
- args: [{ selector: 'ngs-form-item-bs-checkbox', imports: [ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (control) {\n <div class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" class=\"form-check-input\" id=\"{{id}}\"\n type=\"checkbox\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\" for=\"{{id}}\">\n {{ checkboxConfig.label }}\n </label>\n </div>\n}\n\n" }]
24
+ args: [{ selector: 'ngs-form-item-bs-checkbox', imports: [ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (control) {\n <div class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n class=\"form-check-input\" \n id=\"{{id}}\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n type=\"checkbox\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\" for=\"{{id}}\">\n {{ checkboxConfig.label }}\n </label>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n}\n\n" }]
26
25
  }] });
27
26
 
28
27
  const NgsFormBootstrapInputComponentResources = {
@@ -34,7 +33,7 @@ const NgsFormBootstrapInputComponentResources = {
34
33
 
35
34
  class NgsFormsBootstrapFormItemInputComponent extends NgsFormsBaseClassFormInputComponent {
36
35
  static key = 'input-text';
37
- textConfig = defaults(this.config, NgsFormBootstrapInputComponentResources.defaults);
36
+ textConfig = ngsDefaults(this.config, NgsFormBootstrapInputComponentResources.defaults);
38
37
  constructor() {
39
38
  super();
40
39
  }
@@ -46,11 +45,11 @@ class NgsFormsBootstrapFormItemInputComponent extends NgsFormsBaseClassFormInput
46
45
  };
47
46
  }
48
47
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapFormItemInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapFormItemInputComponent, isStandalone: true, selector: "ngs-forms-bs-input", usesInheritance: true, ngImport: i0, template: "@if (!!control) {\n @if (textConfig.labelLocation === 'top') {\n <div class=\"mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textConfig.label }}</label>\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" class=\"form-control\"\n id=\"{{id}}-top\" placeholder=\"{{textConfig.placeholder}}\" type=\"{{textConfig.type}}\" />\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n }\n @if (textConfig.labelLocation === 'left') {\n <div class=\"row mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textConfig.label }}</label>\n <div class=\"col-sm-10\">\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" class=\"form-control\"\n id=\"{{id}}-left\" placeholder=\"{{textConfig.placeholder}}\" type=\"{{textConfig.type}}\" />\n </div>\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
48
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapFormItemInputComponent, isStandalone: true, selector: "ngs-forms-bs-input", usesInheritance: true, ngImport: i0, template: "@if (!!control) {\n @if (textConfig.labelLocation === 'top') {\n <div class=\"mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textConfig.label }}</label>\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n class=\"form-control\"\n id=\"{{id}}-top\" \n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textConfig.placeholder}}\" \n type=\"{{textConfig.type}}\" />\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n }\n @if (textConfig.labelLocation === 'left') {\n <div class=\"row mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textConfig.label }}</label>\n <div class=\"col-sm-10\">\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n class=\"form-control\"\n id=\"{{id}}-left\" \n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textConfig.placeholder}}\" \n type=\"{{textConfig.type}}\" />\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n </div>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
49
  }
51
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapFormItemInputComponent, decorators: [{
52
51
  type: Component,
53
- args: [{ selector: 'ngs-forms-bs-input', imports: [ReactiveFormsModule, NgIf], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!!control) {\n @if (textConfig.labelLocation === 'top') {\n <div class=\"mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textConfig.label }}</label>\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" class=\"form-control\"\n id=\"{{id}}-top\" placeholder=\"{{textConfig.placeholder}}\" type=\"{{textConfig.type}}\" />\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n }\n @if (textConfig.labelLocation === 'left') {\n <div class=\"row mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textConfig.label }}</label>\n <div class=\"col-sm-10\">\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" class=\"form-control\"\n id=\"{{id}}-left\" placeholder=\"{{textConfig.placeholder}}\" type=\"{{textConfig.type}}\" />\n </div>\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n }\n}\n" }]
52
+ args: [{ selector: 'ngs-forms-bs-input', imports: [ReactiveFormsModule, NgIf], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!!control) {\n @if (textConfig.labelLocation === 'top') {\n <div class=\"mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textConfig.label }}</label>\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n class=\"form-control\"\n id=\"{{id}}-top\" \n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textConfig.placeholder}}\" \n type=\"{{textConfig.type}}\" />\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n }\n @if (textConfig.labelLocation === 'left') {\n <div class=\"row mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textConfig.label }}</label>\n <div class=\"col-sm-10\">\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n class=\"form-control\"\n id=\"{{id}}-left\" \n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textConfig.placeholder}}\" \n type=\"{{textConfig.type}}\" />\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n </div>\n }\n}\n" }]
54
53
  }], ctorParameters: () => [] });
55
54
 
56
55
  class NgsFormsBootstrapRadioInputComponent extends NgsFormsBaseClassFormItemInputWithOptionsComponent {
@@ -64,11 +63,11 @@ class NgsFormsBootstrapRadioInputComponent extends NgsFormsBaseClassFormItemInpu
64
63
  };
65
64
  }
66
65
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapRadioInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
67
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapRadioInputComponent, isStandalone: true, selector: "ngs-forms-bootstrap-radio-group-input", usesInheritance: true, ngImport: i0, template: "@if (control) {\n <div [class.d-flex]=\"radioConfig.alignment==='horizontal'\">\n @if (!!radioConfig.label) {\n <div [class.text-danger]=\"!!errorMessage\" class=\"form-label me-2 pt-0\">\n {{ radioConfig.label }}\n </div>\n }\n @for (option of options(); track option.id) {\n <div [class.form-check-inline]=\"radioConfig.alignment==='horizontal'\"\n [class.me-2]=\"radioConfig.alignment==='horizontal'\"\n class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" value=\"{{option.id}}\" class=\"form-check-input\"\n id=\"{{id}}{{option.id}}\" type=\"radio\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\"\n for=\"{{id}}{{option.id}}\">{{ option.label }}</label>\n </div>\n }\n </div>\n}\n\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
66
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapRadioInputComponent, isStandalone: true, selector: "ngs-forms-bootstrap-radio-group-input", usesInheritance: true, ngImport: i0, template: "@if (control) {\n <div role=\"radiogroup\"\n [attr.aria-labelledby]=\"radioConfig.label ? id + '-label' : null\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n class=\"mb-3\">\n <div [class.d-flex]=\"radioConfig.alignment==='horizontal'\">\n @if (!!radioConfig.label) {\n <div [class.text-danger]=\"!!errorMessage\" class=\"form-label me-2 pt-0\" id=\"{{id}}-label\">\n {{ radioConfig.label }}\n </div>\n }\n @for (option of options(); track option.id) {\n <div [class.form-check-inline]=\"radioConfig.alignment==='horizontal'\"\n [class.me-2]=\"radioConfig.alignment==='horizontal'\"\n class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n value=\"{{option.id}}\" \n class=\"form-check-input\"\n id=\"{{id}}{{option.id}}\" \n type=\"radio\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\"\n for=\"{{id}}{{option.id}}\">{{ option.label }}</label>\n </div>\n }\n </div>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n}\n\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
67
  }
69
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapRadioInputComponent, decorators: [{
70
69
  type: Component,
71
- args: [{ selector: 'ngs-forms-bootstrap-radio-group-input', imports: [ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (control) {\n <div [class.d-flex]=\"radioConfig.alignment==='horizontal'\">\n @if (!!radioConfig.label) {\n <div [class.text-danger]=\"!!errorMessage\" class=\"form-label me-2 pt-0\">\n {{ radioConfig.label }}\n </div>\n }\n @for (option of options(); track option.id) {\n <div [class.form-check-inline]=\"radioConfig.alignment==='horizontal'\"\n [class.me-2]=\"radioConfig.alignment==='horizontal'\"\n class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" value=\"{{option.id}}\" class=\"form-check-input\"\n id=\"{{id}}{{option.id}}\" type=\"radio\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\"\n for=\"{{id}}{{option.id}}\">{{ option.label }}</label>\n </div>\n }\n </div>\n}\n\n" }]
70
+ args: [{ selector: 'ngs-forms-bootstrap-radio-group-input', imports: [ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (control) {\n <div role=\"radiogroup\"\n [attr.aria-labelledby]=\"radioConfig.label ? id + '-label' : null\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n class=\"mb-3\">\n <div [class.d-flex]=\"radioConfig.alignment==='horizontal'\">\n @if (!!radioConfig.label) {\n <div [class.text-danger]=\"!!errorMessage\" class=\"form-label me-2 pt-0\" id=\"{{id}}-label\">\n {{ radioConfig.label }}\n </div>\n }\n @for (option of options(); track option.id) {\n <div [class.form-check-inline]=\"radioConfig.alignment==='horizontal'\"\n [class.me-2]=\"radioConfig.alignment==='horizontal'\"\n class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n value=\"{{option.id}}\" \n class=\"form-check-input\"\n id=\"{{id}}{{option.id}}\" \n type=\"radio\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\"\n for=\"{{id}}{{option.id}}\">{{ option.label }}</label>\n </div>\n }\n </div>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n}\n\n" }]
72
71
  }] });
73
72
 
74
73
  class NgsFormsBootstrapFormItemSelectInputComponent extends NgsFormsBaseClassFormItemInputWithOptionsComponent {
@@ -82,11 +81,11 @@ class NgsFormsBootstrapFormItemSelectInputComponent extends NgsFormsBaseClassFor
82
81
  };
83
82
  }
84
83
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapFormItemSelectInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
85
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapFormItemSelectInputComponent, isStandalone: true, selector: "ngs-forms-bootstrap-select-input", usesInheritance: true, ngImport: i0, template: "@if (control) {\n @if (selectConfig.labelLocation === 'top') {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ selectConfig.label }}</label>\n <select [attr.aria-label]=\"selectConfig.label\" [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\"\n class=\"form-select\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}\n </option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n } @else {\n\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ selectConfig.label }}</label>\n <div class=\"col-sm-10\">\n <select [attr.aria-label]=\"selectConfig.label\" [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\"\n class=\"form-select\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}\n </option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n </div>\n }\n}\n\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
84
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapFormItemSelectInputComponent, isStandalone: true, selector: "ngs-forms-bootstrap-select-input", usesInheritance: true, ngImport: i0, template: "@if (control) {\n @if (selectConfig.labelLocation === 'top') {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ selectConfig.label }}</label>\n <select [attr.aria-label]=\"selectConfig.label\" \n [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\"\n class=\"form-select\"\n id=\"{{id}}-top\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}</option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n } @else {\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ selectConfig.label }}</label>\n <div class=\"col-sm-10\">\n <select [attr.aria-label]=\"selectConfig.label\" \n [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\"\n class=\"form-select\"\n id=\"{{id}}-left\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}</option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n </div>\n }\n}\n\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
86
85
  }
87
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapFormItemSelectInputComponent, decorators: [{
88
87
  type: Component,
89
- args: [{ selector: 'ngs-forms-bootstrap-select-input', imports: [ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (control) {\n @if (selectConfig.labelLocation === 'top') {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ selectConfig.label }}</label>\n <select [attr.aria-label]=\"selectConfig.label\" [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\"\n class=\"form-select\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}\n </option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n } @else {\n\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ selectConfig.label }}</label>\n <div class=\"col-sm-10\">\n <select [attr.aria-label]=\"selectConfig.label\" [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\"\n class=\"form-select\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}\n </option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n </div>\n }\n}\n\n" }]
88
+ args: [{ selector: 'ngs-forms-bootstrap-select-input', imports: [ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (control) {\n @if (selectConfig.labelLocation === 'top') {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ selectConfig.label }}</label>\n <select [attr.aria-label]=\"selectConfig.label\" \n [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\"\n class=\"form-select\"\n id=\"{{id}}-top\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}</option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n } @else {\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ selectConfig.label }}</label>\n <div class=\"col-sm-10\">\n <select [attr.aria-label]=\"selectConfig.label\" \n [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\"\n class=\"form-select\"\n id=\"{{id}}-left\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}</option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n </div>\n }\n}\n\n" }]
90
89
  }] });
91
90
 
92
91
  class NgsFormsBootstrapFormsItemTextAreaComponent extends NgsFormsBaseClassFormInputComponent {
@@ -100,11 +99,11 @@ class NgsFormsBootstrapFormsItemTextAreaComponent extends NgsFormsBaseClassFormI
100
99
  };
101
100
  }
102
101
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapFormsItemTextAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
103
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapFormsItemTextAreaComponent, isStandalone: true, selector: "ngs-form-item-bs-text-area", usesInheritance: true, ngImport: i0, template: "@if (control) {\n @if (textAreaConfig.labelLocation === 'top' || !textAreaConfig.labelLocation) {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textAreaConfig.label }}</label>\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-top\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n @if (errorMessage) {\n <div class=\"text-danger\">{{ errorMessage }}</div>\n }\n </div>\n\n } @else {\n @if (textAreaConfig.labelLocation === 'left') {\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textAreaConfig.label }}</label>\n <div class=\"col-sm-10\">\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-left\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n </div>\n @if (errorMessage) {\n <div class=\"text-danger\">{{ errorMessage }}</div>\n }\n </div>\n }\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
102
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: NgsFormsBootstrapFormsItemTextAreaComponent, isStandalone: true, selector: "ngs-form-item-bs-text-area", usesInheritance: true, ngImport: i0, template: "@if (control) {\n @if (textAreaConfig.labelLocation === 'top' || !textAreaConfig.labelLocation) {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textAreaConfig.label }}</label>\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-top\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n } @else {\n @if (textAreaConfig.labelLocation === 'left') {\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textAreaConfig.label }}</label>\n <div class=\"col-sm-10\">\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-left\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n </div>\n }\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
104
103
  }
105
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: NgsFormsBootstrapFormsItemTextAreaComponent, decorators: [{
106
105
  type: Component,
107
- args: [{ selector: 'ngs-form-item-bs-text-area', imports: [CommonModule, ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (control) {\n @if (textAreaConfig.labelLocation === 'top' || !textAreaConfig.labelLocation) {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textAreaConfig.label }}</label>\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-top\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n @if (errorMessage) {\n <div class=\"text-danger\">{{ errorMessage }}</div>\n }\n </div>\n\n } @else {\n @if (textAreaConfig.labelLocation === 'left') {\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textAreaConfig.label }}</label>\n <div class=\"col-sm-10\">\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-left\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n </div>\n @if (errorMessage) {\n <div class=\"text-danger\">{{ errorMessage }}</div>\n }\n </div>\n }\n }\n}\n" }]
106
+ args: [{ selector: 'ngs-form-item-bs-text-area', imports: [CommonModule, ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (control) {\n @if (textAreaConfig.labelLocation === 'top' || !textAreaConfig.labelLocation) {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textAreaConfig.label }}</label>\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-top\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n } @else {\n @if (textAreaConfig.labelLocation === 'left') {\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textAreaConfig.label }}</label>\n <div class=\"col-sm-10\">\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-left\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n </div>\n }\n }\n}\n" }]
108
107
  }] });
109
108
 
110
109
  class NgsFormsBootstrapModule {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-simplicity-forms-bootstrap.mjs","sources":["../../../../libs/forms-bootstrap/src/lib/form-components/checkbox/checkbox.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/checkbox/checkbox.component.html","../../../../libs/forms-bootstrap/src/lib/form-components/input/input-component.resources.ts","../../../../libs/forms-bootstrap/src/lib/form-components/input/input.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/input/input.component.html","../../../../libs/forms-bootstrap/src/lib/form-components/radio/radio.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/radio/radio.component.html","../../../../libs/forms-bootstrap/src/lib/form-components/select/select.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/select/select.component.html","../../../../libs/forms-bootstrap/src/lib/form-components/text-area/text-area.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/text-area/text-area.component.html","../../../../libs/forms-bootstrap/src/lib/forms-bootstrap.module.ts","../../../../libs/forms-bootstrap/src/ng-simplicity-forms-bootstrap.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { NgsFormsBaseClassFormInputComponent, NgsFormsFormItem, NgsFormsFormItemConfigBaseInput } from '@ng-simplicity/forms-core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgsFormsFormItemConfigBootstrapCheckbox } from './checkbox.config';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'ngs-form-item-bs-checkbox',\n imports: [ReactiveFormsModule],\n templateUrl: './checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapFormsItemCheckboxComponent extends NgsFormsBaseClassFormInputComponent<NgsFormsFormItemConfigBootstrapCheckbox> {\n static override key = 'checkbox';\n checkboxConfig = this.config as NgsFormsFormItemConfigBootstrapCheckbox;\n\n static create(\n config: NgsFormsFormItemConfigBootstrapCheckbox\n ): NgsFormsFormItem<NgsFormsFormItemConfigBootstrapCheckbox> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapFormsItemCheckboxComponent.key,\n config,\n };\n }\n}\n","@if (control) {\n <div class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" class=\"form-check-input\" id=\"{{id}}\"\n type=\"checkbox\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\" for=\"{{id}}\">\n {{ checkboxConfig.label }}\n </label>\n </div>\n}\n\n","import { NgsFormsFormItemConfigBootstrapTextInput } from './input.config';\n\nexport const NgsFormBootstrapInputComponentResources: INgsFormBoostrapInputComponentResources = {\n defaults: {\n type: 'text',\n labelLocation: 'top',\n },\n};\n\nexport interface INgsFormBoostrapInputComponentResources {\n defaults: Partial<NgsFormsFormItemConfigBootstrapTextInput>;\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { NgsFormsBaseClassFormInputComponent, NgsFormsFormItem } from '@ng-simplicity/forms-core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { defaults } from 'lodash';\nimport { NgsFormBootstrapInputComponentResources } from './input-component.resources';\nimport { NgsFormsFormItemConfigBootstrapTextInput } from './input.config';\nimport { v4 } from 'uuid';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'ngs-forms-bs-input',\n imports: [ReactiveFormsModule, NgIf],\n templateUrl: './input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapFormItemInputComponent extends NgsFormsBaseClassFormInputComponent<NgsFormsFormItemConfigBootstrapTextInput> {\n static override key = 'input-text';\n textConfig: NgsFormsFormItemConfigBootstrapTextInput = defaults(this.config as NgsFormsFormItemConfigBootstrapTextInput, NgsFormBootstrapInputComponentResources.defaults);\n constructor() {\n super();\n }\n\n static create(config: NgsFormsFormItemConfigBootstrapTextInput): NgsFormsFormItem<NgsFormsFormItemConfigBootstrapTextInput> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapFormItemInputComponent.key,\n config,\n };\n }\n}\n","@if (!!control) {\n @if (textConfig.labelLocation === 'top') {\n <div class=\"mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textConfig.label }}</label>\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" class=\"form-control\"\n id=\"{{id}}-top\" placeholder=\"{{textConfig.placeholder}}\" type=\"{{textConfig.type}}\" />\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n }\n @if (textConfig.labelLocation === 'left') {\n <div class=\"row mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textConfig.label }}</label>\n <div class=\"col-sm-10\">\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" class=\"form-control\"\n id=\"{{id}}-left\" placeholder=\"{{textConfig.placeholder}}\" type=\"{{textConfig.type}}\" />\n </div>\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { NgsFormsBaseClassFormItemInputWithOptionsComponent, NgsFormsFormItem } from '@ng-simplicity/forms-core';\nimport { NgsFormsFormsItemConfigBoostrapRadio } from './radio.config';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'ngs-forms-bootstrap-radio-group-input',\n imports: [ReactiveFormsModule],\n templateUrl: './radio.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapRadioInputComponent extends NgsFormsBaseClassFormItemInputWithOptionsComponent<NgsFormsFormsItemConfigBoostrapRadio> {\n static override key = 'radio';\n radioConfig = this.config as NgsFormsFormsItemConfigBoostrapRadio;\n\n static create(\n config: NgsFormsFormsItemConfigBoostrapRadio\n ): NgsFormsFormItem<NgsFormsFormsItemConfigBoostrapRadio> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapRadioInputComponent.key,\n config,\n };\n }\n}\n","@if (control) {\n <div [class.d-flex]=\"radioConfig.alignment==='horizontal'\">\n @if (!!radioConfig.label) {\n <div [class.text-danger]=\"!!errorMessage\" class=\"form-label me-2 pt-0\">\n {{ radioConfig.label }}\n </div>\n }\n @for (option of options(); track option.id) {\n <div [class.form-check-inline]=\"radioConfig.alignment==='horizontal'\"\n [class.me-2]=\"radioConfig.alignment==='horizontal'\"\n class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\" value=\"{{option.id}}\" class=\"form-check-input\"\n id=\"{{id}}{{option.id}}\" type=\"radio\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\"\n for=\"{{id}}{{option.id}}\">{{ option.label }}</label>\n </div>\n }\n </div>\n}\n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { NgsFormsFormItemConfigBootstrapSelectInput } from './select.config';\n\nimport { NgsFormsBaseClassFormItemInputWithOptionsComponent, NgsFormsFormItem } from '@ng-simplicity/forms-core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'ngs-forms-bootstrap-select-input',\n imports: [ReactiveFormsModule],\n templateUrl: './select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapFormItemSelectInputComponent extends NgsFormsBaseClassFormItemInputWithOptionsComponent<NgsFormsFormItemConfigBootstrapSelectInput> {\n static override key = 'select';\n selectConfig = this.config as NgsFormsFormItemConfigBootstrapSelectInput;\n\n static create(\n config: NgsFormsFormItemConfigBootstrapSelectInput\n ): NgsFormsFormItem<NgsFormsFormItemConfigBootstrapSelectInput> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapFormItemSelectInputComponent.key,\n config,\n };\n }\n}\n","@if (control) {\n @if (selectConfig.labelLocation === 'top') {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ selectConfig.label }}</label>\n <select [attr.aria-label]=\"selectConfig.label\" [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\"\n class=\"form-select\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}\n </option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n } @else {\n\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ selectConfig.label }}</label>\n <div class=\"col-sm-10\">\n <select [attr.aria-label]=\"selectConfig.label\" [class.border-danger]=\"!!errorMessage\" [formControl]=\"control\"\n class=\"form-select\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}\n </option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"invalid-feedback\">{{ errorMessage }}</div>\n }\n </div>\n </div>\n }\n}\n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgsFormsBaseClassFormInputComponent, NgsFormsFormItem } from '@ng-simplicity/forms-core';\nimport { NgsFormsFormItemConfigBootstrapTextArea } from './text-area.config';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'ngs-form-item-bs-text-area',\n imports: [CommonModule, ReactiveFormsModule],\n templateUrl: './text-area.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapFormsItemTextAreaComponent extends NgsFormsBaseClassFormInputComponent<NgsFormsFormItemConfigBootstrapTextArea> {\n static override key = 'input-textarea';\n textAreaConfig = this.config as NgsFormsFormItemConfigBootstrapTextArea;\n\n static create(config: NgsFormsFormItemConfigBootstrapTextArea): NgsFormsFormItem<NgsFormsFormItemConfigBootstrapTextArea> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapFormsItemTextAreaComponent.key,\n config,\n };\n }\n}\n","@if (control) {\n @if (textAreaConfig.labelLocation === 'top' || !textAreaConfig.labelLocation) {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textAreaConfig.label }}</label>\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-top\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n @if (errorMessage) {\n <div class=\"text-danger\">{{ errorMessage }}</div>\n }\n </div>\n\n } @else {\n @if (textAreaConfig.labelLocation === 'left') {\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textAreaConfig.label }}</label>\n <div class=\"col-sm-10\">\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-left\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n </div>\n @if (errorMessage) {\n <div class=\"text-danger\">{{ errorMessage }}</div>\n }\n </div>\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgsFormsComponentRegistryService, NgsFormsCoreModule } from '@ng-simplicity/forms-core';\nimport {\n NgsFormsBootstrapFormItemInputComponent,\n NgsFormsBootstrapFormsItemTextAreaComponent,\n NgsFormsBootstrapFormsItemCheckboxComponent,\n NgsFormsBootstrapRadioInputComponent,\n NgsFormsBootstrapFormItemSelectInputComponent\n} from './form-components';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NgsFormsCoreModule],\n})\nexport class NgsFormsBootstrapModule {\n static registerAllBootStrapComponents(registryService: NgsFormsComponentRegistryService) {\n NgsFormsCoreModule.registerCoreNgsFormComponents(registryService);\n registryService.register(NgsFormsBootstrapFormsItemCheckboxComponent.key, NgsFormsBootstrapFormsItemCheckboxComponent);\n registryService.register(NgsFormsBootstrapFormItemInputComponent.key, NgsFormsBootstrapFormItemInputComponent);\n registryService.register(NgsFormsBootstrapRadioInputComponent.key, NgsFormsBootstrapRadioInputComponent);\n registryService.register(NgsFormsBootstrapFormItemSelectInputComponent.key, NgsFormsBootstrapFormItemSelectInputComponent);\n registryService.register(NgsFormsBootstrapFormsItemTextAreaComponent.key, NgsFormsBootstrapFormsItemTextAreaComponent);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-simplicity-forms-bootstrap.mjs","sources":["../../../../libs/forms-bootstrap/src/lib/form-components/checkbox/checkbox.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/checkbox/checkbox.component.html","../../../../libs/forms-bootstrap/src/lib/form-components/input/input-component.resources.ts","../../../../libs/forms-bootstrap/src/lib/form-components/input/input.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/input/input.component.html","../../../../libs/forms-bootstrap/src/lib/form-components/radio/radio.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/radio/radio.component.html","../../../../libs/forms-bootstrap/src/lib/form-components/select/select.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/select/select.component.html","../../../../libs/forms-bootstrap/src/lib/form-components/text-area/text-area.component.ts","../../../../libs/forms-bootstrap/src/lib/form-components/text-area/text-area.component.html","../../../../libs/forms-bootstrap/src/lib/forms-bootstrap.module.ts","../../../../libs/forms-bootstrap/src/ng-simplicity-forms-bootstrap.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { NgsFormsBaseClassFormInputComponent, NgsFormsFormItem, NgsFormsFormItemConfigBaseInput } from '@ng-simplicity/forms-core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgsFormsFormItemConfigBootstrapCheckbox } from './checkbox.config';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'ngs-form-item-bs-checkbox',\n imports: [ReactiveFormsModule],\n templateUrl: './checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapFormsItemCheckboxComponent extends NgsFormsBaseClassFormInputComponent<NgsFormsFormItemConfigBootstrapCheckbox> {\n static override key = 'checkbox';\n checkboxConfig = this.config as NgsFormsFormItemConfigBootstrapCheckbox;\n\n static create(\n config: NgsFormsFormItemConfigBootstrapCheckbox\n ): NgsFormsFormItem<NgsFormsFormItemConfigBootstrapCheckbox> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapFormsItemCheckboxComponent.key,\n config,\n };\n }\n}\n","@if (control) {\n <div class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n class=\"form-check-input\" \n id=\"{{id}}\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n type=\"checkbox\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\" for=\"{{id}}\">\n {{ checkboxConfig.label }}\n </label>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n}\n\n","import { NgsFormsFormItemConfigBootstrapTextInput } from './input.config';\n\nexport const NgsFormBootstrapInputComponentResources: INgsFormBoostrapInputComponentResources = {\n defaults: {\n type: 'text',\n labelLocation: 'top',\n },\n};\n\nexport interface INgsFormBoostrapInputComponentResources {\n defaults: Partial<NgsFormsFormItemConfigBootstrapTextInput>;\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { NgsFormsBaseClassFormInputComponent, NgsFormsFormItem, ngsDefaults } from '@ng-simplicity/forms-core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgsFormBootstrapInputComponentResources } from './input-component.resources';\nimport { NgsFormsFormItemConfigBootstrapTextInput } from './input.config';\nimport { v4 } from 'uuid';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'ngs-forms-bs-input',\n imports: [ReactiveFormsModule, NgIf],\n templateUrl: './input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapFormItemInputComponent extends NgsFormsBaseClassFormInputComponent<NgsFormsFormItemConfigBootstrapTextInput> {\n static override key = 'input-text';\n textConfig: NgsFormsFormItemConfigBootstrapTextInput = ngsDefaults(this.config as NgsFormsFormItemConfigBootstrapTextInput, NgsFormBootstrapInputComponentResources.defaults);\n constructor() {\n super();\n }\n\n static create(config: NgsFormsFormItemConfigBootstrapTextInput): NgsFormsFormItem<NgsFormsFormItemConfigBootstrapTextInput> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapFormItemInputComponent.key,\n config,\n };\n }\n}\n","@if (!!control) {\n @if (textConfig.labelLocation === 'top') {\n <div class=\"mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textConfig.label }}</label>\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n class=\"form-control\"\n id=\"{{id}}-top\" \n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textConfig.placeholder}}\" \n type=\"{{textConfig.type}}\" />\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n }\n @if (textConfig.labelLocation === 'left') {\n <div class=\"row mb-2\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textConfig.label }}</label>\n <div class=\"col-sm-10\">\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n class=\"form-control\"\n id=\"{{id}}-left\" \n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textConfig.placeholder}}\" \n type=\"{{textConfig.type}}\" />\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n </div>\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { NgsFormsBaseClassFormItemInputWithOptionsComponent, NgsFormsFormItem } from '@ng-simplicity/forms-core';\nimport { NgsFormsFormsItemConfigBoostrapRadio } from './radio.config';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'ngs-forms-bootstrap-radio-group-input',\n imports: [ReactiveFormsModule],\n templateUrl: './radio.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapRadioInputComponent extends NgsFormsBaseClassFormItemInputWithOptionsComponent<NgsFormsFormsItemConfigBoostrapRadio> {\n static override key = 'radio';\n radioConfig = this.config as NgsFormsFormsItemConfigBoostrapRadio;\n\n static create(\n config: NgsFormsFormsItemConfigBoostrapRadio\n ): NgsFormsFormItem<NgsFormsFormsItemConfigBoostrapRadio> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapRadioInputComponent.key,\n config,\n };\n }\n}\n","@if (control) {\n <div role=\"radiogroup\"\n [attr.aria-labelledby]=\"radioConfig.label ? id + '-label' : null\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n class=\"mb-3\">\n <div [class.d-flex]=\"radioConfig.alignment==='horizontal'\">\n @if (!!radioConfig.label) {\n <div [class.text-danger]=\"!!errorMessage\" class=\"form-label me-2 pt-0\" id=\"{{id}}-label\">\n {{ radioConfig.label }}\n </div>\n }\n @for (option of options(); track option.id) {\n <div [class.form-check-inline]=\"radioConfig.alignment==='horizontal'\"\n [class.me-2]=\"radioConfig.alignment==='horizontal'\"\n class=\"form-check\">\n <input [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\" \n value=\"{{option.id}}\" \n class=\"form-check-input\"\n id=\"{{id}}{{option.id}}\" \n type=\"radio\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-check-label\"\n for=\"{{id}}{{option.id}}\">{{ option.label }}</label>\n </div>\n }\n </div>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n}\n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { NgsFormsFormItemConfigBootstrapSelectInput } from './select.config';\n\nimport { NgsFormsBaseClassFormItemInputWithOptionsComponent, NgsFormsFormItem } from '@ng-simplicity/forms-core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'ngs-forms-bootstrap-select-input',\n imports: [ReactiveFormsModule],\n templateUrl: './select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapFormItemSelectInputComponent extends NgsFormsBaseClassFormItemInputWithOptionsComponent<NgsFormsFormItemConfigBootstrapSelectInput> {\n static override key = 'select';\n selectConfig = this.config as NgsFormsFormItemConfigBootstrapSelectInput;\n\n static create(\n config: NgsFormsFormItemConfigBootstrapSelectInput\n ): NgsFormsFormItem<NgsFormsFormItemConfigBootstrapSelectInput> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapFormItemSelectInputComponent.key,\n config,\n };\n }\n}\n","@if (control) {\n @if (selectConfig.labelLocation === 'top') {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ selectConfig.label }}</label>\n <select [attr.aria-label]=\"selectConfig.label\" \n [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\"\n class=\"form-select\"\n id=\"{{id}}-top\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}</option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n } @else {\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ selectConfig.label }}</label>\n <div class=\"col-sm-10\">\n <select [attr.aria-label]=\"selectConfig.label\" \n [class.border-danger]=\"!!errorMessage\" \n [formControl]=\"control\"\n class=\"form-select\"\n id=\"{{id}}-left\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\">\n @if (selectConfig.placeholder) {\n <option [disabled]=\"true\" [value]=\"selectConfig.placeHolderValue || ''\">{{ selectConfig.placeholder }}</option>\n }\n @for (option of options(); track option.id) {\n <option [disabled]=\"option.disabled\" [value]=\"option.id\">\n {{ option.label }}\n </option>\n }\n </select>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n </div>\n }\n}\n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgsFormsBaseClassFormInputComponent, NgsFormsFormItem } from '@ng-simplicity/forms-core';\nimport { NgsFormsFormItemConfigBootstrapTextArea } from './text-area.config';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'ngs-form-item-bs-text-area',\n imports: [CommonModule, ReactiveFormsModule],\n templateUrl: './text-area.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgsFormsBootstrapFormsItemTextAreaComponent extends NgsFormsBaseClassFormInputComponent<NgsFormsFormItemConfigBootstrapTextArea> {\n static override key = 'input-textarea';\n textAreaConfig = this.config as NgsFormsFormItemConfigBootstrapTextArea;\n\n static create(config: NgsFormsFormItemConfigBootstrapTextArea): NgsFormsFormItem<NgsFormsFormItemConfigBootstrapTextArea> {\n return {\n uuid: v4(),\n type: NgsFormsBootstrapFormsItemTextAreaComponent.key,\n config,\n };\n }\n}\n","@if (control) {\n @if (textAreaConfig.labelLocation === 'top' || !textAreaConfig.labelLocation) {\n <div class=\"mb-3\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"form-label\" for=\"{{id}}-top\">{{ textAreaConfig.label }}</label>\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-top\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n } @else {\n @if (textAreaConfig.labelLocation === 'left') {\n <div class=\"mb-3 row\">\n <label [class.text-danger]=\"!!errorMessage\" class=\"col-sm-2 col-form-label\"\n for=\"{{id}}-left\">{{ textAreaConfig.label }}</label>\n <div class=\"col-sm-10\">\n <textarea [class.border-danger]=\"!!errorMessage\"\n [formControl]=\"control\"\n class=\"form-control {{textAreaConfig.inputCssClass}}\"\n id=\"{{id}}-left\"\n [attr.aria-describedby]=\"errorMessage ? id + '-error' : null\"\n placeholder=\"{{textAreaConfig.placeholder}}\"\n style=\"height: 210px\"></textarea>\n @if (errorMessage) {\n <div class=\"text-danger mt-1\" id=\"{{id}}-error\" style=\"font-size: 0.875rem;\">\n {{ errorMessage }}\n </div>\n }\n </div>\n </div>\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgsFormsComponentRegistryService, NgsFormsCoreModule } from '@ng-simplicity/forms-core';\nimport {\n NgsFormsBootstrapFormItemInputComponent,\n NgsFormsBootstrapFormsItemTextAreaComponent,\n NgsFormsBootstrapFormsItemCheckboxComponent,\n NgsFormsBootstrapRadioInputComponent,\n NgsFormsBootstrapFormItemSelectInputComponent\n} from './form-components';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NgsFormsCoreModule],\n})\nexport class NgsFormsBootstrapModule {\n static registerAllBootStrapComponents(registryService: NgsFormsComponentRegistryService) {\n NgsFormsCoreModule.registerCoreNgsFormComponents(registryService);\n registryService.register(NgsFormsBootstrapFormsItemCheckboxComponent.key, NgsFormsBootstrapFormsItemCheckboxComponent);\n registryService.register(NgsFormsBootstrapFormItemInputComponent.key, NgsFormsBootstrapFormItemInputComponent);\n registryService.register(NgsFormsBootstrapRadioInputComponent.key, NgsFormsBootstrapRadioInputComponent);\n registryService.register(NgsFormsBootstrapFormItemSelectInputComponent.key, NgsFormsBootstrapFormItemSelectInputComponent);\n registryService.register(NgsFormsBootstrapFormsItemTextAreaComponent.key, NgsFormsBootstrapFormsItemTextAreaComponent);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;AAYM,MAAO,2CAA4C,SAAQ,mCAA4E,CAAA;AAC3I,IAAA,OAAgB,GAAG,GAAG,UAAU;AAChC,IAAA,cAAc,GAAG,IAAI,CAAC,MAAiD;IAEvE,OAAO,MAAM,CACX,MAA+C,EAAA;QAE/C,OAAO;YACL,IAAI,EAAE,EAAE,EAAE;YACV,IAAI,EAAE,2CAA2C,CAAC,GAAG;YACrD,MAAM;SACP;IACH;wGAZW,2CAA2C,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3C,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZxD,8nBAmBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDXY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIlB,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBANvD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,WAC5B,CAAC,mBAAmB,CAAC,EAAA,eAAA,EAEb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8nBAAA,EAAA;;;AER1C,MAAM,uCAAuC,GAA4C;AAC9F,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,aAAa,EAAE,KAAK;AACrB,KAAA;CACF;;ACOK,MAAO,uCAAwC,SAAQ,mCAA6E,CAAA;AACxI,IAAA,OAAgB,GAAG,GAAG,YAAY;IAClC,UAAU,GAA6C,WAAW,CAAC,IAAI,CAAC,MAAkD,EAAE,uCAAuC,CAAC,QAAQ,CAAC;AAC7K,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;IAEA,OAAO,MAAM,CAAC,MAAgD,EAAA;QAC5D,OAAO;YACL,IAAI,EAAE,EAAE,EAAE;YACV,IAAI,EAAE,uCAAuC,CAAC,GAAG;YACjD,MAAM;SACP;IACH;wGAbW,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvC,uCAAuC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdpD,qkDAuCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7BY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIlB,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBANnD,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAA,eAAA,EAEnB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qkDAAA,EAAA;;;AEA3C,MAAO,oCAAqC,SAAQ,kDAAwF,CAAA;AAChJ,IAAA,OAAgB,GAAG,GAAG,OAAO;AAC7B,IAAA,WAAW,GAAG,IAAI,CAAC,MAA8C;IAEjE,OAAO,MAAM,CACX,MAA4C,EAAA;QAE5C,OAAO;YACL,IAAI,EAAE,EAAE,EAAE;YACV,IAAI,EAAE,oCAAoC,CAAC,GAAG;YAC9C,MAAM;SACP;IACH;wGAZW,oCAAoC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZjD,41CAkCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1BY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIlB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,WACxC,CAAC,mBAAmB,CAAC,EAAA,eAAA,EAEb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,41CAAA,EAAA;;;AEG3C,MAAO,6CAA8C,SAAQ,kDAA8F,CAAA;AAC/J,IAAA,OAAgB,GAAG,GAAG,QAAQ;AAC9B,IAAA,YAAY,GAAG,IAAI,CAAC,MAAoD;IAExE,OAAO,MAAM,CACX,MAAkD,EAAA;QAElD,OAAO;YACL,IAAI,EAAE,EAAE,EAAE;YACV,IAAI,EAAE,6CAA6C,CAAC,GAAG;YACvD,MAAM;SACP;IACH;wGAZW,6CAA6C,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA7C,6CAA6C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb1D,suEAuDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9CY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIlB,6CAA6C,EAAA,UAAA,EAAA,CAAA;kBANzD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,WACnC,CAAC,mBAAmB,CAAC,EAAA,eAAA,EAEb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,suEAAA,EAAA;;;AEE3C,MAAO,2CAA4C,SAAQ,mCAA4E,CAAA;AAC3I,IAAA,OAAgB,GAAG,GAAG,gBAAgB;AACtC,IAAA,cAAc,GAAG,IAAI,CAAC,MAAiD;IAEvE,OAAO,MAAM,CAAC,MAA+C,EAAA;QAC3D,OAAO;YACL,IAAI,EAAE,EAAE,EAAE;YACV,IAAI,EAAE,2CAA2C,CAAC,GAAG;YACrD,MAAM;SACP;IACH;wGAVW,2CAA2C,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbxD,6xDAwCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/BY,YAAY,8BAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIhC,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBANvD,SAAS;+BACE,4BAA4B,EAAA,OAAA,EAC7B,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAA,eAAA,EAE3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6xDAAA,EAAA;;;MEIpC,uBAAuB,CAAA;IAClC,OAAO,8BAA8B,CAAC,eAAiD,EAAA;AACrF,QAAA,kBAAkB,CAAC,6BAA6B,CAAC,eAAe,CAAC;QACjE,eAAe,CAAC,QAAQ,CAAC,2CAA2C,CAAC,GAAG,EAAE,2CAA2C,CAAC;QACtH,eAAe,CAAC,QAAQ,CAAC,uCAAuC,CAAC,GAAG,EAAE,uCAAuC,CAAC;QAC9G,eAAe,CAAC,QAAQ,CAAC,oCAAoC,CAAC,GAAG,EAAE,oCAAoC,CAAC;QACxG,eAAe,CAAC,QAAQ,CAAC,6CAA6C,CAAC,GAAG,EAAE,6CAA6C,CAAC;QAC1H,eAAe,CAAC,QAAQ,CAAC,2CAA2C,CAAC,GAAG,EAAE,2CAA2C,CAAC;IACxH;wGARW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAFxB,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,CAAA,EAAA,CAAA;AAEjE,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAFxB,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,CAAA,EAAA,CAAA;;4FAEjE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,CAAC;AAC9E,iBAAA;;;ACdD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-simplicity/forms-bootstrap",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",