@stemy/ngx-utils 19.3.1 → 19.3.2
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.
|
@@ -5833,16 +5833,27 @@ class DropdownDirective {
|
|
|
5833
5833
|
this.disabled = false;
|
|
5834
5834
|
this.closeInside = true;
|
|
5835
5835
|
this.attachToRoot = true;
|
|
5836
|
+
this.mobileViewUnder = 0;
|
|
5836
5837
|
this.keyboardHandler = true;
|
|
5837
5838
|
this.onShown = new EventEmitter();
|
|
5838
5839
|
this.onHidden = new EventEmitter();
|
|
5839
5840
|
this.onKeyboard = new EventEmitter();
|
|
5840
|
-
this.
|
|
5841
|
-
|
|
5842
|
-
if (event
|
|
5843
|
-
return;
|
|
5844
|
-
if (!this.closeInside && (this.nativeElement?.contains(target) || this.contentElement?.contains(target))) {
|
|
5841
|
+
this.onClick = (event) => {
|
|
5842
|
+
// We don't care about clicks with right/center mouse buttons
|
|
5843
|
+
if (event.button)
|
|
5845
5844
|
return;
|
|
5845
|
+
const target = (event.composedPath()?.shift() || event.target);
|
|
5846
|
+
// If blocked closing inside we only consider inside if the target is not directly the contentElement
|
|
5847
|
+
// We only have a contentElement in case when we are using *dropdownContent directive
|
|
5848
|
+
if (!this.closeInside && (!this.contentElement || target !== this.contentElement)) {
|
|
5849
|
+
// Try to determine if we are inside by collecting the possible parent elements to check
|
|
5850
|
+
const parents = !this.contentElement ? [] : Array.from(this.contentElement.childNodes);
|
|
5851
|
+
if (this.nativeElement) {
|
|
5852
|
+
parents.push(this.nativeElement);
|
|
5853
|
+
}
|
|
5854
|
+
// If one of the parents contains the target then we clicked inside
|
|
5855
|
+
if (parents.some(child => child.contains(target)))
|
|
5856
|
+
return;
|
|
5846
5857
|
}
|
|
5847
5858
|
setTimeout(() => this.hide(), event.type == "touchend" ? 250 : 100);
|
|
5848
5859
|
};
|
|
@@ -5889,7 +5900,7 @@ class DropdownDirective {
|
|
|
5889
5900
|
setTimeout(() => {
|
|
5890
5901
|
if (!this.opened)
|
|
5891
5902
|
return;
|
|
5892
|
-
document.addEventListener("click", this.
|
|
5903
|
+
document.addEventListener("click", this.onClick);
|
|
5893
5904
|
document.addEventListener("keydown", this.onKeyDown);
|
|
5894
5905
|
}, 10);
|
|
5895
5906
|
return true;
|
|
@@ -5899,7 +5910,7 @@ class DropdownDirective {
|
|
|
5899
5910
|
return true;
|
|
5900
5911
|
this.opened = false;
|
|
5901
5912
|
this.hideEvent();
|
|
5902
|
-
document.removeEventListener("click", this.
|
|
5913
|
+
document.removeEventListener("click", this.onClick);
|
|
5903
5914
|
document.removeEventListener("keydown", this.onKeyDown);
|
|
5904
5915
|
// Prevent toggle from refocus itself after it is hidden because of another toggle
|
|
5905
5916
|
setTimeout(() => {
|
|
@@ -5911,7 +5922,7 @@ class DropdownDirective {
|
|
|
5911
5922
|
return true;
|
|
5912
5923
|
}
|
|
5913
5924
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DropdownDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5914
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: DropdownDirective, isStandalone: false, selector: "[dd],[drop-down]", inputs: { closeInside: "closeInside", attachToRoot: "attachToRoot", placement: "placement", autoPlacement: "autoPlacement", keyboardHandler: "keyboardHandler", isDisabled: "isDisabled" }, outputs: { onShown: "onShown", onHidden: "onHidden", onKeyboard: "onKeyboard" }, host: { listeners: { "keydown.enter": "show($event)", "keydown.space": "show($event)" }, properties: { "class.open": "this.isOpened", "class.disabled": "this.getDisabled" } }, exportAs: ["dropdown"], ngImport: i0 }); }
|
|
5925
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: DropdownDirective, isStandalone: false, selector: "[dd],[drop-down]", inputs: { closeInside: "closeInside", attachToRoot: "attachToRoot", placement: "placement", autoPlacement: "autoPlacement", mobileViewUnder: "mobileViewUnder", keyboardHandler: "keyboardHandler", isDisabled: "isDisabled" }, outputs: { onShown: "onShown", onHidden: "onHidden", onKeyboard: "onKeyboard" }, host: { listeners: { "keydown.enter": "show($event)", "keydown.space": "show($event)" }, properties: { "class.open": "this.isOpened", "class.disabled": "this.getDisabled" } }, exportAs: ["dropdown"], ngImport: i0 }); }
|
|
5915
5926
|
}
|
|
5916
5927
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DropdownDirective, decorators: [{
|
|
5917
5928
|
type: Directive,
|
|
@@ -5928,6 +5939,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
|
|
|
5928
5939
|
type: Input
|
|
5929
5940
|
}], autoPlacement: [{
|
|
5930
5941
|
type: Input
|
|
5942
|
+
}], mobileViewUnder: [{
|
|
5943
|
+
type: Input
|
|
5931
5944
|
}], keyboardHandler: [{
|
|
5932
5945
|
type: Input
|
|
5933
5946
|
}], onShown: [{
|
|
@@ -5976,6 +5989,7 @@ class DropdownContentDirective {
|
|
|
5976
5989
|
this.destroyView();
|
|
5977
5990
|
}
|
|
5978
5991
|
createView(init = false) {
|
|
5992
|
+
const mobileWidth = this.dropdown.mobileViewUnder || 0;
|
|
5979
5993
|
const ref = this.dropdown.nativeElement;
|
|
5980
5994
|
const content = this.createWrapper();
|
|
5981
5995
|
this.dropdown.contentElement = content;
|
|
@@ -5993,12 +6007,15 @@ class DropdownContentDirective {
|
|
|
5993
6007
|
placement,
|
|
5994
6008
|
middleware
|
|
5995
6009
|
}).then(({ x, y, placement }) => {
|
|
6010
|
+
const isMobileView = window.innerWidth <= mobileWidth;
|
|
5996
6011
|
Object.assign(content.style, {
|
|
5997
6012
|
opacity: init ? "0" : "1",
|
|
5998
|
-
position: strategy,
|
|
5999
|
-
left: `${x}px`,
|
|
6000
|
-
|
|
6001
|
-
|
|
6013
|
+
position: isMobileView ? "fixed" : strategy,
|
|
6014
|
+
left: isMobileView ? `0px` : `${x}px`,
|
|
6015
|
+
right: isMobileView ? `0px` : undefined,
|
|
6016
|
+
top: isMobileView ? `0px` : `${y}px`,
|
|
6017
|
+
bottom: isMobileView ? `0px` : undefined,
|
|
6018
|
+
zIndex: `var(--dd-z-index, 100)`
|
|
6002
6019
|
});
|
|
6003
6020
|
const refRect = ref.getBoundingClientRect();
|
|
6004
6021
|
const contentRect = content.getBoundingClientRect();
|
|
@@ -6012,6 +6029,12 @@ class DropdownContentDirective {
|
|
|
6012
6029
|
ref.classList.add(newPlacement);
|
|
6013
6030
|
content.classList.add(newPlacement);
|
|
6014
6031
|
}
|
|
6032
|
+
if (isMobileView) {
|
|
6033
|
+
content.classList.add(`dropdown-content-mobile`);
|
|
6034
|
+
}
|
|
6035
|
+
else {
|
|
6036
|
+
content.classList.remove(`dropdown-content-mobile`);
|
|
6037
|
+
}
|
|
6015
6038
|
rectProps.forEach(prop => {
|
|
6016
6039
|
content.style.setProperty(`--toggle-${prop}`, `${refRect[prop]}px`);
|
|
6017
6040
|
ref.style.setProperty(`--content-${prop}`, `${contentRect[prop]}px`);
|
|
@@ -6369,7 +6392,7 @@ class DropdownBoxComponent {
|
|
|
6369
6392
|
this.makeAutoPlacementOpts();
|
|
6370
6393
|
}
|
|
6371
6394
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DropdownBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6372
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: DropdownBoxComponent, isStandalone: false, selector: "dropdown-box", inputs: { closeInside: "closeInside", attachToRoot: "attachToRoot", placement: "placement", crossAxis: "crossAxis", alignment: "alignment", autoAlignment: "autoAlignment", allowedPlacements: "allowedPlacements", componentClass: "componentClass" }, viewQueries: [{ propertyName: "content", first: true, predicate: DropdownContentDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div dd class=\"dropdown-box\"\n [ngClass]=\"componentClass\"\n [closeInside]=\"closeInside\"\n [attachToRoot]=\"attachToRoot\"\n [placement]=\"placement\"\n [autoPlacement]=\"autoPlacement\">\n <div class=\"dropdown-box-toggle\" dropdownToggle>\n <a class=\"dropdown-box-toggle-link\">\n <ng-content select=\"[toggle-content]\"></ng-content>\n </a>\n </div>\n <div class=\"dropdown-box-content\" [ngClass]=\"componentClass + '-content-wrapper'\" *dropdownContent>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".dropdown-box{--dd-border-size: var(--border-size, 1px);--dd-border-radius: 5px;--dd-top-border-radius: var(--dd-border-radius) var(--dd-border-radius) 0 0;--dd-bottom-border-radius: 0 0 var(--dd-border-radius) var(--dd-border-radius);--dd-bg-color: var(--bg-color, #ffffff);--dd-border-color: var(--border-color, #ced4da);--dd-highlight-color: var(--highlight-color, var(--primary-color, #888888));--dd-highlight-text-color: var(--highlight-text-color, #ffffff);--dd-text-color: var(--text-color, #151515);--dd-arrow-size: var(--arrow-size, 6px);--dd-arrow-space: calc(var(--dd-arrow-size) * .5 + 1px);--dd-arrow-color: currentColor;--dd-arrow-rotation: 90;position:relative;z-index:2;display:inline-block;width:var(--content-width, 0);min-width:fit-content}.dropdown-box a,.dropdown-box span{white-space:nowrap}.dropdown-box.table-sort-dropdown{display:none}.dropdown-box.table-sort-dropdown .table-toggle:hover,.dropdown-box li:hover,.dropdown-box li.active{background-color:var(--dd-highlight-color);color:var(--dd-highlight-text-color)}.dropdown-box.open{--dd-arrow-rotation: -90}.dropdown-box.open .dropdown-box-toggle{border-radius:var(--dd-top-border-radius)}.dropdown-box-toggle{min-width:fit-content;background:var(--dd-bg-color);color:var(--dd-text-color);cursor:pointer;border:var(--dd-border-size) solid var(--dd-border-color);border-radius:5px;padding:6px 12px;-webkit-user-select:none;user-select:none;font-weight:400;font-size:var(--table-input-font-size, 15px);line-height:var(--table-input-line-height, 18px);outline:none}.dropdown-box-toggle .toggle-placeholder{color:#495057}.dropdown-box-toggle a.dropdown-box-toggle-link{margin-right:calc(2 * var(--dd-arrow-size));padding-right:5px;min-width:fit-content;position:relative;display:block}.dropdown-box-toggle a.dropdown-box-toggle-link:after{content:\"\";position:absolute;left:calc(100% + var(--dd-arrow-size));top:calc(50% - var(--dd-arrow-size));border-top:var(--dd-arrow-size) solid transparent;border-bottom:var(--dd-arrow-size) solid transparent;border-left:var(--dd-arrow-size) solid var(--dd-arrow-color);transform:rotate(calc(var(--dd-arrow-rotation) * 1deg));transition:.2s ease}.dropdown-box-content{position:relative;z-index:1;min-width:var(--toggle-width, 0)}.dropdown-box-content ul{margin:0;padding:0;list-style:none;border:var(--dd-border-size) solid var(--dd-border-color);border-top-width:0;z-index:1;background:var(--dd-bg-color);border-radius:var(--dd-bottom-border-radius);overflow:hidden;min-width:fit-content}.dropdown-box-content li{color:var(--dd-text-color);font-weight:400;text-align:left;min-width:fit-content;cursor:pointer;padding:6px 12px;-webkit-user-select:none;user-select:none}.dropdown-box-content li:hover,.dropdown-box-content li.active{background-color:var(--dd-highlight-color);color:var(--dd-highlight-text-color)}.dropdown-placement-top.open .dropdown-box-toggle{border-radius:var(--dd-bottom-border-radius)}.dropdown-placement-top .dropdown-box-content ul{border-top-width:var(--dd-border-size);border-bottom-width:0;border-radius:var(--dd-top-border-radius)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: DropdownDirective, selector: "[dd],[drop-down]", inputs: ["closeInside", "attachToRoot", "placement", "autoPlacement", "keyboardHandler", "isDisabled"], outputs: ["onShown", "onHidden", "onKeyboard"], exportAs: ["dropdown"] }, { kind: "directive", type: DropdownContentDirective, selector: "[dropdownContent]", exportAs: ["dropdown-content"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[dropdownToggle]", inputs: ["beforeOpen"], exportAs: ["dropdown-toggle"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
6395
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: DropdownBoxComponent, isStandalone: false, selector: "dropdown-box", inputs: { closeInside: "closeInside", attachToRoot: "attachToRoot", placement: "placement", crossAxis: "crossAxis", alignment: "alignment", autoAlignment: "autoAlignment", allowedPlacements: "allowedPlacements", componentClass: "componentClass" }, viewQueries: [{ propertyName: "content", first: true, predicate: DropdownContentDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div dd class=\"dropdown-box\"\n [ngClass]=\"componentClass\"\n [closeInside]=\"closeInside\"\n [attachToRoot]=\"attachToRoot\"\n [placement]=\"placement\"\n [autoPlacement]=\"autoPlacement\">\n <div class=\"dropdown-box-toggle\" dropdownToggle>\n <a class=\"dropdown-box-toggle-link\">\n <ng-content select=\"[toggle-content]\"></ng-content>\n </a>\n </div>\n <div class=\"dropdown-box-content\" [ngClass]=\"componentClass + '-content-wrapper'\" *dropdownContent>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".dropdown-box{--dd-border-size: var(--border-size, 1px);--dd-border-radius: 5px;--dd-top-border-radius: var(--dd-border-radius) var(--dd-border-radius) 0 0;--dd-bottom-border-radius: 0 0 var(--dd-border-radius) var(--dd-border-radius);--dd-bg-color: var(--bg-color, #ffffff);--dd-border-color: var(--border-color, #ced4da);--dd-highlight-color: var(--highlight-color, var(--primary-color, #888888));--dd-highlight-text-color: var(--highlight-text-color, #ffffff);--dd-text-color: var(--text-color, #151515);--dd-arrow-size: var(--arrow-size, 6px);--dd-arrow-space: calc(var(--dd-arrow-size) * .5 + 1px);--dd-arrow-color: currentColor;--dd-arrow-rotation: 90;position:relative;z-index:2;display:inline-block;width:var(--content-width, 0);min-width:fit-content}.dropdown-box a,.dropdown-box span{white-space:nowrap}.dropdown-box.table-sort-dropdown{display:none}.dropdown-box.table-sort-dropdown .table-toggle:hover,.dropdown-box li:hover,.dropdown-box li.active{background-color:var(--dd-highlight-color);color:var(--dd-highlight-text-color)}.dropdown-box.open{--dd-arrow-rotation: -90}.dropdown-box.open .dropdown-box-toggle{border-radius:var(--dd-top-border-radius)}.dropdown-box-toggle{min-width:fit-content;background:var(--dd-bg-color);color:var(--dd-text-color);cursor:pointer;border:var(--dd-border-size) solid var(--dd-border-color);border-radius:5px;padding:6px 12px;-webkit-user-select:none;user-select:none;font-weight:400;font-size:var(--table-input-font-size, 15px);line-height:var(--table-input-line-height, 18px);outline:none}.dropdown-box-toggle .toggle-placeholder{color:#495057}.dropdown-box-toggle a.dropdown-box-toggle-link{margin-right:calc(2 * var(--dd-arrow-size));padding-right:5px;min-width:fit-content;position:relative;display:block}.dropdown-box-toggle a.dropdown-box-toggle-link:after{content:\"\";position:absolute;left:calc(100% + var(--dd-arrow-size));top:calc(50% - var(--dd-arrow-size));border-top:var(--dd-arrow-size) solid transparent;border-bottom:var(--dd-arrow-size) solid transparent;border-left:var(--dd-arrow-size) solid var(--dd-arrow-color);transform:rotate(calc(var(--dd-arrow-rotation) * 1deg));transition:.2s ease}.dropdown-box-content{position:relative;z-index:1;min-width:var(--toggle-width, 0)}.dropdown-box-content ul{margin:0;padding:0;list-style:none;border:var(--dd-border-size) solid var(--dd-border-color);border-top-width:0;z-index:1;background:var(--dd-bg-color);border-radius:var(--dd-bottom-border-radius);overflow:hidden;min-width:fit-content}.dropdown-box-content li{color:var(--dd-text-color);font-weight:400;text-align:left;min-width:fit-content;cursor:pointer;padding:6px 12px;-webkit-user-select:none;user-select:none}.dropdown-box-content li:hover,.dropdown-box-content li.active{background-color:var(--dd-highlight-color);color:var(--dd-highlight-text-color)}.dropdown-placement-top.open .dropdown-box-toggle{border-radius:var(--dd-bottom-border-radius)}.dropdown-placement-top .dropdown-box-content ul{border-top-width:var(--dd-border-size);border-bottom-width:0;border-radius:var(--dd-top-border-radius)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: DropdownDirective, selector: "[dd],[drop-down]", inputs: ["closeInside", "attachToRoot", "placement", "autoPlacement", "mobileViewUnder", "keyboardHandler", "isDisabled"], outputs: ["onShown", "onHidden", "onKeyboard"], exportAs: ["dropdown"] }, { kind: "directive", type: DropdownContentDirective, selector: "[dropdownContent]", exportAs: ["dropdown-content"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[dropdownToggle]", inputs: ["beforeOpen"], exportAs: ["dropdown-toggle"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
6373
6396
|
}
|
|
6374
6397
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DropdownBoxComponent, decorators: [{
|
|
6375
6398
|
type: Component,
|