@flywheel-io/vision 1.3.3 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/dialog/dialog-actions.component.d.ts +9 -0
- package/components/dialog/dialog-confirm.component.d.ts +3 -1
- package/components/dialog/dialog-content.component.d.ts +10 -0
- package/components/dialog/dialog-header.component.d.ts +9 -0
- package/components/dialog/dialog-simple.component.d.ts +7 -1
- package/components/dialog/dialog.component.d.ts +3 -20
- package/components/dialog/dialogs.module.d.ts +13 -10
- package/components/layouts/layout-group.component.d.ts +3 -1
- package/components/layouts/layouts.module.d.ts +6 -4
- package/components/layouts/panel/panel.component.d.ts +9 -0
- package/components/layouts/sidebar/sidebar.component.d.ts +9 -0
- package/components/layouts/toolbar/toolbar.component.d.ts +3 -1
- package/components/menu/menu-item/menu-item.component.d.ts +2 -1
- package/components/select-menu/select-menu.component.d.ts +3 -2
- package/components/text-input/text-input.component.d.ts +7 -1
- package/components/textarea-input/textarea-input.component.d.ts +28 -0
- package/components/textarea-input/textarea-input.module.d.ts +11 -0
- package/esm2020/components/app-icon/app-icon.component.mjs +2 -2
- package/esm2020/components/avatar/avatar.component.mjs +2 -2
- package/esm2020/components/badge/badge.component.mjs +2 -2
- package/esm2020/components/card/card-content/card-content.component.mjs +2 -2
- package/esm2020/components/card/card-header/card-header.component.mjs +2 -2
- package/esm2020/components/card/card.component.mjs +2 -2
- package/esm2020/components/chip/chip.component.mjs +2 -2
- package/esm2020/components/dialog/dialog-actions.component.mjs +32 -0
- package/esm2020/components/dialog/dialog-confirm.component.mjs +11 -4
- package/esm2020/components/dialog/dialog-content.component.mjs +38 -0
- package/esm2020/components/dialog/dialog-header.component.mjs +35 -0
- package/esm2020/components/dialog/dialog-simple.component.mjs +20 -4
- package/esm2020/components/dialog/dialog.component.mjs +9 -76
- package/esm2020/components/dialog/dialog.service.mjs +2 -2
- package/esm2020/components/dialog/dialogs.module.mjs +5 -2
- package/esm2020/components/layouts/grid/grid.component.mjs +4 -4
- package/esm2020/components/layouts/layout-group.component.mjs +13 -4
- package/esm2020/components/layouts/layouts.module.mjs +11 -1
- package/esm2020/components/layouts/panel/panel.component.mjs +26 -0
- package/esm2020/components/layouts/sidebar/sidebar.component.mjs +26 -0
- package/esm2020/components/layouts/toolbar/toolbar.component.mjs +15 -5
- package/esm2020/components/menu/menu-container/menu-container.component.mjs +1 -1
- package/esm2020/components/menu/menu-item/menu-item.component.mjs +6 -3
- package/esm2020/components/menu/menu.component.mjs +4 -4
- package/esm2020/components/paginator/paginator-advanced/paginator-advanced.component.mjs +1 -1
- package/esm2020/components/phone-input/phone-input.component.mjs +2 -2
- package/esm2020/components/popover/popover-panel/popover-panel.component.mjs +2 -2
- package/esm2020/components/select-menu/multi-select-menu/multi-select-menu.component.mjs +1 -1
- package/esm2020/components/select-menu/select-menu.component.mjs +33 -22
- package/esm2020/components/snackbar/snackbar/snackbar.component.mjs +2 -2
- package/esm2020/components/text-input/text-input.component.mjs +20 -5
- package/esm2020/components/textarea-input/textarea-input.component.mjs +86 -0
- package/esm2020/components/textarea-input/textarea-input.module.mjs +39 -0
- package/esm2020/public-api.mjs +8 -1
- package/fesm2015/flywheel-io-vision.mjs +405 -142
- package/fesm2015/flywheel-io-vision.mjs.map +1 -1
- package/fesm2020/flywheel-io-vision.mjs +405 -142
- package/fesm2020/flywheel-io-vision.mjs.map +1 -1
- package/global.scss +1 -2
- package/package.json +1 -1
- package/public-api.d.ts +7 -0
- package/public-api.scss +1 -0
- package/scss/config/overlay.scss +93 -0
- package/scss/config/shadows.scss +0 -4
- package/scss/config/typography.scss +53 -0
- package/styles.css +167 -5
|
@@ -12,10 +12,10 @@ export class FwPopoverPanelComponent {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
FwPopoverPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
-
FwPopoverPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwPopoverPanelComponent, selector: "fw-popover-panel", inputs: { position: "position" }, outputs: { mouseLeave: "mouseLeave" }, host: { listeners: { "mouseleave": "hidePopover($event)" }, properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div class=\"fw-popover-content-wrapper\">\n <ng-content></ng-content>\n <div class=\"fw-popover-caret\"></div>\n</div>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,:host .fw-popover-content-wrapper{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}
|
|
15
|
+
FwPopoverPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwPopoverPanelComponent, selector: "fw-popover-panel", inputs: { position: "position" }, outputs: { mouseLeave: "mouseLeave" }, host: { listeners: { "mouseleave": "hidePopover($event)" }, properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div class=\"fw-popover-content-wrapper\">\n <ng-content></ng-content>\n <div class=\"fw-popover-caret\"></div>\n</div>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,:host .fw-popover-content-wrapper{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}:host .fw-popover-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box}:host .fw-popover-content-wrapper .fw-popover-caret{position:absolute;overflow:hidden;width:25px;height:25px}:host .fw-popover-content-wrapper .fw-popover-caret:after{display:block;content:\"\";width:16px;height:16px;background:var(--card-background);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}:host.fw-popover-above{margin-bottom:16px}:host.fw-popover-above .fw-popover-caret{left:calc(50% - 12.5px);bottom:-16px;height:16px!important}:host.fw-popover-above .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-left{margin-bottom:16px}:host.fw-popover-above-left .fw-popover-caret{right:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-left .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-right{margin-bottom:16px}:host.fw-popover-above-right .fw-popover-caret{left:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-right .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-below{margin-top:16px}:host.fw-popover-below .fw-popover-caret{left:calc(50% - 12.5px);top:-16px;height:16px!important}:host.fw-popover-below .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-left{margin-top:16px}:host.fw-popover-below-left .fw-popover-caret{right:25px;top:-16px;height:16px!important}:host.fw-popover-below-left .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-right{margin-top:16px}:host.fw-popover-below-right .fw-popover-caret{left:25px;top:-16px;height:16px!important}:host.fw-popover-below-right .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-left{margin-right:16px}:host.fw-popover-left .fw-popover-caret{right:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-left .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-above{margin-right:16px}:host.fw-popover-left-above .fw-popover-caret{right:-16px;bottom:25px;width:16px!important}:host.fw-popover-left-above .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-below{margin-right:16px}:host.fw-popover-left-below .fw-popover-caret{right:-16px;top:25px;width:16px!important}:host.fw-popover-left-below .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-right{margin-left:16px}:host.fw-popover-right .fw-popover-caret{left:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-right .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-above{margin-left:16px}:host.fw-popover-right-above .fw-popover-caret{left:-16px;bottom:25px;width:16px!important}:host.fw-popover-right-above .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-below{margin-left:16px}:host.fw-popover-right-below .fw-popover-caret{left:-16px;top:25px;width:16px!important}:host.fw-popover-right-below .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}\n"] });
|
|
16
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverPanelComponent, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
|
-
args: [{ selector: 'fw-popover-panel', template: "<div class=\"fw-popover-content-wrapper\">\n <ng-content></ng-content>\n <div class=\"fw-popover-caret\"></div>\n</div>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,:host .fw-popover-content-wrapper{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}
|
|
18
|
+
args: [{ selector: 'fw-popover-panel', template: "<div class=\"fw-popover-content-wrapper\">\n <ng-content></ng-content>\n <div class=\"fw-popover-caret\"></div>\n</div>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,:host .fw-popover-content-wrapper{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}:host .fw-popover-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box}:host .fw-popover-content-wrapper .fw-popover-caret{position:absolute;overflow:hidden;width:25px;height:25px}:host .fw-popover-content-wrapper .fw-popover-caret:after{display:block;content:\"\";width:16px;height:16px;background:var(--card-background);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}:host.fw-popover-above{margin-bottom:16px}:host.fw-popover-above .fw-popover-caret{left:calc(50% - 12.5px);bottom:-16px;height:16px!important}:host.fw-popover-above .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-left{margin-bottom:16px}:host.fw-popover-above-left .fw-popover-caret{right:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-left .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-right{margin-bottom:16px}:host.fw-popover-above-right .fw-popover-caret{left:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-right .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-below{margin-top:16px}:host.fw-popover-below .fw-popover-caret{left:calc(50% - 12.5px);top:-16px;height:16px!important}:host.fw-popover-below .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-left{margin-top:16px}:host.fw-popover-below-left .fw-popover-caret{right:25px;top:-16px;height:16px!important}:host.fw-popover-below-left .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-right{margin-top:16px}:host.fw-popover-below-right .fw-popover-caret{left:25px;top:-16px;height:16px!important}:host.fw-popover-below-right .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-left{margin-right:16px}:host.fw-popover-left .fw-popover-caret{right:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-left .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-above{margin-right:16px}:host.fw-popover-left-above .fw-popover-caret{right:-16px;bottom:25px;width:16px!important}:host.fw-popover-left-above .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-below{margin-right:16px}:host.fw-popover-left-below .fw-popover-caret{right:-16px;top:25px;width:16px!important}:host.fw-popover-left-below .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-right{margin-left:16px}:host.fw-popover-right .fw-popover-caret{left:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-right .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-above{margin-left:16px}:host.fw-popover-right-above .fw-popover-caret{left:-16px;bottom:25px;width:16px!important}:host.fw-popover-right-above .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-below{margin-left:16px}:host.fw-popover-right-below .fw-popover-caret{left:-16px;top:25px;width:16px!important}:host.fw-popover-right-below .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}\n"] }]
|
|
19
19
|
}], propDecorators: { position: [{
|
|
20
20
|
type: Input
|
|
21
21
|
}], mouseLeave: [{
|
|
@@ -267,7 +267,7 @@ FwMultiSelectMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
267
267
|
useExisting: forwardRef(() => FwMultiSelectMenuComponent),
|
|
268
268
|
multi: true,
|
|
269
269
|
},
|
|
270
|
-
], queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "textInitialInput", first: true, predicate: ["textInitialInput"], descendants: true }, { propertyName: "renderedMenuItems", predicate: FwMenuItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngStyle]=\"{width: width}\">\n <div\n class=\"chip-grid\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of selectedOptions | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"value.length>maxSelectedShown\" class=\"max-exceeded\">+{{ value.length - maxSelectedShown }}\n more</span>\n <input\n type=\"text\" #textInput\n class=\"placeholder\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n </div>\n <input\n type=\"text\" #textInitialInput\n *ngIf=\"!value || value.length===0\"\n class=\"placeholder\" [placeholder]=\"placeholder\"\n (focus)=\"handleTouched()\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n <fw-icon>chevron-down</fw-icon>\n </div>\n <ng-template #selectMenu>\n <fw-menu-container [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [multiSelect]=\"true\"\n [useCheckbox]=\"useCheckbox\"\n [disabled]=\"disabled || (filteredOptions && filteredOptions.length===0)\"\n [value]=\"selectedValues\"\n (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems && menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of filteredOptions\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n <fw-menu-item\n *ngIf=\"filteredOptions && filteredOptions.length===0\"\n [disabled]=\"true\" label=\"No options\">\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host .chip-grid{min-height:36px;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:6px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);cursor:pointer}:host .chip-grid:focus-within{border-color:var(--primary-base)}:host .chip-grid .inner-chip-grid{display:flex;flex-wrap:wrap;gap:4px;overflow:hidden auto;align-items:center;flex:1}:host .chip-grid .inner-chip-grid input{display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder{padding:0 2px 0 4px;font-size:14px;color:var(--typography-base);background:var(--page-light);border:0;outline:0;display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder:focus{outline:none!important}:host .chip-grid .placeholder::placeholder{color:var(--typography-light)}:host .chip-grid fw-icon{font-size:20px}:host .chip-grid .max-exceeded{font-size:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: i3.FwChipComponent, selector: "fw-chip", inputs: ["value", "variant", "color", "icon", "title", "description", "showClose", "disabled", "selected", "selectable"], outputs: ["close", "select"] }, { kind: "component", type: i4.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }, { kind: "component", type: i5.FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "variant", "collapsed", "multiSelect", "useCheckbox", "openWidth", "collapsedWidth", "value"], outputs: ["change", "filteredItemsChange"] }, { kind: "component", type: i6.FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "border", "shadow", "showFilter", "filterText", "collapsed", "offset"] }, { kind: "component", type: i7.FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "variant", "size", "title", "description", "icon", "disabled", "showCheckbox", "multiSelect", "hidden", "showTooltip", "collapsed", "href", "target", "subItemsOpen", "focused", "selected"], outputs: ["click"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
|
|
270
|
+
], queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "textInitialInput", first: true, predicate: ["textInitialInput"], descendants: true }, { propertyName: "renderedMenuItems", predicate: FwMenuItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngStyle]=\"{width: width}\">\n <div\n class=\"chip-grid\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of selectedOptions | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"value.length>maxSelectedShown\" class=\"max-exceeded\">+{{ value.length - maxSelectedShown }}\n more</span>\n <input\n type=\"text\" #textInput\n class=\"placeholder\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n </div>\n <input\n type=\"text\" #textInitialInput\n *ngIf=\"!value || value.length===0\"\n class=\"placeholder\" [placeholder]=\"placeholder\"\n (focus)=\"handleTouched()\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n <fw-icon>chevron-down</fw-icon>\n </div>\n <ng-template #selectMenu>\n <fw-menu-container [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [multiSelect]=\"true\"\n [useCheckbox]=\"useCheckbox\"\n [disabled]=\"disabled || (filteredOptions && filteredOptions.length===0)\"\n [value]=\"selectedValues\"\n (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems && menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of filteredOptions\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n <fw-menu-item\n *ngIf=\"filteredOptions && filteredOptions.length===0\"\n [disabled]=\"true\" label=\"No options\">\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host .chip-grid{min-height:36px;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:6px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);cursor:pointer}:host .chip-grid:focus-within{border-color:var(--primary-base)}:host .chip-grid .inner-chip-grid{display:flex;flex-wrap:wrap;gap:4px;overflow:hidden auto;align-items:center;flex:1}:host .chip-grid .inner-chip-grid input{display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder{padding:0 2px 0 4px;font-size:14px;color:var(--typography-base);background:var(--page-light);border:0;outline:0;display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder:focus{outline:none!important}:host .chip-grid .placeholder::placeholder{color:var(--typography-light)}:host .chip-grid fw-icon{font-size:20px}:host .chip-grid .max-exceeded{font-size:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: i3.FwChipComponent, selector: "fw-chip", inputs: ["value", "variant", "color", "icon", "title", "description", "showClose", "disabled", "selected", "selectable"], outputs: ["close", "select"] }, { kind: "component", type: i4.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }, { kind: "component", type: i5.FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "variant", "collapsed", "multiSelect", "useCheckbox", "openWidth", "collapsedWidth", "value"], outputs: ["change", "filteredItemsChange"] }, { kind: "component", type: i6.FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "border", "shadow", "showFilter", "filterText", "collapsed", "offset"] }, { kind: "component", type: i7.FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "variant", "size", "title", "description", "icon", "iconColor", "disabled", "showCheckbox", "multiSelect", "hidden", "showTooltip", "collapsed", "href", "target", "subItemsOpen", "focused", "selected"], outputs: ["click"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
|
|
271
271
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwMultiSelectMenuComponent, decorators: [{
|
|
272
272
|
type: Component,
|
|
273
273
|
args: [{ selector: 'fw-multi-select', providers: [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { CdkMenuTrigger } from '@angular/cdk/menu';
|
|
3
|
-
import { Component, ContentChildren, forwardRef, HostListener, Input, ViewChild, } from '@angular/core';
|
|
3
|
+
import { Component, ContentChildren, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild, } from '@angular/core';
|
|
4
4
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
5
|
import { FwMenuComponent } from '../menu/menu.component';
|
|
6
6
|
import { FwMenuItemComponent } from '../menu/menu-item/menu-item.component';
|
|
@@ -23,6 +23,8 @@ export class FwSelectMenuComponent {
|
|
|
23
23
|
this.disabled = false;
|
|
24
24
|
this.width = '200px';
|
|
25
25
|
this.placeholder = 'Select something...';
|
|
26
|
+
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
27
|
+
this.change = new EventEmitter();
|
|
26
28
|
this.selectValue = '';
|
|
27
29
|
this.selectTitle = '';
|
|
28
30
|
this.selectIcon = '';
|
|
@@ -93,7 +95,7 @@ export class FwSelectMenuComponent {
|
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
97
|
ngAfterContentInit() {
|
|
96
|
-
if (!this.options || (this.options.length === 0 && this.menuItems.length > 0)) {
|
|
98
|
+
if (!this.options || (this.options.length === 0 && this.menuItems && this.menuItems.length > 0)) {
|
|
97
99
|
this.options = [];
|
|
98
100
|
this.menuItems.forEach(item => {
|
|
99
101
|
this.options.push({
|
|
@@ -113,22 +115,17 @@ export class FwSelectMenuComponent {
|
|
|
113
115
|
}
|
|
114
116
|
}
|
|
115
117
|
handleClick(e) {
|
|
116
|
-
if (
|
|
117
|
-
|
|
118
|
-
this.
|
|
119
|
-
if (
|
|
120
|
-
|
|
121
|
-
this.updateValue(item);
|
|
122
|
-
this.onChange(item);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
this.updateValue(item[this.valueProperty]);
|
|
126
|
-
this.onChange(item[this.valueProperty]);
|
|
127
|
-
}
|
|
118
|
+
if (this.selectValue !== e) {
|
|
119
|
+
this.options.forEach(item => {
|
|
120
|
+
if (item[this.valueProperty].toString() === e) {
|
|
121
|
+
if (this._valueType === 'object') {
|
|
122
|
+
this.updateValue(item);
|
|
128
123
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
124
|
+
else {
|
|
125
|
+
this.updateValue(item[this.valueProperty]);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
132
129
|
}
|
|
133
130
|
}
|
|
134
131
|
handleKeyDown(event) {
|
|
@@ -144,14 +141,22 @@ export class FwSelectMenuComponent {
|
|
|
144
141
|
if (this.trigger) {
|
|
145
142
|
this.trigger.close();
|
|
146
143
|
}
|
|
144
|
+
const selectedOption = this.options && this.options.find(option => option[this.valueProperty] === value[this.valueProperty]);
|
|
147
145
|
if (value && this._valueType === 'object') {
|
|
148
146
|
this.selectValue = value[this.valueProperty].toString();
|
|
149
147
|
this.selectTitle = value[this.titleProperty].toString();
|
|
150
148
|
this.selectIcon = value[this.iconProperty];
|
|
151
149
|
}
|
|
152
150
|
else {
|
|
153
|
-
|
|
154
|
-
|
|
151
|
+
if (selectedOption) {
|
|
152
|
+
this.selectValue = selectedOption[this.valueProperty].toString();
|
|
153
|
+
this.selectTitle = selectedOption[this.titleProperty].toString();
|
|
154
|
+
this.selectIcon = selectedOption[this.iconProperty];
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
this.selectValue = value ? value.toString() : '';
|
|
158
|
+
this.selectTitle = value ? value.toString() : '';
|
|
159
|
+
}
|
|
155
160
|
if (this.options && this.options.length) {
|
|
156
161
|
this.options.forEach(opt => {
|
|
157
162
|
if (opt[this.valueProperty] === value) {
|
|
@@ -161,16 +166,20 @@ export class FwSelectMenuComponent {
|
|
|
161
166
|
});
|
|
162
167
|
}
|
|
163
168
|
}
|
|
169
|
+
if (this.onChange) {
|
|
170
|
+
this.onChange(value);
|
|
171
|
+
}
|
|
172
|
+
this.change.emit(value);
|
|
164
173
|
}
|
|
165
174
|
}
|
|
166
175
|
FwSelectMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSelectMenuComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
167
|
-
FwSelectMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSelectMenuComponent, selector: "fw-select", inputs: { options: "options", valueProperty: "valueProperty", titleProperty: "titleProperty", iconProperty: "iconProperty", descriptionProperty: "descriptionProperty", showFilter: "showFilter", disabled: "disabled", width: "width", optionsWidth: "optionsWidth", maxOptionsHeight: "maxOptionsHeight", placeholder: "placeholder", value: "value" }, host: { listeners: { "document:click": "outsideClick($event.target)" } }, providers: [
|
|
176
|
+
FwSelectMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSelectMenuComponent, selector: "fw-select", inputs: { options: "options", valueProperty: "valueProperty", titleProperty: "titleProperty", iconProperty: "iconProperty", descriptionProperty: "descriptionProperty", showFilter: "showFilter", disabled: "disabled", width: "width", optionsWidth: "optionsWidth", maxOptionsHeight: "maxOptionsHeight", placeholder: "placeholder", value: "value" }, outputs: { change: "change" }, host: { listeners: { "document:click": "outsideClick($event.target)" } }, providers: [
|
|
168
177
|
{
|
|
169
178
|
provide: NG_VALUE_ACCESSOR,
|
|
170
179
|
useExisting: forwardRef(() => FwSelectMenuComponent),
|
|
171
180
|
multi: true,
|
|
172
181
|
},
|
|
173
|
-
], queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }], ngImport: i0, template: "<div [ngStyle]=\"{width: width, cursor: 'pointer'}\">\n <fw-text-input\n [cdkMenuTriggerFor]=\"selectMenu\"\n [value]=\"selectTitle\"\n [leftIcon]=\"selectIcon\"\n rightIcon=\"chevron-down\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keydown)=\"handleKeyDown($event)\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container [showFilter]=\"showFilter\" [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [disabled]=\"disabled\"\n [value]=\"selectValue\"\n (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty].toString()\"\n [description]=\"item[descriptionProperty]\"\n [value]=\"item[valueProperty].toString()\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: i3.FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "variant", "collapsed", "multiSelect", "useCheckbox", "openWidth", "collapsedWidth", "value"], outputs: ["change", "filteredItemsChange"] }, { kind: "component", type: i4.FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "border", "shadow", "showFilter", "filterText", "collapsed", "offset"] }, { kind: "component", type: i5.FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "variant", "size", "title", "description", "icon", "disabled", "showCheckbox", "multiSelect", "hidden", "showTooltip", "collapsed", "href", "target", "subItemsOpen", "focused", "selected"], outputs: ["click"] }, { kind: "component", type: i6.FwTextInputComponent, selector: "fw-text-input", inputs: ["disabled", "leftIcon", "rightIcon", "context", "helperText", "errorText", "placeholder", "readOnly", "size", "type", "maxLength", "autofocus", "autocomplete", "error", "value"] }] });
|
|
182
|
+
], queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }], ngImport: i0, template: "<div [ngStyle]=\"{width: width, cursor: 'pointer'}\">\n <fw-text-input\n [cdkMenuTriggerFor]=\"selectMenu\"\n [value]=\"selectTitle\"\n [leftIcon]=\"selectIcon\"\n rightIcon=\"chevron-down\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keydown)=\"handleKeyDown($event)\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container [showFilter]=\"showFilter\" [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [disabled]=\"disabled\"\n [value]=\"selectValue\"\n (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty].toString()\"\n [description]=\"item[descriptionProperty]\"\n [value]=\"item[valueProperty].toString()\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: i3.FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "variant", "collapsed", "multiSelect", "useCheckbox", "openWidth", "collapsedWidth", "value"], outputs: ["change", "filteredItemsChange"] }, { kind: "component", type: i4.FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "border", "shadow", "showFilter", "filterText", "collapsed", "offset"] }, { kind: "component", type: i5.FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "variant", "size", "title", "description", "icon", "iconColor", "disabled", "showCheckbox", "multiSelect", "hidden", "showTooltip", "collapsed", "href", "target", "subItemsOpen", "focused", "selected"], outputs: ["click"] }, { kind: "component", type: i6.FwTextInputComponent, selector: "fw-text-input", inputs: ["disabled", "useActionableIcons", "leftIcon", "rightIcon", "context", "helperText", "errorText", "placeholder", "readOnly", "size", "type", "maxLength", "autofocus", "autocomplete", "error", "value"], outputs: ["leftIconAction", "rightIconAction"] }] });
|
|
174
183
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSelectMenuComponent, decorators: [{
|
|
175
184
|
type: Component,
|
|
176
185
|
args: [{ selector: 'fw-select', providers: [
|
|
@@ -214,7 +223,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
214
223
|
}], menuItems: [{
|
|
215
224
|
type: ContentChildren,
|
|
216
225
|
args: [FwMenuItemComponent]
|
|
226
|
+
}], change: [{
|
|
227
|
+
type: Output
|
|
217
228
|
}], value: [{
|
|
218
229
|
type: Input
|
|
219
230
|
}] } });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7QUFjNUUsTUFBTSxPQUFPLHFCQUFxQjtJQTRDaEMsWUFBc0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFqQ2xELFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsa0JBQWEsR0FBWSxPQUFPLENBQUM7UUFDakMsa0JBQWEsR0FBWSxPQUFPLENBQUM7UUFDakMsaUJBQVksR0FBWSxNQUFNLENBQUM7UUFDL0Isd0JBQW1CLEdBQVksYUFBYSxDQUFDO1FBQzdDLGVBQVUsR0FBYSxLQUFLLENBQUM7UUFDN0IsYUFBUSxHQUFhLEtBQUssQ0FBQztRQUMzQixVQUFLLEdBQVcsT0FBTyxDQUFDO1FBR3hCLGdCQUFXLEdBQVcscUJBQXFCLENBQUM7UUFJckQsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFD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aEMsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENka01lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL21lbnUnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGd01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3TWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGd1NlbGVjdE1lbnVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRndTZWxlY3RNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pIG91dHNpZGVDbGljayhldnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc09wZW4gJiYgZXZ0Lm5vZGVOYW1lICE9PSAnSU5QVVQnKSB7XG4gICAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmlnZ2VyICYmIHRoaXMudHJpZ2dlci5pc09wZW4oKSkge1xuICAgICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBvcHRpb25zOiBvYmplY3RbXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZVByb3BlcnR5Pzogc3RyaW5nID0gJ3ZhbHVlJztcbiAgQElucHV0KCkgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyA9ICd0aXRsZSc7XG4gIEBJbnB1dCgpIGljb25Qcm9wZXJ0eT86IHN0cmluZyA9ICdpY29uJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb25Qcm9wZXJ0eT86IHN0cmluZyA9ICdkZXNjcmlwdGlvbic7XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXI/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzIwMHB4JztcbiAgQElucHV0KCkgb3B0aW9uc1dpZHRoPzogc3RyaW5nO1xuICBASW5wdXQoKSBtYXhPcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBzb21ldGhpbmcuLi4nO1xuICBAVmlld0NoaWxkKENka01lbnVUcmlnZ2VyKSB0cmlnZ2VyOiBDZGtNZW51VHJpZ2dlcjtcbiAgQFZpZXdDaGlsZChGd01lbnVDb21wb25lbnQpIG1lbnU6IEZ3TWVudUNvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZHJlbihGd01lbnVJdGVtQ29tcG9uZW50KSBtZW51SXRlbXM6IFF1ZXJ5TGlzdDxGd01lbnVJdGVtQ29tcG9uZW50PjtcbiAgc2VsZWN0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RUaXRsZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdEljb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZShuZXdWYWx1ZTogYW55KSB7XG4gICAgdGhpcy5fdmFsdWVUeXBlID0gdHlwZW9mIG5ld1ZhbHVlO1xuICAgIHRoaXMudXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfdmFsdWVUeXBlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG5cbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBzZWxlY3QncyB2YWx1ZVxuICAgKiBjaGFuZ2VzIGZyb20gdXNlciBpbnB1dC4gUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gICAqIHJlcXVpcmVkIHRvIGludGVncmF0ZSB3aXRoIEFuZ3VsYXIncyBjb3JlIGZvcm1zIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIHNlbGVjdCBpcyBibHVycmVkXG4gICAqIGJ5IHRoZSB1c2VyLiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiB0b3VjaGVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgc2VsZWN0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBTZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHJ4LWFuZ3VsYXIvbm8tZXhwbGljaXQtY2hhbmdlLWRldGVjdGlvbi1hcGlzXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0J3MgdmFsdWUuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcHRpb25zIHx8ICh0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwICYmIHRoaXMubWVudUl0ZW1zLmxlbmd0aCA+IDApKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMubWVudUl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZS50b1N0cmluZygpLFxuICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLnRvU3RyaW5nKCksXG4gICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3ViID0gaXRlbS5jbGljay5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5tZW51LndyaXRlVmFsdWUodmFsdWUpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgICAgICAgaWYgKGl0ZW0udmFsdWUudG9TdHJpbmcoKSA9PT0gdGhpcy5zZWxlY3RWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSBpdGVtLnRpdGxlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RJY29uID0gaXRlbS5pY29uO1xuICAgICAgICAgIC8vIHRoaXMuc2VsZWN0RGVzY3JpcHRpb24gPSBpdGVtLmRlc2NyaXB0aW9uLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChlICYmIGUubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0VmFsdWUgIT09IGUpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW1bdGhpcy52YWx1ZVByb3BlcnR5XS50b1N0cmluZygpID09PSBlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fdmFsdWVUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGl0ZW0pO1xuICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShpdGVtW3RoaXMudmFsdWVQcm9wZXJ0eV0pO1xuICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGl0ZW1bdGhpcy52YWx1ZVByb3BlcnR5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyaWdnZXIuaXNPcGVuKCkgJiYgZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyaWdnZXIuaXNPcGVuKCkgJiYgZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgaWYgKHRoaXMudHJpZ2dlcikge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLl92YWx1ZVR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLnNlbGVjdFZhbHVlID0gdmFsdWVbdGhpcy52YWx1ZVByb3BlcnR5XS50b1N0cmluZygpO1xuICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IHZhbHVlW3RoaXMudGl0bGVQcm9wZXJ0eV0udG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuc2VsZWN0SWNvbiA9IHZhbHVlW3RoaXMuaWNvblByb3BlcnR5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSA9IHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKG9wdCA9PiB7XG4gICAgICAgICAgaWYgKG9wdFt0aGlzLnZhbHVlUHJvcGVydHldID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IG9wdFt0aGlzLnRpdGxlUHJvcGVydHldLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEljb24gPSBvcHRbdGhpcy5pY29uUHJvcGVydHldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtuZ1N0eWxlXT1cInt3aWR0aDogd2lkdGgsIGN1cnNvcjogJ3BvaW50ZXInfVwiPlxuICA8ZnctdGV4dC1pbnB1dFxuICAgIFtjZGtNZW51VHJpZ2dlckZvcl09XCJzZWxlY3RNZW51XCJcbiAgICBbdmFsdWVdPVwic2VsZWN0VGl0bGVcIlxuICAgIFtsZWZ0SWNvbl09XCJzZWxlY3RJY29uXCJcbiAgICByaWdodEljb249XCJjaGV2cm9uLWRvd25cIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgIHJlYWRPbmx5PVwidHJ1ZVwiPlxuICA8L2Z3LXRleHQtaW5wdXQ+XG4gIDxuZy10ZW1wbGF0ZSAjc2VsZWN0TWVudT5cbiAgICA8ZnctbWVudS1jb250YWluZXIgW3Nob3dGaWx0ZXJdPVwic2hvd0ZpbHRlclwiIFt3aWR0aF09XCJvcHRpb25zV2lkdGggfHwgd2lkdGhcIiBbbWF4SGVpZ2h0XT1cIm1heE9wdGlvbnNIZWlnaHRcIj5cbiAgICAgIDxmdy1tZW51XG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFt2YWx1ZV09XCJzZWxlY3RWYWx1ZVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVudUl0ZW1zLmxlbmd0aD09PTBcIj5cbiAgICAgICAgICA8ZnctbWVudS1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RpdGxlUHJvcGVydHldLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIml0ZW1bZGVzY3JpcHRpb25Qcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1bdmFsdWVQcm9wZXJ0eV0udG9TdHJpbmcoKVwiXG4gICAgICAgICAgICBbaWNvbl09XCJpdGVtW2ljb25Qcm9wZXJ0eV1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2Z3LW1lbnUtaXRlbT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmdy1tZW51LWl0ZW0sIGZ3LW1lbnUtc2VwYXJhdG9yXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZnctbWVudT5cbiAgICA8L2Z3LW1lbnUtY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7OztBQWM1RSxNQUFNLE9BQU8scUJBQXFCO0lBOENoQyxZQUFzQixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQW5DbEQsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixrQkFBYSxHQUFZLE9BQU8sQ0FBQztRQUNqQyxrQkFBYSxHQUFZLE9BQU8sQ0FBQztRQUNqQyxpQkFBWSxHQUFZLE1BQU0sQ0FBQztRQUMvQix3QkFBbUIsR0FBWSxhQUFhLENBQUM7UUFDN0MsZUFBVSxHQUFhLEtBQUssQ0FBQztRQUM3QixhQUFRLEdBQWEsS0FBSyxDQUFDO1FBQzNCLFVBQUssR0FBVyxPQUFPLENBQUM7UUFHeEIsZ0JBQVcsR0FBVyxxQkFBcUIsQ0FBQztRQUlyRCw0REFBNEQ7UUFDbEQsV0FBTSxHQUFHLElBQUksWUFB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OzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjt3R0FHa0QsWUFBWTtzQkFBOUQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFVeEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ3FCLE9BQU87c0JBQWpDLFNBQVM7dUJBQUMsY0FBYztnQkFDRyxJQUFJO3NCQUEvQixTQUFTO3VCQUFDLGVBQWU7Z0JBQ1ksU0FBUztzQkFBOUMsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBRTFCLE1BQU07c0JBQWYsTUFBTTtnQkFRSCxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ2RrTWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbWVudSc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGd01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3TWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGd1NlbGVjdE1lbnVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRndTZWxlY3RNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pIG91dHNpZGVDbGljayhldnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc09wZW4gJiYgZXZ0Lm5vZGVOYW1lICE9PSAnSU5QVVQnKSB7XG4gICAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmlnZ2VyICYmIHRoaXMudHJpZ2dlci5pc09wZW4oKSkge1xuICAgICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBvcHRpb25zOiBvYmplY3RbXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZVByb3BlcnR5Pzogc3RyaW5nID0gJ3ZhbHVlJztcbiAgQElucHV0KCkgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyA9ICd0aXRsZSc7XG4gIEBJbnB1dCgpIGljb25Qcm9wZXJ0eT86IHN0cmluZyA9ICdpY29uJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb25Qcm9wZXJ0eT86IHN0cmluZyA9ICdkZXNjcmlwdGlvbic7XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXI/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzIwMHB4JztcbiAgQElucHV0KCkgb3B0aW9uc1dpZHRoPzogc3RyaW5nO1xuICBASW5wdXQoKSBtYXhPcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBzb21ldGhpbmcuLi4nO1xuICBAVmlld0NoaWxkKENka01lbnVUcmlnZ2VyKSB0cmlnZ2VyOiBDZGtNZW51VHJpZ2dlcjtcbiAgQFZpZXdDaGlsZChGd01lbnVDb21wb25lbnQpIG1lbnU6IEZ3TWVudUNvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZHJlbihGd01lbnVJdGVtQ29tcG9uZW50KSBtZW51SXRlbXM6IFF1ZXJ5TGlzdDxGd01lbnVJdGVtQ29tcG9uZW50PjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgc2VsZWN0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RUaXRsZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdEljb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZShuZXdWYWx1ZTogYW55KSB7XG4gICAgdGhpcy5fdmFsdWVUeXBlID0gdHlwZW9mIG5ld1ZhbHVlO1xuICAgIHRoaXMudXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfdmFsdWVUeXBlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG5cbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBzZWxlY3QncyB2YWx1ZVxuICAgKiBjaGFuZ2VzIGZyb20gdXNlciBpbnB1dC4gUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gICAqIHJlcXVpcmVkIHRvIGludGVncmF0ZSB3aXRoIEFuZ3VsYXIncyBjb3JlIGZvcm1zIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIHNlbGVjdCBpcyBibHVycmVkXG4gICAqIGJ5IHRoZSB1c2VyLiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiB0b3VjaGVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgc2VsZWN0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBTZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHJ4LWFuZ3VsYXIvbm8tZXhwbGljaXQtY2hhbmdlLWRldGVjdGlvbi1hcGlzXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0J3MgdmFsdWUuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcHRpb25zIHx8ICh0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwICYmIHRoaXMubWVudUl0ZW1zICYmIHRoaXMubWVudUl0ZW1zLmxlbmd0aCA+IDApKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMubWVudUl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZS50b1N0cmluZygpLFxuICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLnRvU3RyaW5nKCksXG4gICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3ViID0gaXRlbS5jbGljay5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5tZW51LndyaXRlVmFsdWUodmFsdWUpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgICAgICAgaWYgKGl0ZW0udmFsdWUudG9TdHJpbmcoKSA9PT0gdGhpcy5zZWxlY3RWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSBpdGVtLnRpdGxlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RJY29uID0gaXRlbS5pY29uO1xuICAgICAgICAgIC8vIHRoaXMuc2VsZWN0RGVzY3JpcHRpb24gPSBpdGVtLmRlc2NyaXB0aW9uLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdFZhbHVlICE9PSBlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW1bdGhpcy52YWx1ZVByb3BlcnR5XS50b1N0cmluZygpID09PSBlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoaXRlbSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoaXRlbVt0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyLmlzT3BlbigpICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmlnZ2VyLmlzT3BlbigpICYmIGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIGlmICh0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0gPT09IHZhbHVlW3RoaXMudmFsdWVQcm9wZXJ0eV0pO1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLl92YWx1ZVR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLnNlbGVjdFZhbHVlID0gdmFsdWVbdGhpcy52YWx1ZVByb3BlcnR5XS50b1N0cmluZygpO1xuICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IHZhbHVlW3RoaXMudGl0bGVQcm9wZXJ0eV0udG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuc2VsZWN0SWNvbiA9IHZhbHVlW3RoaXMuaWNvblByb3BlcnR5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VmFsdWUgPSBzZWxlY3RlZE9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSBzZWxlY3RlZE9wdGlvblt0aGlzLnRpdGxlUHJvcGVydHldLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0SWNvbiA9IHNlbGVjdGVkT3B0aW9uW3RoaXMuaWNvblByb3BlcnR5XTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdFZhbHVlID0gdmFsdWUgPyB2YWx1ZS50b1N0cmluZygpIDogJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiAnJztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaChvcHQgPT4ge1xuICAgICAgICAgIGlmIChvcHRbdGhpcy52YWx1ZVByb3BlcnR5XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSBvcHRbdGhpcy50aXRsZVByb3BlcnR5XS50b1N0cmluZygpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RJY29uID0gb3B0W3RoaXMuaWNvblByb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IFtuZ1N0eWxlXT1cInt3aWR0aDogd2lkdGgsIGN1cnNvcjogJ3BvaW50ZXInfVwiPlxuICA8ZnctdGV4dC1pbnB1dFxuICAgIFtjZGtNZW51VHJpZ2dlckZvcl09XCJzZWxlY3RNZW51XCJcbiAgICBbdmFsdWVdPVwic2VsZWN0VGl0bGVcIlxuICAgIFtsZWZ0SWNvbl09XCJzZWxlY3RJY29uXCJcbiAgICByaWdodEljb249XCJjaGV2cm9uLWRvd25cIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgIHJlYWRPbmx5PVwidHJ1ZVwiPlxuICA8L2Z3LXRleHQtaW5wdXQ+XG4gIDxuZy10ZW1wbGF0ZSAjc2VsZWN0TWVudT5cbiAgICA8ZnctbWVudS1jb250YWluZXIgW3Nob3dGaWx0ZXJdPVwic2hvd0ZpbHRlclwiIFt3aWR0aF09XCJvcHRpb25zV2lkdGggfHwgd2lkdGhcIiBbbWF4SGVpZ2h0XT1cIm1heE9wdGlvbnNIZWlnaHRcIj5cbiAgICAgIDxmdy1tZW51XG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFt2YWx1ZV09XCJzZWxlY3RWYWx1ZVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVudUl0ZW1zLmxlbmd0aD09PTBcIj5cbiAgICAgICAgICA8ZnctbWVudS1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RpdGxlUHJvcGVydHldLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIml0ZW1bZGVzY3JpcHRpb25Qcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1bdmFsdWVQcm9wZXJ0eV0udG9TdHJpbmcoKVwiXG4gICAgICAgICAgICBbaWNvbl09XCJpdGVtW2ljb25Qcm9wZXJ0eV1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2Z3LW1lbnUtaXRlbT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmdy1tZW51LWl0ZW0sIGZ3LW1lbnUtc2VwYXJhdG9yXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZnctbWVudT5cbiAgICA8L2Z3LW1lbnUtY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -90,10 +90,10 @@ export class FwSnackbarComponent {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
FwSnackbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSnackbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FwSnackbarTimerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
93
|
-
FwSnackbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: { message: "message", messageDuration: "messageDuration" }, outputs: { ready: "ready", dismiss: "dismiss", action: "action" }, host: { properties: { "class": "this.cssClass" } }, providers: [FwSnackbarTimerService], ngImport: i0, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" type=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}
|
|
93
|
+
FwSnackbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: { message: "message", messageDuration: "messageDuration" }, outputs: { ready: "ready", dismiss: "dismiss", action: "action" }, host: { properties: { "class": "this.cssClass" } }, providers: [FwSnackbarTimerService], ngImport: i0, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" type=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-base);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: i4.FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: i5.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
94
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSnackbarComponent, decorators: [{
|
|
95
95
|
type: Component,
|
|
96
|
-
args: [{ selector: 'fw-snackbar', providers: [FwSnackbarTimerService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" type=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}
|
|
96
|
+
args: [{ selector: 'fw-snackbar', providers: [FwSnackbarTimerService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" type=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-base);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"] }]
|
|
97
97
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.FwSnackbarTimerService }]; }, propDecorators: { message: [{
|
|
98
98
|
type: Input
|
|
99
99
|
}], messageDuration: [{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, ContentChild, HostBinding, Input } from '@angular/core';
|
|
1
|
+
import { Component, ContentChild, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
|
2
2
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
@@ -6,6 +6,9 @@ import * as i2 from "../icon/icon.component";
|
|
|
6
6
|
export class FwTextInputComponent {
|
|
7
7
|
constructor() {
|
|
8
8
|
this.disabled = false;
|
|
9
|
+
this.useActionableIcons = false;
|
|
10
|
+
this.leftIconAction = new EventEmitter();
|
|
11
|
+
this.rightIconAction = new EventEmitter();
|
|
9
12
|
this.size = 'medium';
|
|
10
13
|
this.type = 'text';
|
|
11
14
|
this.maxLength = 255;
|
|
@@ -41,26 +44,38 @@ export class FwTextInputComponent {
|
|
|
41
44
|
blurHandler() {
|
|
42
45
|
this.onTouch();
|
|
43
46
|
}
|
|
47
|
+
onLeftIconClick() {
|
|
48
|
+
this.leftIconAction.emit();
|
|
49
|
+
}
|
|
50
|
+
onRightIconClick() {
|
|
51
|
+
this.rightIconAction.emit();
|
|
52
|
+
}
|
|
44
53
|
}
|
|
45
54
|
FwTextInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
-
FwTextInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwTextInputComponent, selector: "fw-text-input", inputs: { disabled: "disabled", leftIcon: "leftIcon", rightIcon: "rightIcon", context: "context", helperText: "helperText", errorText: "errorText", placeholder: "placeholder", readOnly: "readOnly", size: "size", type: "type", maxLength: "maxLength", autofocus: "autofocus", autocomplete: "autocomplete", error: "error", value: "value" }, host: { properties: { "class.errored": "this.error" } }, providers: [{
|
|
55
|
+
FwTextInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwTextInputComponent, selector: "fw-text-input", inputs: { disabled: "disabled", useActionableIcons: "useActionableIcons", leftIcon: "leftIcon", rightIcon: "rightIcon", context: "context", helperText: "helperText", errorText: "errorText", placeholder: "placeholder", readOnly: "readOnly", size: "size", type: "type", maxLength: "maxLength", autofocus: "autofocus", autocomplete: "autocomplete", error: "error", value: "value" }, outputs: { leftIconAction: "leftIconAction", rightIconAction: "rightIconAction" }, host: { properties: { "class.errored": "this.error" } }, providers: [{
|
|
47
56
|
provide: NG_VALUE_ACCESSOR,
|
|
48
57
|
useExisting: FwTextInputComponent,
|
|
49
58
|
multi: true,
|
|
50
|
-
}], queries: [{ propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }], ngImport: i0, template: "<div class=\"full-container\">\n <div class=\"input-container\" [class]=\"size\">\n <fw-icon
|
|
59
|
+
}], queries: [{ propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }], ngImport: i0, template: "<div class=\"full-container\">\n <div class=\"input-container\" [class]=\"size\">\n <fw-icon\n *ngIf=\"!!leftIcon\"\n (click)=\"useActionableIcons?onLeftIconClick():null\"\n [ngClass]=\"useActionableIcons?'actionable':''\">\n {{ leftIcon }}\n </fw-icon>\n\n <input\n *ngIf=\"!textInput\"\n [type]=\"type\"\n (keyup)=\"changeHandler($event)\"\n (blur)=\"blurHandler()\"\n [value]=\"value\"\n [maxLength]=\"maxLength\"\n [placeholder]=\"placeholder || ''\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"autocomplete\"\n >\n <ng-content select=\"input\"></ng-content>\n <p class=\"context\" *ngIf=\"!!context\">{{ context }}</p>\n\n <fw-icon class=\"error-icon\">warning-circle</fw-icon>\n <fw-icon\n *ngIf=\"!!rightIcon\"\n (click)=\"useActionableIcons?onRightIconClick():null\"\n [ngClass]=\"useActionableIcons?'actionable':''\">\n {{ rightIcon }}\n </fw-icon>\n <ng-content></ng-content>\n </div>\n <p class=\"helper-text\" *ngIf=\"!!helperText\">{{ helperText }}</p>\n <p class=\"error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\";.vision-h1{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:22px}.vision-h2{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:18px}.vision-h3{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:16px}.vision-h4{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:14px}.vision-h5{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:12px;line-height:130%}.vision-p1{font-size:18px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p2{font-size:14px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p3{font-size:12px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p4,.full-container .helper-text,.full-container .error-text{font-size:10px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-link{text-decoration:underline;color:var(--primary-base);cursor:pointer}.vision-link:hover{text-decoration:none}.vision-link:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link:visited{color:var(--secondary-base)}.vision-link-inherited{text-decoration:underline;color:var(--primary-base);cursor:pointer;color:inherit}.vision-link-inherited:hover{text-decoration:none}.vision-link-inherited:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link-inherited:visited{color:var(--secondary-base)}.vision-link-inherited:visited{color:inherit}.vision-link-no-visited{text-decoration:underline;color:var(--primary-base);cursor:pointer}.vision-link-no-visited:hover{text-decoration:none}.vision-link-no-visited:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link-no-visited:visited{color:var(--secondary-base)}.vision-link-no-visited:visited{color:var(--primary-base)}.full-container{display:flex;flex-direction:column;line-height:21px}.full-container .input-container{box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:8px;align-items:center;gap:5px;border-radius:6px;border:1px solid var(--separations-input);font-family:Inter,sans-serif}.full-container .input-container:focus-within{border:1px solid var(--primary-base)}.full-container .input-container input{min-width:0;font-size:14px;flex-grow:1;color:var(--typography-base);background:var(--page-light);border:none}.full-container .input-container input:focus{outline:none;border:none}.full-container .input-container input::placeholder{color:var(--typography-light)}.full-container .input-container .context{color:var(--typography-light)}.full-container .error-icon{display:none}.full-container .helper-text,.full-container .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px}.full-container .error-text{text-align:left;color:var(--red-base);display:none}fw-icon.actionable{cursor:pointer}fw-icon.actionable:hover{color:var(--primary-base);background-color:var(--primary-hover);border-radius:50%}.small{height:30px}.small>fw-icon{font-size:18px}.medium{height:36px}.medium>fw-icon{font-size:20px}.large{height:40px}.large>fw-icon{font-size:24px}:host.errored .input-container,:host.ng-touched.ng-invalid .input-container{border:1px solid var(--red-base)}:host.errored .error-icon,:host.ng-touched.ng-invalid .error-icon{color:var(--red-base);display:inline!important}:host.errored .helper-text,:host.errored .full-container .error-text,:host.ng-touched.ng-invalid .helper-text,:host.ng-touched.ng-invalid .full-container .error-text{display:none}:host.errored .error-text,:host.ng-touched.ng-invalid .error-text{display:block!important}:disabled{opacity:.4;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] });
|
|
51
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTextInputComponent, decorators: [{
|
|
52
61
|
type: Component,
|
|
53
62
|
args: [{ selector: 'fw-text-input', providers: [{
|
|
54
63
|
provide: NG_VALUE_ACCESSOR,
|
|
55
64
|
useExisting: FwTextInputComponent,
|
|
56
65
|
multi: true,
|
|
57
|
-
}], template: "<div class=\"full-container\">\n <div class=\"input-container\" [class]=\"size\">\n <fw-icon
|
|
66
|
+
}], template: "<div class=\"full-container\">\n <div class=\"input-container\" [class]=\"size\">\n <fw-icon\n *ngIf=\"!!leftIcon\"\n (click)=\"useActionableIcons?onLeftIconClick():null\"\n [ngClass]=\"useActionableIcons?'actionable':''\">\n {{ leftIcon }}\n </fw-icon>\n\n <input\n *ngIf=\"!textInput\"\n [type]=\"type\"\n (keyup)=\"changeHandler($event)\"\n (blur)=\"blurHandler()\"\n [value]=\"value\"\n [maxLength]=\"maxLength\"\n [placeholder]=\"placeholder || ''\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"autocomplete\"\n >\n <ng-content select=\"input\"></ng-content>\n <p class=\"context\" *ngIf=\"!!context\">{{ context }}</p>\n\n <fw-icon class=\"error-icon\">warning-circle</fw-icon>\n <fw-icon\n *ngIf=\"!!rightIcon\"\n (click)=\"useActionableIcons?onRightIconClick():null\"\n [ngClass]=\"useActionableIcons?'actionable':''\">\n {{ rightIcon }}\n </fw-icon>\n <ng-content></ng-content>\n </div>\n <p class=\"helper-text\" *ngIf=\"!!helperText\">{{ helperText }}</p>\n <p class=\"error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\";.vision-h1{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:22px}.vision-h2{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:18px}.vision-h3{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:16px}.vision-h4{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:14px}.vision-h5{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:12px;line-height:130%}.vision-p1{font-size:18px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p2{font-size:14px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p3{font-size:12px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p4,.full-container .helper-text,.full-container .error-text{font-size:10px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-link{text-decoration:underline;color:var(--primary-base);cursor:pointer}.vision-link:hover{text-decoration:none}.vision-link:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link:visited{color:var(--secondary-base)}.vision-link-inherited{text-decoration:underline;color:var(--primary-base);cursor:pointer;color:inherit}.vision-link-inherited:hover{text-decoration:none}.vision-link-inherited:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link-inherited:visited{color:var(--secondary-base)}.vision-link-inherited:visited{color:inherit}.vision-link-no-visited{text-decoration:underline;color:var(--primary-base);cursor:pointer}.vision-link-no-visited:hover{text-decoration:none}.vision-link-no-visited:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link-no-visited:visited{color:var(--secondary-base)}.vision-link-no-visited:visited{color:var(--primary-base)}.full-container{display:flex;flex-direction:column;line-height:21px}.full-container .input-container{box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:8px;align-items:center;gap:5px;border-radius:6px;border:1px solid var(--separations-input);font-family:Inter,sans-serif}.full-container .input-container:focus-within{border:1px solid var(--primary-base)}.full-container .input-container input{min-width:0;font-size:14px;flex-grow:1;color:var(--typography-base);background:var(--page-light);border:none}.full-container .input-container input:focus{outline:none;border:none}.full-container .input-container input::placeholder{color:var(--typography-light)}.full-container .input-container .context{color:var(--typography-light)}.full-container .error-icon{display:none}.full-container .helper-text,.full-container .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px}.full-container .error-text{text-align:left;color:var(--red-base);display:none}fw-icon.actionable{cursor:pointer}fw-icon.actionable:hover{color:var(--primary-base);background-color:var(--primary-hover);border-radius:50%}.small{height:30px}.small>fw-icon{font-size:18px}.medium{height:36px}.medium>fw-icon{font-size:20px}.large{height:40px}.large>fw-icon{font-size:24px}:host.errored .input-container,:host.ng-touched.ng-invalid .input-container{border:1px solid var(--red-base)}:host.errored .error-icon,:host.ng-touched.ng-invalid .error-icon{color:var(--red-base);display:inline!important}:host.errored .helper-text,:host.errored .full-container .error-text,:host.ng-touched.ng-invalid .helper-text,:host.ng-touched.ng-invalid .full-container .error-text{display:none}:host.errored .error-text,:host.ng-touched.ng-invalid .error-text{display:block!important}:disabled{opacity:.4;cursor:not-allowed}\n"] }]
|
|
58
67
|
}], propDecorators: { disabled: [{
|
|
59
68
|
type: Input
|
|
69
|
+
}], useActionableIcons: [{
|
|
70
|
+
type: Input
|
|
60
71
|
}], leftIcon: [{
|
|
61
72
|
type: Input
|
|
73
|
+
}], leftIconAction: [{
|
|
74
|
+
type: Output
|
|
62
75
|
}], rightIcon: [{
|
|
63
76
|
type: Input
|
|
77
|
+
}], rightIconAction: [{
|
|
78
|
+
type: Output
|
|
64
79
|
}], context: [{
|
|
65
80
|
type: Input
|
|
66
81
|
}], helperText: [{
|
|
@@ -92,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
92
107
|
}], value: [{
|
|
93
108
|
type: Input
|
|
94
109
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy90ZXh0LWlucHV0L3RleHQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGV4dC1pbnB1dC90ZXh0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQXFDLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFZdEYsTUFBTSxPQUFPLG9CQUFvQjtJQVZqQztRQVlXLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFDM0IsdUJBQWtCLEdBQWEsS0FBSyxDQUFDO1FBRXBDLG1CQUFjLEdBQXdCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0Qsb0JBQWUsR0FBd0IsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQU1qRSxTQUFJLEdBQWtDLFFBQVEsQ0FBQztRQUMvQyxTQUFJLEdBQVksTUFBTSxDQUFDO1FBQ3ZCLGNBQVMsR0FBWSxHQUFHLENBQUM7UUFHbEMsb0ZBQW9GO1FBQzdDLFVBQUssR0FBYSxLQUFLLENBQUM7UUFHdEQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFnQixJQUFJLENBQUM7UUFFN0IsWUFBTyxHQUFHLEdBQVMsRUFBRTtRQUM1QixDQUFDLENBQUM7UUFDRiw2REFBNkQ7UUFDdEQsYUFBUSxHQUFHLENBQUMsS0FBYSxFQUFRLEVBQUU7UUFDMUMsQ0FBQyxDQUFDO0tBc0NIO0lBcENDLFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsOERBQThEO0lBQzlELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBb0I7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOztpSEFqRVUsb0JBQW9CO3FHQUFwQixvQkFBb0IsZ2pCQU5wQixDQUFDO1lBQ1YsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsb0JBQW9CO1lBQ2pDLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyw4SENYSiw2c0NBcUNBOzJGRHhCYSxvQkFBb0I7a0JBVmhDLFNBQVM7K0JBQ0UsZUFBZSxhQUdkLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxzQkFBc0I7NEJBQ2pDLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7OEJBSU8sUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNFLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVpQyxLQUFLO3NCQUEzQyxXQUFXO3VCQUFDLGVBQWU7O3NCQUFHLEtBQUs7Z0JBQ1UsU0FBUztzQkFBdEQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVuQyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctdGV4dC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IEZ3VGV4dElucHV0Q29tcG9uZW50LFxuICAgIG11bHRpOiB0cnVlLFxuICB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRndUZXh0SW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZUFjdGlvbmFibGVJY29ucz86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbGVmdEljb24/OiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBsZWZ0SWNvbkFjdGlvbj86IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQElucHV0KCkgcmlnaHRJY29uPzogc3RyaW5nO1xuICBAT3V0cHV0KCkgcmlnaHRJY29uQWN0aW9uPzogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBjb250ZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBoZWxwZXJUZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvclRleHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBASW5wdXQoKSByZWFkT25seT86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNpemU/OiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnID0gJ21lZGl1bSc7XG4gIEBJbnB1dCgpIHR5cGU/OiBzdHJpbmcgPSAndGV4dCc7XG4gIEBJbnB1dCgpIG1heExlbmd0aD86IG51bWJlciA9IDI1NTtcbiAgQElucHV0KCkgYXV0b2ZvY3VzPzogc3RyaW5nO1xuICBASW5wdXQoKSBhdXRvY29tcGxldGU/OiBzdHJpbmc7XG4gIC8vIHdlIGJpbmQgdGhpcyB0byBob3N0IGJlY2F1c2UgdGhhdCdzIHdoZXJlIGFuZ3VsYXIgZm9ybSBhcGlzIHB1dCB0aGUgZXJyb3IgY2xhc3Nlc1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVycm9yZWQnKSBASW5wdXQoKSBlcnJvcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQENvbnRlbnRDaGlsZCgndGV4dElucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHRleHRJbnB1dDtcblxuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICBleHRlcm5hbENvbnRyb2w6IEZvcm1Db250cm9sID0gbnVsbDtcblxuICBwdWJsaWMgb25Ub3VjaCA9ICgpOiB2b2lkID0+IHtcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgb25DaGFuZ2UgPSAodmFsdWU6IHN0cmluZyk6IHZvaWQgPT4ge1xuICB9O1xuXG4gIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBjaGFuZ2VIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2goKTtcbiAgfVxuXG4gIGJsdXJIYW5kbGVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICB9XG5cbiAgb25MZWZ0SWNvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubGVmdEljb25BY3Rpb24uZW1pdCgpO1xuICB9XG5cbiAgb25SaWdodEljb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnJpZ2h0SWNvbkFjdGlvbi5lbWl0KCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImZ1bGwtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIiBbY2xhc3NdPVwic2l6ZVwiPlxuICAgIDxmdy1pY29uXG4gICAgICAqbmdJZj1cIiEhbGVmdEljb25cIlxuICAgICAgKGNsaWNrKT1cInVzZUFjdGlvbmFibGVJY29ucz9vbkxlZnRJY29uQ2xpY2soKTpudWxsXCJcbiAgICAgIFtuZ0NsYXNzXT1cInVzZUFjdGlvbmFibGVJY29ucz8nYWN0aW9uYWJsZSc6JydcIj5cbiAgICAgIHt7IGxlZnRJY29uIH19XG4gICAgPC9mdy1pY29uPlxuXG4gICAgPGlucHV0XG4gICAgICAqbmdJZj1cIiF0ZXh0SW5wdXRcIlxuICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAoa2V5dXApPVwiY2hhbmdlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cImJsdXJIYW5kbGVyKClcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaW5wdXRcIj48L25nLWNvbnRlbnQ+XG4gICAgPHAgY2xhc3M9XCJjb250ZXh0XCIgKm5nSWY9XCIhIWNvbnRleHRcIj57eyBjb250ZXh0IH19PC9wPlxuXG4gICAgPGZ3LWljb24gY2xhc3M9XCJlcnJvci1pY29uXCI+d2FybmluZy1jaXJjbGU8L2Z3LWljb24+XG4gICAgPGZ3LWljb25cbiAgICAgICpuZ0lmPVwiISFyaWdodEljb25cIlxuICAgICAgKGNsaWNrKT1cInVzZUFjdGlvbmFibGVJY29ucz9vblJpZ2h0SWNvbkNsaWNrKCk6bnVsbFwiXG4gICAgICBbbmdDbGFzc109XCJ1c2VBY3Rpb25hYmxlSWNvbnM/J2FjdGlvbmFibGUnOicnXCI+XG4gICAgICB7eyByaWdodEljb24gfX1cbiAgICA8L2Z3LWljb24+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJoZWxwZXItdGV4dFwiICpuZ0lmPVwiISFoZWxwZXJUZXh0XCI+e3sgaGVscGVyVGV4dCB9fTwvcD5cbiAgPHAgY2xhc3M9XCJlcnJvci10ZXh0XCIgKm5nSWY9XCIhIWVycm9yVGV4dFwiPnt7IGVycm9yVGV4dCB9fTwvcD5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { min } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/cdk/text-field";
|
|
7
|
+
import * as i3 from "../icon/icon.component";
|
|
8
|
+
export class FwTextAreaInputComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.minRows = 2;
|
|
11
|
+
this.maxRows = 15;
|
|
12
|
+
this.disabled = false;
|
|
13
|
+
// we bind this to host because that's where angular form apis put the error classes
|
|
14
|
+
this.error = false;
|
|
15
|
+
this.value = '';
|
|
16
|
+
this.externalControl = null;
|
|
17
|
+
this.onTouch = () => {
|
|
18
|
+
};
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
|
+
this.onChange = (value) => {
|
|
21
|
+
};
|
|
22
|
+
this.min = min;
|
|
23
|
+
}
|
|
24
|
+
writeValue(obj) {
|
|
25
|
+
this.value = obj;
|
|
26
|
+
}
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
+
registerOnChange(fn) {
|
|
29
|
+
this.onChange = fn;
|
|
30
|
+
}
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
+
registerOnTouched(fn) {
|
|
33
|
+
this.onTouch = fn;
|
|
34
|
+
}
|
|
35
|
+
setDisabledState(isDisabled) {
|
|
36
|
+
this.disabled = isDisabled;
|
|
37
|
+
}
|
|
38
|
+
changeHandler(event) {
|
|
39
|
+
this.value = event.target.value;
|
|
40
|
+
this.onChange(this.value);
|
|
41
|
+
this.onTouch();
|
|
42
|
+
}
|
|
43
|
+
blurHandler() {
|
|
44
|
+
this.onTouch();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
FwTextAreaInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTextAreaInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
+
FwTextAreaInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwTextAreaInputComponent, selector: "fw-textarea-input", inputs: { minRows: "minRows", maxRows: "maxRows", disabled: "disabled", helperText: "helperText", errorText: "errorText", placeholder: "placeholder", readOnly: "readOnly", autofocus: "autofocus", width: "width", error: "error", value: "value" }, host: { properties: { "class.errored": "this.error" } }, providers: [{
|
|
49
|
+
provide: NG_VALUE_ACCESSOR,
|
|
50
|
+
useExisting: FwTextAreaInputComponent,
|
|
51
|
+
multi: true,
|
|
52
|
+
}], ngImport: i0, template: "<div class=\"textarea-wrapper\" [ngStyle]=\"{width: width}\">\n <textarea\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n [cdkAutosizeMinRows]=\"minRows\"\n [cdkAutosizeMaxRows]=\"maxRows\"\n (keyup)=\"changeHandler($event)\"\n (blur)=\"blurHandler()\"\n [placeholder]=\"placeholder || ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [autofocus]=\"autofocus\">\n </textarea>\n <fw-icon class=\"error-icon\">warning-circle</fw-icon>\n</div>\n<p class=\"helper-text\" *ngIf=\"!!helperText\">{{ helperText }}</p>\n<p class=\"error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\";.vision-h1{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:22px}.vision-h2{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:18px}.vision-h3{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:16px}.vision-h4{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:14px}.vision-h5{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:12px;line-height:130%}.vision-p1{font-size:18px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p2{font-size:14px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p3{font-size:12px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p4,:host .helper-text,:host .error-text{font-size:10px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-link{text-decoration:underline;color:var(--primary-base);cursor:pointer}.vision-link:hover{text-decoration:none}.vision-link:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link:visited{color:var(--secondary-base)}.vision-link-inherited{text-decoration:underline;color:var(--primary-base);cursor:pointer;color:inherit}.vision-link-inherited:hover{text-decoration:none}.vision-link-inherited:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link-inherited:visited{color:var(--secondary-base)}.vision-link-inherited:visited{color:inherit}.vision-link-no-visited{text-decoration:underline;color:var(--primary-base);cursor:pointer}.vision-link-no-visited:hover{text-decoration:none}.vision-link-no-visited:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link-no-visited:visited{color:var(--secondary-base)}.vision-link-no-visited:visited{color:var(--primary-base)}:host{display:flex;flex-direction:column}:host .textarea-wrapper{border-radius:6px;overflow:hidden;border:1px solid var(--separations-input);display:flex;position:relative}:host .textarea-wrapper:focus-within{border:1px solid var(--primary-base)}:host .textarea-wrapper .error-icon{display:none}:host textarea{min-width:0;font-size:14px;flex:1;padding:8px;color:var(--typography-base);background:var(--page-light);border:none;overflow:auto}:host textarea:focus{outline:none;border:none}:host textarea:disabled{opacity:.4;cursor:not-allowed}:host textarea::placeholder{color:var(--typography-light)}:host .helper-text,:host .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px}:host .error-text{text-align:left;color:var(--red-base);display:none}:host.errored .textarea-wrapper{border:1px solid var(--red-base)}:host.errored .textarea-wrapper .error-icon{position:absolute;right:6px;top:6px;font-size:18px;color:var(--red-base);display:inline!important}:host.errored .error-text{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "component", type: i3.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTextAreaInputComponent, decorators: [{
|
|
54
|
+
type: Component,
|
|
55
|
+
args: [{ selector: 'fw-textarea-input', providers: [{
|
|
56
|
+
provide: NG_VALUE_ACCESSOR,
|
|
57
|
+
useExisting: FwTextAreaInputComponent,
|
|
58
|
+
multi: true,
|
|
59
|
+
}], template: "<div class=\"textarea-wrapper\" [ngStyle]=\"{width: width}\">\n <textarea\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n [cdkAutosizeMinRows]=\"minRows\"\n [cdkAutosizeMaxRows]=\"maxRows\"\n (keyup)=\"changeHandler($event)\"\n (blur)=\"blurHandler()\"\n [placeholder]=\"placeholder || ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [autofocus]=\"autofocus\">\n </textarea>\n <fw-icon class=\"error-icon\">warning-circle</fw-icon>\n</div>\n<p class=\"helper-text\" *ngIf=\"!!helperText\">{{ helperText }}</p>\n<p class=\"error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\";.vision-h1{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:22px}.vision-h2{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:18px}.vision-h3{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:16px}.vision-h4{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:14px}.vision-h5{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:12px;line-height:130%}.vision-p1{font-size:18px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p2{font-size:14px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p3{font-size:12px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p4,:host .helper-text,:host .error-text{font-size:10px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-link{text-decoration:underline;color:var(--primary-base);cursor:pointer}.vision-link:hover{text-decoration:none}.vision-link:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link:visited{color:var(--secondary-base)}.vision-link-inherited{text-decoration:underline;color:var(--primary-base);cursor:pointer;color:inherit}.vision-link-inherited:hover{text-decoration:none}.vision-link-inherited:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link-inherited:visited{color:var(--secondary-base)}.vision-link-inherited:visited{color:inherit}.vision-link-no-visited{text-decoration:underline;color:var(--primary-base);cursor:pointer}.vision-link-no-visited:hover{text-decoration:none}.vision-link-no-visited:active{text-decoration:none;outline:2px solid var(--primary-dark);border-radius:4px}.vision-link-no-visited:visited{color:var(--secondary-base)}.vision-link-no-visited:visited{color:var(--primary-base)}:host{display:flex;flex-direction:column}:host .textarea-wrapper{border-radius:6px;overflow:hidden;border:1px solid var(--separations-input);display:flex;position:relative}:host .textarea-wrapper:focus-within{border:1px solid var(--primary-base)}:host .textarea-wrapper .error-icon{display:none}:host textarea{min-width:0;font-size:14px;flex:1;padding:8px;color:var(--typography-base);background:var(--page-light);border:none;overflow:auto}:host textarea:focus{outline:none;border:none}:host textarea:disabled{opacity:.4;cursor:not-allowed}:host textarea::placeholder{color:var(--typography-light)}:host .helper-text,:host .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px}:host .error-text{text-align:left;color:var(--red-base);display:none}:host.errored .textarea-wrapper{border:1px solid var(--red-base)}:host.errored .textarea-wrapper .error-icon{position:absolute;right:6px;top:6px;font-size:18px;color:var(--red-base);display:inline!important}:host.errored .error-text{display:block}\n"] }]
|
|
60
|
+
}], propDecorators: { minRows: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], maxRows: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], disabled: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], helperText: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], errorText: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], placeholder: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], readOnly: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], autofocus: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], width: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], error: [{
|
|
79
|
+
type: HostBinding,
|
|
80
|
+
args: ['class.errored']
|
|
81
|
+
}, {
|
|
82
|
+
type: Input
|
|
83
|
+
}], value: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}] } });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGV4dGFyZWEtaW5wdXQvdGV4dGFyZWEtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGV4dGFyZWEtaW5wdXQvdGV4dGFyZWEtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBcUMsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVkzQixNQUFNLE9BQU8sd0JBQXdCO0lBVnJDO1FBWVcsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFPcEMsb0ZBQW9GO1FBQzdDLFVBQUssR0FBYSxLQUFLLENBQUM7UUFFdEQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFnQixJQUFJLENBQUM7UUFFN0IsWUFBTyxHQUFHLEdBQVMsRUFBRTtRQUM1QixDQUFDLENBQUM7UUFDRiw2REFBNkQ7UUFDdEQsYUFBUSxHQUFHLENBQUMsS0FBYSxFQUFRLEVBQUU7UUFDMUMsQ0FBQyxDQUFDO1FBOEJpQixRQUFHLEdBQUcsR0FBRyxDQUFDO0tBQzlCO0lBN0JDLFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsOERBQThEO0lBQzlELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBb0I7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7O3FIQWpEVSx3QkFBd0I7eUdBQXhCLHdCQUF3QiwyVkFOeEIsQ0FBQztZQUNWLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLHdCQUF3QjtZQUNyQyxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsMEJDWkosbXBCQWtCQTsyRkRKYSx3QkFBd0I7a0JBVnBDLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVywwQkFBMEI7NEJBQ3JDLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7OEJBSU8sT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRWlDLEtBQUs7c0JBQTNDLFdBQVc7dUJBQUMsZUFBZTs7c0JBQUcsS0FBSztnQkFFM0IsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtaW4gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctdGV4dGFyZWEtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IEZ3VGV4dEFyZWFJbnB1dENvbXBvbmVudCxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZ3VGV4dEFyZWFJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKSBtaW5Sb3dzOiBudW1iZXIgPSAyO1xuICBASW5wdXQoKSBtYXhSb3dzOiBudW1iZXIgPSAxNTtcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhlbHBlclRleHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVycm9yVGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzPzogc3RyaW5nO1xuICBASW5wdXQoKSB3aWR0aD86IHN0cmluZztcbiAgLy8gd2UgYmluZCB0aGlzIHRvIGhvc3QgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgYW5ndWxhciBmb3JtIGFwaXMgcHV0IHRoZSBlcnJvciBjbGFzc2VzXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZXJyb3JlZCcpIEBJbnB1dCgpIGVycm9yPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIGV4dGVybmFsQ29udHJvbDogRm9ybUNvbnRyb2wgPSBudWxsO1xuXG4gIHB1YmxpYyBvblRvdWNoID0gKCk6IHZvaWQgPT4ge1xuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBvbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gIH07XG5cbiAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGNoYW5nZUhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICB9XG5cbiAgYmx1ckhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluID0gbWluO1xufVxuIiwiPGRpdiBjbGFzcz1cInRleHRhcmVhLXdyYXBwZXJcIiBbbmdTdHlsZV09XCJ7d2lkdGg6IHdpZHRofVwiPlxuICA8dGV4dGFyZWFcbiAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG4gICAgW2Nka0F1dG9zaXplTWluUm93c109XCJtaW5Sb3dzXCJcbiAgICBbY2RrQXV0b3NpemVNYXhSb3dzXT1cIm1heFJvd3NcIlxuICAgIChrZXl1cCk9XCJjaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICAgIChibHVyKT1cImJsdXJIYW5kbGVyKClcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIj5cbiAgPC90ZXh0YXJlYT5cbiAgPGZ3LWljb24gY2xhc3M9XCJlcnJvci1pY29uXCI+d2FybmluZy1jaXJjbGU8L2Z3LWljb24+XG48L2Rpdj5cbjxwIGNsYXNzPVwiaGVscGVyLXRleHRcIiAqbmdJZj1cIiEhaGVscGVyVGV4dFwiPnt7IGhlbHBlclRleHQgfX08L3A+XG48cCBjbGFzcz1cImVycm9yLXRleHRcIiAqbmdJZj1cIiEhZXJyb3JUZXh0XCI+e3sgZXJyb3JUZXh0IH19PC9wPlxuIl19
|