@fundamental-ngx/core 0.33.3 → 0.33.4-rc.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/checkbox/checkbox.component.d.ts +30 -35
- package/checkbox/esm2020/checkbox/checkbox.component.mjs +61 -80
- package/checkbox/fesm2015/fundamental-ngx-core-checkbox.mjs +59 -77
- package/checkbox/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/checkbox/fesm2020/fundamental-ngx-core-checkbox.mjs +59 -77
- package/checkbox/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/checkbox/checkbox/checkbox.component.mjs +61 -80
- package/esm2020/list/list-item/list-item.component.mjs +6 -2
- package/esm2020/message-box/message-box-body/message-box-body.component.mjs +12 -10
- package/esm2020/message-box/message-box-footer/message-box-footer.component.mjs +12 -9
- package/esm2020/message-box/message-box-header/message-box-header.component.mjs +30 -16
- package/esm2020/message-box/message-box-semantic-icon/message-box-semantic-icon.component.mjs +12 -14
- package/esm2020/message-box/message-box.component.mjs +5 -15
- package/esm2020/message-box/utils/message-box-config.class.mjs +3 -2
- package/esm2020/multi-input/multi-input.component.mjs +38 -11
- package/esm2020/upload-collection/upload-collection-item.directive.mjs +81 -8
- package/esm2020/utils/helpers/range-selector.mjs +113 -0
- package/esm2020/utils/public_api.mjs +2 -1
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-checkbox.mjs +59 -77
- package/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-list.mjs +5 -1
- package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-message-box.mjs +67 -56
- package/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +40 -11
- package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-utils.mjs +114 -1
- package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-checkbox.mjs +59 -77
- package/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-list.mjs +5 -1
- package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-message-box.mjs +62 -55
- package/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +38 -11
- package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-utils.mjs +114 -1
- package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/esm2020/list-item/list-item.component.mjs +6 -2
- package/list/fesm2015/fundamental-ngx-core-list.mjs +5 -1
- package/list/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
- package/list/fesm2020/fundamental-ngx-core-list.mjs +5 -1
- package/list/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
- package/list/package.json +1 -1
- package/menu/package.json +1 -1
- package/message-box/esm2020/message-box-body/message-box-body.component.mjs +12 -10
- package/message-box/esm2020/message-box-footer/message-box-footer.component.mjs +12 -9
- package/message-box/esm2020/message-box-header/message-box-header.component.mjs +30 -16
- package/message-box/esm2020/message-box-semantic-icon/message-box-semantic-icon.component.mjs +12 -14
- package/message-box/esm2020/message-box.component.mjs +5 -15
- package/message-box/esm2020/utils/message-box-config.class.mjs +3 -2
- package/message-box/fesm2015/fundamental-ngx-core-message-box.mjs +67 -56
- package/message-box/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/message-box/fesm2020/fundamental-ngx-core-message-box.mjs +62 -55
- package/message-box/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/message-box/message-box-body/message-box-body.component.d.ts +6 -4
- package/message-box/message-box-footer/message-box-footer.component.d.ts +6 -4
- package/message-box/message-box-header/message-box-header.component.d.ts +16 -8
- package/message-box/message-box-semantic-icon/message-box-semantic-icon.component.d.ts +6 -4
- package/message-box/message-box.component.d.ts +4 -9
- package/message-box/package.json +1 -1
- package/message-box/utils/message-box-config.class.d.ts +2 -4
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/esm2020/multi-input.component.mjs +38 -11
- package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs +40 -11
- package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs +38 -11
- package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/multi-input/multi-input.component.d.ts +8 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/package.json +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/esm2020/upload-collection-item.directive.mjs +81 -8
- package/upload-collection/fesm2015/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/upload-collection/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/upload-collection/fesm2020/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/upload-collection/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/upload-collection/package.json +1 -1
- package/upload-collection/upload-collection-item.directive.d.ts +32 -2
- package/utils/esm2020/helpers/range-selector.mjs +113 -0
- package/utils/esm2020/public_api.mjs +2 -1
- package/utils/fesm2015/fundamental-ngx-core-utils.mjs +114 -1
- package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/fesm2020/fundamental-ngx-core-utils.mjs +114 -1
- package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/helpers/range-selector.d.ts +84 -0
- package/utils/package.json +1 -1
- package/utils/public_api.d.ts +1 -0
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { AfterContentInit, EventEmitter, OnDestroy } from '@angular/core';
|
|
1
|
+
import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
|
|
2
2
|
import { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';
|
|
3
3
|
import { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';
|
|
4
4
|
import { UploadCollectionTitleContainerDirective, UploadCollectionTitleDirective } from './upload-collection-simple.directives';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class UploadCollectionItemDirective implements AfterContentInit, OnDestroy {
|
|
6
|
+
export declare class UploadCollectionItemDirective implements AfterContentInit, OnDestroy, AfterViewInit {
|
|
7
|
+
elementRef: ElementRef;
|
|
7
8
|
/** The name of the file, not including the type extension. */
|
|
8
9
|
fileName: string;
|
|
9
10
|
/** The file type extension. */
|
|
@@ -23,9 +24,22 @@ export declare class UploadCollectionItemDirective implements AfterContentInit,
|
|
|
23
24
|
/** @hidden */
|
|
24
25
|
private _subscriptions;
|
|
25
26
|
/** @hidden */
|
|
27
|
+
fileNameFull: string;
|
|
28
|
+
/** @hidden */
|
|
29
|
+
titleWidth: number;
|
|
30
|
+
/** @hidden used to compare to the current width to know whether to collapse or expand title */
|
|
31
|
+
previousContainerWidth: number;
|
|
32
|
+
/** @hidden */
|
|
33
|
+
containerWidth: number;
|
|
34
|
+
/** @hidden */
|
|
26
35
|
ngAfterContentInit(): void;
|
|
27
36
|
/** @hidden */
|
|
37
|
+
ngAfterViewInit(): void;
|
|
38
|
+
/** @hidden */
|
|
28
39
|
ngOnDestroy(): void;
|
|
40
|
+
constructor(elementRef: ElementRef);
|
|
41
|
+
/** @hidden */
|
|
42
|
+
onResize(): void;
|
|
29
43
|
/** @hidden */
|
|
30
44
|
private _handleOkClickedSubscription;
|
|
31
45
|
/** @hidden */
|
|
@@ -34,6 +48,22 @@ export declare class UploadCollectionItemDirective implements AfterContentInit,
|
|
|
34
48
|
private _handleDeleteClickedSubscription;
|
|
35
49
|
/** @hidden */
|
|
36
50
|
private _handleFormItemInputChangedSubscription;
|
|
51
|
+
/** @hidden */
|
|
52
|
+
private getTitleWidth;
|
|
53
|
+
/** @hidden */
|
|
54
|
+
private getContainerWidth;
|
|
55
|
+
/**
|
|
56
|
+
* @hidden
|
|
57
|
+
*
|
|
58
|
+
* truncates the string by cutting out excess length in the middle and replacing with '...'
|
|
59
|
+
*/
|
|
60
|
+
private truncateTitle;
|
|
61
|
+
/**
|
|
62
|
+
* @hidden
|
|
63
|
+
*
|
|
64
|
+
* determines if file title needs to be truncated given container constraint.
|
|
65
|
+
*/
|
|
66
|
+
private resizeFileTitle;
|
|
37
67
|
static ɵfac: i0.ɵɵFactoryDeclaration<UploadCollectionItemDirective, never>;
|
|
38
68
|
static ɵdir: i0.ɵɵDirectiveDeclaration<UploadCollectionItemDirective, "[fd-upload-collection-item]", never, { "fileName": "fileName"; "extension": "extension"; }, { "fileNameChanged": "fileNameChanged"; "deleteClicked": "deleteClicked"; }, ["_formItemComponent", "_titleDirective", "_buttonGroupComponent", "_titleContainerDirective"]>;
|
|
39
69
|
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility type, that allows to track and select ranges of elements while using multi-selection.
|
|
3
|
+
*
|
|
4
|
+
* @usage
|
|
5
|
+
* Imagine we have a simple list of checkboxes:
|
|
6
|
+
* ```html
|
|
7
|
+
* <input
|
|
8
|
+
* #checkboxInput
|
|
9
|
+
* *ngFor="let o of options; let idx = index"
|
|
10
|
+
* type="checkbox"
|
|
11
|
+
* [checked]="selectionModel.checked(o)"
|
|
12
|
+
* (click)="toggle(idx, $event)"
|
|
13
|
+
* >
|
|
14
|
+
* ```
|
|
15
|
+
* With the given layout the logic should be as follows:
|
|
16
|
+
* ```typescript
|
|
17
|
+
* export class YourComponent {
|
|
18
|
+
* options = ['a', 'b', 'c'];
|
|
19
|
+
* readonly selectionModel = new SelectionModel(true);
|
|
20
|
+
*
|
|
21
|
+
* private readonly _rangeSelector = new RangeSelector();
|
|
22
|
+
*
|
|
23
|
+
*
|
|
24
|
+
* toggle(idx: number, event: PointerEvent): void {
|
|
25
|
+
* // getting the toggled value of the checkbox
|
|
26
|
+
* const toggledSelection = event.target.value;
|
|
27
|
+
*
|
|
28
|
+
* // registering the selection of current checkbox
|
|
29
|
+
* this._rangeSelector.onRangeElementToggled(idx, event);
|
|
30
|
+
*
|
|
31
|
+
* // Apply value to each element in range.
|
|
32
|
+
* // If checkbox was toggled without shift pressed or without previously selected one,
|
|
33
|
+
* // this method will select only it.
|
|
34
|
+
* this._rangeSelector.applyValueToEachInRange(idx => {
|
|
35
|
+
* if (toggledSelection) {
|
|
36
|
+
* this.selectionModel.select(options[idx]);
|
|
37
|
+
* } else {
|
|
38
|
+
* this.selectionModel.deselect(options[idx]);
|
|
39
|
+
* }
|
|
40
|
+
* });
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export class RangeSelector {
|
|
46
|
+
constructor() {
|
|
47
|
+
/** @hidden */
|
|
48
|
+
this._previousSelectedIndex = null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Last registered selection state (either multiple or single).
|
|
52
|
+
* Is updated on each `onRangeElementClicked` invokation. Will be `null` initially or once `reset()` is called.
|
|
53
|
+
*/
|
|
54
|
+
get lastRangeSelectionState() {
|
|
55
|
+
return this._state ? { ...this._state } : null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The method that should be used to register each checkbox toggle.
|
|
59
|
+
* Accepts two arguments: `index` and `event`. If none provided, will reset existing state.
|
|
60
|
+
* Otherwise will register current index as last checked.
|
|
61
|
+
*
|
|
62
|
+
* If toggling was done with "shift" pressed and there's a previously registered index, will register a range selection.
|
|
63
|
+
* At the same time if checkbox was toggled without shift pressed or without previously selected one, this method will select only it.
|
|
64
|
+
*
|
|
65
|
+
* After calling this method it's recommended to use `applyValueToEachInRange` to actually toggle each checkbox in range.
|
|
66
|
+
*
|
|
67
|
+
* See usage example on this class itself.
|
|
68
|
+
*/
|
|
69
|
+
onRangeElementToggled(index, event) {
|
|
70
|
+
if (this._isNonNegativeInteger(this._previousSelectedIndex) &&
|
|
71
|
+
this._isNonNegativeInteger(index) &&
|
|
72
|
+
event?.shiftKey) {
|
|
73
|
+
this._state = {
|
|
74
|
+
isRangeSelection: true,
|
|
75
|
+
from: Math.min(this._previousSelectedIndex, index),
|
|
76
|
+
to: Math.max(this._previousSelectedIndex, index)
|
|
77
|
+
};
|
|
78
|
+
this._previousSelectedIndex = index;
|
|
79
|
+
}
|
|
80
|
+
else if (this._isNonNegativeInteger(index)) {
|
|
81
|
+
this._state = { isRangeSelection: false, from: index, to: index };
|
|
82
|
+
this._previousSelectedIndex = index;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.reset();
|
|
86
|
+
}
|
|
87
|
+
return this.lastRangeSelectionState;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Allows to apply selection to each item in selection range.
|
|
91
|
+
* Accepts a function to apply selection to each item by registered index.
|
|
92
|
+
*
|
|
93
|
+
* See usage example on this class itself.
|
|
94
|
+
*/
|
|
95
|
+
applyValueToEachInRange(selectionMethod) {
|
|
96
|
+
const state = this.lastRangeSelectionState;
|
|
97
|
+
if (this._isNonNegativeInteger(state?.from) && this._isNonNegativeInteger(state.to)) {
|
|
98
|
+
for (let index = state.from; index <= state.to; index++) {
|
|
99
|
+
selectionMethod(index);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** Resets selection state. Useful when the list of selectable items is changed (e.g. by filtering, sorting, page change) */
|
|
104
|
+
reset() {
|
|
105
|
+
this._state = null;
|
|
106
|
+
this._previousSelectedIndex = null;
|
|
107
|
+
}
|
|
108
|
+
/** @hidden */
|
|
109
|
+
_isNonNegativeInteger(num) {
|
|
110
|
+
return Number.isInteger(num) && num >= 0;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9oZWxwZXJzL3JhbmdlLXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkNHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFBMUI7UUFDSSxjQUFjO1FBQ04sMkJBQXNCLEdBQWtCLElBQUksQ0FBQztJQXdFekQsQ0FBQztJQXBFRzs7O09BR0c7SUFDSCxJQUFJLHVCQUF1QjtRQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxxQkFBcUIsQ0FBQyxLQUFjLEVBQUUsS0FBK0M7UUFDakYsSUFDSSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ3ZELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7WUFDakMsS0FBSyxFQUFFLFFBQVEsRUFDakI7WUFDRSxJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNWLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUM7Z0JBQ2xELEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUM7YUFDbkQsQ0FBQztZQUNGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7U0FDdkM7YUFBTSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7U0FDdkM7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQjtRQUVELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHVCQUF1QixDQUFDLGVBQXdDO1FBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUUzQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNqRixLQUFLLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JELGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtTQUNKO0lBQ0wsQ0FBQztJQUVELDRIQUE0SDtJQUM1SCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztJQUNOLHFCQUFxQixDQUFDLEdBQVc7UUFDckMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IHR5cGUsIHRoYXQgYWxsb3dzIHRvIHRyYWNrIGFuZCBzZWxlY3QgcmFuZ2VzIG9mIGVsZW1lbnRzIHdoaWxlIHVzaW5nIG11bHRpLXNlbGVjdGlvbi5cbiAqXG4gKiBAdXNhZ2VcbiAqIEltYWdpbmUgd2UgaGF2ZSBhIHNpbXBsZSBsaXN0IG9mIGNoZWNrYm94ZXM6XG4gKiBgYGBodG1sXG4gKiA8aW5wdXRcbiAqICAjY2hlY2tib3hJbnB1dFxuICogICpuZ0Zvcj1cImxldCBvIG9mIG9wdGlvbnM7IGxldCBpZHggPSBpbmRleFwiXG4gKiAgdHlwZT1cImNoZWNrYm94XCJcbiAqICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Nb2RlbC5jaGVja2VkKG8pXCJcbiAqICAoY2xpY2spPVwidG9nZ2xlKGlkeCwgJGV2ZW50KVwiXG4gKiAgPlxuICogYGBgXG4gKiBXaXRoIHRoZSBnaXZlbiBsYXlvdXQgdGhlIGxvZ2ljIHNob3VsZCBiZSBhcyBmb2xsb3dzOlxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIFlvdXJDb21wb25lbnQge1xuICogIG9wdGlvbnMgPSBbJ2EnLCAnYicsICdjJ107XG4gKiAgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0aW9uTW9kZWwodHJ1ZSk7XG4gKlxuICogIHByaXZhdGUgcmVhZG9ubHkgX3JhbmdlU2VsZWN0b3IgPSBuZXcgUmFuZ2VTZWxlY3RvcigpO1xuICpcbiAqXG4gKiAgdG9nZ2xlKGlkeDogbnVtYmVyLCBldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gKiAgICAgIC8vIGdldHRpbmcgdGhlIHRvZ2dsZWQgdmFsdWUgb2YgdGhlIGNoZWNrYm94XG4gKiAgICAgIGNvbnN0IHRvZ2dsZWRTZWxlY3Rpb24gPSBldmVudC50YXJnZXQudmFsdWU7XG4gKlxuICogICAgICAvLyByZWdpc3RlcmluZyB0aGUgc2VsZWN0aW9uIG9mIGN1cnJlbnQgY2hlY2tib3hcbiAqICAgICAgdGhpcy5fcmFuZ2VTZWxlY3Rvci5vblJhbmdlRWxlbWVudFRvZ2dsZWQoaWR4LCBldmVudCk7XG4gKlxuICogICAgICAvLyBBcHBseSB2YWx1ZSB0byBlYWNoIGVsZW1lbnQgaW4gcmFuZ2UuXG4gKiAgICAgIC8vIElmIGNoZWNrYm94IHdhcyB0b2dnbGVkIHdpdGhvdXQgc2hpZnQgcHJlc3NlZCBvciB3aXRob3V0IHByZXZpb3VzbHkgc2VsZWN0ZWQgb25lLFxuICogICAgICAvLyB0aGlzIG1ldGhvZCB3aWxsIHNlbGVjdCBvbmx5IGl0LlxuICogICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLmFwcGx5VmFsdWVUb0VhY2hJblJhbmdlKGlkeCA9PiB7XG4gKiAgICAgICAgICBpZiAodG9nZ2xlZFNlbGVjdGlvbikge1xuICogICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0KG9wdGlvbnNbaWR4XSk7XG4gKiAgICAgICAgICB9IGVsc2Uge1xuICogICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3Qob3B0aW9uc1tpZHhdKTtcbiAqICAgICAgICAgIH1cbiAqICAgICAgfSk7XG4gKiAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBSYW5nZVNlbGVjdG9yIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzU2VsZWN0ZWRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGF0ZTogUmFuZ2VTZWxlY3Rpb25TdGF0ZSB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBMYXN0IHJlZ2lzdGVyZWQgc2VsZWN0aW9uIHN0YXRlIChlaXRoZXIgbXVsdGlwbGUgb3Igc2luZ2xlKS5cbiAgICAgKiBJcyB1cGRhdGVkIG9uIGVhY2ggYG9uUmFuZ2VFbGVtZW50Q2xpY2tlZGAgaW52b2thdGlvbi4gV2lsbCBiZSBgbnVsbGAgaW5pdGlhbGx5IG9yIG9uY2UgYHJlc2V0KClgIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBnZXQgbGFzdFJhbmdlU2VsZWN0aW9uU3RhdGUoKTogUmFuZ2VTZWxlY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGUgPyB7IC4uLnRoaXMuX3N0YXRlIH0gOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBtZXRob2QgdGhhdCBzaG91bGQgYmUgdXNlZCB0byByZWdpc3RlciBlYWNoIGNoZWNrYm94IHRvZ2dsZS5cbiAgICAgKiBBY2NlcHRzIHR3byBhcmd1bWVudHM6IGBpbmRleGAgYW5kIGBldmVudGAuIElmIG5vbmUgcHJvdmlkZWQsIHdpbGwgcmVzZXQgZXhpc3Rpbmcgc3RhdGUuXG4gICAgICogT3RoZXJ3aXNlIHdpbGwgcmVnaXN0ZXIgY3VycmVudCBpbmRleCBhcyBsYXN0IGNoZWNrZWQuXG4gICAgICpcbiAgICAgKiBJZiB0b2dnbGluZyB3YXMgZG9uZSB3aXRoIFwic2hpZnRcIiBwcmVzc2VkIGFuZCB0aGVyZSdzIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIGluZGV4LCB3aWxsIHJlZ2lzdGVyIGEgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgICAqIEF0IHRoZSBzYW1lIHRpbWUgaWYgY2hlY2tib3ggd2FzIHRvZ2dsZWQgd2l0aG91dCBzaGlmdCBwcmVzc2VkIG9yIHdpdGhvdXQgcHJldmlvdXNseSBzZWxlY3RlZCBvbmUsIHRoaXMgbWV0aG9kIHdpbGwgc2VsZWN0IG9ubHkgaXQuXG4gICAgICpcbiAgICAgKiBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIGl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIGBhcHBseVZhbHVlVG9FYWNoSW5SYW5nZWAgdG8gYWN0dWFsbHkgdG9nZ2xlIGVhY2ggY2hlY2tib3ggaW4gcmFuZ2UuXG4gICAgICpcbiAgICAgKiBTZWUgdXNhZ2UgZXhhbXBsZSBvbiB0aGlzIGNsYXNzIGl0c2VsZi5cbiAgICAgKi9cbiAgICBvblJhbmdlRWxlbWVudFRvZ2dsZWQoaW5kZXg/OiBudW1iZXIsIGV2ZW50PzogS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogUmFuZ2VTZWxlY3Rpb25TdGF0ZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuX2lzTm9uTmVnYXRpdmVJbnRlZ2VyKHRoaXMuX3ByZXZpb3VzU2VsZWN0ZWRJbmRleCkgJiZcbiAgICAgICAgICAgIHRoaXMuX2lzTm9uTmVnYXRpdmVJbnRlZ2VyKGluZGV4KSAmJlxuICAgICAgICAgICAgZXZlbnQ/LnNoaWZ0S2V5XG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgaXNSYW5nZVNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmcm9tOiBNYXRoLm1pbih0aGlzLl9wcmV2aW91c1NlbGVjdGVkSW5kZXgsIGluZGV4KSxcbiAgICAgICAgICAgICAgICB0bzogTWF0aC5tYXgodGhpcy5fcHJldmlvdXNTZWxlY3RlZEluZGV4LCBpbmRleClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c1NlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9pc05vbk5lZ2F0aXZlSW50ZWdlcihpbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlID0geyBpc1JhbmdlU2VsZWN0aW9uOiBmYWxzZSwgZnJvbTogaW5kZXgsIHRvOiBpbmRleCB9O1xuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5sYXN0UmFuZ2VTZWxlY3Rpb25TdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbGxvd3MgdG8gYXBwbHkgc2VsZWN0aW9uIHRvIGVhY2ggaXRlbSBpbiBzZWxlY3Rpb24gcmFuZ2UuXG4gICAgICogQWNjZXB0cyBhIGZ1bmN0aW9uIHRvIGFwcGx5IHNlbGVjdGlvbiB0byBlYWNoIGl0ZW0gYnkgcmVnaXN0ZXJlZCBpbmRleC5cbiAgICAgKlxuICAgICAqIFNlZSB1c2FnZSBleGFtcGxlIG9uIHRoaXMgY2xhc3MgaXRzZWxmLlxuICAgICAqL1xuICAgIGFwcGx5VmFsdWVUb0VhY2hJblJhbmdlKHNlbGVjdGlvbk1ldGhvZDogKGluZGV4OiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmxhc3RSYW5nZVNlbGVjdGlvblN0YXRlO1xuXG4gICAgICAgIGlmICh0aGlzLl9pc05vbk5lZ2F0aXZlSW50ZWdlcihzdGF0ZT8uZnJvbSkgJiYgdGhpcy5faXNOb25OZWdhdGl2ZUludGVnZXIoc3RhdGUudG8pKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IHN0YXRlLmZyb207IGluZGV4IDw9IHN0YXRlLnRvOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uTWV0aG9kKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZXNldHMgc2VsZWN0aW9uIHN0YXRlLiBVc2VmdWwgd2hlbiB0aGUgbGlzdCBvZiBzZWxlY3RhYmxlIGl0ZW1zIGlzIGNoYW5nZWQgKGUuZy4gYnkgZmlsdGVyaW5nLCBzb3J0aW5nLCBwYWdlIGNoYW5nZSkgKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLl9wcmV2aW91c1NlbGVjdGVkSW5kZXggPSBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNOb25OZWdhdGl2ZUludGVnZXIobnVtOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIobnVtKSAmJiBudW0gPj0gMDtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2VTZWxlY3Rpb25TdGF0ZSB7XG4gICAgaXNSYW5nZVNlbGVjdGlvbjogYm9vbGVhbjtcbiAgICBmcm9tOiBudW1iZXI7XG4gICAgdG86IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -42,6 +42,7 @@ export * from './dynamic-component/dynamic-component-config';
|
|
|
42
42
|
export * from './dynamic-component/dynamic-component-injector';
|
|
43
43
|
export * from './dynamic-component/dynamic-component.service';
|
|
44
44
|
export * from './dynamic-component/dynamic-component-container';
|
|
45
|
+
export * from './helpers/range-selector';
|
|
45
46
|
export * from './utils.module';
|
|
46
47
|
export * from './datatypes/hash.datatype';
|
|
47
48
|
export * from './datatypes/size.datatype';
|
|
@@ -56,4 +57,4 @@ export * from './abstract-fd-ngx-class';
|
|
|
56
57
|
export * from './list-item/list-item-utils';
|
|
57
58
|
export * from './mixins/apply-mixin';
|
|
58
59
|
export * from './services/focus-trap.service';
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsaUVBQWlFLENBQUM7QUFFaEYsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYywrREFBK0QsQ0FBQztBQUU5RSxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDhDQUE4QyxDQUFDO0FBRTdELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGlEQUFpRCxDQUFDO0FBRWhFLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHNEQUFzRCxDQUFDO0FBRXJFLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGNBQWMsVUFBVSxDQUFDO0FBRXpCLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvdGVtcGxhdGUvdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy90ZW1wbGF0ZS90ZW1wbGF0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL29ubHktZGlnaXRzL29ubHktZGlnaXRzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvb25seS1kaWdpdHMvb25seS1kaWdpdHMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9yZXNpemUvcmVzaXplLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvcmVzaXplL3Jlc2l6ZS1oYW5kbGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9yZXNpemUvcmVzaXplLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvaW5pdGlhbC1mb2N1cy9pbml0aWFsLWZvY3VzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvbGluZS1jbGFtcC9saW5lLWNsYW1wLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvbGluZS1jbGFtcC9saW5lLWNsYW1wLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvaW5pdGlhbC1mb2N1cy9pbml0aWFsLWZvY3VzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvb3ZlcmZsb3ctbGlzdC9vdmVyZmxvdy1saXN0LWl0ZW0uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9vdmVyZmxvdy1saXN0L292ZXJmbG93LWxpc3QuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9vdmVyZmxvdy1saXN0L292ZXJmbG93LWxpc3QubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy90cnVuY2F0ZS90cnVuY2F0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3RydW5jYXRlL3RydW5jYXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZm9jdXMta2V5LW1hbmFnZXIvZm9jdXMta2V5LW1hbmFnZXItaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2ZvY3VzLWtleS1tYW5hZ2VyL2ZvY3VzLWtleS1tYW5hZ2VyLWxpc3QuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9mb2N1cy1rZXktbWFuYWdlci9mb2N1cy1rZXktbWFuYWdlci1oZWxwZXJzLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvcGlwZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9saXN0LWdyb3VwLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9kaXNwbGF5Rm4ucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3R3by1kaWdpdHMucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3NlYXJjaC1oaWdobGlnaHQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3NhZmUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2lzLWNvbXBhY3QucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3ZhbHVlLWJ5LXBhdGgucGlwZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZHJhZy1hbmQtZHJvcC9kcmFnLWFuZC1kcm9wLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYWctYW5kLWRyb3AvZG5kLWxpc3QvZG5kLWxpc3QuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZHJhZy1hbmQtZHJvcC9kbmQtaXRlbS9kbmQtaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWFuZC1kcm9wL2RuZC1rZXlib2FyZC1ncm91cC9kbmQta2V5Ym9hcmQtZ3JvdXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZHJhZy1hbmQtZHJvcC9kbmQta2V5Ym9hcmQtaXRlbS9kbmQta2V5Ym9hcmQtaXRlbS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvY3NzLWNsYXNzLWJ1aWxkZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9jc3Mtc3R5bGUtYnVpbGRlci5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2hhcy1lbGVtZW50LXJlZi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2tleWJvYXJkLXN1cHBvcnQtaXRlbS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvYXBwbHktY3NzLWNsYXNzLmRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvYXBwbHktY3NzLXN0eWxlLmRlY29yYXRvcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtaW5qZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtY29udGFpbmVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL3JhbmdlLXNlbGVjdG9yJztcblxuZXhwb3J0ICogZnJvbSAnLi91dGlscy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0eXBlcy9oYXNoLmRhdGF0eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXR5cGVzL3NpemUuZGF0YXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdHlwZXMvY29sb3ItYWNjZW50LmRhdGF0eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29udGVudC1kZW5zaXR5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9ydGwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3RoZW1lcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMva2V5Ym9hcmQtc3VwcG9ydC9rZXlib2FyZC1zdXBwb3J0LnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29uc3RzJztcblxuZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdC1mZC1uZ3gtY2xhc3MnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpc3QtaXRlbS9saXN0LWl0ZW0tdXRpbHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL21peGlucy9hcHBseS1taXhpbic7XG5cbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZm9jdXMtdHJhcC5zZXJ2aWNlJztcbiJdfQ==
|
|
@@ -2623,6 +2623,119 @@ class DynamicComponentContainer {
|
|
|
2623
2623
|
}
|
|
2624
2624
|
}
|
|
2625
2625
|
|
|
2626
|
+
/**
|
|
2627
|
+
* Utility type, that allows to track and select ranges of elements while using multi-selection.
|
|
2628
|
+
*
|
|
2629
|
+
* @usage
|
|
2630
|
+
* Imagine we have a simple list of checkboxes:
|
|
2631
|
+
* ```html
|
|
2632
|
+
* <input
|
|
2633
|
+
* #checkboxInput
|
|
2634
|
+
* *ngFor="let o of options; let idx = index"
|
|
2635
|
+
* type="checkbox"
|
|
2636
|
+
* [checked]="selectionModel.checked(o)"
|
|
2637
|
+
* (click)="toggle(idx, $event)"
|
|
2638
|
+
* >
|
|
2639
|
+
* ```
|
|
2640
|
+
* With the given layout the logic should be as follows:
|
|
2641
|
+
* ```typescript
|
|
2642
|
+
* export class YourComponent {
|
|
2643
|
+
* options = ['a', 'b', 'c'];
|
|
2644
|
+
* readonly selectionModel = new SelectionModel(true);
|
|
2645
|
+
*
|
|
2646
|
+
* private readonly _rangeSelector = new RangeSelector();
|
|
2647
|
+
*
|
|
2648
|
+
*
|
|
2649
|
+
* toggle(idx: number, event: PointerEvent): void {
|
|
2650
|
+
* // getting the toggled value of the checkbox
|
|
2651
|
+
* const toggledSelection = event.target.value;
|
|
2652
|
+
*
|
|
2653
|
+
* // registering the selection of current checkbox
|
|
2654
|
+
* this._rangeSelector.onRangeElementToggled(idx, event);
|
|
2655
|
+
*
|
|
2656
|
+
* // Apply value to each element in range.
|
|
2657
|
+
* // If checkbox was toggled without shift pressed or without previously selected one,
|
|
2658
|
+
* // this method will select only it.
|
|
2659
|
+
* this._rangeSelector.applyValueToEachInRange(idx => {
|
|
2660
|
+
* if (toggledSelection) {
|
|
2661
|
+
* this.selectionModel.select(options[idx]);
|
|
2662
|
+
* } else {
|
|
2663
|
+
* this.selectionModel.deselect(options[idx]);
|
|
2664
|
+
* }
|
|
2665
|
+
* });
|
|
2666
|
+
* }
|
|
2667
|
+
* }
|
|
2668
|
+
* ```
|
|
2669
|
+
*/
|
|
2670
|
+
class RangeSelector {
|
|
2671
|
+
constructor() {
|
|
2672
|
+
/** @hidden */
|
|
2673
|
+
this._previousSelectedIndex = null;
|
|
2674
|
+
}
|
|
2675
|
+
/**
|
|
2676
|
+
* Last registered selection state (either multiple or single).
|
|
2677
|
+
* Is updated on each `onRangeElementClicked` invokation. Will be `null` initially or once `reset()` is called.
|
|
2678
|
+
*/
|
|
2679
|
+
get lastRangeSelectionState() {
|
|
2680
|
+
return this._state ? Object.assign({}, this._state) : null;
|
|
2681
|
+
}
|
|
2682
|
+
/**
|
|
2683
|
+
* The method that should be used to register each checkbox toggle.
|
|
2684
|
+
* Accepts two arguments: `index` and `event`. If none provided, will reset existing state.
|
|
2685
|
+
* Otherwise will register current index as last checked.
|
|
2686
|
+
*
|
|
2687
|
+
* If toggling was done with "shift" pressed and there's a previously registered index, will register a range selection.
|
|
2688
|
+
* At the same time if checkbox was toggled without shift pressed or without previously selected one, this method will select only it.
|
|
2689
|
+
*
|
|
2690
|
+
* After calling this method it's recommended to use `applyValueToEachInRange` to actually toggle each checkbox in range.
|
|
2691
|
+
*
|
|
2692
|
+
* See usage example on this class itself.
|
|
2693
|
+
*/
|
|
2694
|
+
onRangeElementToggled(index, event) {
|
|
2695
|
+
if (this._isNonNegativeInteger(this._previousSelectedIndex) &&
|
|
2696
|
+
this._isNonNegativeInteger(index) &&
|
|
2697
|
+
(event === null || event === void 0 ? void 0 : event.shiftKey)) {
|
|
2698
|
+
this._state = {
|
|
2699
|
+
isRangeSelection: true,
|
|
2700
|
+
from: Math.min(this._previousSelectedIndex, index),
|
|
2701
|
+
to: Math.max(this._previousSelectedIndex, index)
|
|
2702
|
+
};
|
|
2703
|
+
this._previousSelectedIndex = index;
|
|
2704
|
+
}
|
|
2705
|
+
else if (this._isNonNegativeInteger(index)) {
|
|
2706
|
+
this._state = { isRangeSelection: false, from: index, to: index };
|
|
2707
|
+
this._previousSelectedIndex = index;
|
|
2708
|
+
}
|
|
2709
|
+
else {
|
|
2710
|
+
this.reset();
|
|
2711
|
+
}
|
|
2712
|
+
return this.lastRangeSelectionState;
|
|
2713
|
+
}
|
|
2714
|
+
/**
|
|
2715
|
+
* Allows to apply selection to each item in selection range.
|
|
2716
|
+
* Accepts a function to apply selection to each item by registered index.
|
|
2717
|
+
*
|
|
2718
|
+
* See usage example on this class itself.
|
|
2719
|
+
*/
|
|
2720
|
+
applyValueToEachInRange(selectionMethod) {
|
|
2721
|
+
const state = this.lastRangeSelectionState;
|
|
2722
|
+
if (this._isNonNegativeInteger(state === null || state === void 0 ? void 0 : state.from) && this._isNonNegativeInteger(state.to)) {
|
|
2723
|
+
for (let index = state.from; index <= state.to; index++) {
|
|
2724
|
+
selectionMethod(index);
|
|
2725
|
+
}
|
|
2726
|
+
}
|
|
2727
|
+
}
|
|
2728
|
+
/** Resets selection state. Useful when the list of selectable items is changed (e.g. by filtering, sorting, page change) */
|
|
2729
|
+
reset() {
|
|
2730
|
+
this._state = null;
|
|
2731
|
+
this._previousSelectedIndex = null;
|
|
2732
|
+
}
|
|
2733
|
+
/** @hidden */
|
|
2734
|
+
_isNonNegativeInteger(num) {
|
|
2735
|
+
return Number.isInteger(num) && num >= 0;
|
|
2736
|
+
}
|
|
2737
|
+
}
|
|
2738
|
+
|
|
2626
2739
|
var ContentDensityEnum;
|
|
2627
2740
|
(function (ContentDensityEnum) {
|
|
2628
2741
|
ContentDensityEnum["COMPACT"] = "compact";
|
|
@@ -3009,5 +3122,5 @@ function applyMixins(derivedCtor, baseCtors) {
|
|
|
3009
3122
|
* Generated bundle index. Do not edit.
|
|
3010
3123
|
*/
|
|
3011
3124
|
|
|
3012
|
-
export { ANY_LANGUAGE_LETTERS_GROUP_REGEX, ANY_LANGUAGE_LETTERS_REGEX, AbstractFdNgxClass, AutoCompleteDirective, AutoCompleteModule, ContentDensityEnum, ContentDensityService, DECIMAL_NUMBER_UNICODE_GROUP_REGEX, DECIMAL_NUMBER_UNICODE_RANGE, DECIMAL_NUMBER_UNICODE_REGEX, DEFAULT_CONTENT_DENSITY, DefaultTruncateCharCount, DisplayFnPipe, DndItemDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective, DndListDirective, DragAndDropModule, DynamicComponentContainer, DynamicComponentInjector, DynamicComponentService, ELEMENT_REF_EXCEPTION, FocusKeyManagerHelpersModule, FocusKeyManagerItemDirective, FocusKeyManagerListDirective, FocusTrapService, INVALID_DATE_ERROR, InitialFocusDirective, InitialFocusModule, IsCompactDensityPipe, KeyUtil, KeyboardSupportService, LETTERS_UNICODE_RANGE, LIST_ITEM_COMPONENT, LineClampDirective, LineClampModule, LineClampTargetDirective, ListGroupPipe, MOBILE_CONFIG_ERROR, OVERFLOW_PRIORITY_SCORE, OnlyDigitsDirective, OnlyDigitsModule, OverflowListDirective, OverflowListItemDirective, OverflowListModule, PipeModule, RTL_LANGUAGE, ResizeDirective, ResizeHandleDirective, ResizeModule, RtlService, SafePipe, SearchHighlightPipe, THEME_SWITCHER_ROUTER_MISSING_ERROR, TemplateDirective, TemplateModule, ThemesService, TruncateDirective, TruncateModule, TwoDigitsPipe, UtilsModule, ValueByPathPipe, applyCssClass, applyCssStyle, applyMixins, getElementCapacity, getElementWidth, getRandomColorAccent, intersectionObservable, isCompactDensity, isValidContentDensity, parserFileSize, pxToNum, resizeObservable, scrollTop, toNativeElement, uuidv4 };
|
|
3125
|
+
export { ANY_LANGUAGE_LETTERS_GROUP_REGEX, ANY_LANGUAGE_LETTERS_REGEX, AbstractFdNgxClass, AutoCompleteDirective, AutoCompleteModule, ContentDensityEnum, ContentDensityService, DECIMAL_NUMBER_UNICODE_GROUP_REGEX, DECIMAL_NUMBER_UNICODE_RANGE, DECIMAL_NUMBER_UNICODE_REGEX, DEFAULT_CONTENT_DENSITY, DefaultTruncateCharCount, DisplayFnPipe, DndItemDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective, DndListDirective, DragAndDropModule, DynamicComponentContainer, DynamicComponentInjector, DynamicComponentService, ELEMENT_REF_EXCEPTION, FocusKeyManagerHelpersModule, FocusKeyManagerItemDirective, FocusKeyManagerListDirective, FocusTrapService, INVALID_DATE_ERROR, InitialFocusDirective, InitialFocusModule, IsCompactDensityPipe, KeyUtil, KeyboardSupportService, LETTERS_UNICODE_RANGE, LIST_ITEM_COMPONENT, LineClampDirective, LineClampModule, LineClampTargetDirective, ListGroupPipe, MOBILE_CONFIG_ERROR, OVERFLOW_PRIORITY_SCORE, OnlyDigitsDirective, OnlyDigitsModule, OverflowListDirective, OverflowListItemDirective, OverflowListModule, PipeModule, RTL_LANGUAGE, RangeSelector, ResizeDirective, ResizeHandleDirective, ResizeModule, RtlService, SafePipe, SearchHighlightPipe, THEME_SWITCHER_ROUTER_MISSING_ERROR, TemplateDirective, TemplateModule, ThemesService, TruncateDirective, TruncateModule, TwoDigitsPipe, UtilsModule, ValueByPathPipe, applyCssClass, applyCssStyle, applyMixins, getElementCapacity, getElementWidth, getRandomColorAccent, intersectionObservable, isCompactDensity, isValidContentDensity, parserFileSize, pxToNum, resizeObservable, scrollTop, toNativeElement, uuidv4 };
|
|
3013
3126
|
//# sourceMappingURL=fundamental-ngx-core-utils.mjs.map
|