quang 19.3.16-0 → 19.3.16-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.
@@ -38,7 +38,7 @@ class QuangRadioGroupComponent extends QuangBaseComponent {
38
38
  useExisting: forwardRef(() => QuangRadioGroupComponent),
39
39
  multi: true,
40
40
  },
41
- ], usesInheritance: true, ngImport: i0, template: "<fieldset class=\"mb-3\">\n @if (componentLabel()) {\n <legend\n [id]=\"componentId() + '-label'\"\n class=\"form-label w-100\"\n >\n {{ componentLabel() | transloco }}\n <span [hidden]=\"!_isRequired()\">*</span>\n </legend>\n }\n\n <div\n [attr.aria-labelledby]=\"componentLabel() ? componentId() + '-label' : null\"\n [attr.role]=\"'radiogroup'\"\n >\n @for (option of radioOptions(); track option.value ?? $index; let index = $index) {\n <div\n [class.form-check-reverse]=\"radioPosition() === 'right'\"\n class=\"form-check text-start\"\n >\n <input\n [attr.name]=\"_radioName()\"\n [attr.required]=\"getIsRequiredControl()\"\n [checked]=\"_value() === option.value\"\n [class.is-invalid]=\"_showErrors()\"\n [class.is-valid]=\"_showSuccess()\"\n [disabled]=\"isOptionDisabled(option)\"\n [id]=\"getOptionId(index)\"\n [ngClass]=\"componentClass()\"\n [tabIndex]=\"componentTabIndex()\"\n [value]=\"option.value ?? ''\"\n (blur)=\"onBlurHandler()\"\n (change)=\"onSelectOption(option)\"\n class=\"form-check-input\"\n type=\"radio\"\n />\n\n <label\n [htmlFor]=\"getOptionId(index)\"\n [ngClass]=\"{ 'cursor-pointer': !isOptionDisabled(option) }\"\n class=\"form-check-label\"\n >\n @if (!option.renderer) {\n {{ getOptionLabel(option) | transloco }}\n }\n <ng-container\n [ngTemplateOutlet]=\"option.renderer ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: _value() === option.value, index: index }\"\n ></ng-container>\n </label>\n </div>\n }\n </div>\n\n <div\n [class.d-block]=\"_showSuccess()\"\n class=\"valid-feedback\"\n >\n {{ successMessage() | transloco }}\n </div>\n <div\n [class.d-block]=\"_showErrors()\"\n class=\"invalid-feedback\"\n >\n {{ _currentErrorMessage() | transloco: _currentErrorMessageExtraData() }}\n </div>\n\n @if (helpMessage()) {\n <small\n [hidden]=\"_showSuccess() || _showErrors()\"\n aria-live=\"assertive\"\n class=\"form-text text-muted\"\n >\n {{ helpMessage() | transloco }}\n </small>\n }\n</fieldset>\n", styles: [""], dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
41
+ ], usesInheritance: true, ngImport: i0, template: "<fieldset class=\"mb-3\">\n @if (componentLabel()) {\n <legend\n [id]=\"componentId() + '-label'\"\n class=\"form-label w-100\"\n >\n {{ componentLabel() | transloco }}\n <span [hidden]=\"!_isRequired()\">*</span>\n </legend>\n }\n\n <div\n [attr.aria-labelledby]=\"componentLabel() ? componentId() + '-label' : null\"\n [attr.role]=\"'radiogroup'\"\n >\n @for (option of radioOptions(); track option.value ?? $index; let index = $index) {\n <div\n [class.form-check-reverse]=\"radioPosition() === 'right'\"\n class=\"form-check text-start\"\n >\n <input\n [attr.name]=\"_radioName()\"\n [attr.required]=\"getIsRequiredControl()\"\n [checked]=\"_value() === option.value\"\n [class.is-invalid]=\"_showErrors()\"\n [class.is-valid]=\"_showSuccess()\"\n [disabled]=\"isOptionDisabled(option)\"\n [id]=\"getOptionId(index)\"\n [ngClass]=\"componentClass()\"\n [tabIndex]=\"componentTabIndex()\"\n [value]=\"option.value ?? ''\"\n (blur)=\"onBlurHandler()\"\n (change)=\"onSelectOption(option)\"\n class=\"form-check-input\"\n type=\"radio\"\n />\n\n <label\n [htmlFor]=\"getOptionId(index)\"\n [ngClass]=\"{ 'cursor-pointer': !isOptionDisabled(option) }\"\n class=\"form-check-label\"\n >\n @if (!option.renderer) {\n {{ getOptionLabel(option) | transloco }}\n }\n <ng-container\n [ngTemplateOutlet]=\"option.renderer ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: _value() === option.value, index: index }\"\n ></ng-container>\n </label>\n </div>\n }\n </div>\n\n <div\n [class.d-block]=\"_showSuccess()\"\n class=\"valid-feedback\"\n >\n {{ successMessage() | transloco }}\n </div>\n <div\n [class.d-block]=\"_showErrors()\"\n class=\"invalid-feedback\"\n >\n {{ _currentErrorMessage() | transloco: _currentErrorMessageExtraData() }}\n </div>\n\n @if (helpMessage()) {\n <small\n [hidden]=\"_showSuccess() || _showErrors()\"\n aria-live=\"assertive\"\n class=\"form-text text-muted\"\n >\n {{ helpMessage() | transloco }}\n </small>\n }\n</fieldset>\n", styles: ["legend.form-label{font-size:var(--bs-body-font-size)}\n"], dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
42
  }
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QuangRadioGroupComponent, decorators: [{
44
44
  type: Component,
@@ -48,7 +48,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
48
48
  useExisting: forwardRef(() => QuangRadioGroupComponent),
49
49
  multi: true,
50
50
  },
51
- ], imports: [TranslocoPipe, NgClass, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<fieldset class=\"mb-3\">\n @if (componentLabel()) {\n <legend\n [id]=\"componentId() + '-label'\"\n class=\"form-label w-100\"\n >\n {{ componentLabel() | transloco }}\n <span [hidden]=\"!_isRequired()\">*</span>\n </legend>\n }\n\n <div\n [attr.aria-labelledby]=\"componentLabel() ? componentId() + '-label' : null\"\n [attr.role]=\"'radiogroup'\"\n >\n @for (option of radioOptions(); track option.value ?? $index; let index = $index) {\n <div\n [class.form-check-reverse]=\"radioPosition() === 'right'\"\n class=\"form-check text-start\"\n >\n <input\n [attr.name]=\"_radioName()\"\n [attr.required]=\"getIsRequiredControl()\"\n [checked]=\"_value() === option.value\"\n [class.is-invalid]=\"_showErrors()\"\n [class.is-valid]=\"_showSuccess()\"\n [disabled]=\"isOptionDisabled(option)\"\n [id]=\"getOptionId(index)\"\n [ngClass]=\"componentClass()\"\n [tabIndex]=\"componentTabIndex()\"\n [value]=\"option.value ?? ''\"\n (blur)=\"onBlurHandler()\"\n (change)=\"onSelectOption(option)\"\n class=\"form-check-input\"\n type=\"radio\"\n />\n\n <label\n [htmlFor]=\"getOptionId(index)\"\n [ngClass]=\"{ 'cursor-pointer': !isOptionDisabled(option) }\"\n class=\"form-check-label\"\n >\n @if (!option.renderer) {\n {{ getOptionLabel(option) | transloco }}\n }\n <ng-container\n [ngTemplateOutlet]=\"option.renderer ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: _value() === option.value, index: index }\"\n ></ng-container>\n </label>\n </div>\n }\n </div>\n\n <div\n [class.d-block]=\"_showSuccess()\"\n class=\"valid-feedback\"\n >\n {{ successMessage() | transloco }}\n </div>\n <div\n [class.d-block]=\"_showErrors()\"\n class=\"invalid-feedback\"\n >\n {{ _currentErrorMessage() | transloco: _currentErrorMessageExtraData() }}\n </div>\n\n @if (helpMessage()) {\n <small\n [hidden]=\"_showSuccess() || _showErrors()\"\n aria-live=\"assertive\"\n class=\"form-text text-muted\"\n >\n {{ helpMessage() | transloco }}\n </small>\n }\n</fieldset>\n" }]
51
+ ], imports: [TranslocoPipe, NgClass, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<fieldset class=\"mb-3\">\n @if (componentLabel()) {\n <legend\n [id]=\"componentId() + '-label'\"\n class=\"form-label w-100\"\n >\n {{ componentLabel() | transloco }}\n <span [hidden]=\"!_isRequired()\">*</span>\n </legend>\n }\n\n <div\n [attr.aria-labelledby]=\"componentLabel() ? componentId() + '-label' : null\"\n [attr.role]=\"'radiogroup'\"\n >\n @for (option of radioOptions(); track option.value ?? $index; let index = $index) {\n <div\n [class.form-check-reverse]=\"radioPosition() === 'right'\"\n class=\"form-check text-start\"\n >\n <input\n [attr.name]=\"_radioName()\"\n [attr.required]=\"getIsRequiredControl()\"\n [checked]=\"_value() === option.value\"\n [class.is-invalid]=\"_showErrors()\"\n [class.is-valid]=\"_showSuccess()\"\n [disabled]=\"isOptionDisabled(option)\"\n [id]=\"getOptionId(index)\"\n [ngClass]=\"componentClass()\"\n [tabIndex]=\"componentTabIndex()\"\n [value]=\"option.value ?? ''\"\n (blur)=\"onBlurHandler()\"\n (change)=\"onSelectOption(option)\"\n class=\"form-check-input\"\n type=\"radio\"\n />\n\n <label\n [htmlFor]=\"getOptionId(index)\"\n [ngClass]=\"{ 'cursor-pointer': !isOptionDisabled(option) }\"\n class=\"form-check-label\"\n >\n @if (!option.renderer) {\n {{ getOptionLabel(option) | transloco }}\n }\n <ng-container\n [ngTemplateOutlet]=\"option.renderer ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: _value() === option.value, index: index }\"\n ></ng-container>\n </label>\n </div>\n }\n </div>\n\n <div\n [class.d-block]=\"_showSuccess()\"\n class=\"valid-feedback\"\n >\n {{ successMessage() | transloco }}\n </div>\n <div\n [class.d-block]=\"_showErrors()\"\n class=\"invalid-feedback\"\n >\n {{ _currentErrorMessage() | transloco: _currentErrorMessageExtraData() }}\n </div>\n\n @if (helpMessage()) {\n <small\n [hidden]=\"_showSuccess() || _showErrors()\"\n aria-live=\"assertive\"\n class=\"form-text text-muted\"\n >\n {{ helpMessage() | transloco }}\n </small>\n }\n</fieldset>\n", styles: ["legend.form-label{font-size:var(--bs-body-font-size)}\n"] }]
52
52
  }] });
