@anglr/select 17.2.0 → 18.0.0-beta.20260805050455
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/.claude/skills/angular-developer/SKILL.md +130 -130
- package/.claude/skills/angular-developer/references/angular-animations.md +160 -160
- package/.claude/skills/angular-developer/references/angular-aria.md +410 -410
- package/.claude/skills/angular-developer/references/cli.md +86 -86
- package/.claude/skills/angular-developer/references/component-harnesses.md +59 -59
- package/.claude/skills/angular-developer/references/component-styling.md +91 -91
- package/.claude/skills/angular-developer/references/components.md +117 -117
- package/.claude/skills/angular-developer/references/creating-services.md +97 -97
- package/.claude/skills/angular-developer/references/data-resolvers.md +69 -69
- package/.claude/skills/angular-developer/references/define-routes.md +67 -67
- package/.claude/skills/angular-developer/references/defining-providers.md +72 -72
- package/.claude/skills/angular-developer/references/di-fundamentals.md +120 -120
- package/.claude/skills/angular-developer/references/e2e-testing.md +66 -66
- package/.claude/skills/angular-developer/references/effects.md +83 -83
- package/.claude/skills/angular-developer/references/hierarchical-injectors.md +43 -43
- package/.claude/skills/angular-developer/references/host-elements.md +80 -80
- package/.claude/skills/angular-developer/references/injection-context.md +63 -63
- package/.claude/skills/angular-developer/references/inputs.md +101 -101
- package/.claude/skills/angular-developer/references/linked-signal.md +59 -59
- package/.claude/skills/angular-developer/references/loading-strategies.md +61 -61
- package/.claude/skills/angular-developer/references/mcp.md +106 -106
- package/.claude/skills/angular-developer/references/migrations.md +30 -30
- package/.claude/skills/angular-developer/references/navigate-to-routes.md +69 -69
- package/.claude/skills/angular-developer/references/outputs.md +86 -86
- package/.claude/skills/angular-developer/references/reactive-forms.md +122 -122
- package/.claude/skills/angular-developer/references/rendering-strategies.md +44 -44
- package/.claude/skills/angular-developer/references/resource.md +77 -77
- package/.claude/skills/angular-developer/references/route-animations.md +56 -56
- package/.claude/skills/angular-developer/references/route-guards.md +52 -52
- package/.claude/skills/angular-developer/references/router-lifecycle.md +45 -45
- package/.claude/skills/angular-developer/references/router-testing.md +87 -87
- package/.claude/skills/angular-developer/references/show-routes-with-outlets.md +68 -68
- package/.claude/skills/angular-developer/references/signal-forms.md +897 -897
- package/.claude/skills/angular-developer/references/signals-overview.md +94 -94
- package/.claude/skills/angular-developer/references/tailwind-css.md +69 -69
- package/.claude/skills/angular-developer/references/template-driven-forms.md +114 -114
- package/.claude/skills/angular-developer/references/testing-fundamentals.md +66 -66
- package/.github/instructions/typescript/code-conventions.md +7 -7
- package/.github/instructions/typescript/comments.md +40 -40
- package/.github/instructions/typescript/formatting.md +41 -41
- package/.github/instructions/typescript/naming-conventions.md +6 -6
- package/es2022/extensions/src/extensions/getSearch.js.map +1 -1
- package/es2022/extensions/src/extensions/getSelectedOption.js.map +1 -1
- package/es2022/extensions/src/extensions/getSelectedOptions.js.map +1 -1
- package/es2022/extensions/src/extensions/getValue.js.map +1 -1
- package/es2022/extensions/src/extensions/setReadonly.js.map +1 -1
- package/es2022/extensions/src/extensions/setValue.js.map +1 -1
- package/es2022/extensions/src/index.js.map +1 -1
- package/es2022/src/components/index.js.map +1 -1
- package/es2022/src/components/option/option.component.js.map +1 -1
- package/es2022/src/components/optionGroup/optgroup.component.js.map +1 -1
- package/es2022/src/components/select/select.component.js +2 -2
- package/es2022/src/components/select/select.component.js.map +1 -1
- package/es2022/src/decorators/index.js.map +1 -1
- package/es2022/src/decorators/mergeOptionsAsSignal/mergeOptionsAsSignal.decorator.js.map +1 -1
- package/es2022/src/directives/highlightInstance/highlightInstance.directive.js.map +1 -1
- package/es2022/src/directives/highlightSearch/highlightSearch.directive.js.map +1 -1
- package/es2022/src/directives/highlightText/highlightText.directive.js.map +1 -1
- package/es2022/src/directives/index.js.map +1 -1
- package/es2022/src/directives/normalStateTagTemplate/normalStateTagTemplate.directive.js.map +1 -1
- package/es2022/src/directives/normalStateTemplate/normalStateTemplate.directive.js.map +1 -1
- package/es2022/src/directives/optionGroupTemplate/optionGroupTemplate.directive.js.map +1 -1
- package/es2022/src/directives/optionTemplate/optionTemplate.directive.js.map +1 -1
- package/es2022/src/directives/selectAbsolute/selectAbsolute.directive.js.map +1 -1
- package/es2022/src/directives/selectControlValueAccessor/selectControlValueAccessor.directive.js.map +1 -1
- package/es2022/src/directives/selectEdit/selectEdit.directive.js.map +1 -1
- package/es2022/src/directives/selectFormControl/selectFormControl.directive.js.map +1 -1
- package/es2022/src/directives/selectMultipleKeepPopup/selectMultipleKeepPopup.directive.js.map +1 -1
- package/es2022/src/directives/selectNoCarret/selectNoCarret.directive.js.map +1 -1
- package/es2022/src/directives/selectPlaceholder/selectPlaceholder.directive.js.map +1 -1
- package/es2022/src/directives/withDirectAccess/withDirectAccess.directive.js.map +1 -1
- package/es2022/src/index.js.map +1 -1
- package/es2022/src/interfaces/index.js.map +1 -1
- package/es2022/src/interfaces/initState/initState.interface.js.map +1 -1
- package/es2022/src/interfaces/keyboardAction/keyboardAction.interface.js.map +1 -1
- package/es2022/src/interfaces/normalStateContext/normalStateContext.interface.js.map +1 -1
- package/es2022/src/interfaces/normalStateTagContext/normalStateTagContext.interface.js.map +1 -1
- package/es2022/src/interfaces/optionsGatherer/optionsGatherer.interface.js.map +1 -1
- package/es2022/src/interfaces/pluginDescription/pluginDescription.interface.js.map +1 -1
- package/es2022/src/interfaces/pluginOptions/pluginOptions.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/index.js.map +1 -1
- package/es2022/src/interfaces/plugins/interactions/interactions.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/keyboardHandler/keyboardHandler.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/keyboardHandler/simpleKeyboardHandler.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/liveSearch/editLiveSearch.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/liveSearch/filterLiveSearch.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/liveSearch/liveSearch.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/normalState/editNormalState.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/normalState/normalState.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/normalState/simpleNormalState.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/optionsHandler/optionsHandler.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/optionsHandler/simpleOptionsHandler.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/popup/popup.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/popup/simplePopup.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/positioner/commonPositioner.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/positioner/popoverPositioner.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/positioner/positioner.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/readonlyState/readonlyState.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/valueHandler/dynamicValueHandler.interface.js.map +1 -1
- package/es2022/src/interfaces/plugins/valueHandler/valueHandler.interface.js.map +1 -1
- package/es2022/src/interfaces/popupContext/popupContext.interface.js.map +1 -1
- package/es2022/src/interfaces/selectApi/selectApi.interface.js.map +1 -1
- package/es2022/src/interfaces/selectBusOptions/selectBusOptions.interface.js.map +1 -1
- package/es2022/src/interfaces/selectCssClasses/selectCssClasses.interface.js.map +1 -1
- package/es2022/src/interfaces/selectEvent/selectEvent.interface.js.map +1 -1
- package/es2022/src/interfaces/selectEvents/selectEvents.interface.js.map +1 -1
- package/es2022/src/interfaces/selectOption/selectOption.interface.js.map +1 -1
- package/es2022/src/interfaces/selectOptionGroup/selectOptionGroup.interface.js.map +1 -1
- package/es2022/src/interfaces/selectOptionState/selectOptionState.interface.js.map +1 -1
- package/es2022/src/interfaces/selectOptionStateSyntetic/selectOptionStateSyntetic.interface.js.map +1 -1
- package/es2022/src/interfaces/selectOptions/selectOptions.interface.js.map +1 -1
- package/es2022/src/interfaces/selectPlugin/selectPlugin.interface.js.map +1 -1
- package/es2022/src/interfaces/selectPluginTypes/selectPluginTypes.interface.js.map +1 -1
- package/es2022/src/interfaces/tempValue/tempValue.interface.js.map +1 -1
- package/es2022/src/interfaces/templateGatherer/templateGatherer.interface.js.map +1 -1
- package/es2022/src/interfaces/visualPluginOptions/visualPluginOptions.interface.js.map +1 -1
- package/es2022/src/misc/classes/codeOptionsGatherer/codeOptionsGatherer.interface.js.map +1 -1
- package/es2022/src/misc/classes/index.js.map +1 -1
- package/es2022/src/misc/classes/selectBus/selectBus.js.map +1 -1
- package/es2022/src/misc/classes/selectPluginInstances/selectPluginInstances.js.map +1 -1
- package/es2022/src/misc/enums.js.map +1 -1
- package/es2022/src/misc/providers.js.map +1 -1
- package/es2022/src/misc/tokens.js.map +1 -1
- package/es2022/src/misc/types.js.map +1 -1
- package/es2022/src/misc/utils.js.map +1 -1
- package/es2022/src/modules/index.js.map +1 -1
- package/es2022/src/modules/select.module.js.map +1 -1
- package/es2022/src/pipes/addNewOption/addNewOption.pipe.js.map +1 -1
- package/es2022/src/pipes/displayOptionValue/displayOptionValue.pipe.js.map +1 -1
- package/es2022/src/pipes/displayValue/displayValue.pipe.js.map +1 -1
- package/es2022/src/pipes/getPlugin/getPlugin.pipe.js.map +1 -1
- package/es2022/src/pipes/groupedListOptions/groupedListOptions.pipe.js.map +1 -1
- package/es2022/src/pipes/hasValue/hasValue.pipe.js.map +1 -1
- package/es2022/src/pipes/index.js.map +1 -1
- package/es2022/src/pipes/optionCssClasses/optionCssClasses.pipe.js.map +1 -1
- package/es2022/src/plugins/index.js.map +1 -1
- package/es2022/src/plugins/interactions/index.js.map +1 -1
- package/es2022/src/plugins/interactions/simpleInteractions/simpleInteractions.component.js.map +1 -1
- package/es2022/src/plugins/keyboardHandler/index.js.map +1 -1
- package/es2022/src/plugins/keyboardHandler/simpleKeyboardHandler/simpleKeyboardHandler.component.js.map +1 -1
- package/es2022/src/plugins/liveSearch/editLiveSearch/editLiveSearch.component.js +2 -2
- package/es2022/src/plugins/liveSearch/editLiveSearch/editLiveSearch.component.js.map +1 -1
- package/es2022/src/plugins/liveSearch/filterLiveSearch/filterLiveSearch.component.js.map +1 -1
- package/es2022/src/plugins/liveSearch/index.js.map +1 -1
- package/es2022/src/plugins/liveSearch/noLiveSearch/noLiveSearch.component.js.map +1 -1
- package/es2022/src/plugins/normalState/editNormalState/editNormalState.component.js +3 -2
- package/es2022/src/plugins/normalState/editNormalState/editNormalState.component.js.map +1 -1
- package/es2022/src/plugins/normalState/index.js.map +1 -1
- package/es2022/src/plugins/normalState/simpleNormalState/simpleNormalState.component.js +5 -6
- package/es2022/src/plugins/normalState/simpleNormalState/simpleNormalState.component.js.map +1 -1
- package/es2022/src/plugins/optionsHandler/index.js.map +1 -1
- package/es2022/src/plugins/optionsHandler/noOptionsHandler/noOptionsHandler.component.js.map +1 -1
- package/es2022/src/plugins/optionsHandler/optionsHandlerBase.js.map +1 -1
- package/es2022/src/plugins/optionsHandler/simpleOptionsHandler/simpleOptionsHandler.component.js.map +1 -1
- package/es2022/src/plugins/popup/index.js.map +1 -1
- package/es2022/src/plugins/popup/simplePopup/simplePopup.component.js +2 -2
- package/es2022/src/plugins/popup/simplePopup/simplePopup.component.js.map +1 -1
- package/es2022/src/plugins/positioner/commonPositioner/commonPositioner.component.js.map +1 -1
- package/es2022/src/plugins/positioner/index.js.map +1 -1
- package/es2022/src/plugins/positioner/noPositioner/noPositioner.component.js.map +1 -1
- package/es2022/src/plugins/positioner/popoverPositioner/popoverPositioner.component.js.map +1 -1
- package/es2022/src/plugins/valueHandler/dynamicValueHandler/dynamicValueHandler.component.js.map +1 -1
- package/es2022/src/plugins/valueHandler/index.js.map +1 -1
- package/es2022/src/plugins/valueHandler/staticValueHandler/staticValueHandler.component.js.map +1 -1
- package/package.json +125 -125
- package/src/components/select/select.component.css +5 -5
- package/src/interfaces/plugins/normalState/editNormalState.interface.d.ts +4 -0
- package/src/interfaces/plugins/normalState/editNormalState.interface.d.ts.map +1 -1
- package/src/interfaces/plugins/normalState/simpleNormalState.interface.d.ts +1 -5
- package/src/interfaces/plugins/normalState/simpleNormalState.interface.d.ts.map +1 -1
- package/src/plugins/liveSearch/editLiveSearch/editLiveSearch.component.html +19 -19
- package/src/plugins/normalState/editNormalState/editNormalState.component.d.ts.map +1 -1
- package/src/plugins/normalState/editNormalState/editNormalState.component.html +52 -50
- package/src/plugins/normalState/simpleNormalState/simpleNormalState.component.d.ts.map +1 -1
- package/src/plugins/normalState/simpleNormalState/simpleNormalState.component.html +36 -37
- package/src/plugins/popup/simplePopup/simplePopup.component.html +56 -56
- package/styles/components/_liveSearch.scss +32 -32
- package/styles/components/_normalState.scss +121 -116
- package/styles/components/_popup.scss +107 -107
- package/styles/components/_select.scss +14 -14
- package/styles/core/_defaultTheme.scss +105 -105
- package/styles/core/_misc.scss +34 -34
- package/styles/core/_mixins.scss +29 -29
- package/styles/index.scss +2 -2
- package/styles/themes/dark.scss +63 -63
- package/styles/themes/light.scss +64 -64
- package/version.bak +1 -1
|
@@ -97,7 +97,7 @@ export class SimplePopup {
|
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: SimplePopup, deps: [{ token: POPUP_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
100
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: SimplePopup, isStandalone: true, selector: "simple-popup", host: { properties: { "id": "selectBus.id", "class": "options.cssClasses.componentElement" } }, viewQueries: [{ propertyName: "liveSearchPlaceholder", first: true, predicate: ["liveSearchPlaceholder"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1.HighlightInstance }], ngImport: i0, template: "<ng-template #defaultOptionLook let-option>{{option | addNewOption | localize}}{{option | displayOptionValue | localize}}</ng-template>\n<ng-template #defaultOptionGroupLook let-text>{{text}}</ng-template>\n\n@if(selectBus.popupVisible() || options.visible)\n{\n @let result = selectPlugins.OptionsHandler.listOptions() | groupedListOptions;\n @let listOptions = result[0];\n @let size = result[1];\n \n <div [class]=\"options.cssClasses.popupContainer\" role=\"listbox\" [attr.aria-label]=\"options.texts.optionsList | localize\">\n <ng-container #liveSearchPlaceholder/>\n\n @for(optionsGroups of listOptions; track $index)\n {\n @let group = optionsGroups[1];\n @let opts = optionsGroups[0];\n\n @if(group)\n {\n <div role=\"group\"\n [id]=\"group.id\"\n [class]=\"options.cssClasses.optionGroup\"\n [attr.aria-posinset]=\"group.index + 1\"\n [attr.aria-setsize]=\"size\">\n <ng-container *ngTemplateOutlet=\"group.template() || defaultOptionGroupLook; context: {$implicit: group.text()}\"/>\n </div>\n }\n\n @for(option of opts; track option)\n {\n <div role=\"option\"\n [id]=\"`${selectBus.id}-${option.index}`\"\n [attr.aria-posinset]=\"option.index + 1\"\n [attr.aria-setsize]=\"size\"\n [attr.aria-selected]=\"option.selected()\"\n [class]=\"option | optionCssClasses: options.cssClasses: group\"\n (mouseover)=\"markActive(option)\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"optionClick(option)\">\n <div [class]=\"options.cssClasses.optionText\" highlightSearch #highlightSearch=\"highlightSearch\">\n <ng-container *ngTemplateOutlet=\"selectBus.selectOptions().templateGatherer.optionTemplate() || defaultOptionLook; context: {$implicit: option, popup: this}; injector: highlightSearch.injector\"/>\n </div>\n \n @if(option.selected() && selectBus.selectOptions().multiple)\n {\n <div [class]=\"options.cssClasses.optionChecked\"></div>\n }\n </div>\n }\n }\n @empty \n {\n <div>{{options.texts.noAvailableOptions | localize}}</div>\n }\n </div>\n}\n", dependencies: [{ kind: "directive", type: HighlightSearch, selector: "[highlightSearch]", exportAs: ["highlightSearch"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AddNewOption, name: "addNewOption" }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: OptionCssClasses, name: "optionCssClasses" }, { kind: "pipe", type: DisplayOptionValue, name: "displayOptionValue" }, { kind: "pipe", type: GroupedListOptions, name: "groupedListOptions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
100
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: SimplePopup, isStandalone: true, selector: "simple-popup", host: { properties: { "id": "selectBus.id", "class": "options.cssClasses.componentElement" } }, viewQueries: [{ propertyName: "liveSearchPlaceholder", first: true, predicate: ["liveSearchPlaceholder"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1.HighlightInstance }], ngImport: i0, template: "<ng-template #defaultOptionLook let-option>{{option | addNewOption | localize}}{{option | displayOptionValue | localize}}</ng-template>\r\n<ng-template #defaultOptionGroupLook let-text>{{text}}</ng-template>\r\n\r\n@if(selectBus.popupVisible() || options.visible)\r\n{\r\n @let result = selectPlugins.OptionsHandler.listOptions() | groupedListOptions;\r\n @let listOptions = result[0];\r\n @let size = result[1];\r\n \r\n <div [class]=\"options.cssClasses.popupContainer\" role=\"listbox\" [attr.aria-label]=\"options.texts.optionsList | localize\">\r\n <ng-container #liveSearchPlaceholder/>\r\n\r\n @for(optionsGroups of listOptions; track $index)\r\n {\r\n @let group = optionsGroups[1];\r\n @let opts = optionsGroups[0];\r\n\r\n @if(group)\r\n {\r\n <div role=\"group\"\r\n [id]=\"group.id\"\r\n [class]=\"options.cssClasses.optionGroup\"\r\n [attr.aria-posinset]=\"group.index + 1\"\r\n [attr.aria-setsize]=\"size\">\r\n <ng-container *ngTemplateOutlet=\"group.template() || defaultOptionGroupLook; context: {$implicit: group.text()}\"/>\r\n </div>\r\n }\r\n\r\n @for(option of opts; track option)\r\n {\r\n <div role=\"option\"\r\n [id]=\"`${selectBus.id}-${option.index}`\"\r\n [attr.aria-posinset]=\"option.index + 1\"\r\n [attr.aria-setsize]=\"size\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [class]=\"option | optionCssClasses: options.cssClasses: group\"\r\n (mouseover)=\"markActive(option)\"\r\n (mousedown)=\"preventBlur($event)\"\r\n (click)=\"optionClick(option)\">\r\n <div [class]=\"options.cssClasses.optionText\" highlightSearch #highlightSearch=\"highlightSearch\">\r\n <ng-container *ngTemplateOutlet=\"selectBus.selectOptions().templateGatherer.optionTemplate() || defaultOptionLook; context: {$implicit: option, popup: this}; injector: highlightSearch.injector\"/>\r\n </div>\r\n \r\n @if(option.selected() && selectBus.selectOptions().multiple)\r\n {\r\n <div [class]=\"options.cssClasses.optionChecked\"></div>\r\n }\r\n </div>\r\n }\r\n }\r\n @empty \r\n {\r\n <div>{{options.texts.noAvailableOptions | localize}}</div>\r\n }\r\n </div>\r\n}\r\n", dependencies: [{ kind: "directive", type: HighlightSearch, selector: "[highlightSearch]", exportAs: ["highlightSearch"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AddNewOption, name: "addNewOption" }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: OptionCssClasses, name: "optionCssClasses" }, { kind: "pipe", type: DisplayOptionValue, name: "displayOptionValue" }, { kind: "pipe", type: GroupedListOptions, name: "groupedListOptions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
101
101
|
}
|
|
102
102
|
__decorate([
|
|
103
103
|
CopyOptionsAsSignal(),
|
|
@@ -118,7 +118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
|
|
|
118
118
|
GroupedListOptions,
|
|
119
119
|
], hostDirectives: [
|
|
120
120
|
HighlightInstance,
|
|
121
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #defaultOptionLook let-option>{{option | addNewOption | localize}}{{option | displayOptionValue | localize}}</ng-template>\n<ng-template #defaultOptionGroupLook let-text>{{text}}</ng-template>\n\n@if(selectBus.popupVisible() || options.visible)\n{\n @let result = selectPlugins.OptionsHandler.listOptions() | groupedListOptions;\n @let listOptions = result[0];\n @let size = result[1];\n \n <div [class]=\"options.cssClasses.popupContainer\" role=\"listbox\" [attr.aria-label]=\"options.texts.optionsList | localize\">\n <ng-container #liveSearchPlaceholder/>\n\n @for(optionsGroups of listOptions; track $index)\n {\n @let group = optionsGroups[1];\n @let opts = optionsGroups[0];\n\n @if(group)\n {\n <div role=\"group\"\n [id]=\"group.id\"\n [class]=\"options.cssClasses.optionGroup\"\n [attr.aria-posinset]=\"group.index + 1\"\n [attr.aria-setsize]=\"size\">\n <ng-container *ngTemplateOutlet=\"group.template() || defaultOptionGroupLook; context: {$implicit: group.text()}\"/>\n </div>\n }\n\n @for(option of opts; track option)\n {\n <div role=\"option\"\n [id]=\"`${selectBus.id}-${option.index}`\"\n [attr.aria-posinset]=\"option.index + 1\"\n [attr.aria-setsize]=\"size\"\n [attr.aria-selected]=\"option.selected()\"\n [class]=\"option | optionCssClasses: options.cssClasses: group\"\n (mouseover)=\"markActive(option)\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"optionClick(option)\">\n <div [class]=\"options.cssClasses.optionText\" highlightSearch #highlightSearch=\"highlightSearch\">\n <ng-container *ngTemplateOutlet=\"selectBus.selectOptions().templateGatherer.optionTemplate() || defaultOptionLook; context: {$implicit: option, popup: this}; injector: highlightSearch.injector\"/>\n </div>\n \n @if(option.selected() && selectBus.selectOptions().multiple)\n {\n <div [class]=\"options.cssClasses.optionChecked\"></div>\n }\n </div>\n }\n }\n @empty \n {\n <div>{{options.texts.noAvailableOptions | localize}}</div>\n }\n </div>\n}\n" }]
|
|
121
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #defaultOptionLook let-option>{{option | addNewOption | localize}}{{option | displayOptionValue | localize}}</ng-template>\r\n<ng-template #defaultOptionGroupLook let-text>{{text}}</ng-template>\r\n\r\n@if(selectBus.popupVisible() || options.visible)\r\n{\r\n @let result = selectPlugins.OptionsHandler.listOptions() | groupedListOptions;\r\n @let listOptions = result[0];\r\n @let size = result[1];\r\n \r\n <div [class]=\"options.cssClasses.popupContainer\" role=\"listbox\" [attr.aria-label]=\"options.texts.optionsList | localize\">\r\n <ng-container #liveSearchPlaceholder/>\r\n\r\n @for(optionsGroups of listOptions; track $index)\r\n {\r\n @let group = optionsGroups[1];\r\n @let opts = optionsGroups[0];\r\n\r\n @if(group)\r\n {\r\n <div role=\"group\"\r\n [id]=\"group.id\"\r\n [class]=\"options.cssClasses.optionGroup\"\r\n [attr.aria-posinset]=\"group.index + 1\"\r\n [attr.aria-setsize]=\"size\">\r\n <ng-container *ngTemplateOutlet=\"group.template() || defaultOptionGroupLook; context: {$implicit: group.text()}\"/>\r\n </div>\r\n }\r\n\r\n @for(option of opts; track option)\r\n {\r\n <div role=\"option\"\r\n [id]=\"`${selectBus.id}-${option.index}`\"\r\n [attr.aria-posinset]=\"option.index + 1\"\r\n [attr.aria-setsize]=\"size\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [class]=\"option | optionCssClasses: options.cssClasses: group\"\r\n (mouseover)=\"markActive(option)\"\r\n (mousedown)=\"preventBlur($event)\"\r\n (click)=\"optionClick(option)\">\r\n <div [class]=\"options.cssClasses.optionText\" highlightSearch #highlightSearch=\"highlightSearch\">\r\n <ng-container *ngTemplateOutlet=\"selectBus.selectOptions().templateGatherer.optionTemplate() || defaultOptionLook; context: {$implicit: option, popup: this}; injector: highlightSearch.injector\"/>\r\n </div>\r\n \r\n @if(option.selected() && selectBus.selectOptions().multiple)\r\n {\r\n <div [class]=\"options.cssClasses.optionChecked\"></div>\r\n }\r\n </div>\r\n }\r\n }\r\n @empty \r\n {\r\n <div>{{options.texts.noAvailableOptions | localize}}</div>\r\n }\r\n </div>\r\n}\r\n" }]
|
|
122
122
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
123
123
|
type: Inject,
|
|
124
124
|
args: [POPUP_OPTIONS]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simplePopup.component.js","sourceRoot":"","sources":["../../../../../src/plugins/popup/simplePopup/simplePopup.component.ts","../../../../../src/plugins/popup/simplePopup/simplePopup.component.html"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectionStrategy, Component, effect, ElementRef, Inject, inject, Optional, Signal, viewChild} from '@angular/core';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {LocalizePipe} from '@anglr/common';\nimport {RecursivePartial} from '@jscrpt/common';\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\n\nimport {Popup, PopupOptions, SelectOptionState, SelectPlugin, SimplePopupCssClasses} from '../../../interfaces';\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\nimport {CopyOptionsAsSignal} from '../../../decorators';\nimport {POPUP_OPTIONS} from '../../../misc/tokens';\nimport {AddNewOption, DisplayOptionValue, GroupedListOptions, OptionCssClasses} from '../../../pipes';\nimport {HighlightInstance, HighlightSearch} from '../../../directives';\n\n//TODO: hover into mouseover => use \"active\"\n\nconst defaultOptions: PopupOptions<SimplePopupCssClasses> =\n{\n visible: false,\n searchHighlighting: true,\n liveSearchEnabled: false,\n cssClasses:\n {\n componentElement: 'popup-component',\n option: 'option',\n optionGroup: 'option-group',\n optionText: 'option-text',\n optionChecked: 'fas fa-check',\n popupContainer: 'popup-container',\n active: 'active',\n selected: 'selected',\n inGroup: 'in-group',\n },\n texts:\n {\n noAvailableOptions: 'no options available',\n addNewOption: 'add new option',\n optionsList: 'options list',\n },\n};\n\n/**\n * Simple popup displaying options in column.\n */\n@Component(\n{\n selector: 'simple-popup',\n templateUrl: 'simplePopup.component.html',\n host:\n {\n '[id]': 'selectBus.id',\n '[class]': 'options.cssClasses.componentElement',\n },\n imports:\n [\n AddNewOption,\n LocalizePipe,\n HighlightSearch,\n NgTemplateOutlet,\n OptionCssClasses,\n DisplayOptionValue,\n GroupedListOptions,\n ],\n hostDirectives:\n [\n HighlightInstance,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimplePopup<TValue = unknown, TPublicValue = TValue> implements Popup<TValue, TPublicValue, PopupOptions<SimplePopupCssClasses>>\n{\n //######################### public properties - implementation of SelectPlugin #########################\n\n /**\n * @inheritdoc\n */\n @CopyOptionsAsSignal()\n public options: PopupOptions<SimplePopupCssClasses>;\n\n /**\n * @inheritdoc\n */\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\n\n /**\n * @inheritdoc\n */\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\n\n /**\n * @inheritdoc\n */\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\n\n //######################### protected properties - children #########################\n\n /**\n * Instance of element that is used as placeholder for live search\n */\n protected liveSearchPlaceholder: Signal<ElementRef<HTMLElement>|undefined|null> = viewChild('liveSearchPlaceholder', {read: ElementRef});\n\n //######################### constructor #########################\n constructor(@Inject(POPUP_OPTIONS) @Optional() options?: RecursivePartial<PopupOptions<SimplePopupCssClasses>>|null,)\n {\n this.options = deepCopyWithArrayOverride(defaultOptions as PopupOptions<SimplePopupCssClasses>,\n options);\n\n effect(() =>\n {\n if(this.options.liveSearchEnabled)\n {\n const placeholder = this.liveSearchPlaceholder();\n\n if(!placeholder)\n {\n return;\n }\n\n placeholder.nativeElement.after(this.selectPlugins.LiveSearch.pluginElement.nativeElement);\n }\n });\n }\n\n //######################### protected methods - template bindings #########################\n\n /**\n * Prevents blur on option click\n * @param event - Event that occured\n */\n protected preventBlur(event: MouseEvent): void\n {\n event.preventDefault();\n }\n\n /**\n * Handles option click\n * @param option - Option that was clicked\n */\n protected optionClick(option: SelectOptionState<TValue>): void\n {\n this.selectBus.optionActivate.next(\n {\n source: this as SelectPlugin,\n sourceElement: this.pluginElement.nativeElement,\n data: option,\n });\n }\n\n /**\n * Marks option as active\n * @param option - Option to be marked as active\n */\n protected markActive(option: SelectOptionState<TValue>): void\n {\n this.selectBus.markOption.next(\n {\n source: this as SelectPlugin,\n sourceElement: this.pluginElement.nativeElement,\n data: option,\n });\n }\n}\n","<ng-template #defaultOptionLook let-option>{{option | addNewOption | localize}}{{option | displayOptionValue | localize}}</ng-template>\n<ng-template #defaultOptionGroupLook let-text>{{text}}</ng-template>\n\n@if(selectBus.popupVisible() || options.visible)\n{\n @let result = selectPlugins.OptionsHandler.listOptions() | groupedListOptions;\n @let listOptions = result[0];\n @let size = result[1];\n \n <div [class]=\"options.cssClasses.popupContainer\" role=\"listbox\" [attr.aria-label]=\"options.texts.optionsList | localize\">\n <ng-container #liveSearchPlaceholder/>\n\n @for(optionsGroups of listOptions; track $index)\n {\n @let group = optionsGroups[1];\n @let opts = optionsGroups[0];\n\n @if(group)\n {\n <div role=\"group\"\n [id]=\"group.id\"\n [class]=\"options.cssClasses.optionGroup\"\n [attr.aria-posinset]=\"group.index + 1\"\n [attr.aria-setsize]=\"size\">\n <ng-container *ngTemplateOutlet=\"group.template() || defaultOptionGroupLook; context: {$implicit: group.text()}\"/>\n </div>\n }\n\n @for(option of opts; track option)\n {\n <div role=\"option\"\n [id]=\"`${selectBus.id}-${option.index}`\"\n [attr.aria-posinset]=\"option.index + 1\"\n [attr.aria-setsize]=\"size\"\n [attr.aria-selected]=\"option.selected()\"\n [class]=\"option | optionCssClasses: options.cssClasses: group\"\n (mouseover)=\"markActive(option)\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"optionClick(option)\">\n <div [class]=\"options.cssClasses.optionText\" highlightSearch #highlightSearch=\"highlightSearch\">\n <ng-container *ngTemplateOutlet=\"selectBus.selectOptions().templateGatherer.optionTemplate() || defaultOptionLook; context: {$implicit: option, popup: this}; injector: highlightSearch.injector\"/>\n </div>\n \n @if(option.selected() && selectBus.selectOptions().multiple)\n {\n <div [class]=\"options.cssClasses.optionChecked\"></div>\n }\n </div>\n }\n }\n @empty \n {\n <div>{{options.texts.noAvailableOptions | localize}}</div>\n }\n </div>\n}\n"]}
|
|
1
|
+
{"version":3,"file":"simplePopup.component.js","sourceRoot":"","sources":["../../../../../src/plugins/popup/simplePopup/simplePopup.component.ts","../../../../../src/plugins/popup/simplePopup/simplePopup.component.html"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectionStrategy, Component, effect, ElementRef, Inject, inject, Optional, Signal, viewChild} from '@angular/core';\r\nimport {NgTemplateOutlet} from '@angular/common';\r\nimport {LocalizePipe} from '@anglr/common';\r\nimport {RecursivePartial} from '@jscrpt/common';\r\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\r\n\r\nimport {Popup, PopupOptions, SelectOptionState, SelectPlugin, SimplePopupCssClasses} from '../../../interfaces';\r\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\r\nimport {CopyOptionsAsSignal} from '../../../decorators';\r\nimport {POPUP_OPTIONS} from '../../../misc/tokens';\r\nimport {AddNewOption, DisplayOptionValue, GroupedListOptions, OptionCssClasses} from '../../../pipes';\r\nimport {HighlightInstance, HighlightSearch} from '../../../directives';\r\n\r\n//TODO: hover into mouseover => use \"active\"\r\n\r\nconst defaultOptions: PopupOptions<SimplePopupCssClasses> =\r\n{\r\n visible: false,\r\n searchHighlighting: true,\r\n liveSearchEnabled: false,\r\n cssClasses:\r\n {\r\n componentElement: 'popup-component',\r\n option: 'option',\r\n optionGroup: 'option-group',\r\n optionText: 'option-text',\r\n optionChecked: 'fas fa-check',\r\n popupContainer: 'popup-container',\r\n active: 'active',\r\n selected: 'selected',\r\n inGroup: 'in-group',\r\n },\r\n texts:\r\n {\r\n noAvailableOptions: 'no options available',\r\n addNewOption: 'add new option',\r\n optionsList: 'options list',\r\n },\r\n};\r\n\r\n/**\r\n * Simple popup displaying options in column.\r\n */\r\n@Component(\r\n{\r\n selector: 'simple-popup',\r\n templateUrl: 'simplePopup.component.html',\r\n host:\r\n {\r\n '[id]': 'selectBus.id',\r\n '[class]': 'options.cssClasses.componentElement',\r\n },\r\n imports:\r\n [\r\n AddNewOption,\r\n LocalizePipe,\r\n HighlightSearch,\r\n NgTemplateOutlet,\r\n OptionCssClasses,\r\n DisplayOptionValue,\r\n GroupedListOptions,\r\n ],\r\n hostDirectives:\r\n [\r\n HighlightInstance,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SimplePopup<TValue = unknown, TPublicValue = TValue> implements Popup<TValue, TPublicValue, PopupOptions<SimplePopupCssClasses>>\r\n{\r\n //######################### public properties - implementation of SelectPlugin #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n @CopyOptionsAsSignal()\r\n public options: PopupOptions<SimplePopupCssClasses>;\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\r\n\r\n //######################### protected properties - children #########################\r\n\r\n /**\r\n * Instance of element that is used as placeholder for live search\r\n */\r\n protected liveSearchPlaceholder: Signal<ElementRef<HTMLElement>|undefined|null> = viewChild('liveSearchPlaceholder', {read: ElementRef});\r\n\r\n //######################### constructor #########################\r\n constructor(@Inject(POPUP_OPTIONS) @Optional() options?: RecursivePartial<PopupOptions<SimplePopupCssClasses>>|null,)\r\n {\r\n this.options = deepCopyWithArrayOverride(defaultOptions as PopupOptions<SimplePopupCssClasses>,\r\n options);\r\n\r\n effect(() =>\r\n {\r\n if(this.options.liveSearchEnabled)\r\n {\r\n const placeholder = this.liveSearchPlaceholder();\r\n\r\n if(!placeholder)\r\n {\r\n return;\r\n }\r\n\r\n placeholder.nativeElement.after(this.selectPlugins.LiveSearch.pluginElement.nativeElement);\r\n }\r\n });\r\n }\r\n\r\n //######################### protected methods - template bindings #########################\r\n\r\n /**\r\n * Prevents blur on option click\r\n * @param event - Event that occured\r\n */\r\n protected preventBlur(event: MouseEvent): void\r\n {\r\n event.preventDefault();\r\n }\r\n\r\n /**\r\n * Handles option click\r\n * @param option - Option that was clicked\r\n */\r\n protected optionClick(option: SelectOptionState<TValue>): void\r\n {\r\n this.selectBus.optionActivate.next(\r\n {\r\n source: this as SelectPlugin,\r\n sourceElement: this.pluginElement.nativeElement,\r\n data: option,\r\n });\r\n }\r\n\r\n /**\r\n * Marks option as active\r\n * @param option - Option to be marked as active\r\n */\r\n protected markActive(option: SelectOptionState<TValue>): void\r\n {\r\n this.selectBus.markOption.next(\r\n {\r\n source: this as SelectPlugin,\r\n sourceElement: this.pluginElement.nativeElement,\r\n data: option,\r\n });\r\n }\r\n}\r\n","<ng-template #defaultOptionLook let-option>{{option | addNewOption | localize}}{{option | displayOptionValue | localize}}</ng-template>\r\n<ng-template #defaultOptionGroupLook let-text>{{text}}</ng-template>\r\n\r\n@if(selectBus.popupVisible() || options.visible)\r\n{\r\n @let result = selectPlugins.OptionsHandler.listOptions() | groupedListOptions;\r\n @let listOptions = result[0];\r\n @let size = result[1];\r\n \r\n <div [class]=\"options.cssClasses.popupContainer\" role=\"listbox\" [attr.aria-label]=\"options.texts.optionsList | localize\">\r\n <ng-container #liveSearchPlaceholder/>\r\n\r\n @for(optionsGroups of listOptions; track $index)\r\n {\r\n @let group = optionsGroups[1];\r\n @let opts = optionsGroups[0];\r\n\r\n @if(group)\r\n {\r\n <div role=\"group\"\r\n [id]=\"group.id\"\r\n [class]=\"options.cssClasses.optionGroup\"\r\n [attr.aria-posinset]=\"group.index + 1\"\r\n [attr.aria-setsize]=\"size\">\r\n <ng-container *ngTemplateOutlet=\"group.template() || defaultOptionGroupLook; context: {$implicit: group.text()}\"/>\r\n </div>\r\n }\r\n\r\n @for(option of opts; track option)\r\n {\r\n <div role=\"option\"\r\n [id]=\"`${selectBus.id}-${option.index}`\"\r\n [attr.aria-posinset]=\"option.index + 1\"\r\n [attr.aria-setsize]=\"size\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [class]=\"option | optionCssClasses: options.cssClasses: group\"\r\n (mouseover)=\"markActive(option)\"\r\n (mousedown)=\"preventBlur($event)\"\r\n (click)=\"optionClick(option)\">\r\n <div [class]=\"options.cssClasses.optionText\" highlightSearch #highlightSearch=\"highlightSearch\">\r\n <ng-container *ngTemplateOutlet=\"selectBus.selectOptions().templateGatherer.optionTemplate() || defaultOptionLook; context: {$implicit: option, popup: this}; injector: highlightSearch.injector\"/>\r\n </div>\r\n \r\n @if(option.selected() && selectBus.selectOptions().multiple)\r\n {\r\n <div [class]=\"options.cssClasses.optionChecked\"></div>\r\n }\r\n </div>\r\n }\r\n }\r\n @empty \r\n {\r\n <div>{{options.texts.noAvailableOptions | localize}}</div>\r\n }\r\n </div>\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commonPositioner.component.js","sourceRoot":"","sources":["../../../../../src/plugins/positioner/commonPositioner/commonPositioner.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectionStrategy, Component, effect, ElementRef, Inject, inject, OnDestroy, Optional, Renderer2} from '@angular/core';\nimport {applyPositionResult, Position, POSITION, PositionPlacement} from '@anglr/common';\nimport {isPresent, RecursivePartial} from '@jscrpt/common';\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\nimport {Subscription} from 'rxjs';\n\nimport {Positioner, CommonPositionerOptions} from '../../../interfaces';\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\nimport {CopyOptionsAsSignal} from '../../../decorators';\nimport {POSITIONER_OPTIONS} from '../../../misc/tokens';\n\nconst defaultOptions: CommonPositionerOptions =\n{\n zIndex: 0,\n};\n\n/**\n * Component used for positioning popup using `Position` from `@anglr/common` package\n */\n@Component(\n{\n selector: 'common-positioner',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonPositioner<TValue = unknown, TPublicValue = TValue> implements Positioner<TValue, TPublicValue, CommonPositionerOptions>, OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Instance of service used for positioning\n */\n protected positioner: Position<HTMLElement> = inject(POSITION) as Position<HTMLElement>;\n\n /**\n * Instance of angular renderer\n */\n protected renderer: Renderer2 = inject(Renderer2);\n\n /**\n * Instance of resize observer\n */\n protected selectWidthObserver: ResizeObserver;\n\n /**\n * Subscription for position change\n */\n protected positionChange: Subscription|undefined|null;\n\n //######################### public properties - implementation of SelectPlugin #########################\n\n /**\n * @inheritdoc\n */\n @CopyOptionsAsSignal()\n public options: CommonPositionerOptions;\n\n /**\n * @inheritdoc\n */\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\n\n /**\n * @inheritdoc\n */\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\n\n /**\n * @inheritdoc\n */\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\n\n //######################### constructor #########################\n constructor(@Inject(POSITIONER_OPTIONS) @Optional() options?: RecursivePartial<CommonPositionerOptions>|null,)\n {\n this.options = deepCopyWithArrayOverride(defaultOptions as CommonPositionerOptions,\n options);\n\n this.selectWidthObserver = new ResizeObserver(([firstChange]) => this.renderer.setStyle(this.selectPlugins.Popup.pluginElement.nativeElement, 'minWidth', `${firstChange.contentRect.width}px`));\n this.selectWidthObserver.observe(this.selectBus.selectElement().nativeElement);\n\n effect(() => this.renderer.setStyle(this.selectPlugins.Popup.pluginElement.nativeElement, 'position', 'absolute'));\n effect(() => isPresent(this.options.zIndex) ? this.renderer.setStyle(this.selectPlugins.Popup.pluginElement.nativeElement, 'z-index', this.options.zIndex) : false);\n\n effect(() =>\n {\n this.positionChange?.unsubscribe();\n this.positionChange = new Subscription();\n\n this.positionChange.add(this.positioner\n .placeElement(this.selectPlugins.Popup.pluginElement.nativeElement, this.selectBus.selectElement().nativeElement, {autoUpdate: true, flip: true, placement: PositionPlacement.BottomStart})\n .subscribe(result => applyPositionResult(result)));\n });\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * @inheritdoc\n */\n public ngOnDestroy(): void\n {\n this.selectWidthObserver.disconnect();\n this.positionChange?.unsubscribe();\n this.positionChange = null;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"commonPositioner.component.js","sourceRoot":"","sources":["../../../../../src/plugins/positioner/commonPositioner/commonPositioner.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,uBAAuB,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAa,QAAQ,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACrI,OAAO,EAAC,mBAAmB,EAAY,QAAQ,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AACzF,OAAO,EAAC,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAC,yBAAyB,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAC,YAAY,EAAC,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAC,qBAAqB,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;;AAExD,MAAM,cAAc,GACpB;IACI,MAAM,EAAE,CAAC;CACZ,CAAC;AAEF;;GAEG;AAOH,MAAM,OAAO,gBAAgB;IA+CzB,iEAAiE;IACjE,YAAoD,OAAwD;QA9C5G,sEAAsE;QAEtE;;WAEG;QACO,eAAU,GAA0B,MAAM,CAAC,QAAQ,CAA0B,CAAC;QAExF;;WAEG;QACO,aAAQ,GAAc,MAAM,CAAC,SAAS,CAAC,CAAC;QAoBlD;;WAEG;QACI,kBAAa,GAAgD,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAElG;;WAEG;QACI,kBAAa,GAA4B,MAAM,CAAC,UAAU,CAAC,CAAC;QAEnE;;WAEG;QACI,cAAS,GAAoC,MAAM,CAAC,SAAS,CAAC,CAAC;QAKlE,IAAI,CAAC,OAAO,GAAG,yBAAyB,CAAC,cAAyC,EACzC,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC,mBAAmB,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QACjM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC;QAE/E,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QACnH,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEpK,MAAM,CAAC,GAAG,EAAE;YAER,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;YAEzC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU;iBAClC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,EAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC,WAAW,EAAC,CAAC;iBAC1L,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kGAAkG;IAElG;;OAEG;IACI,WAAW;QAEd,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC/B,CAAC;8GAhFQ,gBAAgB,kBAgDL,kBAAkB;kGAhD7B,gBAAgB,6EAHf,EAAE;;AAiCL;IADN,mBAAmB,EAAE;;iDACkB;2FA9B/B,gBAAgB;kBAN5B,SAAS;mBACV;oBACI,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAClD;;0BAiDgB,MAAM;2BAAC,kBAAkB;;0BAAG,QAAQ","sourcesContent":["import {ChangeDetectionStrategy, Component, effect, ElementRef, Inject, inject, OnDestroy, Optional, Renderer2} from '@angular/core';\r\nimport {applyPositionResult, Position, POSITION, PositionPlacement} from '@anglr/common';\r\nimport {isPresent, RecursivePartial} from '@jscrpt/common';\r\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\r\nimport {Subscription} from 'rxjs';\r\n\r\nimport {Positioner, CommonPositionerOptions} from '../../../interfaces';\r\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\r\nimport {CopyOptionsAsSignal} from '../../../decorators';\r\nimport {POSITIONER_OPTIONS} from '../../../misc/tokens';\r\n\r\nconst defaultOptions: CommonPositionerOptions =\r\n{\r\n zIndex: 0,\r\n};\r\n\r\n/**\r\n * Component used for positioning popup using `Position` from `@anglr/common` package\r\n */\r\n@Component(\r\n{\r\n selector: 'common-positioner',\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CommonPositioner<TValue = unknown, TPublicValue = TValue> implements Positioner<TValue, TPublicValue, CommonPositionerOptions>, OnDestroy\r\n{\r\n //######################### protected fields #########################\r\n\r\n /**\r\n * Instance of service used for positioning\r\n */\r\n protected positioner: Position<HTMLElement> = inject(POSITION) as Position<HTMLElement>;\r\n\r\n /**\r\n * Instance of angular renderer\r\n */\r\n protected renderer: Renderer2 = inject(Renderer2);\r\n\r\n /**\r\n * Instance of resize observer\r\n */\r\n protected selectWidthObserver: ResizeObserver;\r\n\r\n /**\r\n * Subscription for position change\r\n */\r\n protected positionChange: Subscription|undefined|null;\r\n\r\n //######################### public properties - implementation of SelectPlugin #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n @CopyOptionsAsSignal()\r\n public options: CommonPositionerOptions;\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\r\n\r\n //######################### constructor #########################\r\n constructor(@Inject(POSITIONER_OPTIONS) @Optional() options?: RecursivePartial<CommonPositionerOptions>|null,)\r\n {\r\n this.options = deepCopyWithArrayOverride(defaultOptions as CommonPositionerOptions,\r\n options);\r\n\r\n this.selectWidthObserver = new ResizeObserver(([firstChange]) => this.renderer.setStyle(this.selectPlugins.Popup.pluginElement.nativeElement, 'minWidth', `${firstChange.contentRect.width}px`));\r\n this.selectWidthObserver.observe(this.selectBus.selectElement().nativeElement);\r\n\r\n effect(() => this.renderer.setStyle(this.selectPlugins.Popup.pluginElement.nativeElement, 'position', 'absolute'));\r\n effect(() => isPresent(this.options.zIndex) ? this.renderer.setStyle(this.selectPlugins.Popup.pluginElement.nativeElement, 'z-index', this.options.zIndex) : false);\r\n\r\n effect(() =>\r\n {\r\n this.positionChange?.unsubscribe();\r\n this.positionChange = new Subscription();\r\n\r\n this.positionChange.add(this.positioner\r\n .placeElement(this.selectPlugins.Popup.pluginElement.nativeElement, this.selectBus.selectElement().nativeElement, {autoUpdate: true, flip: true, placement: PositionPlacement.BottomStart})\r\n .subscribe(result => applyPositionResult(result)));\r\n });\r\n }\r\n\r\n //######################### public methods - implementation of OnDestroy #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public ngOnDestroy(): void\r\n {\r\n this.selectWidthObserver.disconnect();\r\n this.positionChange?.unsubscribe();\r\n this.positionChange = null;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/positioner/index.ts"],"names":[],"mappings":"AAAA,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,iDAAiD,CAAC","sourcesContent":["export * from './commonPositioner/commonPositioner.component';\nexport * from './noPositioner/noPositioner.component';\nexport * from './popoverPositioner/popoverPositioner.component';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/positioner/index.ts"],"names":[],"mappings":"AAAA,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,iDAAiD,CAAC","sourcesContent":["export * from './commonPositioner/commonPositioner.component';\r\nexport * from './noPositioner/noPositioner.component';\r\nexport * from './popoverPositioner/popoverPositioner.component';\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noPositioner.component.js","sourceRoot":"","sources":["../../../../../src/plugins/positioner/noPositioner/noPositioner.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,uBAAuB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAGrF,OAAO,EAAC,qBAAqB,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;;AAExD;;GAEG;AAOH,MAAM,OAAO,YAAY;IANzB;QAQI,wGAAwG;QAExG;;WAEG;QAEI,YAAO,GAAoB,EAAE,CAAC;QAErC;;WAEG;QACI,kBAAa,GAAgD,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAElG;;WAEG;QACI,kBAAa,GAA4B,MAAM,CAAC,UAAU,CAAC,CAAC;QAEnE;;WAEG;QACI,cAAS,GAAoC,MAAM,CAAC,SAAS,CAAC,CAAC;KACzE;8GAxBY,YAAY;kGAAZ,YAAY,yEAHX,EAAE;;AAWL;IADN,mBAAmB,EAAE;;6CACe;2FAR5B,YAAY;kBANxB,SAAS;mBACV;oBACI,QAAQ,EAAE,eAAe;oBACzB,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAClD","sourcesContent":["import {ChangeDetectionStrategy, Component, ElementRef, inject} from '@angular/core';\n\nimport {Positioner} from '../../../interfaces';\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\nimport {CopyOptionsAsSignal} from '../../../decorators';\n\n/**\n * Component that does no positioning\n */\n@Component(\n{\n selector: 'no-positioner',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NoPositioner<TValue = unknown, TPublicValue = TValue> implements Positioner<TValue, TPublicValue, PositionOptions>\n{\n //######################### public properties - implementation of SelectPlugin #########################\n\n /**\n * @inheritdoc\n */\n @CopyOptionsAsSignal()\n public options: PositionOptions = {};\n\n /**\n * @inheritdoc\n */\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\n\n /**\n * @inheritdoc\n */\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\n\n /**\n * @inheritdoc\n */\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"noPositioner.component.js","sourceRoot":"","sources":["../../../../../src/plugins/positioner/noPositioner/noPositioner.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,uBAAuB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAGrF,OAAO,EAAC,qBAAqB,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;;AAExD;;GAEG;AAOH,MAAM,OAAO,YAAY;IANzB;QAQI,wGAAwG;QAExG;;WAEG;QAEI,YAAO,GAAoB,EAAE,CAAC;QAErC;;WAEG;QACI,kBAAa,GAAgD,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAElG;;WAEG;QACI,kBAAa,GAA4B,MAAM,CAAC,UAAU,CAAC,CAAC;QAEnE;;WAEG;QACI,cAAS,GAAoC,MAAM,CAAC,SAAS,CAAC,CAAC;KACzE;8GAxBY,YAAY;kGAAZ,YAAY,yEAHX,EAAE;;AAWL;IADN,mBAAmB,EAAE;;6CACe;2FAR5B,YAAY;kBANxB,SAAS;mBACV;oBACI,QAAQ,EAAE,eAAe;oBACzB,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAClD","sourcesContent":["import {ChangeDetectionStrategy, Component, ElementRef, inject} from '@angular/core';\r\n\r\nimport {Positioner} from '../../../interfaces';\r\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\r\nimport {CopyOptionsAsSignal} from '../../../decorators';\r\n\r\n/**\r\n * Component that does no positioning\r\n */\r\n@Component(\r\n{\r\n selector: 'no-positioner',\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NoPositioner<TValue = unknown, TPublicValue = TValue> implements Positioner<TValue, TPublicValue, PositionOptions>\r\n{\r\n //######################### public properties - implementation of SelectPlugin #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n @CopyOptionsAsSignal()\r\n public options: PositionOptions = {};\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popoverPositioner.component.js","sourceRoot":"","sources":["../../../../../src/plugins/positioner/popoverPositioner/popoverPositioner.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,uBAAuB,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAa,QAAQ,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACrI,OAAO,EAAC,QAAQ,EAAmB,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAC,yBAAyB,EAAC,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAAC,qBAAqB,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;;AAExD,MAAM,cAAc,GACpB;IACI,WAAW,EAAE,KAAK;CACrB,CAAC;AAEF;;GAEG;AAOH,MAAM,OAAO,iBAAiB;IAgC1B,iEAAiE;IACjE,YAAoD,OAAyD;QA/B7G,sEAAsE;QAEtE;;WAEG;QACO,aAAQ,GAAc,MAAM,CAAC,SAAS,CAAC,CAAC;QAUlD;;WAEG;QACI,kBAAa,GAAgD,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAElG;;WAEG;QACI,kBAAa,GAA4B,MAAM,CAAC,UAAU,CAAC,CAAC;QAEnE;;WAEG;QACI,cAAS,GAAoC,MAAM,CAAC,SAAS,CAAC,CAAC;QAKlE,IAAI,CAAC,OAAO,GAAG,yBAAyB,CAAC,cAA0C,EAC1C,OAAO,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,EAAE;YAER,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC;YAE7E,YAAY,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACzD,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACjG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,EAAE;YAER,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC;YAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YAEnD,IAAG,YAAY,EACf,CAAC;gBACG,YAAY,EAAE,WAAW,EAAE,CAAC;YAChC,CAAC;iBAED,CAAC;gBACG,YAAY,EAAE,WAAW,EAAE,CAAC;YAChC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kGAAkG;IAElG;;OAEG;IACI,WAAW;QAEd,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC;QAE7E,YAAY,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,uEAAuE;IAEvE;;OAEG;IAEO,MAAM,CAAC,KAAkB;QAE/B,IAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAC7B,CAAC;YACG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;8GAxFQ,iBAAiB,kBAiCN,kBAAkB;kGAjC7B,iBAAiB,8EAHhB,EAAE;;AAkBL;IADN,mBAAmB,EAAE;;kDACmB;AAmE/B;IADT,QAAQ;;qCACe,WAAW;;+CAMlC;2FAxFQ,iBAAiB;kBAN7B,SAAS;mBACV;oBACI,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAClD;;0BAkCgB,MAAM;2BAAC,kBAAkB;;0BAAG,QAAQ","sourcesContent":["import {ChangeDetectionStrategy, Component, effect, ElementRef, Inject, inject, OnDestroy, Optional, Renderer2} from '@angular/core';\nimport {BindThis, RecursivePartial} from '@jscrpt/common';\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\n\nimport {PopoverPositionerOptions, Positioner} from '../../../interfaces';\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\nimport {CopyOptionsAsSignal} from '../../../decorators';\nimport {POSITIONER_OPTIONS} from '../../../misc/tokens';\n\nconst defaultOptions: PopoverPositionerOptions =\n{\n popoverAuto: false,\n};\n\n/**\n * Component used for positioning popup using native popover features of browser\n */\n@Component(\n{\n selector: 'popover-positioner',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopoverPositioner<TValue = unknown, TPublicValue = TValue> implements Positioner<TValue, TPublicValue, PopoverPositionerOptions>, OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Instance of angular renderer\n */\n protected renderer: Renderer2 = inject(Renderer2);\n\n //######################### public properties - implementation of SelectPlugin #########################\n\n /**\n * @inheritdoc\n */\n @CopyOptionsAsSignal()\n public options: PopoverPositionerOptions;\n\n /**\n * @inheritdoc\n */\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\n\n /**\n * @inheritdoc\n */\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\n\n /**\n * @inheritdoc\n */\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\n\n //######################### constructor #########################\n constructor(@Inject(POSITIONER_OPTIONS) @Optional() options?: RecursivePartial<PopoverPositionerOptions>|null,)\n {\n this.options = deepCopyWithArrayOverride(defaultOptions as PopoverPositionerOptions,\n options);\n\n effect(() =>\n {\n const popupElement = this.selectPlugins.popup()?.pluginElement.nativeElement;\n\n popupElement?.removeEventListener('toggle', this.toggle);\n popupElement?.addEventListener('toggle', this.toggle);\n this.renderer.setProperty(popupElement, 'popover', this.options.popoverAuto ? 'auto' : 'manual');\n this.renderer.addClass(popupElement, 'popover-popup');\n });\n\n effect(() =>\n {\n const popupElement = this.selectPlugins.popup()?.pluginElement.nativeElement;\n const popupVisible = this.selectBus.popupVisible();\n\n if(popupVisible)\n {\n popupElement?.showPopover();\n }\n else\n {\n popupElement?.hidePopover();\n }\n });\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * @inheritdoc\n */\n public ngOnDestroy(): void\n {\n const popupElement = this.selectPlugins.popup()?.pluginElement.nativeElement;\n\n popupElement?.removeEventListener('toggle', this.toggle);\n }\n\n //######################### protected methods #########################\n\n /**\n * Toggles the popover\n */\n @BindThis\n protected toggle(event: ToggleEvent): void\n {\n if(event.newState == 'closed')\n {\n this.selectBus.popupVisible.set(false);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"popoverPositioner.component.js","sourceRoot":"","sources":["../../../../../src/plugins/positioner/popoverPositioner/popoverPositioner.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectionStrategy, Component, effect, ElementRef, Inject, inject, OnDestroy, Optional, Renderer2} from '@angular/core';\r\nimport {BindThis, RecursivePartial} from '@jscrpt/common';\r\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\r\n\r\nimport {PopoverPositionerOptions, Positioner} from '../../../interfaces';\r\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\r\nimport {CopyOptionsAsSignal} from '../../../decorators';\r\nimport {POSITIONER_OPTIONS} from '../../../misc/tokens';\r\n\r\nconst defaultOptions: PopoverPositionerOptions =\r\n{\r\n popoverAuto: false,\r\n};\r\n\r\n/**\r\n * Component used for positioning popup using native popover features of browser\r\n */\r\n@Component(\r\n{\r\n selector: 'popover-positioner',\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PopoverPositioner<TValue = unknown, TPublicValue = TValue> implements Positioner<TValue, TPublicValue, PopoverPositionerOptions>, OnDestroy\r\n{\r\n //######################### protected fields #########################\r\n\r\n /**\r\n * Instance of angular renderer\r\n */\r\n protected renderer: Renderer2 = inject(Renderer2);\r\n\r\n //######################### public properties - implementation of SelectPlugin #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n @CopyOptionsAsSignal()\r\n public options: PopoverPositionerOptions;\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\r\n\r\n //######################### constructor #########################\r\n constructor(@Inject(POSITIONER_OPTIONS) @Optional() options?: RecursivePartial<PopoverPositionerOptions>|null,)\r\n {\r\n this.options = deepCopyWithArrayOverride(defaultOptions as PopoverPositionerOptions,\r\n options);\r\n\r\n effect(() =>\r\n {\r\n const popupElement = this.selectPlugins.popup()?.pluginElement.nativeElement;\r\n\r\n popupElement?.removeEventListener('toggle', this.toggle);\r\n popupElement?.addEventListener('toggle', this.toggle);\r\n this.renderer.setProperty(popupElement, 'popover', this.options.popoverAuto ? 'auto' : 'manual');\r\n this.renderer.addClass(popupElement, 'popover-popup');\r\n });\r\n\r\n effect(() =>\r\n {\r\n const popupElement = this.selectPlugins.popup()?.pluginElement.nativeElement;\r\n const popupVisible = this.selectBus.popupVisible();\r\n\r\n if(popupVisible)\r\n {\r\n popupElement?.showPopover();\r\n }\r\n else\r\n {\r\n popupElement?.hidePopover();\r\n }\r\n });\r\n }\r\n\r\n //######################### public methods - implementation of OnDestroy #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public ngOnDestroy(): void\r\n {\r\n const popupElement = this.selectPlugins.popup()?.pluginElement.nativeElement;\r\n\r\n popupElement?.removeEventListener('toggle', this.toggle);\r\n }\r\n\r\n //######################### protected methods #########################\r\n\r\n /**\r\n * Toggles the popover\r\n */\r\n @BindThis\r\n protected toggle(event: ToggleEvent): void\r\n {\r\n if(event.newState == 'closed')\r\n {\r\n this.selectBus.popupVisible.set(false);\r\n }\r\n }\r\n}\r\n"]}
|
package/es2022/src/plugins/valueHandler/dynamicValueHandler/dynamicValueHandler.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamicValueHandler.component.js","sourceRoot":"","sources":["../../../../../src/plugins/valueHandler/dynamicValueHandler/dynamicValueHandler.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectionStrategy, Component, computed, ElementRef, Inject, inject, Optional, signal, Signal, untracked} from '@angular/core';\nimport {isPresent, RecursivePartial} from '@jscrpt/common';\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\n\nimport {ValueHandler, DynamicValueHandlerOptions, SelectOptionState} from '../../../interfaces';\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\nimport {CopyOptionsAsSignal} from '../../../decorators';\nimport {VALUE_HANDLER_OPTIONS} from '../../../misc/tokens';\nimport {computedValue} from '../../../misc/utils';\nimport {ValueComputedFunc} from '../../../misc/types';\n\nconst defaultOptions: DynamicValueHandlerOptions =\n{\n optionGetter: value =>\n {\n return {\n text: signal('please provide your optionGetter'),\n value: signal(value),\n group: signal(undefined),\n };\n },\n};\n\n/**\n * Value handler for dynamic values. That means that available values change.\n */\n@Component(\n{\n selector: 'dynamic-value-handler',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DynamicValueHandler<TValue = unknown, TPublicValue = TValue> implements ValueHandler<TValue, TPublicValue, DynamicValueHandlerOptions<TValue, TPublicValue>>\n{\n //######################### public properties - implementation of SelectPlugin #########################\n\n /**\n * @inheritdoc\n */\n @CopyOptionsAsSignal()\n public options: DynamicValueHandlerOptions<TValue, TPublicValue>;\n\n /**\n * @inheritdoc\n */\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\n\n /**\n * @inheritdoc\n */\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\n\n /**\n * @inheritdoc\n */\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\n\n //######################### public properties - implementation of ValueHandler #########################\n\n /**\n * @inheritdoc\n */\n public readonly value: Signal<TPublicValue|TPublicValue[]|undefined|null> = computed((computedValue as ValueComputedFunc<TPublicValue>).bind(this));\n\n //######################### constructor #########################\n constructor(@Inject(VALUE_HANDLER_OPTIONS) @Optional() options?: RecursivePartial<DynamicValueHandlerOptions<TValue, TPublicValue>>|null,)\n {\n this.options = deepCopyWithArrayOverride(defaultOptions as DynamicValueHandlerOptions<TValue, TPublicValue>,\n options);\n }\n\n //######################### public methods - implementation of ValueHandler #########################\n\n /**\n * @inheritdoc\n */\n public async setValue(value: TPublicValue|TPublicValue[]|undefined|null): Promise<void>\n {\n await untracked(async () =>\n {\n const selected = this.selectBus.selectedOptions();\n\n if(Array.isArray(selected))\n {\n for(const option of selected)\n {\n option.selected.set(false);\n }\n }\n else if(isPresent(selected))\n {\n selected.selected.set(false);\n }\n\n if(this.selectBus.selectOptions().multiple)\n {\n if(!Array.isArray(value))\n {\n throw new Error('You have to provide an array of values if you set multiple!');\n }\n\n const selectedOptions: SelectOptionState<TValue>[] = [];\n\n for(const val of value)\n {\n const selectedOption = await this.options.optionGetter(val);\n\n if(!selectedOption)\n {\n continue;\n }\n\n const opt = selectedOption as SelectOptionState<TValue>;\n opt.active = signal(false);\n opt.selected = signal(true);\n opt.index = 0;\n\n selectedOptions.push(opt);\n }\n\n this.selectBus.selectedOptions.set(selectedOptions);\n }\n else\n {\n const selectedOption = await this.options.optionGetter(value as TPublicValue);\n const opt = selectedOption as SelectOptionState<TValue>|undefined|null;\n\n if(opt)\n {\n opt.active = signal(false);\n opt.selected = signal(true);\n opt.index = 0;\n }\n\n this.selectBus.selectedOptions.set(opt ?? null);\n }\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dynamicValueHandler.component.js","sourceRoot":"","sources":["../../../../../src/plugins/valueHandler/dynamicValueHandler/dynamicValueHandler.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectionStrategy, Component, computed, ElementRef, Inject, inject, Optional, signal, Signal, untracked} from '@angular/core';\r\nimport {isPresent, RecursivePartial} from '@jscrpt/common';\r\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\r\n\r\nimport {ValueHandler, DynamicValueHandlerOptions, SelectOptionState} from '../../../interfaces';\r\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\r\nimport {CopyOptionsAsSignal} from '../../../decorators';\r\nimport {VALUE_HANDLER_OPTIONS} from '../../../misc/tokens';\r\nimport {computedValue} from '../../../misc/utils';\r\nimport {ValueComputedFunc} from '../../../misc/types';\r\n\r\nconst defaultOptions: DynamicValueHandlerOptions =\r\n{\r\n optionGetter: value =>\r\n {\r\n return {\r\n text: signal('please provide your optionGetter'),\r\n value: signal(value),\r\n group: signal(undefined),\r\n };\r\n },\r\n};\r\n\r\n/**\r\n * Value handler for dynamic values. That means that available values change.\r\n */\r\n@Component(\r\n{\r\n selector: 'dynamic-value-handler',\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DynamicValueHandler<TValue = unknown, TPublicValue = TValue> implements ValueHandler<TValue, TPublicValue, DynamicValueHandlerOptions<TValue, TPublicValue>>\r\n{\r\n //######################### public properties - implementation of SelectPlugin #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n @CopyOptionsAsSignal()\r\n public options: DynamicValueHandlerOptions<TValue, TPublicValue>;\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\r\n\r\n //######################### public properties - implementation of ValueHandler #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public readonly value: Signal<TPublicValue|TPublicValue[]|undefined|null> = computed((computedValue as ValueComputedFunc<TPublicValue>).bind(this));\r\n\r\n //######################### constructor #########################\r\n constructor(@Inject(VALUE_HANDLER_OPTIONS) @Optional() options?: RecursivePartial<DynamicValueHandlerOptions<TValue, TPublicValue>>|null,)\r\n {\r\n this.options = deepCopyWithArrayOverride(defaultOptions as DynamicValueHandlerOptions<TValue, TPublicValue>,\r\n options);\r\n }\r\n\r\n //######################### public methods - implementation of ValueHandler #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public async setValue(value: TPublicValue|TPublicValue[]|undefined|null): Promise<void>\r\n {\r\n await untracked(async () =>\r\n {\r\n const selected = this.selectBus.selectedOptions();\r\n\r\n if(Array.isArray(selected))\r\n {\r\n for(const option of selected)\r\n {\r\n option.selected.set(false);\r\n }\r\n }\r\n else if(isPresent(selected))\r\n {\r\n selected.selected.set(false);\r\n }\r\n\r\n if(this.selectBus.selectOptions().multiple)\r\n {\r\n if(!Array.isArray(value))\r\n {\r\n throw new Error('You have to provide an array of values if you set multiple!');\r\n }\r\n\r\n const selectedOptions: SelectOptionState<TValue>[] = [];\r\n\r\n for(const val of value)\r\n {\r\n const selectedOption = await this.options.optionGetter(val);\r\n\r\n if(!selectedOption)\r\n {\r\n continue;\r\n }\r\n\r\n const opt = selectedOption as SelectOptionState<TValue>;\r\n opt.active = signal(false);\r\n opt.selected = signal(true);\r\n opt.index = 0;\r\n\r\n selectedOptions.push(opt);\r\n }\r\n\r\n this.selectBus.selectedOptions.set(selectedOptions);\r\n }\r\n else\r\n {\r\n const selectedOption = await this.options.optionGetter(value as TPublicValue);\r\n const opt = selectedOption as SelectOptionState<TValue>|undefined|null;\r\n\r\n if(opt)\r\n {\r\n opt.active = signal(false);\r\n opt.selected = signal(true);\r\n opt.index = 0;\r\n }\r\n\r\n this.selectBus.selectedOptions.set(opt ?? null);\r\n }\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/valueHandler/index.ts"],"names":[],"mappings":"AAAA,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC","sourcesContent":["export * from './dynamicValueHandler/dynamicValueHandler.component';\nexport * from './staticValueHandler/staticValueHandler.component';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/valueHandler/index.ts"],"names":[],"mappings":"AAAA,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC","sourcesContent":["export * from './dynamicValueHandler/dynamicValueHandler.component';\r\nexport * from './staticValueHandler/staticValueHandler.component';\r\n"]}
|
package/es2022/src/plugins/valueHandler/staticValueHandler/staticValueHandler.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staticValueHandler.component.js","sourceRoot":"","sources":["../../../../../src/plugins/valueHandler/staticValueHandler/staticValueHandler.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectionStrategy, Component, computed, effect, ElementRef, Inject, inject, Optional, signal, Signal, untracked, WritableSignal} from '@angular/core';\nimport {LOGGER, Logger} from '@anglr/common';\nimport {isBlank, isPresent, RecursivePartial} from '@jscrpt/common';\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\n\nimport {SelectOptionState, ValueHandler, ValueHandlerOptions} from '../../../interfaces';\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\nimport {CopyOptionsAsSignal} from '../../../decorators';\nimport {VALUE_HANDLER_OPTIONS} from '../../../misc/tokens';\nimport {compareValueAndOption, computedValue} from '../../../misc/utils';\nimport {ValueComputedFunc} from '../../../misc/types';\n\nconst defaultOptions: ValueHandlerOptions =\n{\n};\n\n/**\n * Value handler for static values. That means all values are available right away statically.\n */\n@Component(\n{\n selector: 'static-value-handler',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StaticValueHandler<TValue = unknown, TPublicValue = TValue> implements ValueHandler<TValue, TPublicValue, ValueHandlerOptions>\n{\n //######################### protected fields #########################\n\n /**\n * Postponed value that will be set when options are loaded. This is needed for case when value is set before options are loaded, so we cannot set value right away, but we will handle setting value when options are loaded\n */\n protected postponedValue: WritableSignal<TPublicValue|TPublicValue[]|undefined|null> = signal(null);\n\n //######################### public properties - implementation of SelectPlugin #########################\n\n /**\n * @inheritdoc\n */\n @CopyOptionsAsSignal()\n public options: ValueHandlerOptions;\n\n /**\n * @inheritdoc\n */\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\n\n /**\n * @inheritdoc\n */\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\n\n /**\n * @inheritdoc\n */\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\n\n /**\n * Instance of logger for logging purposes\n */\n protected logger: Logger = inject(LOGGER);\n\n //######################### public properties - implementation of ValueHandler #########################\n\n /**\n * @inheritdoc\n */\n public readonly value: Signal<TPublicValue|TPublicValue[]|undefined|null> = computed(() => this.postponedValue() ?? (computedValue as ValueComputedFunc<TPublicValue>).bind(this)());\n\n //######################### constructor #########################\n constructor(@Inject(VALUE_HANDLER_OPTIONS) @Optional() options?: RecursivePartial<ValueHandlerOptions>|null,)\n {\n this.options = deepCopyWithArrayOverride(defaultOptions as ValueHandlerOptions,\n options);\n\n effect(() =>\n {\n const availableOptions = this.selectPlugins.OptionsHandler.availableOptions();\n const postponedValue = untracked(() => this.postponedValue());\n\n if(isPresent(availableOptions) && isPresent(postponedValue))\n {\n this.logger.verbose('Select: Value handler: setting postponed value \"{{@(4)value}}\"', {value: postponedValue});\n\n this.setValueInternal(postponedValue, availableOptions);\n this.postponedValue.set(null);\n }\n });\n }\n\n //######################### public methods - implementation of ValueHandler #########################\n\n /**\n * @inheritdoc\n */\n public setValue(value: TPublicValue|TPublicValue[]|undefined|null): void\n {\n this.logger.verbose('Select: Value handler: setting value \"{{@(4)value}}\"', {value});\n const availableOptions = untracked(() => this.selectPlugins.OptionsHandler.availableOptions());\n\n //Options are not loaded yet, so we cannot set value, but we will handle setting value when options are loaded\n if(isBlank(availableOptions))\n {\n this.logger.verbose('Select: Value handler: options not loaded yet, postponing value \"{{@(4)value}}\"', {value});\n this.postponedValue.set(value);\n\n return;\n }\n\n this.postponedValue.set(null);\n this.setValueInternal(value, availableOptions);\n }\n\n //######################### protected methods #########################\n\n /**\n * Handles setting value when options are loaded\n * @param value - Value to be set\n * @param availableOptions - Available options that are checked whether they contain value that is being set, so we can set value only if it is available in options\n */\n protected setValueInternal(value: TPublicValue|TPublicValue[]|undefined|null, availableOptions: readonly SelectOptionState<TValue>[]): void\n {\n //this keeps only values that are available in options\n untracked(() =>\n {\n const selected = this.selectBus.selectedOptions();\n\n if(Array.isArray(selected))\n {\n for(const option of selected)\n {\n option.selected.set(false);\n }\n }\n else if(isPresent(selected))\n {\n selected.selected.set(false);\n }\n\n if(this.selectBus.selectOptions().multiple)\n {\n if(isBlank(value))\n {\n this.logger.verbose('Select: Value handler: value is blank, clearing selected options');\n\n this.selectBus.selectedOptions.set([]);\n\n return;\n }\n\n if(!Array.isArray(value))\n {\n throw new Error('Value must be an array when multiple is set');\n }\n\n const selectedOptions: SelectOptionState<TValue>[] = [];\n\n for(const val of value)\n {\n const option = availableOptions.find(opt => compareValueAndOption(val, opt, this.selectBus));\n\n if(option)\n {\n option.selected.set(true);\n selectedOptions.push(option);\n }\n }\n\n this.logger.verbose('Select: Value handler: selecting multiple options value \"{{@(4)value}}\"', {value: selectedOptions});\n this.selectBus.selectedOptions.set(selectedOptions);\n }\n else\n {\n const selectedOption = availableOptions.find(opt => compareValueAndOption(value as TPublicValue, opt, this.selectBus));\n selectedOption?.selected.set(true);\n this.logger.verbose('Select: Value handler: selecting single option value \"{{@(4)value}}\"', {value: selectedOption?.value()});\n\n this.selectBus.selectedOptions.set(selectedOption ?? null);\n }\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"staticValueHandler.component.js","sourceRoot":"","sources":["../../../../../src/plugins/valueHandler/staticValueHandler/staticValueHandler.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectionStrategy, Component, computed, effect, ElementRef, Inject, inject, Optional, signal, Signal, untracked, WritableSignal} from '@angular/core';\r\nimport {LOGGER, Logger} from '@anglr/common';\r\nimport {isBlank, isPresent, RecursivePartial} from '@jscrpt/common';\r\nimport {deepCopyWithArrayOverride} from '@jscrpt/common/lodash';\r\n\r\nimport {SelectOptionState, ValueHandler, ValueHandlerOptions} from '../../../interfaces';\r\nimport {SelectPluginInstances, SelectBus} from '../../../misc/classes';\r\nimport {CopyOptionsAsSignal} from '../../../decorators';\r\nimport {VALUE_HANDLER_OPTIONS} from '../../../misc/tokens';\r\nimport {compareValueAndOption, computedValue} from '../../../misc/utils';\r\nimport {ValueComputedFunc} from '../../../misc/types';\r\n\r\nconst defaultOptions: ValueHandlerOptions =\r\n{\r\n};\r\n\r\n/**\r\n * Value handler for static values. That means all values are available right away statically.\r\n */\r\n@Component(\r\n{\r\n selector: 'static-value-handler',\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class StaticValueHandler<TValue = unknown, TPublicValue = TValue> implements ValueHandler<TValue, TPublicValue, ValueHandlerOptions>\r\n{\r\n //######################### protected fields #########################\r\n\r\n /**\r\n * Postponed value that will be set when options are loaded. This is needed for case when value is set before options are loaded, so we cannot set value right away, but we will handle setting value when options are loaded\r\n */\r\n protected postponedValue: WritableSignal<TPublicValue|TPublicValue[]|undefined|null> = signal(null);\r\n\r\n //######################### public properties - implementation of SelectPlugin #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n @CopyOptionsAsSignal()\r\n public options: ValueHandlerOptions;\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectPlugins: SelectPluginInstances<TValue, TPublicValue> = inject(SelectPluginInstances);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public pluginElement: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public selectBus: SelectBus<TValue, TPublicValue> = inject(SelectBus);\r\n\r\n /**\r\n * Instance of logger for logging purposes\r\n */\r\n protected logger: Logger = inject(LOGGER);\r\n\r\n //######################### public properties - implementation of ValueHandler #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public readonly value: Signal<TPublicValue|TPublicValue[]|undefined|null> = computed(() => this.postponedValue() ?? (computedValue as ValueComputedFunc<TPublicValue>).bind(this)());\r\n\r\n //######################### constructor #########################\r\n constructor(@Inject(VALUE_HANDLER_OPTIONS) @Optional() options?: RecursivePartial<ValueHandlerOptions>|null,)\r\n {\r\n this.options = deepCopyWithArrayOverride(defaultOptions as ValueHandlerOptions,\r\n options);\r\n\r\n effect(() =>\r\n {\r\n const availableOptions = this.selectPlugins.OptionsHandler.availableOptions();\r\n const postponedValue = untracked(() => this.postponedValue());\r\n\r\n if(isPresent(availableOptions) && isPresent(postponedValue))\r\n {\r\n this.logger.verbose('Select: Value handler: setting postponed value \"{{@(4)value}}\"', {value: postponedValue});\r\n\r\n this.setValueInternal(postponedValue, availableOptions);\r\n this.postponedValue.set(null);\r\n }\r\n });\r\n }\r\n\r\n //######################### public methods - implementation of ValueHandler #########################\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public setValue(value: TPublicValue|TPublicValue[]|undefined|null): void\r\n {\r\n this.logger.verbose('Select: Value handler: setting value \"{{@(4)value}}\"', {value});\r\n const availableOptions = untracked(() => this.selectPlugins.OptionsHandler.availableOptions());\r\n\r\n //Options are not loaded yet, so we cannot set value, but we will handle setting value when options are loaded\r\n if(isBlank(availableOptions))\r\n {\r\n this.logger.verbose('Select: Value handler: options not loaded yet, postponing value \"{{@(4)value}}\"', {value});\r\n this.postponedValue.set(value);\r\n\r\n return;\r\n }\r\n\r\n this.postponedValue.set(null);\r\n this.setValueInternal(value, availableOptions);\r\n }\r\n\r\n //######################### protected methods #########################\r\n\r\n /**\r\n * Handles setting value when options are loaded\r\n * @param value - Value to be set\r\n * @param availableOptions - Available options that are checked whether they contain value that is being set, so we can set value only if it is available in options\r\n */\r\n protected setValueInternal(value: TPublicValue|TPublicValue[]|undefined|null, availableOptions: readonly SelectOptionState<TValue>[]): void\r\n {\r\n //this keeps only values that are available in options\r\n untracked(() =>\r\n {\r\n const selected = this.selectBus.selectedOptions();\r\n\r\n if(Array.isArray(selected))\r\n {\r\n for(const option of selected)\r\n {\r\n option.selected.set(false);\r\n }\r\n }\r\n else if(isPresent(selected))\r\n {\r\n selected.selected.set(false);\r\n }\r\n\r\n if(this.selectBus.selectOptions().multiple)\r\n {\r\n if(isBlank(value))\r\n {\r\n this.logger.verbose('Select: Value handler: value is blank, clearing selected options');\r\n\r\n this.selectBus.selectedOptions.set([]);\r\n\r\n return;\r\n }\r\n\r\n if(!Array.isArray(value))\r\n {\r\n throw new Error('Value must be an array when multiple is set');\r\n }\r\n\r\n const selectedOptions: SelectOptionState<TValue>[] = [];\r\n\r\n for(const val of value)\r\n {\r\n const option = availableOptions.find(opt => compareValueAndOption(val, opt, this.selectBus));\r\n\r\n if(option)\r\n {\r\n option.selected.set(true);\r\n selectedOptions.push(option);\r\n }\r\n }\r\n\r\n this.logger.verbose('Select: Value handler: selecting multiple options value \"{{@(4)value}}\"', {value: selectedOptions});\r\n this.selectBus.selectedOptions.set(selectedOptions);\r\n }\r\n else\r\n {\r\n const selectedOption = availableOptions.find(opt => compareValueAndOption(value as TPublicValue, opt, this.selectBus));\r\n selectedOption?.selected.set(true);\r\n this.logger.verbose('Select: Value handler: selecting single option value \"{{@(4)value}}\"', {value: selectedOption?.value()});\r\n\r\n this.selectBus.selectedOptions.set(selectedOption ?? null);\r\n }\r\n });\r\n }\r\n}\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@anglr/select",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Angular component representing html select",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"sideEffects": false,
|
|
7
|
-
"workspaces": [
|
|
8
|
-
"demo",
|
|
9
|
-
"."
|
|
10
|
-
],
|
|
11
|
-
"scripts": {
|
|
12
|
-
"build": "ngc --declaration --declarationDir . --declarationMap",
|
|
13
|
-
"clean": "rimraf --glob */temp temp es2022 **/tsdoc-metadata.json src/**/*.d.ts src/**/*.d.ts.map */src/**/*.d.ts */src/**/*.d.ts.map ./*.d.ts ./*.d.ts.map */*.d.ts",
|
|
14
|
-
"clean:deps": "rimraf package-lock.json node_modules || echo 'node_modules removed'",
|
|
15
|
-
"clean:all": "npm run clean && npm run clean:deps",
|
|
16
|
-
"ngc": "ngc",
|
|
17
|
-
"version:placeholder": "replace-in-file /\\\"version\\\":\\s\\\".*?\\\"/g \"\\\"version\\\": \\\"0.0.0-placeholder\\\"\" package.json",
|
|
18
|
-
"version:git": "ngv -e \"replace-in-file 0.0.0-placeholder $GIT_VERSION package.json && echo $GIT_VERSION > version.bak\"",
|
|
19
|
-
"version:build": "ngv -e \"echo $GIT_VERSION > version.bak\"",
|
|
20
|
-
"prepublishOnly": "npm run bundle && npm run version:placeholder && npm run version:git",
|
|
21
|
-
"postpublish": "npm run doc && npm run version:placeholder && npm run clean",
|
|
22
|
-
"bundle": "npm run clean && npm run build",
|
|
23
|
-
"deploy": "npm publish --loglevel error",
|
|
24
|
-
"deploy:next": "npm publish --tag next --loglevel error",
|
|
25
|
-
"lint": "eslint src/**/*.ts",
|
|
26
|
-
"preclean:all": "lerna run clean:all --scope=ng-universal-demo",
|
|
27
|
-
"start": "lerna run start --scope=ng-universal-demo",
|
|
28
|
-
"doc": "path-exists docs && npm run doc:generate || echo \"No docs generated!\"",
|
|
29
|
-
"predoc:generate": "cd docs && git pull && cd ..",
|
|
30
|
-
"postdoc:generate": "npm run doc:save",
|
|
31
|
-
"doc:generate": "npm run doc:generate:select && npm run doc:generate:elements&& npm run doc:generate:extensions",
|
|
32
|
-
"doc:save": "cd docs && git add . && git commit -m \"INT: updated API docs ng-select\" && git push && cd ..",
|
|
33
|
-
"doc:generate:select": "rimraf docs/content/api/ng-select && npm run doc:json:select && npm run doc:md:select && npm run doc:api:select",
|
|
34
|
-
"doc:json:select": "api-extractor run --local --verbose -c api-extractor.json",
|
|
35
|
-
"doc:md:select": "api-documenter markdown -i temp -o docs/content/api/ng-select",
|
|
36
|
-
"doc:api:select": "copyfiles -u 1 temp/select.api.md docs/content/api/ng-select && rimraf temp",
|
|
37
|
-
"doc:generate:elements": "rimraf docs/content/api/ng-select-elements && npm run doc:json:elements && npm run doc:md:elements && npm run doc:api:elements",
|
|
38
|
-
"doc:json:elements": "api-extractor run --local --verbose -c elements/api-extractor.json",
|
|
39
|
-
"doc:md:elements": "api-documenter markdown -i elements/temp -o docs/content/api/ng-select-elements",
|
|
40
|
-
"doc:api:elements": "copyfiles -u 2 elements/temp/select-elements.api.md docs/content/api/ng-select-elements && rimraf elements/temp",
|
|
41
|
-
"doc:generate:extensions": "rimraf docs/content/api/ng-select-extensions && npm run doc:json:extensions && npm run doc:md:extensions && npm run doc:api:extensions",
|
|
42
|
-
"doc:json:extensions": "api-extractor run --local --verbose -c extensions/api-extractor.json",
|
|
43
|
-
"doc:md:extensions": "api-documenter markdown -i extensions/temp -o docs/content/api/ng-select-extensions",
|
|
44
|
-
"doc:api:extensions": "copyfiles -u 2 extensions/temp/select-extensions.api.md docs/content/api/ng-select-extensions && rimraf extensions/temp"
|
|
45
|
-
},
|
|
46
|
-
"engines": {
|
|
47
|
-
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
|
|
48
|
-
},
|
|
49
|
-
"repository": {
|
|
50
|
-
"type": "git",
|
|
51
|
-
"url": "https://github.com/ressurectit/ng-select"
|
|
52
|
-
},
|
|
53
|
-
"keywords": [
|
|
54
|
-
"angular",
|
|
55
|
-
"ng",
|
|
56
|
-
"select"
|
|
57
|
-
],
|
|
58
|
-
"author": "kukjevov",
|
|
59
|
-
"license": "MIT",
|
|
60
|
-
"bugs": {
|
|
61
|
-
"url": "https://github.com/ressurectit/ng-select/issues"
|
|
62
|
-
},
|
|
63
|
-
"homepage": "https://github.com/ressurectit/ng-select",
|
|
64
|
-
"dependencies": {
|
|
65
|
-
"@anglr/common": ">=24.2.0",
|
|
66
|
-
"@angular/common": ">=22.0.4",
|
|
67
|
-
"@angular/core": ">=22.0.4",
|
|
68
|
-
"@angular/forms": ">=22.0.4",
|
|
69
|
-
"@css-styles/common": ">=2.0.1",
|
|
70
|
-
"@jscrpt/common": ">=7.1.0",
|
|
71
|
-
"lodash-es": ">=4.18.1",
|
|
72
|
-
"rxjs": ">=7.8.2",
|
|
73
|
-
"tslib": "^2.8.1"
|
|
74
|
-
},
|
|
75
|
-
"devDependencies": {
|
|
76
|
-
"@angular/compiler": "22.0.4",
|
|
77
|
-
"@angular/compiler-cli": "22.0.4",
|
|
78
|
-
"@angular/language-service": "22.0.4",
|
|
79
|
-
"@microsoft/api-documenter": "7.30.7",
|
|
80
|
-
"@microsoft/api-extractor": "7.58.9",
|
|
81
|
-
"@stylistic/eslint-plugin": "5.10.0",
|
|
82
|
-
"@types/node": "26.0.1",
|
|
83
|
-
"@types/lodash-es": "4.17.12",
|
|
84
|
-
"copyfiles": "2.4.1",
|
|
85
|
-
"eslint": "9.39.4",
|
|
86
|
-
"eslint-plugin-ressurectit": "0.4.0",
|
|
87
|
-
"lerna": "9.0.4",
|
|
88
|
-
"npm-git-version": "4.0.0",
|
|
89
|
-
"path-exists-cli": "2.0.0",
|
|
90
|
-
"replace-in-file": "8.4.0",
|
|
91
|
-
"rimraf": "6.1.3",
|
|
92
|
-
"typescript": "6.0.3",
|
|
93
|
-
"typescript-eslint": "8.62.0"
|
|
94
|
-
},
|
|
95
|
-
"module": "./es2022/src/index.js",
|
|
96
|
-
"typings": "./src/index.d.ts",
|
|
97
|
-
"exports": {
|
|
98
|
-
"./package.json": {
|
|
99
|
-
"default": "./package.json"
|
|
100
|
-
},
|
|
101
|
-
"./styles": {
|
|
102
|
-
"sass": "./styles/index.scss"
|
|
103
|
-
},
|
|
104
|
-
"./styles/themes/*": {
|
|
105
|
-
"sass": "./styles/themes/*.scss"
|
|
106
|
-
},
|
|
107
|
-
"./typings/*": {
|
|
108
|
-
"types": "./typings/*/index.d.ts"
|
|
109
|
-
},
|
|
110
|
-
".": {
|
|
111
|
-
"types": "./src/index.d.ts",
|
|
112
|
-
"esm2022": "./es2022/src/index.js",
|
|
113
|
-
"es2022": "./es2022/src/index.js",
|
|
114
|
-
"node": "./es2022/src/index.js",
|
|
115
|
-
"default": "./es2022/src/index.js"
|
|
116
|
-
},
|
|
117
|
-
"./extensions": {
|
|
118
|
-
"types": "./extensions/src/index.d.ts",
|
|
119
|
-
"esm2022": "./es2022/extensions/src/index.js",
|
|
120
|
-
"es2022": "./es2022/extensions/src/index.js",
|
|
121
|
-
"node": "./es2022/extensions/src/index.js",
|
|
122
|
-
"default": "./es2022/extensions/src/index.js"
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@anglr/select",
|
|
3
|
+
"version": "18.0.0-beta.20260805050455",
|
|
4
|
+
"description": "Angular component representing html select",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"workspaces": [
|
|
8
|
+
"demo",
|
|
9
|
+
"."
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "ngc --declaration --declarationDir . --declarationMap",
|
|
13
|
+
"clean": "rimraf --glob */temp temp es2022 **/tsdoc-metadata.json src/**/*.d.ts src/**/*.d.ts.map */src/**/*.d.ts */src/**/*.d.ts.map ./*.d.ts ./*.d.ts.map */*.d.ts",
|
|
14
|
+
"clean:deps": "rimraf package-lock.json node_modules || echo 'node_modules removed'",
|
|
15
|
+
"clean:all": "npm run clean && npm run clean:deps",
|
|
16
|
+
"ngc": "ngc",
|
|
17
|
+
"version:placeholder": "replace-in-file /\\\"version\\\":\\s\\\".*?\\\"/g \"\\\"version\\\": \\\"0.0.0-placeholder\\\"\" package.json",
|
|
18
|
+
"version:git": "ngv -e \"replace-in-file 0.0.0-placeholder $GIT_VERSION package.json && echo $GIT_VERSION > version.bak\"",
|
|
19
|
+
"version:build": "ngv -e \"echo $GIT_VERSION > version.bak\"",
|
|
20
|
+
"prepublishOnly": "npm run bundle && npm run version:placeholder && npm run version:git",
|
|
21
|
+
"postpublish": "npm run doc && npm run version:placeholder && npm run clean",
|
|
22
|
+
"bundle": "npm run clean && npm run build",
|
|
23
|
+
"deploy": "npm publish --loglevel error",
|
|
24
|
+
"deploy:next": "npm publish --tag next --loglevel error",
|
|
25
|
+
"lint": "eslint src/**/*.ts",
|
|
26
|
+
"preclean:all": "lerna run clean:all --scope=ng-universal-demo",
|
|
27
|
+
"start": "lerna run start --scope=ng-universal-demo",
|
|
28
|
+
"doc": "path-exists docs && npm run doc:generate || echo \"No docs generated!\"",
|
|
29
|
+
"predoc:generate": "cd docs && git pull && cd ..",
|
|
30
|
+
"postdoc:generate": "npm run doc:save",
|
|
31
|
+
"doc:generate": "npm run doc:generate:select && npm run doc:generate:elements&& npm run doc:generate:extensions",
|
|
32
|
+
"doc:save": "cd docs && git add . && git commit -m \"INT: updated API docs ng-select\" && git push && cd ..",
|
|
33
|
+
"doc:generate:select": "rimraf docs/content/api/ng-select && npm run doc:json:select && npm run doc:md:select && npm run doc:api:select",
|
|
34
|
+
"doc:json:select": "api-extractor run --local --verbose -c api-extractor.json",
|
|
35
|
+
"doc:md:select": "api-documenter markdown -i temp -o docs/content/api/ng-select",
|
|
36
|
+
"doc:api:select": "copyfiles -u 1 temp/select.api.md docs/content/api/ng-select && rimraf temp",
|
|
37
|
+
"doc:generate:elements": "rimraf docs/content/api/ng-select-elements && npm run doc:json:elements && npm run doc:md:elements && npm run doc:api:elements",
|
|
38
|
+
"doc:json:elements": "api-extractor run --local --verbose -c elements/api-extractor.json",
|
|
39
|
+
"doc:md:elements": "api-documenter markdown -i elements/temp -o docs/content/api/ng-select-elements",
|
|
40
|
+
"doc:api:elements": "copyfiles -u 2 elements/temp/select-elements.api.md docs/content/api/ng-select-elements && rimraf elements/temp",
|
|
41
|
+
"doc:generate:extensions": "rimraf docs/content/api/ng-select-extensions && npm run doc:json:extensions && npm run doc:md:extensions && npm run doc:api:extensions",
|
|
42
|
+
"doc:json:extensions": "api-extractor run --local --verbose -c extensions/api-extractor.json",
|
|
43
|
+
"doc:md:extensions": "api-documenter markdown -i extensions/temp -o docs/content/api/ng-select-extensions",
|
|
44
|
+
"doc:api:extensions": "copyfiles -u 2 extensions/temp/select-extensions.api.md docs/content/api/ng-select-extensions && rimraf extensions/temp"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
|
|
48
|
+
},
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "https://github.com/ressurectit/ng-select"
|
|
52
|
+
},
|
|
53
|
+
"keywords": [
|
|
54
|
+
"angular",
|
|
55
|
+
"ng",
|
|
56
|
+
"select"
|
|
57
|
+
],
|
|
58
|
+
"author": "kukjevov",
|
|
59
|
+
"license": "MIT",
|
|
60
|
+
"bugs": {
|
|
61
|
+
"url": "https://github.com/ressurectit/ng-select/issues"
|
|
62
|
+
},
|
|
63
|
+
"homepage": "https://github.com/ressurectit/ng-select",
|
|
64
|
+
"dependencies": {
|
|
65
|
+
"@anglr/common": ">=24.2.0",
|
|
66
|
+
"@angular/common": ">=22.0.4",
|
|
67
|
+
"@angular/core": ">=22.0.4",
|
|
68
|
+
"@angular/forms": ">=22.0.4",
|
|
69
|
+
"@css-styles/common": ">=2.0.1",
|
|
70
|
+
"@jscrpt/common": ">=7.1.0",
|
|
71
|
+
"lodash-es": ">=4.18.1",
|
|
72
|
+
"rxjs": ">=7.8.2",
|
|
73
|
+
"tslib": "^2.8.1"
|
|
74
|
+
},
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"@angular/compiler": "22.0.4",
|
|
77
|
+
"@angular/compiler-cli": "22.0.4",
|
|
78
|
+
"@angular/language-service": "22.0.4",
|
|
79
|
+
"@microsoft/api-documenter": "7.30.7",
|
|
80
|
+
"@microsoft/api-extractor": "7.58.9",
|
|
81
|
+
"@stylistic/eslint-plugin": "5.10.0",
|
|
82
|
+
"@types/node": "26.0.1",
|
|
83
|
+
"@types/lodash-es": "4.17.12",
|
|
84
|
+
"copyfiles": "2.4.1",
|
|
85
|
+
"eslint": "9.39.4",
|
|
86
|
+
"eslint-plugin-ressurectit": "0.4.0",
|
|
87
|
+
"lerna": "9.0.4",
|
|
88
|
+
"npm-git-version": "4.0.0",
|
|
89
|
+
"path-exists-cli": "2.0.0",
|
|
90
|
+
"replace-in-file": "8.4.0",
|
|
91
|
+
"rimraf": "6.1.3",
|
|
92
|
+
"typescript": "6.0.3",
|
|
93
|
+
"typescript-eslint": "8.62.0"
|
|
94
|
+
},
|
|
95
|
+
"module": "./es2022/src/index.js",
|
|
96
|
+
"typings": "./src/index.d.ts",
|
|
97
|
+
"exports": {
|
|
98
|
+
"./package.json": {
|
|
99
|
+
"default": "./package.json"
|
|
100
|
+
},
|
|
101
|
+
"./styles": {
|
|
102
|
+
"sass": "./styles/index.scss"
|
|
103
|
+
},
|
|
104
|
+
"./styles/themes/*": {
|
|
105
|
+
"sass": "./styles/themes/*.scss"
|
|
106
|
+
},
|
|
107
|
+
"./typings/*": {
|
|
108
|
+
"types": "./typings/*/index.d.ts"
|
|
109
|
+
},
|
|
110
|
+
".": {
|
|
111
|
+
"types": "./src/index.d.ts",
|
|
112
|
+
"esm2022": "./es2022/src/index.js",
|
|
113
|
+
"es2022": "./es2022/src/index.js",
|
|
114
|
+
"node": "./es2022/src/index.js",
|
|
115
|
+
"default": "./es2022/src/index.js"
|
|
116
|
+
},
|
|
117
|
+
"./extensions": {
|
|
118
|
+
"types": "./extensions/src/index.d.ts",
|
|
119
|
+
"esm2022": "./es2022/extensions/src/index.js",
|
|
120
|
+
"es2022": "./es2022/extensions/src/index.js",
|
|
121
|
+
"node": "./es2022/extensions/src/index.js",
|
|
122
|
+
"default": "./es2022/extensions/src/index.js"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
:host
|
|
2
|
-
{
|
|
3
|
-
display: block;
|
|
4
|
-
position: relative;
|
|
5
|
-
}
|
|
1
|
+
:host
|
|
2
|
+
{
|
|
3
|
+
display: block;
|
|
4
|
+
position: relative;
|
|
5
|
+
}
|
|
@@ -39,6 +39,10 @@ export interface EditNormalStateCssClasses extends NormalStateCssClasses {
|
|
|
39
39
|
* Applied to HTML element that represents value and holds single selected value
|
|
40
40
|
*/
|
|
41
41
|
valueSingle: string;
|
|
42
|
+
/**
|
|
43
|
+
* Applied to HTML element that wraps live search input
|
|
44
|
+
*/
|
|
45
|
+
liveSearchWrapper: string;
|
|
42
46
|
}
|
|
43
47
|
/**
|
|
44
48
|
* Options for edit normal state plugin
|