angular-toolbox 1.4.1 → 1.4.3
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 -1
- package/esm2022/lib/component/dropdown/dropdown.component.mjs +25 -4
- package/esm2022/lib/component/layout/border-layout/border-layout.component.mjs +15 -11
- package/esm2022/lib/component/layout/border-layout/util/border-layout-renderer.mjs +48 -15
- package/esm2022/lib/component/layout/border-layout-container/border-layout-container.component.mjs +2 -2
- package/esm2022/lib/model/service/version/angular-toolbox-version.service.mjs +3 -3
- package/fesm2022/angular-toolbox.mjs +87 -30
- package/fesm2022/angular-toolbox.mjs.map +1 -1
- package/lib/component/dropdown/dropdown.component.d.ts +14 -1
- package/lib/component/layout/border-layout/border-layout.component.d.ts +1 -1
- package/lib/component/layout/border-layout/util/border-layout-renderer.d.ts +17 -1
- package/package.json +1 -1
|
@@ -586,8 +586,8 @@ class AbstractVersionManager {
|
|
|
586
586
|
const ATX_VERSION_CONFIG = {
|
|
587
587
|
major: 1,
|
|
588
588
|
minor: 4,
|
|
589
|
-
patch:
|
|
590
|
-
buildTimestamp:
|
|
589
|
+
patch: 3,
|
|
590
|
+
buildTimestamp: 1728711207638
|
|
591
591
|
};
|
|
592
592
|
/**
|
|
593
593
|
* The public service that exposes the current version of the Angular Toolbox library.
|
|
@@ -8564,6 +8564,18 @@ const API_MATCH = ':popover-open';
|
|
|
8564
8564
|
* This component is part of the LAF-less API.
|
|
8565
8565
|
*/
|
|
8566
8566
|
class DropdownComponent extends IdentifiableComponent {
|
|
8567
|
+
/**
|
|
8568
|
+
* The disabled property sets or returns whether a dropdown is disabled, or not.
|
|
8569
|
+
*/
|
|
8570
|
+
set disabled(value) {
|
|
8571
|
+
this._disabled = this._button.nativeElement.disabled = value;
|
|
8572
|
+
if (!value)
|
|
8573
|
+
return;
|
|
8574
|
+
this.hideContent();
|
|
8575
|
+
}
|
|
8576
|
+
get disabled() {
|
|
8577
|
+
return this._disabled;
|
|
8578
|
+
}
|
|
8567
8579
|
/**
|
|
8568
8580
|
* @private
|
|
8569
8581
|
*/
|
|
@@ -8590,6 +8602,10 @@ class DropdownComponent extends IdentifiableComponent {
|
|
|
8590
8602
|
* (`auto`), or not (`manual`).
|
|
8591
8603
|
*/
|
|
8592
8604
|
this.popoverState = "auto";
|
|
8605
|
+
/**
|
|
8606
|
+
* @private
|
|
8607
|
+
*/
|
|
8608
|
+
this._disabled = false;
|
|
8593
8609
|
this.id = this.getID().toString();
|
|
8594
8610
|
}
|
|
8595
8611
|
/**
|
|
@@ -8604,7 +8620,7 @@ class DropdownComponent extends IdentifiableComponent {
|
|
|
8604
8620
|
* Displays the dropdown container.
|
|
8605
8621
|
*/
|
|
8606
8622
|
showContent() {
|
|
8607
|
-
if (!this._popover)
|
|
8623
|
+
if (!this._popover || this._disabled)
|
|
8608
8624
|
return;
|
|
8609
8625
|
this._popover.nativeElement.showPopover();
|
|
8610
8626
|
}
|
|
@@ -8637,11 +8653,11 @@ class DropdownComponent extends IdentifiableComponent {
|
|
|
8637
8653
|
return new DropdownEvent(this, type, event.newState, event.oldState);
|
|
8638
8654
|
}
|
|
8639
8655
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8640
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: DropdownComponent, isStandalone: true, selector: "atx-dropdown", inputs: { buttonClass: "buttonClass", containerClass: "containerClass", vPos: "vPos", hPos: "hPos", popoverState: "popoverState" }, outputs: { toggle: "toggle", beforeToggle: "beforeToggle" }, viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n \r\n<div class=\"atx-dropdown-container\" [class]=\"containerClass\">\r\n <button [class]=\"buttonClass\" [attr.popovertarget]=\"id\">\r\n <ng-content></ng-content>\r\n </button>\r\n <div #popover [attr.popover]=\"popoverState\" [attr.id]=\"id\" (toggle)=\"onToggle($event)\" (beforetoggle)=\"onBeforeToggle($event)\"></div>\r\n <div class=\"atx-dropdown-popover\"\r\n [class.atx-dropdown-v-start]=\"vPos === 'start'\"\r\n [class.atx-dropdown-top]=\"vPos === 'top'\"\r\n [class.atx-dropdown-middle]=\"vPos === 'middle'\"\r\n [class.atx-dropdown-bottom]=\"vPos === 'bottom'\"\r\n [class.atx-dropdown-v-end]=\"vPos === 'end'\"\r\n [class.atx-dropdown-h-start]=\"hPos === 'start'\"\r\n [class.atx-dropdown-left]=\"hPos === 'left'\"\r\n [class.atx-dropdown-center]=\"hPos === 'center'\"\r\n [class.atx-dropdown-right]=\"hPos === 'right'\"\r\n [class.atx-dropdown-h-end]=\"hPos === 'end'\"\r\n [class.atx-dropdown-centered]=\"hPos === 'center' && vPos === 'middle'\">\r\n <ng-content select=\"[content]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".atx-dropdown-container{position:relative}[popover]:popover-open{inset:unset;border:none;background:none;margin:0;padding:0}[popover]:popover-open+.atx-dropdown-popover{display:block}.atx-dropdown-popover{display:none;position:absolute;left:0;margin:0;padding:0;z-index:100;height:auto;width:max-content}.atx-dropdown-v-start{bottom:unset;top:0}.atx-dropdown-top{bottom:calc(100% + var(--atx-dropdown-gutter, 2px));top:unset}.atx-dropdown-middle{bottom:unset;top:50%;transform:translateY(-50%)}.atx-dropdown-bottom{bottom:unset;top:calc(100% + var(--atx-dropdown-gutter, 2px))}.atx-dropdown-v-end{bottom:0;top:unset}.atx-dropdown-h-start{right:calc(100% + var(--atx-dropdown-gutter, 2px));left:unset}.atx-dropdown-left{left:0;right:unset}.atx-dropdown-center{left:50%;transform:translate(-50%);right:unset}.atx-dropdown-right{right:0;left:unset}.atx-dropdown-h-end{right:unset;left:calc(100% + var(--atx-dropdown-gutter, 2px))}.atx-dropdown-centered{transform:translate(-50%,-50%)}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }); }
|
|
8656
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: DropdownComponent, isStandalone: true, selector: "atx-dropdown", inputs: { buttonClass: "buttonClass", containerClass: "containerClass", vPos: "vPos", hPos: "hPos", popoverState: "popoverState", disabled: "disabled" }, outputs: { toggle: "toggle", beforeToggle: "beforeToggle" }, viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }, { propertyName: "_button", first: true, predicate: ["button"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n \r\n<div class=\"atx-dropdown-container\" [class]=\"containerClass\">\r\n <button #button [class]=\"buttonClass\" [attr.popovertarget]=\"id\">\r\n <ng-content></ng-content>\r\n </button>\r\n <div #popover [attr.popover]=\"popoverState\" [attr.id]=\"id\" (toggle)=\"onToggle($event)\" (beforetoggle)=\"onBeforeToggle($event)\"></div>\r\n <div class=\"atx-dropdown-popover\"\r\n [class.atx-dropdown-v-start]=\"vPos === 'start'\"\r\n [class.atx-dropdown-top]=\"vPos === 'top'\"\r\n [class.atx-dropdown-middle]=\"vPos === 'middle'\"\r\n [class.atx-dropdown-bottom]=\"vPos === 'bottom'\"\r\n [class.atx-dropdown-v-end]=\"vPos === 'end'\"\r\n [class.atx-dropdown-h-start]=\"hPos === 'start'\"\r\n [class.atx-dropdown-left]=\"hPos === 'left'\"\r\n [class.atx-dropdown-center]=\"hPos === 'center'\"\r\n [class.atx-dropdown-right]=\"hPos === 'right'\"\r\n [class.atx-dropdown-h-end]=\"hPos === 'end'\"\r\n [class.atx-dropdown-centered]=\"hPos === 'center' && vPos === 'middle'\">\r\n <ng-content select=\"[content]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".atx-dropdown-container{position:relative}[popover]:popover-open{inset:unset;border:none;background:none;margin:0;padding:0}[popover]:popover-open+.atx-dropdown-popover{display:block}.atx-dropdown-popover{display:none;position:absolute;left:0;margin:0;padding:0;z-index:100;height:auto;width:max-content}.atx-dropdown-v-start{bottom:unset;top:0}.atx-dropdown-top{bottom:calc(100% + var(--atx-dropdown-gutter, 2px));top:unset}.atx-dropdown-middle{bottom:unset;top:50%;transform:translateY(-50%)}.atx-dropdown-bottom{bottom:unset;top:calc(100% + var(--atx-dropdown-gutter, 2px))}.atx-dropdown-v-end{bottom:0;top:unset}.atx-dropdown-h-start{right:calc(100% + var(--atx-dropdown-gutter, 2px));left:unset}.atx-dropdown-left{left:0;right:unset}.atx-dropdown-center{left:50%;transform:translate(-50%);right:unset}.atx-dropdown-right{right:0;left:unset}.atx-dropdown-h-end{right:unset;left:calc(100% + var(--atx-dropdown-gutter, 2px))}.atx-dropdown-centered{transform:translate(-50%,-50%)}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }); }
|
|
8641
8657
|
}
|
|
8642
8658
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
8643
8659
|
type: Component,
|
|
8644
|
-
args: [{ selector: 'atx-dropdown', standalone: true, template: "<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n \r\n<div class=\"atx-dropdown-container\" [class]=\"containerClass\">\r\n <button [class]=\"buttonClass\" [attr.popovertarget]=\"id\">\r\n <ng-content></ng-content>\r\n </button>\r\n <div #popover [attr.popover]=\"popoverState\" [attr.id]=\"id\" (toggle)=\"onToggle($event)\" (beforetoggle)=\"onBeforeToggle($event)\"></div>\r\n <div class=\"atx-dropdown-popover\"\r\n [class.atx-dropdown-v-start]=\"vPos === 'start'\"\r\n [class.atx-dropdown-top]=\"vPos === 'top'\"\r\n [class.atx-dropdown-middle]=\"vPos === 'middle'\"\r\n [class.atx-dropdown-bottom]=\"vPos === 'bottom'\"\r\n [class.atx-dropdown-v-end]=\"vPos === 'end'\"\r\n [class.atx-dropdown-h-start]=\"hPos === 'start'\"\r\n [class.atx-dropdown-left]=\"hPos === 'left'\"\r\n [class.atx-dropdown-center]=\"hPos === 'center'\"\r\n [class.atx-dropdown-right]=\"hPos === 'right'\"\r\n [class.atx-dropdown-h-end]=\"hPos === 'end'\"\r\n [class.atx-dropdown-centered]=\"hPos === 'center' && vPos === 'middle'\">\r\n <ng-content select=\"[content]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".atx-dropdown-container{position:relative}[popover]:popover-open{inset:unset;border:none;background:none;margin:0;padding:0}[popover]:popover-open+.atx-dropdown-popover{display:block}.atx-dropdown-popover{display:none;position:absolute;left:0;margin:0;padding:0;z-index:100;height:auto;width:max-content}.atx-dropdown-v-start{bottom:unset;top:0}.atx-dropdown-top{bottom:calc(100% + var(--atx-dropdown-gutter, 2px));top:unset}.atx-dropdown-middle{bottom:unset;top:50%;transform:translateY(-50%)}.atx-dropdown-bottom{bottom:unset;top:calc(100% + var(--atx-dropdown-gutter, 2px))}.atx-dropdown-v-end{bottom:0;top:unset}.atx-dropdown-h-start{right:calc(100% + var(--atx-dropdown-gutter, 2px));left:unset}.atx-dropdown-left{left:0;right:unset}.atx-dropdown-center{left:50%;transform:translate(-50%);right:unset}.atx-dropdown-right{right:0;left:unset}.atx-dropdown-h-end{right:unset;left:calc(100% + var(--atx-dropdown-gutter, 2px))}.atx-dropdown-centered{transform:translate(-50%,-50%)}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }]
|
|
8660
|
+
args: [{ selector: 'atx-dropdown', standalone: true, template: "<!--\r\n * LICENSE\r\n * Copyright Pascal ECHEMANN. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\r\n-->\r\n \r\n<div class=\"atx-dropdown-container\" [class]=\"containerClass\">\r\n <button #button [class]=\"buttonClass\" [attr.popovertarget]=\"id\">\r\n <ng-content></ng-content>\r\n </button>\r\n <div #popover [attr.popover]=\"popoverState\" [attr.id]=\"id\" (toggle)=\"onToggle($event)\" (beforetoggle)=\"onBeforeToggle($event)\"></div>\r\n <div class=\"atx-dropdown-popover\"\r\n [class.atx-dropdown-v-start]=\"vPos === 'start'\"\r\n [class.atx-dropdown-top]=\"vPos === 'top'\"\r\n [class.atx-dropdown-middle]=\"vPos === 'middle'\"\r\n [class.atx-dropdown-bottom]=\"vPos === 'bottom'\"\r\n [class.atx-dropdown-v-end]=\"vPos === 'end'\"\r\n [class.atx-dropdown-h-start]=\"hPos === 'start'\"\r\n [class.atx-dropdown-left]=\"hPos === 'left'\"\r\n [class.atx-dropdown-center]=\"hPos === 'center'\"\r\n [class.atx-dropdown-right]=\"hPos === 'right'\"\r\n [class.atx-dropdown-h-end]=\"hPos === 'end'\"\r\n [class.atx-dropdown-centered]=\"hPos === 'center' && vPos === 'middle'\">\r\n <ng-content select=\"[content]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".atx-dropdown-container{position:relative}[popover]:popover-open{inset:unset;border:none;background:none;margin:0;padding:0}[popover]:popover-open+.atx-dropdown-popover{display:block}.atx-dropdown-popover{display:none;position:absolute;left:0;margin:0;padding:0;z-index:100;height:auto;width:max-content}.atx-dropdown-v-start{bottom:unset;top:0}.atx-dropdown-top{bottom:calc(100% + var(--atx-dropdown-gutter, 2px));top:unset}.atx-dropdown-middle{bottom:unset;top:50%;transform:translateY(-50%)}.atx-dropdown-bottom{bottom:unset;top:calc(100% + var(--atx-dropdown-gutter, 2px))}.atx-dropdown-v-end{bottom:0;top:unset}.atx-dropdown-h-start{right:calc(100% + var(--atx-dropdown-gutter, 2px));left:unset}.atx-dropdown-left{left:0;right:unset}.atx-dropdown-center{left:50%;transform:translate(-50%);right:unset}.atx-dropdown-right{right:0;left:unset}.atx-dropdown-h-end{right:unset;left:calc(100% + var(--atx-dropdown-gutter, 2px))}.atx-dropdown-centered{transform:translate(-50%,-50%)}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }]
|
|
8645
8661
|
}], ctorParameters: () => [], propDecorators: { toggle: [{
|
|
8646
8662
|
type: Output
|
|
8647
8663
|
}], beforeToggle: [{
|
|
@@ -8656,9 +8672,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
8656
8672
|
type: Input
|
|
8657
8673
|
}], popoverState: [{
|
|
8658
8674
|
type: Input
|
|
8675
|
+
}], disabled: [{
|
|
8676
|
+
type: Input
|
|
8659
8677
|
}], _popover: [{
|
|
8660
8678
|
type: ViewChild,
|
|
8661
8679
|
args: ["popover"]
|
|
8680
|
+
}], _button: [{
|
|
8681
|
+
type: ViewChild,
|
|
8682
|
+
args: ["button"]
|
|
8662
8683
|
}] } });
|
|
8663
8684
|
|
|
8664
8685
|
/**
|
|
@@ -8789,11 +8810,11 @@ class BorderLayoutContainer {
|
|
|
8789
8810
|
this.resizable = true;
|
|
8790
8811
|
}
|
|
8791
8812
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: BorderLayoutContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8792
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: BorderLayoutContainer, isStandalone: true, selector: "atx-border-layout-container", inputs: { constraints: "constraints" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<ng-content></ng-content>\n@if (resizable) {\n <div class=\"atx-handle\" [class.atx-handle-selected]=\"selected\" (mousedown)=\"resizetart()\"></div>\n}\n", styles: [":host{box-sizing:border-box;padding:0;margin:0}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }); }
|
|
8813
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: BorderLayoutContainer, isStandalone: true, selector: "atx-border-layout-container", inputs: { constraints: "constraints" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<ng-content></ng-content>\n@if (resizable) {\n <div class=\"atx-handle\" [class.atx-handle-selected]=\"selected\" (mousedown)=\"resizetart()\"></div>\n}\n", styles: [":host{box-sizing:border-box;padding:0;margin:0}:host.north{position:absolute;z-index:10;top:0;left:0;right:0}:host.north>.atx-handle{left:0;right:0;bottom:0;height:4px;cursor:ns-resize}:host.west{position:absolute;z-index:5;left:0;height:unset!important}:host.west>.atx-handle{right:0;bottom:0;top:0;width:4px;cursor:ew-resize}:host.east{position:absolute;z-index:5;right:0;height:unset!important}:host.east>.atx-handle{left:0;bottom:0;top:0;width:4px;cursor:ew-resize}:host.south{position:absolute;z-index:10;bottom:0;left:0;right:0}:host.south>.atx-handle{left:0;right:0;top:0;height:4px;cursor:ns-resize}:host.center{position:absolute}.atx-handle{position:absolute}.atx-handle:hover,.atx-handle.atx-handle-selected{background-color:var(--atx-handle-color, #469afa)}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }); }
|
|
8793
8814
|
}
|
|
8794
8815
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: BorderLayoutContainer, decorators: [{
|
|
8795
8816
|
type: Component,
|
|
8796
|
-
args: [{ selector: 'atx-border-layout-container', standalone: true, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<ng-content></ng-content>\n@if (resizable) {\n <div class=\"atx-handle\" [class.atx-handle-selected]=\"selected\" (mousedown)=\"resizetart()\"></div>\n}\n", styles: [":host{box-sizing:border-box;padding:0;margin:0}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }]
|
|
8817
|
+
args: [{ selector: 'atx-border-layout-container', standalone: true, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<ng-content></ng-content>\n@if (resizable) {\n <div class=\"atx-handle\" [class.atx-handle-selected]=\"selected\" (mousedown)=\"resizetart()\"></div>\n}\n", styles: [":host{box-sizing:border-box;padding:0;margin:0}:host.north{position:absolute;z-index:10;top:0;left:0;right:0}:host.north>.atx-handle{left:0;right:0;bottom:0;height:4px;cursor:ns-resize}:host.west{position:absolute;z-index:5;left:0;height:unset!important}:host.west>.atx-handle{right:0;bottom:0;top:0;width:4px;cursor:ew-resize}:host.east{position:absolute;z-index:5;right:0;height:unset!important}:host.east>.atx-handle{left:0;bottom:0;top:0;width:4px;cursor:ew-resize}:host.south{position:absolute;z-index:10;bottom:0;left:0;right:0}:host.south>.atx-handle{left:0;right:0;top:0;height:4px;cursor:ns-resize}:host.center{position:absolute}.atx-handle{position:absolute}.atx-handle:hover,.atx-handle.atx-handle-selected{background-color:var(--atx-handle-color, #469afa)}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }]
|
|
8797
8818
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { class: [{
|
|
8798
8819
|
type: HostBinding,
|
|
8799
8820
|
args: ['class']
|
|
@@ -9042,17 +9063,26 @@ class BorderLayoutRenderer extends IdentifiableComponent {
|
|
|
9042
9063
|
/**
|
|
9043
9064
|
* @private
|
|
9044
9065
|
*/
|
|
9045
|
-
constructor(subscribeSvc) {
|
|
9066
|
+
constructor(subscribeSvc, document) {
|
|
9046
9067
|
super();
|
|
9047
9068
|
this.subscribeSvc = subscribeSvc;
|
|
9069
|
+
this.document = document;
|
|
9048
9070
|
/**
|
|
9049
9071
|
* Emits events each time the user starts, or stops dragging handle.
|
|
9050
9072
|
*/
|
|
9051
|
-
this.userAction = new EventEmitter(
|
|
9073
|
+
this.userAction = new EventEmitter();
|
|
9052
9074
|
/**
|
|
9053
9075
|
* @private
|
|
9054
9076
|
*/
|
|
9055
9077
|
this.containerList = [];
|
|
9078
|
+
/**
|
|
9079
|
+
* @private
|
|
9080
|
+
*/
|
|
9081
|
+
this.storedStopHandler = null;
|
|
9082
|
+
/**
|
|
9083
|
+
* @private
|
|
9084
|
+
*/
|
|
9085
|
+
this.storedMoveHandler = null;
|
|
9056
9086
|
this.boundsManager = new BorderLayoutBoundsManager();
|
|
9057
9087
|
}
|
|
9058
9088
|
/**
|
|
@@ -9099,12 +9129,17 @@ class BorderLayoutRenderer extends IdentifiableComponent {
|
|
|
9099
9129
|
* Makes this object elligible for garbage collection.
|
|
9100
9130
|
*/
|
|
9101
9131
|
destroy() {
|
|
9132
|
+
if (this.storedStopHandler) {
|
|
9133
|
+
this.document.removeEventListener(MOUSEMOVE, this.storedMoveHandler);
|
|
9134
|
+
this.document.removeEventListener(MOUSEUP, this.storedStopHandler);
|
|
9135
|
+
this.deleteStoredHandlers();
|
|
9136
|
+
}
|
|
9102
9137
|
this.subscribeSvc.clearAll(this);
|
|
9103
|
-
this.containerList.length = 0;
|
|
9104
|
-
this.containerList = null;
|
|
9105
9138
|
this.lytContainerElm = null;
|
|
9106
9139
|
this.boundsManager.destroy();
|
|
9107
9140
|
this.boundsManager = null;
|
|
9141
|
+
this.containerList.length = 0;
|
|
9142
|
+
this.containerList = null;
|
|
9108
9143
|
}
|
|
9109
9144
|
/**
|
|
9110
9145
|
* Forces the layout of all `BorderLayoutContainer` objects associated with the main container.
|
|
@@ -9147,32 +9182,36 @@ class BorderLayoutRenderer extends IdentifiableComponent {
|
|
|
9147
9182
|
const region = constraints.region;
|
|
9148
9183
|
const minSize = constraints.minSize;
|
|
9149
9184
|
const maxSize = constraints.maxSize;
|
|
9185
|
+
const doc = this.document;
|
|
9150
9186
|
let size = 0;
|
|
9151
9187
|
this.boundsManager.setOrigin(bounds.x, bounds.y);
|
|
9152
9188
|
let resizeMethod = this.boundsManager.getResizeMethod(region);
|
|
9153
9189
|
container.selected = true;
|
|
9154
9190
|
const onMoveHandler = (event) => {
|
|
9155
|
-
event.preventDefault();
|
|
9156
9191
|
event.stopPropagation();
|
|
9192
|
+
event.preventDefault();
|
|
9157
9193
|
size = resizeMethod(event, width, height, minSize, maxSize);
|
|
9158
9194
|
container.setSize(size);
|
|
9159
9195
|
this.render(width);
|
|
9160
9196
|
this.fireEvent(container, LayoutDragEventType.DRAGGING);
|
|
9161
9197
|
};
|
|
9162
9198
|
const onStopHandler = (event) => {
|
|
9163
|
-
event.preventDefault();
|
|
9164
9199
|
event.stopPropagation();
|
|
9165
|
-
|
|
9166
|
-
|
|
9200
|
+
event.preventDefault();
|
|
9201
|
+
doc.removeEventListener(MOUSEMOVE, onMoveHandler);
|
|
9202
|
+
doc.removeEventListener(MOUSEUP, onStopHandler);
|
|
9203
|
+
this.deleteStoredHandlers();
|
|
9167
9204
|
container.selected = false;
|
|
9168
9205
|
size = resizeMethod(event, width, height, minSize, maxSize);
|
|
9169
9206
|
container.setSize(size);
|
|
9170
9207
|
this.render(width);
|
|
9171
9208
|
this.fireEvent(container, LayoutDragEventType.DRAG_STOP);
|
|
9172
9209
|
};
|
|
9173
|
-
|
|
9174
|
-
|
|
9210
|
+
this.storedMoveHandler = onMoveHandler;
|
|
9211
|
+
this.storedStopHandler = onStopHandler;
|
|
9175
9212
|
this.fireEvent(container, LayoutDragEventType.DRAG_START);
|
|
9213
|
+
doc.addEventListener(MOUSEMOVE, onMoveHandler);
|
|
9214
|
+
doc.addEventListener(MOUSEUP, onStopHandler);
|
|
9176
9215
|
}
|
|
9177
9216
|
/**
|
|
9178
9217
|
* @private
|
|
@@ -9190,32 +9229,47 @@ class BorderLayoutRenderer extends IdentifiableComponent {
|
|
|
9190
9229
|
const bottom = bounds.bottom;
|
|
9191
9230
|
const left = bounds.left;
|
|
9192
9231
|
const right = bounds.right;
|
|
9193
|
-
this.containerList
|
|
9232
|
+
const cList = this.containerList;
|
|
9233
|
+
let cursor = cList.length - 1;
|
|
9234
|
+
while (cursor >= 0) {
|
|
9235
|
+
const cont = cList[cursor];
|
|
9194
9236
|
const r = cont.constraints.region;
|
|
9237
|
+
cursor--;
|
|
9195
9238
|
if (r === LayoutRegion.WEST) {
|
|
9196
9239
|
cont.setTopPos(top);
|
|
9197
9240
|
cont.setRightPos(width - left);
|
|
9198
9241
|
cont.setBottomPos(bottom - top);
|
|
9199
|
-
|
|
9242
|
+
continue;
|
|
9200
9243
|
}
|
|
9201
9244
|
if (r === LayoutRegion.CENTER) {
|
|
9202
9245
|
cont.setTopPos(top);
|
|
9203
9246
|
cont.setLeftPos(left);
|
|
9204
9247
|
cont.setRightPos(right - left);
|
|
9205
9248
|
cont.setBottomPos(bottom - top);
|
|
9206
|
-
|
|
9249
|
+
continue;
|
|
9207
9250
|
}
|
|
9208
9251
|
if (r === LayoutRegion.EAST) {
|
|
9209
9252
|
cont.setTopPos(top);
|
|
9210
9253
|
cont.setLeftPos(width - (right - left));
|
|
9211
9254
|
cont.setBottomPos(bottom - top);
|
|
9255
|
+
continue;
|
|
9212
9256
|
}
|
|
9213
|
-
}
|
|
9257
|
+
}
|
|
9258
|
+
;
|
|
9214
9259
|
}
|
|
9260
|
+
/**
|
|
9261
|
+
* @private
|
|
9262
|
+
*/
|
|
9215
9263
|
checkLytContainer() {
|
|
9216
9264
|
if (!this.lytContainerElm)
|
|
9217
9265
|
throw new ReferenceError(LAYOUT_ERR_MSG);
|
|
9218
9266
|
}
|
|
9267
|
+
/**
|
|
9268
|
+
* @private
|
|
9269
|
+
*/
|
|
9270
|
+
deleteStoredHandlers() {
|
|
9271
|
+
this.storedMoveHandler = this.storedStopHandler = null;
|
|
9272
|
+
}
|
|
9219
9273
|
}
|
|
9220
9274
|
|
|
9221
9275
|
/**
|
|
@@ -9247,22 +9301,22 @@ class BorderLayout extends IdentifiableComponent {
|
|
|
9247
9301
|
/**
|
|
9248
9302
|
* @private
|
|
9249
9303
|
*/
|
|
9250
|
-
constructor(subscribeSvc) {
|
|
9304
|
+
constructor(subscribeSvc, document) {
|
|
9251
9305
|
super();
|
|
9252
9306
|
this.subscribeSvc = subscribeSvc;
|
|
9253
9307
|
/**
|
|
9254
9308
|
* Emits events each time the user starts dragging a region handle.
|
|
9255
9309
|
*/
|
|
9256
|
-
this.dragStart = new EventEmitter(
|
|
9310
|
+
this.dragStart = new EventEmitter();
|
|
9257
9311
|
/**
|
|
9258
9312
|
* Emits events each time the user stops dragging a region handle.
|
|
9259
9313
|
*/
|
|
9260
|
-
this.dragStop = new EventEmitter(
|
|
9314
|
+
this.dragStop = new EventEmitter();
|
|
9261
9315
|
/**
|
|
9262
9316
|
* Emits events each time the user is dragging a region handle.
|
|
9263
9317
|
*/
|
|
9264
|
-
this.dragging = new EventEmitter(
|
|
9265
|
-
this.renderer = new BorderLayoutRenderer(subscribeSvc);
|
|
9318
|
+
this.dragging = new EventEmitter();
|
|
9319
|
+
this.renderer = new BorderLayoutRenderer(subscribeSvc, document);
|
|
9266
9320
|
subscribeSvc.register(this, this.renderer.userAction.subscribe((event) => {
|
|
9267
9321
|
event.layout = this;
|
|
9268
9322
|
if (event.type === LayoutDragEventType.DRAGGING) {
|
|
@@ -9314,13 +9368,16 @@ class BorderLayout extends IdentifiableComponent {
|
|
|
9314
9368
|
resizeRegion(region, size) {
|
|
9315
9369
|
this.renderer.resizeRegion(region, size);
|
|
9316
9370
|
}
|
|
9317
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: BorderLayout, deps: [{ token: SubscriptionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9318
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: BorderLayout, isStandalone: true, selector: "atx-border-layout", outputs: { dragStart: "dragStart", dragStop: "dragStop", dragging: "dragging" }, host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "__containers__", predicate: BorderLayoutContainer }], viewQueries: [{ propertyName: "layoutContainer", first: true, predicate: ["atxLayoutContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<div #atxLayoutContainer class=\"atx-border-layout\">\n <ng-content></ng-content>\n</div>", styles: [".atx-border-layout{position:relative;height:100%;width:100%;-webkit-user-select:none;user-select:none;overflow:hidden}.atx-border-layout
|
|
9371
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: BorderLayout, deps: [{ token: SubscriptionService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9372
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: BorderLayout, isStandalone: true, selector: "atx-border-layout", outputs: { dragStart: "dragStart", dragStop: "dragStop", dragging: "dragging" }, host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "__containers__", predicate: BorderLayoutContainer }], viewQueries: [{ propertyName: "layoutContainer", first: true, predicate: ["atxLayoutContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<div #atxLayoutContainer class=\"atx-border-layout\">\n <ng-content></ng-content>\n</div>", styles: [".atx-border-layout{position:relative;height:100%;width:100%;-webkit-user-select:none;user-select:none;overflow:hidden}.atx-border-layout{box-sizing:border-box}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }); }
|
|
9319
9373
|
}
|
|
9320
9374
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: BorderLayout, decorators: [{
|
|
9321
9375
|
type: Component,
|
|
9322
|
-
args: [{ selector: 'atx-border-layout', standalone: true, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<div #atxLayoutContainer class=\"atx-border-layout\">\n <ng-content></ng-content>\n</div>", styles: [".atx-border-layout{position:relative;height:100%;width:100%;-webkit-user-select:none;user-select:none;overflow:hidden}.atx-border-layout
|
|
9323
|
-
}], ctorParameters: () => [{ type: SubscriptionService }
|
|
9376
|
+
args: [{ selector: 'atx-border-layout', standalone: true, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<div #atxLayoutContainer class=\"atx-border-layout\">\n <ng-content></ng-content>\n</div>", styles: [".atx-border-layout{position:relative;height:100%;width:100%;-webkit-user-select:none;user-select:none;overflow:hidden}.atx-border-layout{box-sizing:border-box}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }]
|
|
9377
|
+
}], ctorParameters: () => [{ type: SubscriptionService }, { type: Document, decorators: [{
|
|
9378
|
+
type: Inject,
|
|
9379
|
+
args: [DOCUMENT]
|
|
9380
|
+
}] }], propDecorators: { dragStart: [{
|
|
9324
9381
|
type: Output
|
|
9325
9382
|
}], dragStop: [{
|
|
9326
9383
|
type: Output
|