@odx/angular 10.1.0 → 10.2.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/CHANGELOG.md +20 -0
- package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +2 -0
- package/cdk/option-control/lib/option-control.d.ts +1 -1
- package/components/icon/lib/helpers/unpack-icon-identifier.d.ts +15 -1
- package/components/icon/lib/icon.component.d.ts +4 -3
- package/components/icon/lib/icon.config.d.ts +3 -2
- package/components/icon/lib/models/icon-set.d.ts +7 -0
- package/components/icon/lib/models/index.d.ts +1 -0
- package/components/timepicker/lib/components/timepicker-option.component.d.ts +4 -0
- package/esm2022/cdk/checkbox-control/lib/checkbox-control.directive.mjs +4 -1
- package/esm2022/cdk/option-control/lib/option-control.mjs +6 -11
- package/esm2022/components/autocomplete/lib/autocomplete.component.mjs +1 -1
- package/esm2022/components/autocomplete/lib/components/option/autocomplete-option.component.mjs +6 -2
- package/esm2022/components/checkbox/lib/checkbox.component.mjs +3 -3
- package/esm2022/components/icon/lib/helpers/unpack-icon-identifier.mjs +20 -3
- package/esm2022/components/icon/lib/icon.component.mjs +6 -5
- package/esm2022/components/icon/lib/icon.config.mjs +3 -2
- package/esm2022/components/icon/lib/models/icon-set.mjs +7 -0
- package/esm2022/components/icon/lib/models/index.mjs +2 -1
- package/esm2022/components/loading-spinner/lib/loading-spinner.directive.mjs +2 -2
- package/esm2022/components/select/lib/components/select-option/select-option.component.mjs +6 -2
- package/esm2022/components/switch/lib/switch.component.mjs +3 -3
- package/esm2022/components/timepicker/lib/components/timepicker-option.component.mjs +7 -1
- package/esm2022/components/timepicker/lib/timepicker.component.mjs +3 -3
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs +3 -0
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-option-control.mjs +5 -10
- package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
- package/fesm2022/odx-angular-components-autocomplete.mjs +4 -1
- package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/odx-angular-components-checkbox.mjs +2 -2
- package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/odx-angular-components-icon.mjs +39 -15
- package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
- package/fesm2022/odx-angular-components-loading-spinner.mjs +1 -1
- package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
- package/fesm2022/odx-angular-components-select.mjs +5 -2
- package/fesm2022/odx-angular-components-select.mjs.map +1 -1
- package/fesm2022/odx-angular-components-switch.mjs +2 -2
- package/fesm2022/odx-angular-components-switch.mjs.map +1 -1
- package/fesm2022/odx-angular-components-timepicker.mjs +8 -2
- package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -76,7 +76,7 @@ let CheckboxComponent = class CheckboxComponent extends CheckBoxControl {
|
|
|
76
76
|
this.checkedChange.next(this.checked);
|
|
77
77
|
}
|
|
78
78
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CheckboxComponent, isStandalone: true, selector: "odx-checkbox", inputs: { indeterminate: ["indeterminate", "indeterminate", booleanAttribute] }, outputs: { indeterminateChange: "indeterminateChange" }, host: { properties: { "class.is-active": "checked || indeterminate" } }, providers: [ReadonlyController.connect()], usesInheritance: true, hostDirectives: [{ directive: i1.WithDisabledState }], ngImport: i0, template: "<label class=\"odx-checkbox__label\">\n <input\n odxControl\n class=\"odx-checkbox__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [indeterminate]=\"indeterminate\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-checkbox__indicator\">\n <odx-icon [name]=\"modifierIcon\" iconSet=\"core\" />\n </div>\n <div class=\"odx-checkbox__content\">\n <div class=\"odx-checkbox__title\">\n <ng-content />\n @if (requiredGetter) {\n <span class=\"odx-checkbox__required\">*</span>\n }\n </div>\n <ng-content select=\".odx-checkbox__subtitle\" />\n </div>\n</label>\n", dependencies: [{ kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: ControlDirective, selector: "[odxControl]", exportAs: ["odxControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
80
80
|
};
|
|
81
81
|
__decorate([
|
|
82
82
|
CSSModifier(),
|
|
@@ -90,7 +90,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
90
90
|
type: Component,
|
|
91
91
|
args: [{ standalone: true, selector: 'odx-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [IconComponent, ControlDirective], providers: [ReadonlyController.connect()], hostDirectives: [WithDisabledState], host: {
|
|
92
92
|
'[class.is-active]': 'checked || indeterminate',
|
|
93
|
-
}, template: "<label class=\"odx-checkbox__label\">\n <input\n odxControl\n class=\"odx-checkbox__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [indeterminate]=\"indeterminate\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-checkbox__indicator\">\n <odx-icon [name]=\"modifierIcon\" iconSet=\"core\" />\n </div>\n <div class=\"odx-checkbox__content\">\n <ng-content />\n <ng-content select=\".odx-checkbox__subtitle\" />\n </div>\n</label>\n" }]
|
|
93
|
+
}, template: "<label class=\"odx-checkbox__label\">\n <input\n odxControl\n class=\"odx-checkbox__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [indeterminate]=\"indeterminate\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-checkbox__indicator\">\n <odx-icon [name]=\"modifierIcon\" iconSet=\"core\" />\n </div>\n <div class=\"odx-checkbox__content\">\n <div class=\"odx-checkbox__title\">\n <ng-content />\n @if (requiredGetter) {\n <span class=\"odx-checkbox__required\">*</span>\n }\n </div>\n <ng-content select=\".odx-checkbox__subtitle\" />\n </div>\n</label>\n" }]
|
|
94
94
|
}], propDecorators: { indeterminate: [{
|
|
95
95
|
type: Input,
|
|
96
96
|
args: [{ transform: booleanAttribute }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-components-checkbox.mjs","sources":["../../../../libs/angular/components/checkbox/src/lib/checkbox.component.ts","../../../../libs/angular/components/checkbox/src/lib/checkbox.component.html","../../../../libs/angular/components/checkbox/src/lib/checkbox.validator.ts","../../../../libs/angular/components/checkbox/src/lib/checkbox.module.ts","../../../../libs/angular/components/checkbox/src/odx-angular-components-checkbox.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ReadonlyController, WithDisabledState } from '@odx/angular';\nimport { CheckBoxControl } from '@odx/angular/cdk/checkbox-control';\nimport { ControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\n\n/**\n * Represents a checkbox component.\n * @extends {CheckBoxControl}\n *\n * @remarks\n * To add subtitle text to the checkbox, use class `odx-checkbox__subtitle` in template's content.\n *\n * @example\n * ```html\n * <odx-checkbox [(checked)]=\"isChecked\">\n * Checkbox label\n * <span class=\"odx-checkbox__subtitle\">Subtitle text</span>\n * </odx-checkbox>\n * ```\n */\n@CSSComponent('checkbox')\n@Component({\n standalone: true,\n selector: 'odx-checkbox',\n templateUrl: 'checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent, ControlDirective],\n providers: [ReadonlyController.connect()],\n hostDirectives: [WithDisabledState],\n host: {\n '[class.is-active]': 'checked || indeterminate',\n },\n})\nexport class CheckboxComponent extends CheckBoxControl {\n private isIndeterminate = false;\n\n /**\n * Gets or sets a value indicating whether the checkbox is in an indeterminate state.\n *\n * @type {boolean}\n *\n * @remarks\n * The indeterminate state is typically used when the checkbox represents a group of checkboxes\n * and not all of them are checked or unchecked.\n */\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public set indeterminate(value: boolean) {\n if (this.isIndeterminate !== value) {\n this.isIndeterminate = value;\n this.indeterminateChange.emit(this.isIndeterminate);\n }\n }\n\n public get indeterminate(): boolean {\n return this.isIndeterminate;\n }\n\n /**\n * Emits a boolean value when the indeterminate state of the checkbox changes.\n *\n * @emits {boolean} The new value of the indeterminate state.\n */\n @Output()\n public readonly indeterminateChange = new EventEmitter<boolean>();\n\n /**\n * Gets the value of the `ariaChecked` attribute.\n *\n * @returns {string} - The value of the `ariaChecked` attribute as a string.\n */\n public override get ariaChecked(): string {\n return this.checked ? 'true' : this.indeterminate ? 'mixed' : 'false';\n }\n\n /**\n * Gets the modifier icon for the checkbox component.\n *\n * @returns {string} 'minus' if the checkbox is in indeterminate state, otherwise returns 'check'.\n */\n public get modifierIcon(): string {\n return this.indeterminate ? 'minus' : 'check';\n }\n\n public override onChanged(event: Event): void {\n event.stopPropagation();\n this.indeterminate = false;\n super.updateValue((event.target as HTMLInputElement).checked);\n this.checkedChange.next(this.checked);\n }\n}\n","<label class=\"odx-checkbox__label\">\n <input\n odxControl\n class=\"odx-checkbox__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [indeterminate]=\"indeterminate\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-checkbox__indicator\">\n <odx-icon [name]=\"modifierIcon\" iconSet=\"core\" />\n </div>\n <div class=\"odx-checkbox__content\">\n <ng-content />\n <ng-content select=\".odx-checkbox__subtitle\" />\n </div>\n</label>\n","import { Directive, forwardRef } from '@angular/core';\nimport { CheckboxRequiredValidator, NG_VALIDATORS } from '@angular/forms';\n\n/**\n * A directive that extends Angular's `CheckboxRequiredValidator` for use with `odx-checkbox` components,\n * enforcing required validation. This directive ensures that an `odx-checkbox` marked as required\n * is checked in order to be considered valid within a form.\n *\n * The directive is automatically applied to `odx-checkbox` elements that have the `required` attribute\n * along with either `formControlName`, `formControl`, or `ngModel` directives, making it integrate seamlessly\n * with both reactive and template-driven forms.\n *\n * @example\n * ```html\n * <!-- In a reactive form -->\n * <odx-checkbox formControlName=\"acceptTerms\" required></odx-checkbox>\n *\n * <!-- In a template-driven form -->\n * <odx-checkbox [(ngModel)]=\"acceptTerms\" name=\"acceptTerms\" required></odx-checkbox>\n * ```\n *\n * By using this directive, forms containing `odx-checkbox` components with the required validation\n * will ensure the checkbox is checked before considering the form valid.\n *\n * @extends {CheckboxRequiredValidator} Inherits the behavior of Angular's `CheckboxRequiredValidator`.\n */\n@Directive({\n standalone: true,\n selector: 'odx-checkbox[required][formControlName], odx-checkbox[required][formControl], odx-checkbox[required][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CheckboxValidator),\n multi: true,\n },\n ],\n})\nexport class CheckboxValidator extends CheckboxRequiredValidator {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CheckboxComponent } from './checkbox.component';\nimport { CheckboxValidator } from './checkbox.validator';\n\nconst modules = [CheckboxComponent, CheckboxValidator];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class CheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odx-angular-components-checkbox.mjs","sources":["../../../../libs/angular/components/checkbox/src/lib/checkbox.component.ts","../../../../libs/angular/components/checkbox/src/lib/checkbox.component.html","../../../../libs/angular/components/checkbox/src/lib/checkbox.validator.ts","../../../../libs/angular/components/checkbox/src/lib/checkbox.module.ts","../../../../libs/angular/components/checkbox/src/odx-angular-components-checkbox.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ReadonlyController, WithDisabledState } from '@odx/angular';\nimport { CheckBoxControl } from '@odx/angular/cdk/checkbox-control';\nimport { ControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\n\n/**\n * Represents a checkbox component.\n * @extends {CheckBoxControl}\n *\n * @remarks\n * To add subtitle text to the checkbox, use class `odx-checkbox__subtitle` in template's content.\n *\n * @example\n * ```html\n * <odx-checkbox [(checked)]=\"isChecked\">\n * Checkbox label\n * <span class=\"odx-checkbox__subtitle\">Subtitle text</span>\n * </odx-checkbox>\n * ```\n */\n@CSSComponent('checkbox')\n@Component({\n standalone: true,\n selector: 'odx-checkbox',\n templateUrl: 'checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent, ControlDirective],\n providers: [ReadonlyController.connect()],\n hostDirectives: [WithDisabledState],\n host: {\n '[class.is-active]': 'checked || indeterminate',\n },\n})\nexport class CheckboxComponent extends CheckBoxControl {\n private isIndeterminate = false;\n\n /**\n * Gets or sets a value indicating whether the checkbox is in an indeterminate state.\n *\n * @type {boolean}\n *\n * @remarks\n * The indeterminate state is typically used when the checkbox represents a group of checkboxes\n * and not all of them are checked or unchecked.\n */\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public set indeterminate(value: boolean) {\n if (this.isIndeterminate !== value) {\n this.isIndeterminate = value;\n this.indeterminateChange.emit(this.isIndeterminate);\n }\n }\n\n public get indeterminate(): boolean {\n return this.isIndeterminate;\n }\n\n /**\n * Emits a boolean value when the indeterminate state of the checkbox changes.\n *\n * @emits {boolean} The new value of the indeterminate state.\n */\n @Output()\n public readonly indeterminateChange = new EventEmitter<boolean>();\n\n /**\n * Gets the value of the `ariaChecked` attribute.\n *\n * @returns {string} - The value of the `ariaChecked` attribute as a string.\n */\n public override get ariaChecked(): string {\n return this.checked ? 'true' : this.indeterminate ? 'mixed' : 'false';\n }\n\n /**\n * Gets the modifier icon for the checkbox component.\n *\n * @returns {string} 'minus' if the checkbox is in indeterminate state, otherwise returns 'check'.\n */\n public get modifierIcon(): string {\n return this.indeterminate ? 'minus' : 'check';\n }\n\n public override onChanged(event: Event): void {\n event.stopPropagation();\n this.indeterminate = false;\n super.updateValue((event.target as HTMLInputElement).checked);\n this.checkedChange.next(this.checked);\n }\n}\n","<label class=\"odx-checkbox__label\">\n <input\n odxControl\n class=\"odx-checkbox__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [indeterminate]=\"indeterminate\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-checkbox__indicator\">\n <odx-icon [name]=\"modifierIcon\" iconSet=\"core\" />\n </div>\n <div class=\"odx-checkbox__content\">\n <div class=\"odx-checkbox__title\">\n <ng-content />\n @if (requiredGetter) {\n <span class=\"odx-checkbox__required\">*</span>\n }\n </div>\n <ng-content select=\".odx-checkbox__subtitle\" />\n </div>\n</label>\n","import { Directive, forwardRef } from '@angular/core';\nimport { CheckboxRequiredValidator, NG_VALIDATORS } from '@angular/forms';\n\n/**\n * A directive that extends Angular's `CheckboxRequiredValidator` for use with `odx-checkbox` components,\n * enforcing required validation. This directive ensures that an `odx-checkbox` marked as required\n * is checked in order to be considered valid within a form.\n *\n * The directive is automatically applied to `odx-checkbox` elements that have the `required` attribute\n * along with either `formControlName`, `formControl`, or `ngModel` directives, making it integrate seamlessly\n * with both reactive and template-driven forms.\n *\n * @example\n * ```html\n * <!-- In a reactive form -->\n * <odx-checkbox formControlName=\"acceptTerms\" required></odx-checkbox>\n *\n * <!-- In a template-driven form -->\n * <odx-checkbox [(ngModel)]=\"acceptTerms\" name=\"acceptTerms\" required></odx-checkbox>\n * ```\n *\n * By using this directive, forms containing `odx-checkbox` components with the required validation\n * will ensure the checkbox is checked before considering the form valid.\n *\n * @extends {CheckboxRequiredValidator} Inherits the behavior of Angular's `CheckboxRequiredValidator`.\n */\n@Directive({\n standalone: true,\n selector: 'odx-checkbox[required][formControlName], odx-checkbox[required][formControl], odx-checkbox[required][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CheckboxValidator),\n multi: true,\n },\n ],\n})\nexport class CheckboxValidator extends CheckboxRequiredValidator {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CheckboxComponent } from './checkbox.component';\nimport { CheckboxValidator } from './checkbox.validator';\n\nconst modules = [CheckboxComponent, CheckboxValidator];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class CheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,21 @@ import { booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy
|
|
|
4
4
|
import { CSSModifier, CSSComponent } from '@odx/angular/internal';
|
|
5
5
|
import { createConfigTokens, injectElement } from '@odx/angular/utils';
|
|
6
6
|
|
|
7
|
+
const IconSet = {
|
|
8
|
+
CORE: 'core',
|
|
9
|
+
MEDICAL: 'medical',
|
|
10
|
+
SAFETY: 'safety',
|
|
11
|
+
UIB_LEGACY: 'uib-legacy',
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const IconSize = {
|
|
15
|
+
SMALL: 'small',
|
|
16
|
+
MEDIUM: 'medium',
|
|
17
|
+
LARGE: 'large',
|
|
18
|
+
XLARGE: 'xlarge',
|
|
19
|
+
INLINE: 'inline',
|
|
20
|
+
};
|
|
21
|
+
|
|
7
22
|
/**
|
|
8
23
|
* Unpacks a combined icon identifier string into separate icon set and icon name components.
|
|
9
24
|
* The identifier is expected to follow the format "iconSet::iconName". If the "iconName" part is
|
|
@@ -21,8 +36,24 @@ import { createConfigTokens, injectElement } from '@odx/angular/utils';
|
|
|
21
36
|
function unpackIconIdentifier(value) {
|
|
22
37
|
const [iconSet, iconName] = value.split('::');
|
|
23
38
|
if (!iconName)
|
|
24
|
-
return [
|
|
25
|
-
|
|
39
|
+
return [IconSet.CORE, iconSet];
|
|
40
|
+
const set = isIconSet(iconSet) ? iconSet : IconSet.CORE;
|
|
41
|
+
return [set, iconName];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Determines if a given string is a valid icon set.
|
|
45
|
+
*
|
|
46
|
+
* @param {string} value The value to check if it is a valid icon set.
|
|
47
|
+
* @returns {boolean} Whether the value is a valid icon set.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* isIconSet('core') // returns true
|
|
52
|
+
* isIconSet('custom') // returns false
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
function isIconSet(value) {
|
|
56
|
+
return Object.values(IconSet).includes(value);
|
|
26
57
|
}
|
|
27
58
|
|
|
28
59
|
/**
|
|
@@ -45,17 +76,9 @@ function unpackIconIdentifier(value) {
|
|
|
45
76
|
* ```
|
|
46
77
|
*/
|
|
47
78
|
const { IconConfig, IconDefaultConfig, injectIconConfig, provideIconConfig } = createConfigTokens('Icon', '@odx/angular/components/icon', {
|
|
48
|
-
defaultIconSet:
|
|
79
|
+
defaultIconSet: IconSet.CORE,
|
|
49
80
|
});
|
|
50
81
|
|
|
51
|
-
const IconSize = {
|
|
52
|
-
SMALL: 'small',
|
|
53
|
-
MEDIUM: 'medium',
|
|
54
|
-
LARGE: 'large',
|
|
55
|
-
XLARGE: 'xlarge',
|
|
56
|
-
INLINE: 'inline',
|
|
57
|
-
};
|
|
58
|
-
|
|
59
82
|
/**
|
|
60
83
|
* Represents an icon component that can dynamically display various icons based on input properties. This component
|
|
61
84
|
* leverages CSS for styling and is designed to be easily embedded within other components and views.
|
|
@@ -90,7 +113,7 @@ let IconComponent = class IconComponent {
|
|
|
90
113
|
/**
|
|
91
114
|
* Specifies the icon set that the icon belongs to. The default set can be injected from the icon configuration.
|
|
92
115
|
*
|
|
93
|
-
* @type {
|
|
116
|
+
* @type {IconSet | null}
|
|
94
117
|
*/
|
|
95
118
|
this.iconSet = injectIconConfig().defaultIconSet;
|
|
96
119
|
}
|
|
@@ -106,7 +129,7 @@ let IconComponent = class IconComponent {
|
|
|
106
129
|
this.iconSet = iconSet;
|
|
107
130
|
}
|
|
108
131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
109
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: IconComponent, isStandalone: true, selector: "odx-icon", inputs: { inline: ["inline", "inline", booleanAttribute], size: "size", name: "name", iconSet: "iconSet", identifier: "identifier" }, host: { attributes: { "translate": "no" }, properties: { "class.notranslate": "true", "attr.data-icon-name": "name", "attr.data-icon-set": "iconSet" } }, ngImport: i0, template: '<span></span>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: IconComponent, isStandalone: true, selector: "odx-icon", inputs: { inline: ["inline", "inline", booleanAttribute], size: "size", name: "name", iconSet: ["iconSet", "iconSet", (value) => (isIconSet(value) ? value : null)], identifier: "identifier" }, host: { attributes: { "translate": "no" }, properties: { "class.notranslate": "true", "attr.data-icon-name": "name", "attr.data-icon-set": "iconSet" } }, ngImport: i0, template: '<span></span>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
110
133
|
};
|
|
111
134
|
__decorate([
|
|
112
135
|
CSSModifier(),
|
|
@@ -142,7 +165,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
142
165
|
}], name: [{
|
|
143
166
|
type: Input
|
|
144
167
|
}], iconSet: [{
|
|
145
|
-
type: Input
|
|
168
|
+
type: Input,
|
|
169
|
+
args: [{ transform: (value) => (isIconSet(value) ? value : null) }]
|
|
146
170
|
}], identifier: [{
|
|
147
171
|
type: Input
|
|
148
172
|
}] } });
|
|
@@ -151,5 +175,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
151
175
|
* Generated bundle index. Do not edit.
|
|
152
176
|
*/
|
|
153
177
|
|
|
154
|
-
export { IconComponent, IconConfig, IconDefaultConfig, IconSize, injectIconConfig, provideIconConfig, unpackIconIdentifier };
|
|
178
|
+
export { IconComponent, IconConfig, IconDefaultConfig, IconSet, IconSize, injectIconConfig, isIconSet, provideIconConfig, unpackIconIdentifier };
|
|
155
179
|
//# sourceMappingURL=odx-angular-components-icon.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-components-icon.mjs","sources":["../../../../libs/angular/components/icon/src/lib/helpers/unpack-icon-identifier.ts","../../../../libs/angular/components/icon/src/lib/icon.config.ts","../../../../libs/angular/components/icon/src/lib/models/icon-size.ts","../../../../libs/angular/components/icon/src/lib/icon.component.ts","../../../../libs/angular/components/icon/src/odx-angular-components-icon.ts"],"sourcesContent":["/**\n * Unpacks a combined icon identifier string into separate icon set and icon name components.\n * The identifier is expected to follow the format \"iconSet::iconName\". If the \"iconName\" part is\n * missing, the function assumes the icon belongs to the 'core' set.\n *\n * @param {string} value The combined identifier string in the format \"iconSet::iconName\".\n * @returns {[iconSet: string, iconName: string]} A tuple containing the icon set and icon name as two separate strings. Defaults to 'core'\n * if the iconName is omitted in the input.\n *\n * @example\n * ```ts\n * unpackIconIdentifier(\"menu\") // returns ['core', 'menu']\n * ```\n */\nexport function unpackIconIdentifier(value: string): [iconSet: string, iconName: string] {\n const [iconSet, iconName] = value.split('::');\n if (!iconName) return ['core', iconSet];\n\n return [iconSet, iconName];\n}\n","import { createConfigTokens } from '@odx/angular/utils';\n\n/**\n * Represents the configuration options for icons in the application, specifying defaults\n * and configurations for the icon components used across the system.\n *\n * @typedef {Object} IconConfig\n * @property {string} defaultIconSet - The default set of icons to use if no specific set is provided.\n */\nexport interface IconConfig {\n defaultIconSet: string;\n}\n\n/**\n * Utility functions generated to handle the injection and provision of the `IconConfig`.\n * These include tokens and functions for accessing and providing icon configurations.\n *\n * - `IconConfig`: A type representing the shape of the icon configuration object.\n * - `IconDefaultConfig`: The default configuration which sets 'core' as the default icon set.\n * - `injectIconConfig`: A function to inject the icon configuration, usable in Angular components or services.\n * - `provideIconConfig`: A function to provide the icon configuration, typically used in Angular module providers.\n *\n * @example\n * ```ts\n * // To inject icon configuration in a component or service\n * const config = injectIconConfig();\n * console.log(config.defaultIconSet); // Outputs: 'core'\n *\n * // To provide icon configuration in a module\n * provideIconConfig({ defaultIconSet: 'custom' });\n * ```\n */\nexport const { IconConfig, IconDefaultConfig, injectIconConfig, provideIconConfig } = createConfigTokens('Icon', '@odx/angular/components/icon', {\n defaultIconSet: 'core',\n} as IconConfig);\n","export type IconSize = (typeof IconSize)[keyof typeof IconSize];\n\nexport const IconSize = {\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n XLARGE: 'xlarge',\n INLINE: 'inline',\n} as const;\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { unpackIconIdentifier } from './helpers';\nimport { injectIconConfig } from './icon.config';\nimport { IconSize } from './models';\n\n/**\n * Represents an icon component that can dynamically display various icons based on input properties. This component\n * leverages CSS for styling and is designed to be easily embedded within other components and views.\n *\n * It allows for specifying icon sets and individual icon names, supporting flexible usage across different contexts\n * and themes. The component is also optimized for performance with Angular's OnPush change detection strategy.\n */\n@CSSComponent('icon')\n@Component({\n selector: 'odx-icon',\n template: '<span></span>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n '[class.notranslate]': 'true',\n '[attr.data-icon-name]': 'name',\n '[attr.data-icon-set]': 'iconSet',\n translate: 'no',\n },\n})\nexport class IconComponent {\n public readonly element = injectElement();\n\n /**\n * Determines whether the icon should be displayed inline with text or other elements.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public inline = false;\n\n /**\n * Specifies the size of the icon, which can be adjusted using predefined sizes from the IconSize enum.\n *\n * @type {IconSize}\n * @default IconSize.MEDIUM\n */\n @CSSModifier()\n @Input()\n public size: IconSize = IconSize.MEDIUM;\n\n /**\n * The name of the icon to be displayed, which corresponds to specific icons within a given icon set.\n *\n * @type {string | null}\n * @default null\n */\n @Input()\n public name: string | null = null;\n\n /**\n * Specifies the icon set that the icon belongs to. The default set can be injected from the icon configuration.\n *\n * @type {string | null}\n */\n @Input()\n public iconSet: string | null = injectIconConfig().defaultIconSet;\n\n /**\n * Allows for setting both the icon set and icon name via a single identifier, typically formatted as 'set::name'.\n * Unpacking this identifier sets both `name` and `iconSet` properties.\n *\n * @param {string | null | undefined} value - The identifier to unpack.\n */\n @Input()\n public set identifier(value: string | null | undefined) {\n const [iconSet, name] = value ? unpackIconIdentifier(value) : [null, null];\n this.name = name;\n this.iconSet = iconSet;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odx-angular-components-icon.mjs","sources":["../../../../libs/angular/components/icon/src/lib/models/icon-set.ts","../../../../libs/angular/components/icon/src/lib/models/icon-size.ts","../../../../libs/angular/components/icon/src/lib/helpers/unpack-icon-identifier.ts","../../../../libs/angular/components/icon/src/lib/icon.config.ts","../../../../libs/angular/components/icon/src/lib/icon.component.ts","../../../../libs/angular/components/icon/src/odx-angular-components-icon.ts"],"sourcesContent":["export type IconSet = (typeof IconSet)[keyof typeof IconSet];\n\nexport const IconSet = {\n CORE: 'core',\n MEDICAL: 'medical',\n SAFETY: 'safety',\n UIB_LEGACY: 'uib-legacy',\n} as const;\n","export type IconSize = (typeof IconSize)[keyof typeof IconSize];\n\nexport const IconSize = {\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n XLARGE: 'xlarge',\n INLINE: 'inline',\n} as const;\n","import { IconSet } from '../models';\n\n/**\n * Unpacks a combined icon identifier string into separate icon set and icon name components.\n * The identifier is expected to follow the format \"iconSet::iconName\". If the \"iconName\" part is\n * missing, the function assumes the icon belongs to the 'core' set.\n *\n * @param {string} value The combined identifier string in the format \"iconSet::iconName\".\n * @returns {[iconSet: string, iconName: string]} A tuple containing the icon set and icon name as two separate strings. Defaults to 'core'\n * if the iconName is omitted in the input.\n *\n * @example\n * ```ts\n * unpackIconIdentifier(\"menu\") // returns ['core', 'menu']\n * ```\n */\nexport function unpackIconIdentifier(value: string): [iconSet: IconSet, iconName: string] {\n const [iconSet, iconName] = value.split('::');\n if (!iconName) return [IconSet.CORE, iconSet];\n const set: IconSet = isIconSet(iconSet) ? iconSet : IconSet.CORE;\n return [set, iconName];\n}\n\n/**\n * Determines if a given string is a valid icon set.\n *\n * @param {string} value The value to check if it is a valid icon set.\n * @returns {boolean} Whether the value is a valid icon set.\n *\n * @example\n * ```ts\n * isIconSet('core') // returns true\n * isIconSet('custom') // returns false\n * ```\n */\nexport function isIconSet(value: string): value is IconSet {\n return Object.values(IconSet).includes(value as IconSet);\n}\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { IconSet } from './models';\n\n/**\n * Represents the configuration options for icons in the application, specifying defaults\n * and configurations for the icon components used across the system.\n *\n * @typedef {Object} IconConfig\n * @property {IconSet} defaultIconSet - The default set of icons to use if no specific set is provided.\n */\nexport interface IconConfig {\n defaultIconSet: IconSet;\n}\n\n/**\n * Utility functions generated to handle the injection and provision of the `IconConfig`.\n * These include tokens and functions for accessing and providing icon configurations.\n *\n * - `IconConfig`: A type representing the shape of the icon configuration object.\n * - `IconDefaultConfig`: The default configuration which sets 'core' as the default icon set.\n * - `injectIconConfig`: A function to inject the icon configuration, usable in Angular components or services.\n * - `provideIconConfig`: A function to provide the icon configuration, typically used in Angular module providers.\n *\n * @example\n * ```ts\n * // To inject icon configuration in a component or service\n * const config = injectIconConfig();\n * console.log(config.defaultIconSet); // Outputs: 'core'\n *\n * // To provide icon configuration in a module\n * provideIconConfig({ defaultIconSet: 'custom' });\n * ```\n */\nexport const { IconConfig, IconDefaultConfig, injectIconConfig, provideIconConfig } = createConfigTokens('Icon', '@odx/angular/components/icon', {\n defaultIconSet: IconSet.CORE,\n} as IconConfig);\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { isIconSet, unpackIconIdentifier } from './helpers';\nimport { injectIconConfig } from './icon.config';\nimport { IconSet, IconSize } from './models';\n\n/**\n * Represents an icon component that can dynamically display various icons based on input properties. This component\n * leverages CSS for styling and is designed to be easily embedded within other components and views.\n *\n * It allows for specifying icon sets and individual icon names, supporting flexible usage across different contexts\n * and themes. The component is also optimized for performance with Angular's OnPush change detection strategy.\n */\n@CSSComponent('icon')\n@Component({\n selector: 'odx-icon',\n template: '<span></span>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n '[class.notranslate]': 'true',\n '[attr.data-icon-name]': 'name',\n '[attr.data-icon-set]': 'iconSet',\n translate: 'no',\n },\n})\nexport class IconComponent {\n public readonly element = injectElement();\n\n /**\n * Determines whether the icon should be displayed inline with text or other elements.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public inline = false;\n\n /**\n * Specifies the size of the icon, which can be adjusted using predefined sizes from the IconSize enum.\n *\n * @type {IconSize}\n * @default IconSize.MEDIUM\n */\n @CSSModifier()\n @Input()\n public size: IconSize = IconSize.MEDIUM;\n\n /**\n * The name of the icon to be displayed, which corresponds to specific icons within a given icon set.\n *\n * @type {string | null}\n * @default null\n */\n @Input()\n public name: string | null = null;\n\n /**\n * Specifies the icon set that the icon belongs to. The default set can be injected from the icon configuration.\n *\n * @type {IconSet | null}\n */\n @Input({ transform: (value: string) => (isIconSet(value) ? value : null) })\n public iconSet: IconSet | null = injectIconConfig().defaultIconSet;\n\n /**\n * Allows for setting both the icon set and icon name via a single identifier, typically formatted as 'set::name'.\n * Unpacking this identifier sets both `name` and `iconSet` properties.\n *\n * @param {string | null | undefined} value - The identifier to unpack.\n */\n @Input()\n public set identifier(value: string | null | undefined) {\n const [iconSet, name] = value ? unpackIconIdentifier(value) : [null, null];\n this.name = name;\n this.iconSet = iconSet;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-components-loading-spinner.mjs","sources":["../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.directive.ts","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.component.ts","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.component.html","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.module.ts","../../../../libs/angular/components/loading-spinner/src/odx-angular-components-loading-spinner.ts"],"sourcesContent":["import { booleanAttribute, Directive, inject, Injector, Input, numberAttribute, Renderer2 } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { DynamicViewRef, DynamicViewService } from '@odx/angular/cdk/dynamic-view';\nimport { deferFn, injectElement, px } from '@odx/angular/utils';\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\n\nconst LOADING_SPINNER_PARENT_CLASS = 'odx-loading-spinner-parent';\n\n/**\n * A directive that controls the display of a loading spinner overlay on the host element.\n * This directive can dynamically create or remove a loading spinner based on the `isLoading` state.\n * It modifies the host element's styles to ensure the spinner is displayed correctly, and optionally,\n * it can set a minimum height to prevent layout shifts.\n */\n@Directive({\n standalone: true,\n selector: '[odxLoadingSpinner]',\n // providers: [DisabledController.connect()],\n})\nexport class LoadingSpinnerDirective {\n // private readonly disabledController = DisabledController.inject();\n // private readonly hasDisabledControllerOnHost = !!inject(DisabledController, { optional: true });\n private readonly dynamicViewService = inject(DynamicViewService);\n private readonly hostElement = injectElement();\n private readonly renderer = inject(Renderer2);\n private readonly injector = inject(Injector);\n private readonly windowRef = inject(WindowRef);\n\n private parentMinHeight?: number;\n private viewRef: DynamicViewRef<typeof LoadingSpinnerComponent> | null = null;\n\n /**\n * Whether the spinner should automatically adjust its color based on the background.\n * Allows the user to specify if the spinner should use automatic color adjustment.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxLoadingSpinnerAutoColor', transform: booleanAttribute })\n public autoColor = false;\n\n /**\n * Controls whether the spinner is visible or not.\n * Manages the loading state, showing or hiding the spinner accordingly.\n *\n * @type {boolean}\n */\n @Input({ alias: 'odxLoadingSpinner', transform: booleanAttribute })\n public set isLoading(value: boolean) {\n // TODO: Find out if something breaks by removing those lines\n // if (!this.hasDisabledControllerOnHost) {\n // this.disabledController?.setDisabledState(value);\n // }\n if (value) {\n this.createSpinner();\n } else {\n this.removeSpinner();\n }\n }\n public get isLoading(): boolean {\n return this.viewRef !== null;\n }\n\n /**\n * Sets the minimum height for the host element when the spinner is active, to avoid layout shifts.\n * Specifies the minimum height for the spinner's parent element.\n *\n * @type {number}\n */\n @Input({ alias: 'odxLoadingSpinnerMinHeight', transform: numberAttribute })\n public set minHeight(value: number) {\n this.parentMinHeight = value;\n this.setParentHeight();\n }\n\n /**\n * Resets styles applied to the parent element when the spinner is removed.\n * Removes the class, minHeight, and position styles.\n */\n public resetParentStyles(): void {\n this.renderer.removeClass(this.hostElement.nativeElement, LOADING_SPINNER_PARENT_CLASS);\n this.renderer.removeStyle(this.hostElement.nativeElement, 'minHeight');\n this.renderer.removeStyle(this.hostElement.nativeElement, 'position');\n }\n\n private setParentHeight(): void {\n this.renderer.setStyle(this.hostElement.nativeElement, 'minHeight', this.parentMinHeight ? px(this.parentMinHeight) : 'inherit');\n }\n\n private createSpinner(): void {\n this.renderer.addClass(this.hostElement.nativeElement, LOADING_SPINNER_PARENT_CLASS);\n this.setParentHeight();\n if (this.hasStaticPosition()) {\n this.renderer.setStyle(this.hostElement.nativeElement, 'position', 'relative');\n }\n this.viewRef = this.dynamicViewService.createView(LoadingSpinnerComponent, {\n injector: this.injector,\n context: { autoColor: this.autoColor },\n host: this.hostElement.nativeElement,\n });\n deferFn(() => (this.hostElement.nativeElement.scrollTop = 0));\n }\n\n private removeSpinner(): void {\n this.viewRef?.destroy();\n this.viewRef = null;\n }\n\n private hasStaticPosition(): boolean {\n return this.windowRef.nativeWindow.getComputedStyle(this.hostElement.nativeElement).position === 'static';\n }\n}\n","import { AnimationEvent, transition, trigger, useAnimation } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { fadeIn, fadeOut } from '@odx/angular/animations';\nimport { CircularProgressComponent } from '@odx/angular/components/circular-progress';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { LoadingSpinnerDirective } from './loading-spinner.directive';\n\nconst BROWSER_TRANSPARENT_COLOR = 'rgba(0, 0, 0, 0)';\n\n/**\n * Represents a loading spinner component.\n */\n@CSSComponent('loading-spinner')\n@Component({\n standalone: true,\n selector: 'odx-loading-spinner',\n templateUrl: './loading-spinner.component.html',\n imports: [CircularProgressComponent],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[@hostAnimation]': 'true',\n '(@hostAnimation.done)': 'animationFinished($event)',\n },\n animations: [trigger('hostAnimation', [transition(':enter', useAnimation(fadeIn())), transition(':leave', useAnimation(fadeOut()))])],\n})\nexport class LoadingSpinnerComponent implements OnInit {\n private readonly host = inject(LoadingSpinnerDirective);\n private readonly windowRef = inject(WindowRef);\n\n protected backgroundColor: string | null = null;\n\n public readonly element = injectElement();\n\n /**\n * Indicates whether the color of the loading spinner should be automatically determined.\n * If set to true, the color will be based on the theme of the parent container.\n * If set to false, the color will be the default color specified in the component's styles.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input()\n public autoColor = false;\n\n public ngOnInit(): void {\n this.backgroundColor = this.resolveBackgroundColor(this.element.nativeElement);\n }\n\n protected animationFinished({ toState }: AnimationEvent): void {\n if (toState === 'void') {\n this.host.resetParentStyles();\n }\n }\n\n private resolveBackgroundColor(element: HTMLElement): string | null {\n const { backgroundColor } = this.windowRef.nativeWindow.getComputedStyle(element);\n if (backgroundColor !== BROWSER_TRANSPARENT_COLOR) {\n return backgroundColor;\n }\n if (element.parentElement) {\n return this.resolveBackgroundColor(element.parentElement);\n }\n return null;\n }\n}\n","<odx-circular-progress size=\"auto\" value=\"-1\"></odx-circular-progress>\n<div class=\"odx-loading-spinner__backdrop\" [style.backgroundColor]=\"backgroundColor\"></div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\nimport { LoadingSpinnerDirective } from './loading-spinner.directive';\n\nconst modules = [LoadingSpinnerComponent, LoadingSpinnerDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class LoadingSpinnerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odx-angular-components-loading-spinner.mjs","sources":["../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.directive.ts","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.component.ts","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.component.html","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.module.ts","../../../../libs/angular/components/loading-spinner/src/odx-angular-components-loading-spinner.ts"],"sourcesContent":["import { booleanAttribute, Directive, inject, Injector, Input, numberAttribute, Renderer2 } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { DynamicViewRef, DynamicViewService } from '@odx/angular/cdk/dynamic-view';\nimport { deferFn, injectElement, px } from '@odx/angular/utils';\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\n\nconst LOADING_SPINNER_PARENT_CLASS = 'odx-loading-spinner-parent';\n\n/**\n * A directive that controls the display of a loading spinner overlay on the host element.\n * This directive can dynamically create or remove a loading spinner based on the `isLoading` state.\n * It modifies the host element's styles to ensure the spinner is displayed correctly, and optionally,\n * it can set a minimum height to prevent layout shifts.\n */\n@Directive({\n standalone: true,\n selector: '[odxLoadingSpinner]',\n // providers: [DisabledController.connect()],\n})\nexport class LoadingSpinnerDirective {\n // private readonly disabledController = DisabledController.inject();\n // private readonly hasDisabledControllerOnHost = !!inject(DisabledController, { optional: true });\n private readonly dynamicViewService = inject(DynamicViewService);\n private readonly hostElement = injectElement();\n private readonly renderer = inject(Renderer2);\n private readonly injector = inject(Injector);\n private readonly windowRef = inject(WindowRef);\n\n private parentMinHeight?: number;\n private viewRef: DynamicViewRef<typeof LoadingSpinnerComponent> | null = null;\n\n /**\n * Whether the spinner should automatically adjust its color based on the background.\n * Allows the user to specify if the spinner should use automatic color adjustment.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxLoadingSpinnerAutoColor', transform: booleanAttribute })\n public autoColor = false;\n\n /**\n * Controls whether the spinner is visible or not.\n * Manages the loading state, showing or hiding the spinner accordingly.\n *\n * @type {boolean}\n */\n @Input({ alias: 'odxLoadingSpinner', transform: booleanAttribute })\n public set isLoading(value: boolean) {\n // TODO: Find out if something breaks by removing those lines\n // if (!this.hasDisabledControllerOnHost) {\n // this.disabledController?.setDisabledState(value);\n // }\n if (value) {\n this.createSpinner();\n } else {\n this.removeSpinner();\n }\n }\n public get isLoading(): boolean {\n return this.viewRef !== null;\n }\n\n /**\n * Sets the minimum height for the host element when the spinner is active, to avoid layout shifts.\n * Specifies the minimum height for the spinner's parent element.\n *\n * @type {number}\n */\n @Input({ alias: 'odxLoadingSpinnerMinHeight', transform: numberAttribute })\n public set minHeight(value: number) {\n this.parentMinHeight = value;\n this.isLoading && this.setParentHeight();\n }\n\n /**\n * Resets styles applied to the parent element when the spinner is removed.\n * Removes the class, minHeight, and position styles.\n */\n public resetParentStyles(): void {\n this.renderer.removeClass(this.hostElement.nativeElement, LOADING_SPINNER_PARENT_CLASS);\n this.renderer.removeStyle(this.hostElement.nativeElement, 'minHeight');\n this.renderer.removeStyle(this.hostElement.nativeElement, 'position');\n }\n\n private setParentHeight(): void {\n this.renderer.setStyle(this.hostElement.nativeElement, 'minHeight', this.parentMinHeight ? px(this.parentMinHeight) : 'inherit');\n }\n\n private createSpinner(): void {\n this.renderer.addClass(this.hostElement.nativeElement, LOADING_SPINNER_PARENT_CLASS);\n this.setParentHeight();\n if (this.hasStaticPosition()) {\n this.renderer.setStyle(this.hostElement.nativeElement, 'position', 'relative');\n }\n this.viewRef = this.dynamicViewService.createView(LoadingSpinnerComponent, {\n injector: this.injector,\n context: { autoColor: this.autoColor },\n host: this.hostElement.nativeElement,\n });\n deferFn(() => (this.hostElement.nativeElement.scrollTop = 0));\n }\n\n private removeSpinner(): void {\n this.viewRef?.destroy();\n this.viewRef = null;\n }\n\n private hasStaticPosition(): boolean {\n return this.windowRef.nativeWindow.getComputedStyle(this.hostElement.nativeElement).position === 'static';\n }\n}\n","import { AnimationEvent, transition, trigger, useAnimation } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { fadeIn, fadeOut } from '@odx/angular/animations';\nimport { CircularProgressComponent } from '@odx/angular/components/circular-progress';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { LoadingSpinnerDirective } from './loading-spinner.directive';\n\nconst BROWSER_TRANSPARENT_COLOR = 'rgba(0, 0, 0, 0)';\n\n/**\n * Represents a loading spinner component.\n */\n@CSSComponent('loading-spinner')\n@Component({\n standalone: true,\n selector: 'odx-loading-spinner',\n templateUrl: './loading-spinner.component.html',\n imports: [CircularProgressComponent],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[@hostAnimation]': 'true',\n '(@hostAnimation.done)': 'animationFinished($event)',\n },\n animations: [trigger('hostAnimation', [transition(':enter', useAnimation(fadeIn())), transition(':leave', useAnimation(fadeOut()))])],\n})\nexport class LoadingSpinnerComponent implements OnInit {\n private readonly host = inject(LoadingSpinnerDirective);\n private readonly windowRef = inject(WindowRef);\n\n protected backgroundColor: string | null = null;\n\n public readonly element = injectElement();\n\n /**\n * Indicates whether the color of the loading spinner should be automatically determined.\n * If set to true, the color will be based on the theme of the parent container.\n * If set to false, the color will be the default color specified in the component's styles.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input()\n public autoColor = false;\n\n public ngOnInit(): void {\n this.backgroundColor = this.resolveBackgroundColor(this.element.nativeElement);\n }\n\n protected animationFinished({ toState }: AnimationEvent): void {\n if (toState === 'void') {\n this.host.resetParentStyles();\n }\n }\n\n private resolveBackgroundColor(element: HTMLElement): string | null {\n const { backgroundColor } = this.windowRef.nativeWindow.getComputedStyle(element);\n if (backgroundColor !== BROWSER_TRANSPARENT_COLOR) {\n return backgroundColor;\n }\n if (element.parentElement) {\n return this.resolveBackgroundColor(element.parentElement);\n }\n return null;\n }\n}\n","<odx-circular-progress size=\"auto\" value=\"-1\"></odx-circular-progress>\n<div class=\"odx-loading-spinner__backdrop\" [style.backgroundColor]=\"backgroundColor\"></div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\nimport { LoadingSpinnerDirective } from './loading-spinner.directive';\n\nconst modules = [LoadingSpinnerComponent, LoadingSpinnerDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class LoadingSpinnerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
|
|
|
7
7
|
import { OptionControl } from '@odx/angular/cdk/option-control';
|
|
8
8
|
import { CheckboxComponent } from '@odx/angular/components/checkbox';
|
|
9
9
|
import { CSSComponent, CSSModifier } from '@odx/angular/internal';
|
|
10
|
+
import { deferFn } from '@odx/angular/utils';
|
|
10
11
|
import * as i1 from '@angular/common';
|
|
11
12
|
import { InputControlDirective } from '@odx/angular/cdk/custom-form-control';
|
|
12
13
|
import { BaseSearchFilterPipe, AutocompleteControl, ODX_SEARCH_FILTER_HOST } from '@odx/angular/cdk/autocomplete-control';
|
|
@@ -15,7 +16,6 @@ import { DropdownDirective } from '@odx/angular/components/dropdown';
|
|
|
15
16
|
import { IconComponent } from '@odx/angular/components/icon';
|
|
16
17
|
import { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';
|
|
17
18
|
import { fromQueryList } from '@odx/angular/rxjs';
|
|
18
|
-
import { deferFn } from '@odx/angular/utils';
|
|
19
19
|
|
|
20
20
|
const SELECT_CONTROL = new InjectionToken('@odx/angular/components/select::SelectComponent');
|
|
21
21
|
|
|
@@ -77,7 +77,10 @@ let SelectOptionComponent = class SelectOptionComponent extends OptionControl {
|
|
|
77
77
|
setActiveStyles() {
|
|
78
78
|
if (this.disabled)
|
|
79
79
|
return;
|
|
80
|
-
|
|
80
|
+
deferFn(() => {
|
|
81
|
+
this.isActive = true;
|
|
82
|
+
this.cdr.markForCheck();
|
|
83
|
+
});
|
|
81
84
|
if (this.selectControl.isOpen) {
|
|
82
85
|
this.selectControl.scrollOptionIntoView(this);
|
|
83
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-components-select.mjs","sources":["../../../../libs/angular/components/select/src/lib/select.tokens.ts","../../../../libs/angular/components/select/src/lib/components/select-option/select-option.component.ts","../../../../libs/angular/components/select/src/lib/components/select-option/select-option.component.html","../../../../libs/angular/components/select/src/lib/directives/select-input-control.directive.ts","../../../../libs/angular/components/select/src/lib/pipes/select-search-filter.pipe.ts","../../../../libs/angular/components/select/src/lib/select.component.ts","../../../../libs/angular/components/select/src/lib/select.component.html","../../../../libs/angular/components/select/src/lib/select.module.ts","../../../../libs/angular/components/select/src/odx-angular-components-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { SelectComponent } from './select.component';\n\nexport const SELECT_CONTROL = new InjectionToken<SelectComponent>('@odx/angular/components/select::SelectComponent');\n","import { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, detectControllerChanges } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { CheckboxComponent } from '@odx/angular/components/checkbox';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { SELECT_CONTROL } from '../../select.tokens';\n\n/**\n * SelectOptionComponent is a customizable option element for use within a SelectComponent.\n * It supports complex data structures, integration with checkbox components for multi-select,\n * and can be disabled as needed.\n * It extends OptionControl to provide additional behavior specific to select components.\n *\n * @template T - The type of the value selected in the option.\n * @see {OptionControl}\n */\n@CSSComponent('select-option')\n@Component({\n standalone: true,\n selector: 'odx-select-option, odx-option',\n imports: [CoreModule, DynamicViewDirective, CheckboxComponent],\n templateUrl: './select-option.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-disabled]': 'disabled || null',\n '[class.is-disabled]': 'disabled',\n },\n})\nexport class SelectOptionComponent<T = unknown> extends OptionControl<T> implements OnInit {\n private _isDisabled = false;\n\n protected readonly selectControl = inject(SELECT_CONTROL);\n\n /**\n * Indicates whether the option is currently selected.\n *\n * @type {boolean}\n */\n public isSelected = false;\n\n /**\n * Indicates whether a not found message should be displayed, used typically for search results.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public notFoundMessage = false;\n\n /**\n * Setter for the disabled state of the select option.\n *\n * @param value - The new value for the disabled state.\n */\n @Input({ transform: booleanAttribute })\n public set disabled(value: boolean) {\n this._isDisabled = value;\n }\n\n /**\n * Getter for the disabled state of the select option.\n *\n * @returns {boolean} The current disabled state of the option.\n */\n public get disabled(): boolean {\n return this._isDisabled;\n }\n\n constructor() {\n super();\n\n detectControllerChanges(this.selectControl)\n .pipe(this.takeUntilDestroyed())\n .subscribe(() => {\n this.isSelected = this.selectControl.isOptionSelected(this);\n });\n }\n\n public ngOnInit(): void {\n this.isSelected = this.selectControl.isOptionSelected(this);\n }\n\n /**\n * Sets active styles for the option when it becomes the target of keyboard navigation or mouse hover.\n */\n public override setActiveStyles(): void {\n if (this.disabled) return;\n\n this.isActive = true;\n\n if (this.selectControl.isOpen) {\n this.selectControl.scrollOptionIntoView(this);\n } else {\n this.selectControl.selectOption(this);\n }\n }\n\n /**\n * Toggles the selection state of the option when it is part of a multi-select control.\n */\n public switchCheckbox(): void {\n if (this.selectControl.multiple) {\n this.isSelected = !this.isSelected;\n this.cdr.markForCheck();\n }\n }\n\n protected selectOption(): void {\n this.selectControl.selectOption(this);\n }\n}\n","<odx-checkbox [checked]=\"isSelected\" [disabled]=\"disabled\" *ngIf=\"selectControl.multiple && !notFoundMessage; else single\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</odx-checkbox>\n\n<ng-template #single>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { InputControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\n\n/**\n * SelectInputControlDirective extends InputControlDirective to provide additional behavior\n * specific to select components with search functionality. This directive manages interactions\n * within the search input field, such as resetting the field content upon specific key events.\n *\n * @see {InputControlDirective}\n */\n@CSSComponent('select__control')\n@Directive({\n standalone: true,\n selector: 'input[odxSelectSearchField]',\n})\nexport class SelectInputControlDirective extends InputControlDirective {\n /**\n * Dynamic content to be displayed when no matching search results are found.\n * This can be specified as HTML content or a string.\n *\n * @type {DynamicContent | null}\n * @default null\n */\n @Input('odxSelectSearchField')\n public notFoundContent: DynamicContent | null = null;\n\n @HostListener('keydown.delete')\n protected handleDelete(): void {\n this.reset();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { BaseSearchFilterPipe } from '@odx/angular/cdk/autocomplete-control';\n/**\n * SelectSearchFilterPipe extends BaseSearchFilterPipe to provide search filtering functionality\n * specifically for select components. It filters options based on the input query, supporting\n * complex filtering logic as defined in the BaseSearchFilterPipe.\n *\n * This pipe is not pure, meaning it updates and reevaluates when inputs change or when\n * impure actions occur in the application.\n *\n * @see {BaseSearchFilterPipe}\n */\n@Pipe({\n pure: false,\n name: 'odxSelectSearchFilter',\n standalone: true,\n})\nexport class SelectSearchFilterPipe extends BaseSearchFilterPipe implements PipeTransform {}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n HostListener,\n inject,\n Input,\n QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IdentityMatcher, ODX_IDENTITY_MATCHER } from '@odx/angular';\nimport { AutocompleteControl, ODX_SEARCH_FILTER_HOST } from '@odx/angular/cdk/autocomplete-control';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { DropdownDirective } from '@odx/angular/components/dropdown';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { fromQueryList } from '@odx/angular/rxjs';\nimport { deferFn } from '@odx/angular/utils';\nimport { SelectOptionComponent } from './components';\nimport { SelectInputControlDirective } from './directives';\nimport { SELECT_CONTROL } from './select.tokens';\n\n/**\n * SelectComponent provides an advanced dropdown list that supports autocomplete, multiple selection,\n * and accessibility features. It extends AutocompleteControl for seamless integration with Angular forms.\n *\n * @template T - The type of the value selected in the select.\n *\n * @see {AutocompleteControl}\n */\n@CSSComponent('select')\n@Component({\n standalone: true,\n selector: 'odx-select',\n imports: [DropdownDirective, IconComponent, DynamicViewDirective, SelectOptionComponent, LoadingSpinnerModule],\n templateUrl: './select.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: SELECT_CONTROL,\n useExisting: forwardRef(() => SelectComponent),\n },\n {\n provide: ODX_SEARCH_FILTER_HOST,\n useExisting: SELECT_CONTROL,\n },\n ],\n host: {\n '[tabindex]': 'searchFieldEnabled || isDisabled ? -1 : 0',\n '[attr.aria-multiselectable]': 'multiple',\n },\n})\nexport class SelectComponent<T = unknown> extends AutocompleteControl<T | null> implements AfterViewInit {\n protected searchFieldEnabled = false;\n protected selectedOption: SelectOptionComponent<T> | null = null;\n protected selectedOptionText: string | null = null;\n\n @ContentChildren(SelectOptionComponent, { descendants: true, emitDistinctChangesOnly: true })\n protected options?: QueryList<SelectOptionComponent<T>>;\n\n /**\n * Directive managing the search input field within the select.\n *\n * @type {SelectInputControlDirective | undefined}\n */\n @ContentChild(SelectInputControlDirective)\n public searchField?: SelectInputControlDirective;\n\n /**\n * Returns the content of the selected option for display. This can be a template or plain text.\n *\n * @type {TemplateRef<{ $implicit: T | null }> | string | null}\n */\n public get selectedOptionContent(): TemplateRef<{ $implicit: T | null }> | string | null {\n return this.selectedOption ? (this.selectedOptionTemplate ?? this.selectedOptionText) : null;\n }\n\n /**\n * Placeholder text for the select input when no option is selected.\n *\n * @type {string}\n * @default ''\n */\n @Input()\n public placeholder = '';\n\n /**\n * Sets whether multiple options can be selected.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public multiple = false;\n\n /**\n * Custom template for displaying the selected option.\n *\n * @type {TemplateRef<{ $implicit: T }> | null}\n * @default null\n */\n @Input()\n public selectedOptionTemplate?: TemplateRef<{ $implicit: T }> | null = null;\n\n /**\n * Function to determine if two options are identical, useful for detecting changes in selection.\n *\n * @type {IdentityMatcher<T | null>}\n * @default ODX_DEFAULT_IDENTITY_MATCHER\n *\n * @example\n * ```ts\n * (item1, item2) => item1.id === item2.id\n * ```\n */\n @Input()\n public identityMatcher: IdentityMatcher<T | null> = inject(ODX_IDENTITY_MATCHER);\n\n public override ngAfterViewInit(): void {\n if (!this.options) return;\n\n this.initKeyManager(this.options);\n this.handleQueryListOption(this.options);\n this.handleSearchFieldChanges();\n }\n\n /**\n * Registers a function to be called when the value of the select changes.\n *\n * @param {Function} fn The function to be called when the value changes.\n * @returns {void}\n */\n public override registerOnChange(fn: (value: T | null) => void): void {\n super.registerOnChange((value) => {\n this.updateSelectedOption();\n fn(value);\n });\n }\n\n /**\n * Selects a given option and updates the component's value accordingly.\n *\n * @param {SelectOptionComponent<T | T[]> | null} option The option to select.\n * @returns {void}\n */\n public selectOption(option?: SelectOptionComponent<T | T[]> | null): void {\n if (option && !option.disabled) {\n this.optionSelected.emit();\n option.switchCheckbox();\n const value = this.multiple ? this.multipleSelectValueResolver(option as SelectOptionComponent<T>) : option.value;\n this.updateValue((value as T) ?? null);\n }\n\n !this.multiple && !option?.disabled && this.closeDropdown();\n }\n\n /**\n * Checks whether a given option is selected.\n *\n * @param {SelectOptionComponent<T | T[]>} option The option to check.\n * @returns {boolean} Whether the option is selected.\n */\n public isOptionSelected(option: SelectOptionComponent<T | T[]>): boolean {\n if (option) {\n if (this.multiple && Array.isArray(this.value)) {\n return (this.value as T[]).some((val) => this.identityMatcher(option.value as T, val));\n }\n return this.identityMatcher(option.value as T, this.value);\n }\n return false;\n }\n\n protected override initKeyManager(options: QueryList<SelectOptionComponent<T>>): void {\n this.keyManager = new ActiveDescendantKeyManager(options).withHomeAndEnd().skipPredicate((item) => item.disabled);\n }\n\n protected handleQueryListOption(options: QueryList<SelectOptionComponent<T>>): void {\n fromQueryList(options)\n .pipe(this.takeUntilDestroyed())\n .subscribe(() => {\n this.updateSelectedOption();\n if (this.isOpen) {\n deferFn(() => this.activateSelectedOption());\n }\n });\n }\n\n protected handleSearchFieldChanges(): void {\n this.searchField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => this.triggerControllerChange());\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown', ['$event'])\n protected handleControllerEvent(event: KeyboardEvent) {\n if (this.isLoading || this.readonlyController?.readonly || !this.isOpen) return;\n if (this.hasOptions) {\n if (event.key === 'Enter' || event.key === 'Tab') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.selectOption(this.keyManager?.activeItem as SelectOptionComponent<T> | undefined);\n return;\n }\n }\n this.keyManager?.onKeydown(event);\n }\n\n protected activateSelectedOption(): void {\n let activeIndex = this.options?.toArray().findIndex((option) => option.isSelected && !option.disabled);\n if (!activeIndex || activeIndex === -1) {\n activeIndex = this.options?.toArray().findIndex((option) => !option.disabled) ?? -1;\n }\n this.keyManager?.setActiveItem(activeIndex);\n }\n\n protected override onDropdownOpen(): void {\n super.onDropdownOpen();\n if (!this.searchFieldEnabled) {\n deferFn(() => this.focusSelectSearchField());\n }\n }\n\n protected override onDropdownClose(): void {\n super.onDropdownClose();\n this.element.nativeElement.blur();\n if (this.searchFieldEnabled) {\n this.searchFieldEnabled = false;\n this.element.nativeElement?.focus();\n }\n }\n\n protected override onDropdownClosed(): void {\n super.onDropdownClosed();\n this.searchField?.reset();\n }\n\n private updateSelectedOption(): void {\n const options = this.options?.toArray();\n this.selectedOption = options?.find((option) => option.isSelected) ?? null;\n\n if (this.multiple) {\n this.options?.forEach((option) => (option.isSelected = this.isOptionSelected(option)));\n this.selectedOptionText =\n options\n ?.filter(({ isSelected }) => isSelected)\n .map((option) => this.stringify?.(option.value) ?? option.getLabel())\n .join(', ') ?? null;\n\n this.changeDetector.detectChanges();\n return;\n }\n this.selectedOptionText = this.selectedOption ? (this.stringify?.(this.selectedOption?.value) ?? this.selectedOption.getLabel()) : null;\n this.changeDetector.detectChanges();\n }\n\n private focusSelectSearchField(): void {\n this.searchFieldEnabled = !!this.searchField;\n deferFn(() => this.searchField?.focus());\n this.changeDetector.detectChanges();\n }\n\n private multipleSelectValueResolver(option: SelectOptionComponent<T>): T {\n let value = Array.isArray(this.value) ? (this.value as T[]) : [];\n if (option.isSelected) {\n (value as T[]).push(option.value as T);\n } else {\n value = value.filter((val) => !this.identityMatcher(option.value as T, val));\n }\n return value as T;\n }\n}\n","<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownAfterOpen)=\"onDropdownOpened()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n>\n @if (!searchFieldEnabled) {\n @if (selectedOptionContent) {\n <div class=\"odx-select__value\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\"></ng-template>\n </div>\n } @else {\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n }\n } @else {\n <ng-content select=\"[odxSelectSearchField]\"></ng-content>\n }\n\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\"></odx-icon>\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n @if (hasOptions) {\n <ng-content></ng-content>\n } @else {\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\"></ng-template>\n </odx-select-option>\n }\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { SelectOptionComponent } from './components';\nimport { SelectInputControlDirective } from './directives';\nimport { SelectSearchFilterPipe } from './pipes';\nimport { SelectComponent } from './select.component';\n\nconst modules = [SelectComponent, SelectInputControlDirective, SelectSearchFilterPipe, SelectOptionComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class SelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odx-angular-components-select.mjs","sources":["../../../../libs/angular/components/select/src/lib/select.tokens.ts","../../../../libs/angular/components/select/src/lib/components/select-option/select-option.component.ts","../../../../libs/angular/components/select/src/lib/components/select-option/select-option.component.html","../../../../libs/angular/components/select/src/lib/directives/select-input-control.directive.ts","../../../../libs/angular/components/select/src/lib/pipes/select-search-filter.pipe.ts","../../../../libs/angular/components/select/src/lib/select.component.ts","../../../../libs/angular/components/select/src/lib/select.component.html","../../../../libs/angular/components/select/src/lib/select.module.ts","../../../../libs/angular/components/select/src/odx-angular-components-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { SelectComponent } from './select.component';\n\nexport const SELECT_CONTROL = new InjectionToken<SelectComponent>('@odx/angular/components/select::SelectComponent');\n","import { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, detectControllerChanges } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { CheckboxComponent } from '@odx/angular/components/checkbox';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { deferFn } from '@odx/angular/utils';\nimport { SELECT_CONTROL } from '../../select.tokens';\n\n/**\n * SelectOptionComponent is a customizable option element for use within a SelectComponent.\n * It supports complex data structures, integration with checkbox components for multi-select,\n * and can be disabled as needed.\n * It extends OptionControl to provide additional behavior specific to select components.\n *\n * @template T - The type of the value selected in the option.\n * @see {OptionControl}\n */\n@CSSComponent('select-option')\n@Component({\n standalone: true,\n selector: 'odx-select-option, odx-option',\n imports: [CoreModule, DynamicViewDirective, CheckboxComponent],\n templateUrl: './select-option.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-disabled]': 'disabled || null',\n '[class.is-disabled]': 'disabled',\n },\n})\nexport class SelectOptionComponent<T = unknown> extends OptionControl<T> implements OnInit {\n private _isDisabled = false;\n\n protected readonly selectControl = inject(SELECT_CONTROL);\n\n /**\n * Indicates whether the option is currently selected.\n *\n * @type {boolean}\n */\n public isSelected = false;\n\n /**\n * Indicates whether a not found message should be displayed, used typically for search results.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public notFoundMessage = false;\n\n /**\n * Setter for the disabled state of the select option.\n *\n * @param value - The new value for the disabled state.\n */\n @Input({ transform: booleanAttribute })\n public set disabled(value: boolean) {\n this._isDisabled = value;\n }\n\n /**\n * Getter for the disabled state of the select option.\n *\n * @returns {boolean} The current disabled state of the option.\n */\n public get disabled(): boolean {\n return this._isDisabled;\n }\n\n constructor() {\n super();\n\n detectControllerChanges(this.selectControl)\n .pipe(this.takeUntilDestroyed())\n .subscribe(() => {\n this.isSelected = this.selectControl.isOptionSelected(this);\n });\n }\n\n public ngOnInit(): void {\n this.isSelected = this.selectControl.isOptionSelected(this);\n }\n\n /**\n * Sets active styles for the option when it becomes the target of keyboard navigation or mouse hover.\n */\n public setActiveStyles(): void {\n if (this.disabled) return;\n\n deferFn(() => {\n this.isActive = true;\n this.cdr.markForCheck();\n });\n\n if (this.selectControl.isOpen) {\n this.selectControl.scrollOptionIntoView(this);\n } else {\n this.selectControl.selectOption(this);\n }\n }\n\n /**\n * Toggles the selection state of the option when it is part of a multi-select control.\n */\n public switchCheckbox(): void {\n if (this.selectControl.multiple) {\n this.isSelected = !this.isSelected;\n this.cdr.markForCheck();\n }\n }\n\n protected selectOption(): void {\n this.selectControl.selectOption(this);\n }\n}\n","<odx-checkbox [checked]=\"isSelected\" [disabled]=\"disabled\" *ngIf=\"selectControl.multiple && !notFoundMessage; else single\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</odx-checkbox>\n\n<ng-template #single>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { InputControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\n\n/**\n * SelectInputControlDirective extends InputControlDirective to provide additional behavior\n * specific to select components with search functionality. This directive manages interactions\n * within the search input field, such as resetting the field content upon specific key events.\n *\n * @see {InputControlDirective}\n */\n@CSSComponent('select__control')\n@Directive({\n standalone: true,\n selector: 'input[odxSelectSearchField]',\n})\nexport class SelectInputControlDirective extends InputControlDirective {\n /**\n * Dynamic content to be displayed when no matching search results are found.\n * This can be specified as HTML content or a string.\n *\n * @type {DynamicContent | null}\n * @default null\n */\n @Input('odxSelectSearchField')\n public notFoundContent: DynamicContent | null = null;\n\n @HostListener('keydown.delete')\n protected handleDelete(): void {\n this.reset();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { BaseSearchFilterPipe } from '@odx/angular/cdk/autocomplete-control';\n/**\n * SelectSearchFilterPipe extends BaseSearchFilterPipe to provide search filtering functionality\n * specifically for select components. It filters options based on the input query, supporting\n * complex filtering logic as defined in the BaseSearchFilterPipe.\n *\n * This pipe is not pure, meaning it updates and reevaluates when inputs change or when\n * impure actions occur in the application.\n *\n * @see {BaseSearchFilterPipe}\n */\n@Pipe({\n pure: false,\n name: 'odxSelectSearchFilter',\n standalone: true,\n})\nexport class SelectSearchFilterPipe extends BaseSearchFilterPipe implements PipeTransform {}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n HostListener,\n inject,\n Input,\n QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IdentityMatcher, ODX_IDENTITY_MATCHER } from '@odx/angular';\nimport { AutocompleteControl, ODX_SEARCH_FILTER_HOST } from '@odx/angular/cdk/autocomplete-control';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { DropdownDirective } from '@odx/angular/components/dropdown';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { fromQueryList } from '@odx/angular/rxjs';\nimport { deferFn } from '@odx/angular/utils';\nimport { SelectOptionComponent } from './components';\nimport { SelectInputControlDirective } from './directives';\nimport { SELECT_CONTROL } from './select.tokens';\n\n/**\n * SelectComponent provides an advanced dropdown list that supports autocomplete, multiple selection,\n * and accessibility features. It extends AutocompleteControl for seamless integration with Angular forms.\n *\n * @template T - The type of the value selected in the select.\n *\n * @see {AutocompleteControl}\n */\n@CSSComponent('select')\n@Component({\n standalone: true,\n selector: 'odx-select',\n imports: [DropdownDirective, IconComponent, DynamicViewDirective, SelectOptionComponent, LoadingSpinnerModule],\n templateUrl: './select.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: SELECT_CONTROL,\n useExisting: forwardRef(() => SelectComponent),\n },\n {\n provide: ODX_SEARCH_FILTER_HOST,\n useExisting: SELECT_CONTROL,\n },\n ],\n host: {\n '[tabindex]': 'searchFieldEnabled || isDisabled ? -1 : 0',\n '[attr.aria-multiselectable]': 'multiple',\n },\n})\nexport class SelectComponent<T = unknown> extends AutocompleteControl<T | null> implements AfterViewInit {\n protected searchFieldEnabled = false;\n protected selectedOption: SelectOptionComponent<T> | null = null;\n protected selectedOptionText: string | null = null;\n\n @ContentChildren(SelectOptionComponent, { descendants: true, emitDistinctChangesOnly: true })\n protected options?: QueryList<SelectOptionComponent<T>>;\n\n /**\n * Directive managing the search input field within the select.\n *\n * @type {SelectInputControlDirective | undefined}\n */\n @ContentChild(SelectInputControlDirective)\n public searchField?: SelectInputControlDirective;\n\n /**\n * Returns the content of the selected option for display. This can be a template or plain text.\n *\n * @type {TemplateRef<{ $implicit: T | null }> | string | null}\n */\n public get selectedOptionContent(): TemplateRef<{ $implicit: T | null }> | string | null {\n return this.selectedOption ? (this.selectedOptionTemplate ?? this.selectedOptionText) : null;\n }\n\n /**\n * Placeholder text for the select input when no option is selected.\n *\n * @type {string}\n * @default ''\n */\n @Input()\n public placeholder = '';\n\n /**\n * Sets whether multiple options can be selected.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public multiple = false;\n\n /**\n * Custom template for displaying the selected option.\n *\n * @type {TemplateRef<{ $implicit: T }> | null}\n * @default null\n */\n @Input()\n public selectedOptionTemplate?: TemplateRef<{ $implicit: T }> | null = null;\n\n /**\n * Function to determine if two options are identical, useful for detecting changes in selection.\n *\n * @type {IdentityMatcher<T | null>}\n * @default ODX_DEFAULT_IDENTITY_MATCHER\n *\n * @example\n * ```ts\n * (item1, item2) => item1.id === item2.id\n * ```\n */\n @Input()\n public identityMatcher: IdentityMatcher<T | null> = inject(ODX_IDENTITY_MATCHER);\n\n public override ngAfterViewInit(): void {\n if (!this.options) return;\n\n this.initKeyManager(this.options);\n this.handleQueryListOption(this.options);\n this.handleSearchFieldChanges();\n }\n\n /**\n * Registers a function to be called when the value of the select changes.\n *\n * @param {Function} fn The function to be called when the value changes.\n * @returns {void}\n */\n public override registerOnChange(fn: (value: T | null) => void): void {\n super.registerOnChange((value) => {\n this.updateSelectedOption();\n fn(value);\n });\n }\n\n /**\n * Selects a given option and updates the component's value accordingly.\n *\n * @param {SelectOptionComponent<T | T[]> | null} option The option to select.\n * @returns {void}\n */\n public selectOption(option?: SelectOptionComponent<T | T[]> | null): void {\n if (option && !option.disabled) {\n this.optionSelected.emit();\n option.switchCheckbox();\n const value = this.multiple ? this.multipleSelectValueResolver(option as SelectOptionComponent<T>) : option.value;\n this.updateValue((value as T) ?? null);\n }\n\n !this.multiple && !option?.disabled && this.closeDropdown();\n }\n\n /**\n * Checks whether a given option is selected.\n *\n * @param {SelectOptionComponent<T | T[]>} option The option to check.\n * @returns {boolean} Whether the option is selected.\n */\n public isOptionSelected(option: SelectOptionComponent<T | T[]>): boolean {\n if (option) {\n if (this.multiple && Array.isArray(this.value)) {\n return (this.value as T[]).some((val) => this.identityMatcher(option.value as T, val));\n }\n return this.identityMatcher(option.value as T, this.value);\n }\n return false;\n }\n\n protected override initKeyManager(options: QueryList<SelectOptionComponent<T>>): void {\n this.keyManager = new ActiveDescendantKeyManager(options).withHomeAndEnd().skipPredicate((item) => item.disabled);\n }\n\n protected handleQueryListOption(options: QueryList<SelectOptionComponent<T>>): void {\n fromQueryList(options)\n .pipe(this.takeUntilDestroyed())\n .subscribe(() => {\n this.updateSelectedOption();\n if (this.isOpen) {\n deferFn(() => this.activateSelectedOption());\n }\n });\n }\n\n protected handleSearchFieldChanges(): void {\n this.searchField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => this.triggerControllerChange());\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown', ['$event'])\n protected handleControllerEvent(event: KeyboardEvent) {\n if (this.isLoading || this.readonlyController?.readonly || !this.isOpen) return;\n if (this.hasOptions) {\n if (event.key === 'Enter' || event.key === 'Tab') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.selectOption(this.keyManager?.activeItem as SelectOptionComponent<T> | undefined);\n return;\n }\n }\n this.keyManager?.onKeydown(event);\n }\n\n protected activateSelectedOption(): void {\n let activeIndex = this.options?.toArray().findIndex((option) => option.isSelected && !option.disabled);\n if (!activeIndex || activeIndex === -1) {\n activeIndex = this.options?.toArray().findIndex((option) => !option.disabled) ?? -1;\n }\n this.keyManager?.setActiveItem(activeIndex);\n }\n\n protected override onDropdownOpen(): void {\n super.onDropdownOpen();\n if (!this.searchFieldEnabled) {\n deferFn(() => this.focusSelectSearchField());\n }\n }\n\n protected override onDropdownClose(): void {\n super.onDropdownClose();\n this.element.nativeElement.blur();\n if (this.searchFieldEnabled) {\n this.searchFieldEnabled = false;\n this.element.nativeElement?.focus();\n }\n }\n\n protected override onDropdownClosed(): void {\n super.onDropdownClosed();\n this.searchField?.reset();\n }\n\n private updateSelectedOption(): void {\n const options = this.options?.toArray();\n this.selectedOption = options?.find((option) => option.isSelected) ?? null;\n\n if (this.multiple) {\n this.options?.forEach((option) => (option.isSelected = this.isOptionSelected(option)));\n this.selectedOptionText =\n options\n ?.filter(({ isSelected }) => isSelected)\n .map((option) => this.stringify?.(option.value) ?? option.getLabel())\n .join(', ') ?? null;\n\n this.changeDetector.detectChanges();\n return;\n }\n this.selectedOptionText = this.selectedOption ? (this.stringify?.(this.selectedOption?.value) ?? this.selectedOption.getLabel()) : null;\n this.changeDetector.detectChanges();\n }\n\n private focusSelectSearchField(): void {\n this.searchFieldEnabled = !!this.searchField;\n deferFn(() => this.searchField?.focus());\n this.changeDetector.detectChanges();\n }\n\n private multipleSelectValueResolver(option: SelectOptionComponent<T>): T {\n let value = Array.isArray(this.value) ? (this.value as T[]) : [];\n if (option.isSelected) {\n (value as T[]).push(option.value as T);\n } else {\n value = value.filter((val) => !this.identityMatcher(option.value as T, val));\n }\n return value as T;\n }\n}\n","<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownAfterOpen)=\"onDropdownOpened()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n>\n @if (!searchFieldEnabled) {\n @if (selectedOptionContent) {\n <div class=\"odx-select__value\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\"></ng-template>\n </div>\n } @else {\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n }\n } @else {\n <ng-content select=\"[odxSelectSearchField]\"></ng-content>\n }\n\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\"></odx-icon>\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n @if (hasOptions) {\n <ng-content></ng-content>\n } @else {\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\"></ng-template>\n </odx-select-option>\n }\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { SelectOptionComponent } from './components';\nimport { SelectInputControlDirective } from './directives';\nimport { SelectSearchFilterPipe } from './pipes';\nimport { SelectComponent } from './select.component';\n\nconst modules = [SelectComponent, SelectInputControlDirective, SelectSearchFilterPipe, SelectOptionComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class SelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ import { CheckboxRequiredValidator, NG_VALIDATORS } from '@angular/forms';
|
|
|
20
20
|
*/
|
|
21
21
|
let SwitchComponent = class SwitchComponent extends CheckBoxControl {
|
|
22
22
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SwitchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SwitchComponent, isStandalone: true, selector: "odx-switch", host: { properties: { "class.is-active": "checked" } }, providers: [ReadonlyController.connect()], usesInheritance: true, hostDirectives: [{ directive: i1.WithDisabledState }], ngImport: i0, template: "<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content></ng-content>\n @if (requiredGetter) {\n <span class=\"odx-switch__required\">*</span>\n }\n </div>\n</label>\n", dependencies: [{ kind: "directive", type: ControlDirective, selector: "[odxControl]", exportAs: ["odxControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
24
24
|
};
|
|
25
25
|
SwitchComponent = __decorate([
|
|
26
26
|
CSSComponent('switch')
|
|
@@ -29,7 +29,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
29
29
|
type: Component,
|
|
30
30
|
args: [{ standalone: true, selector: 'odx-switch', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [ControlDirective], providers: [ReadonlyController.connect()], hostDirectives: [WithDisabledState], host: {
|
|
31
31
|
'[class.is-active]': 'checked',
|
|
32
|
-
}, template: "<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content></ng-content>\n </div>\n</label>\n" }]
|
|
32
|
+
}, template: "<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content></ng-content>\n @if (requiredGetter) {\n <span class=\"odx-switch__required\">*</span>\n }\n </div>\n</label>\n" }]
|
|
33
33
|
}] });
|
|
34
34
|
|
|
35
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-components-switch.mjs","sources":["../../../../libs/angular/components/switch/src/lib/switch.component.ts","../../../../libs/angular/components/switch/src/lib/switch.component.html","../../../../libs/angular/components/switch/src/lib/switch.validator.ts","../../../../libs/angular/components/switch/src/lib/switch.module.ts","../../../../libs/angular/components/switch/src/odx-angular-components-switch.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { ReadonlyController, WithDisabledState } from '@odx/angular';\nimport { CheckBoxControl } from '@odx/angular/cdk/checkbox-control';\nimport { ControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { CSSComponent } from '@odx/angular/internal';\n\n/**\n * SwitchComponent provides a custom switch (toggle) control that can be used within forms\n * or standalone for toggling a specific binary state. It supports readonly and disabled states,\n * and integrates seamlessly with Angular's form controls for data binding and state management.\n * Has host directives for disabled state handling.\n * Extends CheckBoxControl to provide additional behavior.\n *\n * @see {WithDisabledState}\n * @see {CheckBoxControl}\n */\n@CSSComponent('switch')\n@Component({\n standalone: true,\n selector: 'odx-switch',\n templateUrl: 'switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ControlDirective],\n providers: [ReadonlyController.connect()],\n hostDirectives: [WithDisabledState],\n host: {\n '[class.is-active]': 'checked',\n },\n})\nexport class SwitchComponent extends CheckBoxControl {}\n","<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import { Directive, forwardRef } from '@angular/core';\nimport { CheckboxRequiredValidator, NG_VALIDATORS } from '@angular/forms';\n\n/**\n * SwitchValidator extends CheckboxRequiredValidator to provide required field validation\n * for switch components used within Angular forms. It ensures that the switch is marked as required\n * and must be toggled (checked) to meet form validation criteria.\n *\n * This directive automatically attaches itself to any switch component with a 'required' attribute\n * and a form control binding (formControlName, formControl, or ngModel).\n *\n * Extends CheckboxRequiredValidator.\n *\n * @see {CheckboxRequiredValidator}\n */\n@Directive({\n standalone: true,\n selector: 'odx-switch[required][formControlName], odx-switch[required][formControl], odx-switch[required][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SwitchValidator),\n multi: true,\n },\n ],\n})\nexport class SwitchValidator extends CheckboxRequiredValidator {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { SwitchComponent } from './switch.component';\nimport { SwitchValidator } from './switch.validator';\n\nconst modules = [SwitchComponent, SwitchValidator];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class SwitchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAMA;;;;;;;;;AASG;AAeI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,eAAe,CAAA;+GAAvC,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EANf,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB3C,
|
|
1
|
+
{"version":3,"file":"odx-angular-components-switch.mjs","sources":["../../../../libs/angular/components/switch/src/lib/switch.component.ts","../../../../libs/angular/components/switch/src/lib/switch.component.html","../../../../libs/angular/components/switch/src/lib/switch.validator.ts","../../../../libs/angular/components/switch/src/lib/switch.module.ts","../../../../libs/angular/components/switch/src/odx-angular-components-switch.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { ReadonlyController, WithDisabledState } from '@odx/angular';\nimport { CheckBoxControl } from '@odx/angular/cdk/checkbox-control';\nimport { ControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { CSSComponent } from '@odx/angular/internal';\n\n/**\n * SwitchComponent provides a custom switch (toggle) control that can be used within forms\n * or standalone for toggling a specific binary state. It supports readonly and disabled states,\n * and integrates seamlessly with Angular's form controls for data binding and state management.\n * Has host directives for disabled state handling.\n * Extends CheckBoxControl to provide additional behavior.\n *\n * @see {WithDisabledState}\n * @see {CheckBoxControl}\n */\n@CSSComponent('switch')\n@Component({\n standalone: true,\n selector: 'odx-switch',\n templateUrl: 'switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ControlDirective],\n providers: [ReadonlyController.connect()],\n hostDirectives: [WithDisabledState],\n host: {\n '[class.is-active]': 'checked',\n },\n})\nexport class SwitchComponent extends CheckBoxControl {}\n","<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content></ng-content>\n @if (requiredGetter) {\n <span class=\"odx-switch__required\">*</span>\n }\n </div>\n</label>\n","import { Directive, forwardRef } from '@angular/core';\nimport { CheckboxRequiredValidator, NG_VALIDATORS } from '@angular/forms';\n\n/**\n * SwitchValidator extends CheckboxRequiredValidator to provide required field validation\n * for switch components used within Angular forms. It ensures that the switch is marked as required\n * and must be toggled (checked) to meet form validation criteria.\n *\n * This directive automatically attaches itself to any switch component with a 'required' attribute\n * and a form control binding (formControlName, formControl, or ngModel).\n *\n * Extends CheckboxRequiredValidator.\n *\n * @see {CheckboxRequiredValidator}\n */\n@Directive({\n standalone: true,\n selector: 'odx-switch[required][formControlName], odx-switch[required][formControl], odx-switch[required][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SwitchValidator),\n multi: true,\n },\n ],\n})\nexport class SwitchValidator extends CheckboxRequiredValidator {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { SwitchComponent } from './switch.component';\nimport { SwitchValidator } from './switch.validator';\n\nconst modules = [SwitchComponent, SwitchValidator];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class SwitchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|