53
53
 
54
54
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"quang-components-radio-group.mjs","sources":["../../../projects/quang/components/radio-group/radio-group.component.ts","../../../projects/quang/components/radio-group/radio-group.component.html","../../../projects/quang/components/radio-group/quang-components-radio-group.ts"],"sourcesContent":["import { NgClass, NgTemplateOutlet } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, TemplateRef, computed, forwardRef, input } from '@angular/core'\nimport { NG_VALUE_ACCESSOR } from '@angular/forms'\n\nimport { TranslocoPipe } from '@jsverse/transloco'\n\nimport { QuangBaseComponent } from 'quang/components/shared'\n\nexport type RadioPosition = 'left' | 'right'\n\nexport interface QuangRadioOptionTemplateContext<T extends string | number | null = string | number | null> {\n $implicit: RadioOption<T>\n selected: boolean\n index: number\n}\n\nexport interface RadioOption<T extends string | number | null = string | number | null> {\n value: T\n label?: string\n disabled?: boolean\n renderer?: TemplateRef<QuangRadioOptionTemplateContext<T>>\n}\n\n@Component({\n selector: 'quang-radio-group',\n templateUrl: './radio-group.component.html',\n styleUrl: './radio-group.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => QuangRadioGroupComponent),\n multi: true,\n },\n ],\n imports: [TranslocoPipe, NgClass, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class QuangRadioGroupComponent extends QuangBaseComponent<string | number | null> {\n radioOptions = input.required<RadioOption[]>()\n\n name = input<string>('')\n\n radioPosition = input<RadioPosition>('left')\n\n _radioName = computed(() => this.name() || this.componentId())\n\n getOptionId(index: number): string {\n return `${this.componentId()}-option-${index}`\n }\n\n isOptionDisabled(option: RadioOption): boolean {\n return this._isDisabled() || this.isReadonly() || !!option.disabled\n }\n\n getOptionLabel(option: RadioOption): string {\n if (option.label !== undefined) return option.label\n if (option.value === null) return ''\n return String(option.value)\n }\n\n onSelectOption(option: RadioOption): void {\n if (this.isOptionDisabled(option)) return\n this.onChangedHandler(option.value)\n }\n}\n","<fieldset class=\"mb-3\">\n @if (componentLabel()) {\n <legend\n [id]=\"componentId() + '-label'\"\n class=\"form-label w-100\"\n >\n {{ componentLabel() | transloco }}\n <span [hidden]=\"!_isRequired()\">*</span>\n </legend>\n }\n\n <div\n [attr.aria-labelledby]=\"componentLabel() ? componentId() + '-label' : null\"\n [attr.role]=\"'radiogroup'\"\n >\n @for (option of radioOptions(); track option.value ?? $index; let index = $index) {\n <div\n [class.form-check-reverse]=\"radioPosition() === 'right'\"\n class=\"form-check text-start\"\n >\n <input\n [attr.name]=\"_radioName()\"\n [attr.required]=\"getIsRequiredControl()\"\n [checked]=\"_value() === option.value\"\n [class.is-invalid]=\"_showErrors()\"\n [class.is-valid]=\"_showSuccess()\"\n [disabled]=\"isOptionDisabled(option)\"\n [id]=\"getOptionId(index)\"\n [ngClass]=\"componentClass()\"\n [tabIndex]=\"componentTabIndex()\"\n [value]=\"option.value ?? ''\"\n (blur)=\"onBlurHandler()\"\n (change)=\"onSelectOption(option)\"\n class=\"form-check-input\"\n type=\"radio\"\n />\n\n <label\n [htmlFor]=\"getOptionId(index)\"\n [ngClass]=\"{ 'cursor-pointer': !isOptionDisabled(option) }\"\n class=\"form-check-label\"\n >\n @if (!option.renderer) {\n {{ getOptionLabel(option) | transloco }}\n }\n <ng-container\n [ngTemplateOutlet]=\"option.renderer ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: _value() === option.value, index: index }\"\n ></ng-container>\n </label>\n </div>\n }\n </div>\n\n <div\n [class.d-block]=\"_showSuccess()\"\n class=\"valid-feedback\"\n >\n {{ successMessage() | transloco }}\n </div>\n <div\n [class.d-block]=\"_showErrors()\"\n class=\"invalid-feedback\"\n >\n {{ _currentErrorMessage() | transloco: _currentErrorMessageExtraData() }}\n </div>\n\n @if (helpMessage()) {\n <small\n [hidden]=\"_showSuccess() || _showErrors()\"\n aria-live=\"assertive\"\n class=\"form-text text-muted\"\n >\n {{ helpMessage() | transloco }}\n </small>\n }\n</fieldset>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quang-components-radio-group.mjs","sources":["../../../projects/quang/components/radio-group/radio-group.component.ts","../../../projects/quang/components/radio-group/radio-group.component.html","../../../projects/quang/components/radio-group/quang-components-radio-group.ts"],"sourcesContent":["import { NgClass, NgTemplateOutlet } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, TemplateRef, computed, forwardRef, input } from '@angular/core'\nimport { NG_VALUE_ACCESSOR } from '@angular/forms'\n\nimport { TranslocoPipe } from '@jsverse/transloco'\n\nimport { QuangBaseComponent } from 'quang/components/shared'\n\nexport type RadioPosition = 'left' | 'right'\n\nexport interface QuangRadioOptionTemplateContext<T extends string | number | null = string | number | null> {\n $implicit: RadioOption<T>\n selected: boolean\n index: number\n}\n\nexport interface RadioOption<T extends string | number | null = string | number | null> {\n value: T\n label?: string\n disabled?: boolean\n renderer?: TemplateRef<QuangRadioOptionTemplateContext<T>>\n}\n\n@Component({\n selector: 'quang-radio-group',\n templateUrl: './radio-group.component.html',\n styleUrl: './radio-group.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => QuangRadioGroupComponent),\n multi: true,\n },\n ],\n imports: [TranslocoPipe, NgClass, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class QuangRadioGroupComponent extends QuangBaseComponent<string | number | null> {\n radioOptions = input.required<RadioOption[]>()\n\n name = input<string>('')\n\n radioPosition = input<RadioPosition>('left')\n\n _radioName = computed(() => this.name() || this.componentId())\n\n getOptionId(index: number): string {\n return `${this.componentId()}-option-${index}`\n }\n\n isOptionDisabled(option: RadioOption): boolean {\n return this._isDisabled() || this.isReadonly() || !!option.disabled\n }\n\n getOptionLabel(option: RadioOption): string {\n if (option.label !== undefined) return option.label\n if (option.value === null) return ''\n return String(option.value)\n }\n\n onSelectOption(option: RadioOption): void {\n if (this.isOptionDisabled(option)) return\n this.onChangedHandler(option.value)\n }\n}\n","<fieldset class=\"mb-3\">\n @if (componentLabel()) {\n <legend\n [id]=\"componentId() + '-label'\"\n class=\"form-label w-100\"\n >\n {{ componentLabel() | transloco }}\n <span [hidden]=\"!_isRequired()\">*</span>\n </legend>\n }\n\n <div\n [attr.aria-labelledby]=\"componentLabel() ? componentId() + '-label' : null\"\n [attr.role]=\"'radiogroup'\"\n >\n @for (option of radioOptions(); track option.value ?? $index; let index = $index) {\n <div\n [class.form-check-reverse]=\"radioPosition() === 'right'\"\n class=\"form-check text-start\"\n >\n <input\n [attr.name]=\"_radioName()\"\n [attr.required]=\"getIsRequiredControl()\"\n [checked]=\"_value() === option.value\"\n [class.is-invalid]=\"_showErrors()\"\n [class.is-valid]=\"_showSuccess()\"\n [disabled]=\"isOptionDisabled(option)\"\n [id]=\"getOptionId(index)\"\n [ngClass]=\"componentClass()\"\n [tabIndex]=\"componentTabIndex()\"\n [value]=\"option.value ?? ''\"\n (blur)=\"onBlurHandler()\"\n (change)=\"onSelectOption(option)\"\n class=\"form-check-input\"\n type=\"radio\"\n />\n\n <label\n [htmlFor]=\"getOptionId(index)\"\n [ngClass]=\"{ 'cursor-pointer': !isOptionDisabled(option) }\"\n class=\"form-check-label\"\n >\n @if (!option.renderer) {\n {{ getOptionLabel(option) | transloco }}\n }\n <ng-container\n [ngTemplateOutlet]=\"option.renderer ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: _value() === option.value, index: index }\"\n ></ng-container>\n </label>\n </div>\n }\n </div>\n\n <div\n [class.d-block]=\"_showSuccess()\"\n class=\"valid-feedback\"\n >\n {{ successMessage() | transloco }}\n </div>\n <div\n [class.d-block]=\"_showErrors()\"\n class=\"invalid-feedback\"\n >\n {{ _currentErrorMessage() | transloco: _currentErrorMessageExtraData() }}\n </div>\n\n @if (helpMessage()) {\n <small\n [hidden]=\"_showSuccess() || _showErrors()\"\n aria-live=\"assertive\"\n class=\"form-text text-muted\"\n >\n {{ helpMessage() | transloco }}\n </small>\n }\n</fieldset>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "quang",
3
3
  "sideEffects": false,
4
- "version": "19.3.16-0",
4
+ "version": "19.3.16-1",
5
5
  "dependencies": {
6
6
  "tslib": "^2.3.0"
7
7
  },
@@ -67,14 +67,6 @@
67
67
  "types": "./auth/index.d.ts",
68
68
  "default": "./fesm2022/quang-auth.mjs"
69
69
  },
70
- "./loader": {
71
- "types": "./loader/index.d.ts",
72
- "default": "./fesm2022/quang-loader.mjs"
73
- },
74
- "./forms": {
75
- "types": "./forms/index.d.ts",
76
- "default": "./fesm2022/quang-forms.mjs"
77
- },
78
70
  "./data-handling": {
79
71
  "types": "./data-handling/index.d.ts",
80
72
  "default": "./fesm2022/quang-data-handling.mjs"
@@ -83,6 +75,14 @@
83
75
  "types": "./device/index.d.ts",
84
76
  "default": "./fesm2022/quang-device.mjs"
85
77
  },
78
+ "./forms": {
79
+ "types": "./forms/index.d.ts",
80
+ "default": "./fesm2022/quang-forms.mjs"
81
+ },
82
+ "./loader": {
83
+ "types": "./loader/index.d.ts",
84
+ "default": "./fesm2022/quang-loader.mjs"
85
+ },
86
86
  "./shared": {
87
87
  "types": "./shared/index.d.ts",
88
88
  "default": "./fesm2022/quang-shared.mjs"
@@ -99,61 +99,61 @@
99
99
  "types": "./components/autocomplete/index.d.ts",
100
100
  "default": "./fesm2022/quang-components-autocomplete.mjs"
101
101
  },
102
- "./components/checkbox": {
103
- "types": "./components/checkbox/index.d.ts",
104
- "default": "./fesm2022/quang-components-checkbox.mjs"
102
+ "./components/date": {
103
+ "types": "./components/date/index.d.ts",
104
+ "default": "./fesm2022/quang-components-date.mjs"
105
105
  },
106
106
  "./components/input": {
107
107
  "types": "./components/input/index.d.ts",
108
108
  "default": "./fesm2022/quang-components-input.mjs"
109
109
  },
110
+ "./components/checkbox": {
111
+ "types": "./components/checkbox/index.d.ts",
112
+ "default": "./fesm2022/quang-components-checkbox.mjs"
113
+ },
114
+ "./components/paginator": {
115
+ "types": "./components/paginator/index.d.ts",
116
+ "default": "./fesm2022/quang-components-paginator.mjs"
117
+ },
118
+ "./components/table": {
119
+ "types": "./components/table/index.d.ts",
120
+ "default": "./fesm2022/quang-components-table.mjs"
121
+ },
110
122
  "./components/radio-group": {
111
123
  "types": "./components/radio-group/index.d.ts",
112
124
  "default": "./fesm2022/quang-components-radio-group.mjs"
113
125
  },
126
+ "./components/shared": {
127
+ "types": "./components/shared/index.d.ts",
128
+ "default": "./fesm2022/quang-components-shared.mjs"
129
+ },
114
130
  "./components/select": {
115
131
  "types": "./components/select/index.d.ts",
116
132
  "default": "./fesm2022/quang-components-select.mjs"
117
133
  },
118
- "./components/date": {
119
- "types": "./components/date/index.d.ts",
120
- "default": "./fesm2022/quang-components-date.mjs"
134
+ "./components/wysiwyg": {
135
+ "types": "./components/wysiwyg/index.d.ts",
136
+ "default": "./fesm2022/quang-components-wysiwyg.mjs"
121
137
  },
122
- "./components/shared": {
123
- "types": "./components/shared/index.d.ts",
124
- "default": "./fesm2022/quang-components-shared.mjs"
138
+ "./overlay/toast": {
139
+ "types": "./overlay/toast/index.d.ts",
140
+ "default": "./fesm2022/quang-overlay-toast.mjs"
125
141
  },
126
- "./components/table": {
127
- "types": "./components/table/index.d.ts",
128
- "default": "./fesm2022/quang-components-table.mjs"
142
+ "./overlay/tooltip": {
143
+ "types": "./overlay/tooltip/index.d.ts",
144
+ "default": "./fesm2022/quang-overlay-tooltip.mjs"
129
145
  },
130
146
  "./overlay/modal": {
131
147
  "types": "./overlay/modal/index.d.ts",
132
148
  "default": "./fesm2022/quang-overlay-modal.mjs"
133
149
  },
134
- "./overlay/popover": {
135
- "types": "./overlay/popover/index.d.ts",
136
- "default": "./fesm2022/quang-overlay-popover.mjs"
137
- },
138
- "./components/paginator": {
139
- "types": "./components/paginator/index.d.ts",
140
- "default": "./fesm2022/quang-components-paginator.mjs"
141
- },
142
- "./components/wysiwyg": {
143
- "types": "./components/wysiwyg/index.d.ts",
144
- "default": "./fesm2022/quang-components-wysiwyg.mjs"
145
- },
146
150
  "./overlay/shared": {
147
151
  "types": "./overlay/shared/index.d.ts",
148
152
  "default": "./fesm2022/quang-overlay-shared.mjs"
149
153
  },
150
- "./overlay/tooltip": {
151
- "types": "./overlay/tooltip/index.d.ts",
152
- "default": "./fesm2022/quang-overlay-tooltip.mjs"
153
- },
154
- "./overlay/toast": {
155
- "types": "./overlay/toast/index.d.ts",
156
- "default": "./fesm2022/quang-overlay-toast.mjs"
154
+ "./overlay/popover": {
155
+ "types": "./overlay/popover/index.d.ts",
156
+ "default": "./fesm2022/quang-overlay-popover.mjs"
157
157
  }
158
158
  }
159
159
  }