@impartner/design-components 1.0.0
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/LICENSE.txt +11 -0
- package/README.md +22 -0
- package/constants/fontawesome-icons.d.ts +6 -0
- package/constants/index.d.ts +1 -0
- package/esm2020/constants/fontawesome-icons.mjs +3012 -0
- package/esm2020/constants/index.mjs +2 -0
- package/esm2020/impartner-design-components.mjs +5 -0
- package/esm2020/lib/alert/alert.component.mjs +57 -0
- package/esm2020/lib/alert/alert.module.mjs +18 -0
- package/esm2020/lib/alert/index.mjs +4 -0
- package/esm2020/lib/alert/theme/alert-theme.mjs +2 -0
- package/esm2020/lib/alert/theme/index.mjs +2 -0
- package/esm2020/lib/avatar/avatar.component.mjs +47 -0
- package/esm2020/lib/avatar/avatar.module.mjs +18 -0
- package/esm2020/lib/avatar/index.mjs +3 -0
- package/esm2020/lib/avatar-group/avatar-group.component.mjs +16 -0
- package/esm2020/lib/avatar-group/avatar-group.module.mjs +19 -0
- package/esm2020/lib/avatar-group/index.mjs +3 -0
- package/esm2020/lib/backdrop/backdrop.component.mjs +34 -0
- package/esm2020/lib/backdrop/backdrop.module.mjs +19 -0
- package/esm2020/lib/backdrop/index.mjs +3 -0
- package/esm2020/lib/badge/badge.component.mjs +98 -0
- package/esm2020/lib/badge/badge.module.mjs +19 -0
- package/esm2020/lib/badge/index.mjs +4 -0
- package/esm2020/lib/badge/types/badge-icon.mjs +2 -0
- package/esm2020/lib/badge/types/badge-size.mjs +7 -0
- package/esm2020/lib/badge/types/index.mjs +2 -0
- package/esm2020/lib/branding/branded.directive.mjs +19 -0
- package/esm2020/lib/branding/branding.module.mjs +19 -0
- package/esm2020/lib/branding/index.mjs +3 -0
- package/esm2020/lib/breadcrumb/breadcrumb-item.component.mjs +25 -0
- package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +33 -0
- package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +19 -0
- package/esm2020/lib/breadcrumb/index.mjs +4 -0
- package/esm2020/lib/button/button.component.mjs +116 -0
- package/esm2020/lib/button/button.module.mjs +21 -0
- package/esm2020/lib/button/index.mjs +4 -0
- package/esm2020/lib/button/themes/button-theme.mjs +2 -0
- package/esm2020/lib/button/themes/index.mjs +2 -0
- package/esm2020/lib/button-group/button-group.component.mjs +52 -0
- package/esm2020/lib/button-group/button-group.module.mjs +20 -0
- package/esm2020/lib/button-group/index.mjs +3 -0
- package/esm2020/lib/card-heading/card-heading.component.mjs +30 -0
- package/esm2020/lib/card-heading/card-heading.module.mjs +19 -0
- package/esm2020/lib/card-heading/index.mjs +3 -0
- package/esm2020/lib/design-components.module.mjs +119 -0
- package/esm2020/lib/dropdown/components/dropdown-item/dropdown-item.component.mjs +22 -0
- package/esm2020/lib/dropdown/components/index.mjs +2 -0
- package/esm2020/lib/dropdown/dropdown.component.mjs +140 -0
- package/esm2020/lib/dropdown/dropdown.module.mjs +21 -0
- package/esm2020/lib/dropdown/index.mjs +5 -0
- package/esm2020/lib/dropdown/types/dropdown-position.mjs +2 -0
- package/esm2020/lib/dropdown/types/index.mjs +2 -0
- package/esm2020/lib/file-upload/directives/file-drop.directive.mjs +50 -0
- package/esm2020/lib/file-upload/directives/index.mjs +2 -0
- package/esm2020/lib/file-upload/file-upload.component.mjs +334 -0
- package/esm2020/lib/file-upload/file-upload.module.mjs +29 -0
- package/esm2020/lib/file-upload/index.mjs +5 -0
- package/esm2020/lib/file-upload/pipes/human-readable-byte-size.pipe.mjs +23 -0
- package/esm2020/lib/file-upload/pipes/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/checkbox/checkbox.component.mjs +337 -0
- package/esm2020/lib/form-field/controls/checkbox/checkbox.module.mjs +19 -0
- package/esm2020/lib/form-field/controls/checkbox/index.mjs +3 -0
- package/esm2020/lib/form-field/controls/index.mjs +5 -0
- package/esm2020/lib/form-field/controls/input/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/input/input.directive.mjs +233 -0
- package/esm2020/lib/form-field/controls/radio/index.mjs +6 -0
- package/esm2020/lib/form-field/controls/radio/injection-tokens.mjs +4 -0
- package/esm2020/lib/form-field/controls/radio/interfaces/index.mjs +4 -0
- package/esm2020/lib/form-field/controls/radio/interfaces/radio-button.interface.mjs +2 -0
- package/esm2020/lib/form-field/controls/radio/interfaces/radio-change-event.interface.mjs +11 -0
- package/esm2020/lib/form-field/controls/radio/interfaces/radio-group.interface.mjs +2 -0
- package/esm2020/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +260 -0
- package/esm2020/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +288 -0
- package/esm2020/lib/form-field/controls/radio/radio.module.mjs +20 -0
- package/esm2020/lib/form-field/controls/select/index.mjs +6 -0
- package/esm2020/lib/form-field/controls/select/option/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/select/option/select-option.component.mjs +138 -0
- package/esm2020/lib/form-field/controls/select/option-parent.mjs +3 -0
- package/esm2020/lib/form-field/controls/select/select-model.mjs +149 -0
- package/esm2020/lib/form-field/controls/select/select.component.mjs +522 -0
- package/esm2020/lib/form-field/controls/select/select.module.mjs +20 -0
- package/esm2020/lib/form-field/controls/shared/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/shared/toggle/components/index.mjs +2 -0
- package/esm2020/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.mjs +17 -0
- package/esm2020/lib/form-field/controls/shared/toggle/index.mjs +4 -0
- package/esm2020/lib/form-field/controls/shared/toggle/toggle.component.mjs +96 -0
- package/esm2020/lib/form-field/controls/shared/toggle/toggle.module.mjs +20 -0
- package/esm2020/lib/form-field/directives/corner-hint.directive.mjs +14 -0
- package/esm2020/lib/form-field/directives/error.directive.mjs +26 -0
- package/esm2020/lib/form-field/directives/form-root.directive.mjs +91 -0
- package/esm2020/lib/form-field/directives/hint.directive.mjs +24 -0
- package/esm2020/lib/form-field/directives/index.mjs +8 -0
- package/esm2020/lib/form-field/directives/label.directive.mjs +14 -0
- package/esm2020/lib/form-field/directives/prefix.directive.mjs +24 -0
- package/esm2020/lib/form-field/directives/suffix.directive.mjs +24 -0
- package/esm2020/lib/form-field/form-field-errors.mjs +5 -0
- package/esm2020/lib/form-field/form-field.component.mjs +132 -0
- package/esm2020/lib/form-field/impdc-forms.mjs +8 -0
- package/esm2020/lib/form-field/impdc-forms.module.mjs +68 -0
- package/esm2020/lib/form-field/index.mjs +2 -0
- package/esm2020/lib/form-field/services/error-state-matcher.service.mjs +28 -0
- package/esm2020/lib/form-field/services/index.mjs +3 -0
- package/esm2020/lib/form-field/services/unique-selection-dispatcher.service.mjs +48 -0
- package/esm2020/lib/form-field/shared/constructors.type.mjs +2 -0
- package/esm2020/lib/form-field/shared/disabled.mixin.mjs +15 -0
- package/esm2020/lib/form-field/shared/error-state.mixin.mjs +24 -0
- package/esm2020/lib/form-field/shared/form-field-control.mjs +10 -0
- package/esm2020/lib/form-field/shared/index.mjs +5 -0
- package/esm2020/lib/form-field/shared/tab-index.mixin.mjs +19 -0
- package/esm2020/lib/icon/icon.component.mjs +70 -0
- package/esm2020/lib/icon/icon.module.mjs +19 -0
- package/esm2020/lib/icon/index.mjs +3 -0
- package/esm2020/lib/index.mjs +26 -0
- package/esm2020/lib/modal/index.mjs +4 -0
- package/esm2020/lib/modal/modal.component.mjs +141 -0
- package/esm2020/lib/modal/modal.module.mjs +37 -0
- package/esm2020/lib/modal/types/index.mjs +3 -0
- package/esm2020/lib/modal/types/modal-component-sizes.mjs +9 -0
- package/esm2020/lib/modal/types/modal-theme.mjs +12 -0
- package/esm2020/lib/pagination/index.mjs +3 -0
- package/esm2020/lib/pagination/pagination.component.mjs +134 -0
- package/esm2020/lib/pagination/pagination.module.mjs +21 -0
- package/esm2020/lib/progress-bar/index.mjs +3 -0
- package/esm2020/lib/progress-bar/progress-bar.component.mjs +35 -0
- package/esm2020/lib/progress-bar/progress-bar.module.mjs +18 -0
- package/esm2020/lib/scrollable/index.mjs +3 -0
- package/esm2020/lib/scrollable/scrollable.component.mjs +193 -0
- package/esm2020/lib/scrollable/scrollable.module.mjs +21 -0
- package/esm2020/lib/select-icon/index.mjs +3 -0
- package/esm2020/lib/select-icon/select-icon.component.mjs +307 -0
- package/esm2020/lib/select-icon/select-icon.module.mjs +35 -0
- package/esm2020/lib/size-detection/directive/element-size.interface.mjs +2 -0
- package/esm2020/lib/size-detection/directive/index.mjs +3 -0
- package/esm2020/lib/size-detection/directive/size-detector.directive.mjs +43 -0
- package/esm2020/lib/size-detection/index.mjs +3 -0
- package/esm2020/lib/size-detection/size-detection.module.mjs +18 -0
- package/esm2020/lib/spinner/index.mjs +3 -0
- package/esm2020/lib/spinner/spinner.component.mjs +24 -0
- package/esm2020/lib/spinner/spinner.module.mjs +18 -0
- package/esm2020/lib/table/index.mjs +3 -0
- package/esm2020/lib/table/table.component.mjs +33 -0
- package/esm2020/lib/table/table.module.mjs +19 -0
- package/esm2020/lib/text-highlight/index.mjs +3 -0
- package/esm2020/lib/text-highlight/text-highlight.component.mjs +81 -0
- package/esm2020/lib/text-highlight/text-highlight.module.mjs +19 -0
- package/esm2020/public-api.mjs +9 -0
- package/esm2020/services/index.mjs +2 -0
- package/esm2020/services/interaction.service.mjs +54 -0
- package/esm2020/types/component-size.mjs +12 -0
- package/esm2020/types/component-theme.mjs +22 -0
- package/esm2020/types/index.mjs +3 -0
- package/esm2020/utilities/boolean-props.mjs +7 -0
- package/esm2020/utilities/dc.mjs +9 -0
- package/esm2020/utilities/index.mjs +6 -0
- package/esm2020/utilities/lc.mjs +9 -0
- package/esm2020/utilities/number-props.mjs +18 -0
- package/esm2020/utilities/sanitize.mjs +7 -0
- package/fesm2015/impartner-design-components.mjs +8295 -0
- package/fesm2015/impartner-design-components.mjs.map +1 -0
- package/fesm2020/impartner-design-components.mjs +8264 -0
- package/fesm2020/impartner-design-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/alert/alert.component.d.ts +29 -0
- package/lib/alert/alert.module.d.ts +8 -0
- package/lib/alert/index.d.ts +3 -0
- package/lib/alert/theme/alert-theme.d.ts +1 -0
- package/lib/alert/theme/index.d.ts +1 -0
- package/lib/avatar/avatar.component.d.ts +28 -0
- package/lib/avatar/avatar.module.d.ts +8 -0
- package/lib/avatar/index.d.ts +2 -0
- package/lib/avatar-group/avatar-group.component.d.ts +10 -0
- package/lib/avatar-group/avatar-group.module.d.ts +9 -0
- package/lib/avatar-group/index.d.ts +2 -0
- package/lib/backdrop/backdrop.component.d.ts +19 -0
- package/lib/backdrop/backdrop.module.d.ts +9 -0
- package/lib/backdrop/index.d.ts +2 -0
- package/lib/badge/badge.component.d.ts +48 -0
- package/lib/badge/badge.module.d.ts +9 -0
- package/lib/badge/index.d.ts +3 -0
- package/lib/badge/types/badge-icon.d.ts +1 -0
- package/lib/badge/types/badge-size.d.ts +6 -0
- package/lib/badge/types/index.d.ts +2 -0
- package/lib/branding/branded.directive.d.ts +6 -0
- package/lib/branding/branding.module.d.ts +9 -0
- package/lib/branding/index.d.ts +2 -0
- package/lib/breadcrumb/breadcrumb-item.component.d.ts +7 -0
- package/lib/breadcrumb/breadcrumb.component.d.ts +18 -0
- package/lib/breadcrumb/breadcrumb.module.d.ts +9 -0
- package/lib/breadcrumb/index.d.ts +3 -0
- package/lib/button/button.component.d.ts +47 -0
- package/lib/button/button.module.d.ts +11 -0
- package/lib/button/index.d.ts +3 -0
- package/lib/button/themes/button-theme.d.ts +1 -0
- package/lib/button/themes/index.d.ts +1 -0
- package/lib/button-group/button-group.component.d.ts +22 -0
- package/lib/button-group/button-group.module.d.ts +10 -0
- package/lib/button-group/index.d.ts +2 -0
- package/lib/card-heading/card-heading.component.d.ts +18 -0
- package/lib/card-heading/card-heading.module.d.ts +9 -0
- package/lib/card-heading/index.d.ts +2 -0
- package/lib/design-components.module.d.ts +22 -0
- package/lib/dropdown/components/dropdown-item/dropdown-item.component.d.ts +11 -0
- package/lib/dropdown/components/index.d.ts +1 -0
- package/lib/dropdown/dropdown.component.d.ts +65 -0
- package/lib/dropdown/dropdown.module.d.ts +11 -0
- package/lib/dropdown/index.d.ts +4 -0
- package/lib/dropdown/types/dropdown-position.d.ts +1 -0
- package/lib/dropdown/types/index.d.ts +1 -0
- package/lib/file-upload/directives/file-drop.directive.d.ts +11 -0
- package/lib/file-upload/directives/index.d.ts +1 -0
- package/lib/file-upload/file-upload.component.d.ts +105 -0
- package/lib/file-upload/file-upload.module.d.ts +13 -0
- package/lib/file-upload/index.d.ts +4 -0
- package/lib/file-upload/pipes/human-readable-byte-size.pipe.d.ts +7 -0
- package/lib/file-upload/pipes/index.d.ts +1 -0
- package/lib/form-field/controls/checkbox/checkbox.component.d.ts +133 -0
- package/lib/form-field/controls/checkbox/checkbox.module.d.ts +9 -0
- package/lib/form-field/controls/checkbox/index.d.ts +2 -0
- package/lib/form-field/controls/index.d.ts +4 -0
- package/lib/form-field/controls/input/index.d.ts +1 -0
- package/lib/form-field/controls/input/input.directive.d.ts +84 -0
- package/lib/form-field/controls/radio/index.d.ts +5 -0
- package/lib/form-field/controls/radio/injection-tokens.d.ts +4 -0
- package/lib/form-field/controls/radio/interfaces/index.d.ts +3 -0
- package/lib/form-field/controls/radio/interfaces/radio-button.interface.d.ts +6 -0
- package/lib/form-field/controls/radio/interfaces/radio-change-event.interface.d.ts +12 -0
- package/lib/form-field/controls/radio/interfaces/radio-group.interface.d.ts +13 -0
- package/lib/form-field/controls/radio/radio-button/radio-button.component.d.ts +98 -0
- package/lib/form-field/controls/radio/radio-group/radio-group.directive.d.ts +104 -0
- package/lib/form-field/controls/radio/radio.module.d.ts +10 -0
- package/lib/form-field/controls/select/index.d.ts +5 -0
- package/lib/form-field/controls/select/option/index.d.ts +1 -0
- package/lib/form-field/controls/select/option/select-option.component.d.ts +60 -0
- package/lib/form-field/controls/select/option-parent.d.ts +5 -0
- package/lib/form-field/controls/select/select-model.d.ts +36 -0
- package/lib/form-field/controls/select/select.component.d.ts +170 -0
- package/lib/form-field/controls/select/select.module.d.ts +10 -0
- package/lib/form-field/controls/shared/index.d.ts +1 -0
- package/lib/form-field/controls/shared/toggle/components/index.d.ts +1 -0
- package/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.d.ts +6 -0
- package/lib/form-field/controls/shared/toggle/index.d.ts +3 -0
- package/lib/form-field/controls/shared/toggle/toggle.component.d.ts +26 -0
- package/lib/form-field/controls/shared/toggle/toggle.module.d.ts +10 -0
- package/lib/form-field/directives/corner-hint.directive.d.ts +5 -0
- package/lib/form-field/directives/error.directive.d.ts +8 -0
- package/lib/form-field/directives/form-root.directive.d.ts +26 -0
- package/lib/form-field/directives/hint.directive.d.ts +6 -0
- package/lib/form-field/directives/index.d.ts +7 -0
- package/lib/form-field/directives/label.directive.d.ts +5 -0
- package/lib/form-field/directives/prefix.directive.d.ts +9 -0
- package/lib/form-field/directives/suffix.directive.d.ts +9 -0
- package/lib/form-field/form-field-errors.d.ts +2 -0
- package/lib/form-field/form-field.component.d.ts +39 -0
- package/lib/form-field/impdc-forms.d.ts +7 -0
- package/lib/form-field/impdc-forms.module.d.ts +19 -0
- package/lib/form-field/index.d.ts +1 -0
- package/lib/form-field/services/error-state-matcher.service.d.ts +12 -0
- package/lib/form-field/services/index.d.ts +2 -0
- package/lib/form-field/services/unique-selection-dispatcher.service.d.ts +29 -0
- package/lib/form-field/shared/constructors.type.d.ts +7 -0
- package/lib/form-field/shared/disabled.mixin.d.ts +10 -0
- package/lib/form-field/shared/error-state.mixin.d.ts +31 -0
- package/lib/form-field/shared/form-field-control.d.ts +24 -0
- package/lib/form-field/shared/index.d.ts +5 -0
- package/lib/form-field/shared/tab-index.mixin.d.ts +13 -0
- package/lib/icon/icon.component.d.ts +30 -0
- package/lib/icon/icon.module.d.ts +9 -0
- package/lib/icon/index.d.ts +2 -0
- package/lib/index.d.ts +25 -0
- package/lib/modal/index.d.ts +3 -0
- package/lib/modal/modal.component.d.ts +80 -0
- package/lib/modal/modal.module.d.ts +13 -0
- package/lib/modal/types/index.d.ts +2 -0
- package/lib/modal/types/modal-component-sizes.d.ts +3 -0
- package/lib/modal/types/modal-theme.d.ts +7 -0
- package/lib/pagination/index.d.ts +2 -0
- package/lib/pagination/pagination.component.d.ts +41 -0
- package/lib/pagination/pagination.module.d.ts +11 -0
- package/lib/progress-bar/index.d.ts +2 -0
- package/lib/progress-bar/progress-bar.component.d.ts +22 -0
- package/lib/progress-bar/progress-bar.module.d.ts +8 -0
- package/lib/scrollable/index.d.ts +2 -0
- package/lib/scrollable/scrollable.component.d.ts +39 -0
- package/lib/scrollable/scrollable.module.d.ts +11 -0
- package/lib/select-icon/index.d.ts +2 -0
- package/lib/select-icon/select-icon.component.d.ts +123 -0
- package/lib/select-icon/select-icon.module.d.ts +11 -0
- package/lib/size-detection/directive/element-size.interface.d.ts +4 -0
- package/lib/size-detection/directive/index.d.ts +2 -0
- package/lib/size-detection/directive/size-detector.directive.d.ts +14 -0
- package/lib/size-detection/index.d.ts +3 -0
- package/lib/size-detection/size-detection.module.d.ts +8 -0
- package/lib/spinner/index.d.ts +2 -0
- package/lib/spinner/spinner.component.d.ts +13 -0
- package/lib/spinner/spinner.module.d.ts +8 -0
- package/lib/table/index.d.ts +2 -0
- package/lib/table/table.component.d.ts +15 -0
- package/lib/table/table.module.d.ts +9 -0
- package/lib/text-highlight/index.d.ts +2 -0
- package/lib/text-highlight/text-highlight.component.d.ts +31 -0
- package/lib/text-highlight/text-highlight.module.d.ts +9 -0
- package/package.json +51 -0
- package/public-api.d.ts +4 -0
- package/services/index.d.ts +1 -0
- package/services/interaction.service.d.ts +14 -0
- package/types/component-size.d.ts +12 -0
- package/types/component-theme.d.ts +12 -0
- package/types/index.d.ts +2 -0
- package/utilities/boolean-props.d.ts +8 -0
- package/utilities/dc.d.ts +6 -0
- package/utilities/index.d.ts +5 -0
- package/utilities/lc.d.ts +6 -0
- package/utilities/number-props.d.ts +15 -0
- package/utilities/sanitize.d.ts +1 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
export function getMultipleValuesInSingleSelectError() {
|
|
3
|
+
return Error('Cannot pass multiple values into SelectModel in single-value mode.');
|
|
4
|
+
}
|
|
5
|
+
export class SelectModel {
|
|
6
|
+
constructor(_multiple = false, initialSelectedValues, _emitChanges = true, compareFunc) {
|
|
7
|
+
this._multiple = _multiple;
|
|
8
|
+
this._emitChanges = _emitChanges;
|
|
9
|
+
this.compareFunc = compareFunc;
|
|
10
|
+
this._selection = new Set();
|
|
11
|
+
this._pendingDeselectionsToEmit = [];
|
|
12
|
+
this._pendingSelectionsToEmit = [];
|
|
13
|
+
this._selected = null;
|
|
14
|
+
this.changed$ = new Subject();
|
|
15
|
+
if (initialSelectedValues && initialSelectedValues.length) {
|
|
16
|
+
if (_multiple) {
|
|
17
|
+
initialSelectedValues.forEach(value => {
|
|
18
|
+
this._markSelected(value);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this._markSelected(initialSelectedValues[0]);
|
|
23
|
+
}
|
|
24
|
+
this._pendingSelectionsToEmit.length = 0;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
get selected() {
|
|
28
|
+
if (!this._selected) {
|
|
29
|
+
this._selected = Array.from(this._selection.values());
|
|
30
|
+
}
|
|
31
|
+
return this._selected;
|
|
32
|
+
}
|
|
33
|
+
select(...values) {
|
|
34
|
+
this._verifyValueAssignment(values);
|
|
35
|
+
values.forEach(value => this._markSelected(value));
|
|
36
|
+
const changed = this._hasQueuedChanges();
|
|
37
|
+
this._emitChangeEvent();
|
|
38
|
+
return changed;
|
|
39
|
+
}
|
|
40
|
+
deselect(...values) {
|
|
41
|
+
this._verifyValueAssignment(values);
|
|
42
|
+
values.forEach(value => this._unmarkSelected(value));
|
|
43
|
+
const changed = this._hasQueuedChanges();
|
|
44
|
+
this._emitChangeEvent();
|
|
45
|
+
return changed;
|
|
46
|
+
}
|
|
47
|
+
setSelection(...values) {
|
|
48
|
+
this._verifyValueAssignment(values);
|
|
49
|
+
const oldValues = this.selected;
|
|
50
|
+
const newSelectedSet = new Set(values);
|
|
51
|
+
values.forEach(value => this._markSelected(value));
|
|
52
|
+
oldValues
|
|
53
|
+
.filter(value => !newSelectedSet.has(value))
|
|
54
|
+
.forEach(value => this._unmarkSelected(value));
|
|
55
|
+
const changed = this._hasQueuedChanges();
|
|
56
|
+
this._emitChangeEvent();
|
|
57
|
+
return changed;
|
|
58
|
+
}
|
|
59
|
+
toggle(value) {
|
|
60
|
+
return this.isSelected(value) ? this.deselect(value) : this.select(value);
|
|
61
|
+
}
|
|
62
|
+
clear(flushEvent = true) {
|
|
63
|
+
this._unmarkAll();
|
|
64
|
+
const changed = this._hasQueuedChanges();
|
|
65
|
+
if (flushEvent) {
|
|
66
|
+
this._emitChangeEvent();
|
|
67
|
+
}
|
|
68
|
+
return changed;
|
|
69
|
+
}
|
|
70
|
+
isSelected(value) {
|
|
71
|
+
return this._selection.has(this._getConcreteValue(value));
|
|
72
|
+
}
|
|
73
|
+
isEmpty() {
|
|
74
|
+
return this._selection.size === 0;
|
|
75
|
+
}
|
|
76
|
+
hasValue() {
|
|
77
|
+
return !this.isEmpty();
|
|
78
|
+
}
|
|
79
|
+
sort(predicateFunc) {
|
|
80
|
+
if (this._multiple && this.selected) {
|
|
81
|
+
this._selected.sort(predicateFunc);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
isMultipleSelection() {
|
|
85
|
+
return this._multiple;
|
|
86
|
+
}
|
|
87
|
+
_emitChangeEvent() {
|
|
88
|
+
this._selected = null;
|
|
89
|
+
if (this._pendingSelectionsToEmit.length ||
|
|
90
|
+
this._pendingDeselectionsToEmit.length) {
|
|
91
|
+
this.changed$.next({
|
|
92
|
+
source: this,
|
|
93
|
+
added: this._pendingSelectionsToEmit,
|
|
94
|
+
removed: this._pendingDeselectionsToEmit
|
|
95
|
+
});
|
|
96
|
+
this._pendingDeselectionsToEmit = [];
|
|
97
|
+
this._pendingSelectionsToEmit = [];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
_markSelected(value) {
|
|
101
|
+
value = this._getConcreteValue(value);
|
|
102
|
+
if (!this.isSelected(value)) {
|
|
103
|
+
if (!this._multiple) {
|
|
104
|
+
this._unmarkAll();
|
|
105
|
+
}
|
|
106
|
+
if (!this.isSelected(value)) {
|
|
107
|
+
this._selection.add(value);
|
|
108
|
+
}
|
|
109
|
+
if (this._emitChanges) {
|
|
110
|
+
this._pendingSelectionsToEmit.push(value);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
_unmarkSelected(value) {
|
|
115
|
+
value = this._getConcreteValue(value);
|
|
116
|
+
if (this.isSelected(value)) {
|
|
117
|
+
this._selection.delete(value);
|
|
118
|
+
if (this._emitChanges) {
|
|
119
|
+
this._pendingDeselectionsToEmit.push(value);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
_unmarkAll() {
|
|
124
|
+
if (!this.isEmpty()) {
|
|
125
|
+
this._selection.forEach(value => this._unmarkSelected(value));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
_verifyValueAssignment(values) {
|
|
129
|
+
if (values.length > 1 && !this._multiple) {
|
|
130
|
+
throw getMultipleValuesInSingleSelectError();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
_hasQueuedChanges() {
|
|
134
|
+
return !!(this._pendingDeselectionsToEmit.length ||
|
|
135
|
+
this._pendingSelectionsToEmit.length);
|
|
136
|
+
}
|
|
137
|
+
_getConcreteValue(inputVal) {
|
|
138
|
+
if (!this.compareFunc) {
|
|
139
|
+
return inputVal;
|
|
140
|
+
}
|
|
141
|
+
for (let selectedVal of this._selection) {
|
|
142
|
+
if (this.compareFunc(inputVal, selectedVal)) {
|
|
143
|
+
return selectedVal;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return inputVal;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbnRyb2xzL3NlbGVjdC9zZWxlY3QtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVEvQixNQUFNLFVBQVUsb0NBQW9DO0lBQ2xELE9BQU8sS0FBSyxDQUNWLG9FQUFvRSxDQUNyRSxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sT0FBTyxXQUFXO0lBaUJ0QixZQUNtQixZQUFZLEtBQUssRUFDbEMscUJBQTJCLEVBQ1YsZUFBZSxJQUFJLEVBQzdCLFdBQXFDO1FBSDNCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFFakIsaUJBQVksR0FBWixZQUFZLENBQU87UUFDN0IsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO1FBcEJ0QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUssQ0FBQztRQUUxQiwrQkFBMEIsR0FBUSxFQUFFLENBQUM7UUFDckMsNkJBQXdCLEdBQVEsRUFBRSxDQUFDO1FBQ25DLGNBQVMsR0FBZSxJQUFJLENBQUM7UUFVckIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO1FBUXhELElBQUkscUJBQXFCLElBQUkscUJBQXFCLENBQUMsTUFBTSxFQUFFO1lBQ3pELElBQUksU0FBUyxFQUFFO2dCQUNiLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUM7WUFFRCxJQUFJLENBQUMsd0JBQXdCLENBQUMs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ckIsT0FBTyxRQUFRLENBQUM7U0FDakI7UUFFRCxLQUFLLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRTtnQkFDM0MsT0FBTyxXQUFXLENBQUM7YUFDcEI7U0FDRjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RDaGFuZ2U8VD4ge1xuICBzb3VyY2U6IFNlbGVjdE1vZGVsPFQ+O1xuICBhZGRlZDogVFtdO1xuICByZW1vdmVkOiBUW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNdWx0aXBsZVZhbHVlc0luU2luZ2xlU2VsZWN0RXJyb3IoKSB7XG4gIHJldHVybiBFcnJvcihcbiAgICAnQ2Fubm90IHBhc3MgbXVsdGlwbGUgdmFsdWVzIGludG8gU2VsZWN0TW9kZWwgaW4gc2luZ2xlLXZhbHVlIG1vZGUuJ1xuICApO1xufVxuXG5leHBvcnQgY2xhc3MgU2VsZWN0TW9kZWw8VD4ge1xuICBwcml2YXRlIF9zZWxlY3Rpb24gPSBuZXcgU2V0PFQ+KCk7XG5cbiAgcHJpdmF0ZSBfcGVuZGluZ0Rlc2VsZWN0aW9uc1RvRW1pdDogVFtdID0gW107XG4gIHByaXZhdGUgX3BlbmRpbmdTZWxlY3Rpb25zVG9FbWl0OiBUW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IFRbXSB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogVFtdIHtcbiAgICBpZiAoIXRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IEFycmF5LmZyb20odGhpcy5fc2VsZWN0aW9uLnZhbHVlcygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlZCQgPSBuZXcgU3ViamVjdDxTZWxlY3RDaGFuZ2U8VD4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbXVsdGlwbGUgPSBmYWxzZSxcbiAgICBpbml0aWFsU2VsZWN0ZWRWYWx1ZXM/OiBUW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZW1pdENoYW5nZXMgPSB0cnVlLFxuICAgIHB1YmxpYyBjb21wYXJlRnVuYz86IChhOiBULCBiOiBUKSA9PiBib29sZWFuXG4gICkge1xuICAgIGlmIChpbml0aWFsU2VsZWN0ZWRWYWx1ZXMgJiYgaW5pdGlhbFNlbGVjdGVkVmFsdWVzLmxlbmd0aCkge1xuICAgICAgaWYgKF9tdWx0aXBsZSkge1xuICAgICAgICBpbml0aWFsU2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWFya1NlbGVjdGVkKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9tYXJrU2VsZWN0ZWQoaW5pdGlhbFNlbGVjdGVkVmFsdWVzWzBdKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcGVuZGluZ1NlbGVjdGlvbnNUb0VtaXQubGVuZ3RoID0gMDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KC4uLnZhbHVlczogVFtdKTogYm9vbGVhbiB8IHZvaWQge1xuICAgIHRoaXMuX3ZlcmlmeVZhbHVlQXNzaWdubWVudCh2YWx1ZXMpO1xuICAgIHZhbHVlcy5mb3JFYWNoKHZhbHVlID0+IHRoaXMuX21hcmtTZWxlY3RlZCh2YWx1ZSkpO1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9oYXNRdWV1ZWRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgcmV0dXJuIGNoYW5nZWQ7XG4gIH1cblxuICBwdWJsaWMgZGVzZWxlY3QoLi4udmFsdWVzOiBUW10pOiBib29sZWFuIHwgdm9pZCB7XG4gICAgdGhpcy5fdmVyaWZ5VmFsdWVBc3NpZ25tZW50KHZhbHVlcyk7XG4gICAgdmFsdWVzLmZvckVhY2godmFsdWUgPT4gdGhpcy5fdW5tYXJrU2VsZWN0ZWQodmFsdWUpKTtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5faGFzUXVldWVkQ2hhbmdlcygpO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpO1xuICAgIHJldHVybiBjaGFuZ2VkO1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGlvbiguLi52YWx1ZXM6IFRbXSk6IGJvb2xlYW4gfCB2b2lkIHtcbiAgICB0aGlzLl92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodmFsdWVzKTtcbiAgICBjb25zdCBvbGRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkO1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkU2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuXG4gICAgdmFsdWVzLmZvckVhY2godmFsdWUgPT4gdGhpcy5fbWFya1NlbGVjdGVkKHZhbHVlKSk7XG4gICAgb2xkVmFsdWVzXG4gICAgICAuZmlsdGVyKHZhbHVlID0+ICFuZXdTZWxlY3RlZFNldC5oYXModmFsdWUpKVxuICAgICAgLmZvckVhY2godmFsdWUgPT4gdGhpcy5fdW5tYXJrU2VsZWN0ZWQodmFsdWUpKTtcblxuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9oYXNRdWV1ZWRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgcmV0dXJuIGNoYW5nZWQ7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlKHZhbHVlOiBUKTogYm9vbGVhbiB8IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmlzU2VsZWN0ZWQodmFsdWUpID8gdGhpcy5kZXNlbGVjdCh2YWx1ZSkgOiB0aGlzLnNlbGVjdCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoZmx1c2hFdmVudCA9IHRydWUpOiBib29sZWFuIHwgdm9pZCB7XG4gICAgdGhpcy5fdW5tYXJrQWxsKCk7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuX2hhc1F1ZXVlZENoYW5nZXMoKTtcbiAgICBpZiAoZmx1c2hFdmVudCkge1xuICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgfVxuICAgIHJldHVybiBjaGFuZ2VkO1xuICB9XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQodmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uLmhhcyh0aGlzLl9nZXRDb25jcmV0ZVZhbHVlKHZhbHVlKSk7XG4gIH1cblxuICBwdWJsaWMgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uLnNpemUgPT09IDA7XG4gIH1cblxuICBwdWJsaWMgaGFzVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzRW1wdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0KHByZWRpY2F0ZUZ1bmM/OiAoYTogVCwgYjogVCkgPT4gbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX211bHRpcGxlICYmIHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkIS5zb3J0KHByZWRpY2F0ZUZ1bmMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc011bHRpcGxlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRDaGFuZ2VFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IG51bGw7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9wZW5kaW5nU2VsZWN0aW9uc1RvRW1pdC5sZW5ndGggfHxcbiAgICAgIHRoaXMuX3BlbmRpbmdEZXNlbGVjdGlvbnNUb0VtaXQubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aGlzLmNoYW5nZWQkLm5leHQoe1xuICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgIGFkZGVkOiB0aGlzLl9wZW5kaW5nU2VsZWN0aW9uc1RvRW1pdCxcbiAgICAgICAgcmVtb3ZlZDogdGhpcy5fcGVuZGluZ0Rlc2VsZWN0aW9uc1RvRW1pdFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3BlbmRpbmdEZXNlbGVjdGlvbnNUb0VtaXQgPSBbXTtcbiAgICAgIHRoaXMuX3BlbmRpbmdTZWxlY3Rpb25zVG9FbWl0ID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbWFya1NlbGVjdGVkKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgdmFsdWUgPSB0aGlzLl9nZXRDb25jcmV0ZVZhbHVlKHZhbHVlKTtcblxuICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKHZhbHVlKSkge1xuICAgICAgaWYgKCF0aGlzLl9tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLl91bm1hcmtBbGwoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbi5hZGQodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZW1pdENoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ1NlbGVjdGlvbnNUb0VtaXQucHVzaCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdW5tYXJrU2VsZWN0ZWQodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB2YWx1ZSA9IHRoaXMuX2dldENvbmNyZXRlVmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbi5kZWxldGUodmFsdWUpO1xuXG4gICAgICBpZiAodGhpcy5fZW1pdENoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ0Rlc2VsZWN0aW9uc1RvRW1pdC5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91bm1hcmtBbGwoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uLmZvckVhY2godmFsdWUgPT4gdGhpcy5fdW5tYXJrU2VsZWN0ZWQodmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodmFsdWVzOiBUW10pOiB2b2lkIHtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEgJiYgIXRoaXMuX211bHRpcGxlKSB7XG4gICAgICB0aHJvdyBnZXRNdWx0aXBsZVZhbHVlc0luU2luZ2xlU2VsZWN0RXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYXNRdWV1ZWRDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShcbiAgICAgIHRoaXMuX3BlbmRpbmdEZXNlbGVjdGlvbnNUb0VtaXQubGVuZ3RoIHx8XG4gICAgICB0aGlzLl9wZW5kaW5nU2VsZWN0aW9uc1RvRW1pdC5sZW5ndGhcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29uY3JldGVWYWx1ZShpbnB1dFZhbDogVCk6IFQge1xuICAgIGlmICghdGhpcy5jb21wYXJlRnVuYykge1xuICAgICAgcmV0dXJuIGlucHV0VmFsO1xuICAgIH1cblxuICAgIGZvciAobGV0IHNlbGVjdGVkVmFsIG9mIHRoaXMuX3NlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuY29tcGFyZUZ1bmMoaW5wdXRWYWwsIHNlbGVjdGVkVmFsKSkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRWYWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0VmFsO1xuICB9XG59XG4iXX0=
|