myrta-ui 17.0.29 → 17.0.31

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.
Files changed (33) hide show
  1. package/esm2022/lib/components/form/select/components/select/select.component.mjs +98 -0
  2. package/esm2022/lib/components/form/select/components/select-multi/select-multi.component.mjs +112 -0
  3. package/esm2022/lib/components/form/select/enums/index.mjs +1 -2
  4. package/esm2022/lib/components/form/select/helpers/clean-selected-items.helper.mjs +4 -0
  5. package/esm2022/lib/components/form/select/helpers/get-selected-items.helper.mjs +21 -0
  6. package/esm2022/lib/components/form/select/models/select-inner-item.model.mjs +2 -0
  7. package/esm2022/lib/components/form/select/models/select-item.model.mjs +2 -0
  8. package/esm2022/lib/components/form/select/select.module.mjs +15 -6
  9. package/esm2022/lib/components/popup/components/popup/popup.component.mjs +17 -6
  10. package/esm2022/lib/components/popup/components/popup-item/popup-item.component.mjs +8 -5
  11. package/esm2022/lib/components/popup/directives/popup-trigger.directive.mjs +43 -8
  12. package/esm2022/lib/services/modal-service/helpers/modal-ref.mjs +1 -2
  13. package/esm2022/lib/services/modal-service/modal-service.service.mjs +4 -4
  14. package/esm2022/public-api.mjs +3 -2
  15. package/fesm2022/myrta-ui.mjs +253 -42
  16. package/fesm2022/myrta-ui.mjs.map +1 -1
  17. package/lib/components/form/select/components/select/select.component.d.ts +28 -0
  18. package/lib/components/form/select/components/select-multi/select-multi.component.d.ts +31 -0
  19. package/lib/components/form/select/enums/index.d.ts +0 -1
  20. package/lib/components/form/select/helpers/clean-selected-items.helper.d.ts +4 -0
  21. package/lib/components/form/select/helpers/get-selected-items.helper.d.ts +2 -0
  22. package/lib/components/form/select/models/select-inner-item.model.d.ts +5 -0
  23. package/lib/components/form/select/models/select-item.model.d.ts +3 -0
  24. package/lib/components/form/select/select.module.d.ts +6 -4
  25. package/lib/components/popup/components/popup/popup.component.d.ts +6 -2
  26. package/lib/components/popup/components/popup-item/popup-item.component.d.ts +2 -1
  27. package/lib/components/popup/directives/popup-trigger.directive.d.ts +9 -4
  28. package/package.json +1 -1
  29. package/public-api.d.ts +2 -1
  30. package/esm2022/lib/components/form/select/enums/select-type.enum.mjs +0 -6
  31. package/esm2022/lib/components/form/select/select.component.mjs +0 -62
  32. package/lib/components/form/select/enums/select-type.enum.d.ts +0 -5
  33. package/lib/components/form/select/select.component.d.ts +0 -21
@@ -16,14 +16,14 @@ import { OverlayModule } from '@angular/cdk/overlay';
16
16
  import { createPopper } from '@popperjs/core';
17
17
  import * as i6 from '@ng-select/ng-select';
18
18
  import { NgSelectModule } from '@ng-select/ng-select';
19
- import { Subscription, delay, of, Subject, filter, BehaviorSubject, EMPTY } from 'rxjs';
19
+ import { Subscription, asyncScheduler, delay, of, Subject, filter, BehaviorSubject, EMPTY } from 'rxjs';
20
20
  import * as i2$1 from '@angular/cdk/layout';
21
21
  import { Fancybox } from 'mrx-gallery-lib';
22
22
  import * as i1$5 from '@angular/common/http';
23
23
  import { HttpEventType, HttpClientModule } from '@angular/common/http';
24
24
  import * as i2$2 from '@ngrx/store';
25
25
  import { createAction, props, createReducer, on, StoreModule, createFeatureSelector, createSelector } from '@ngrx/store';
26
- import { cloneDeep } from 'lodash-es';
26
+ import { cloneDeep, isEqual } from 'lodash-es';
27
27
  import * as i1$6 from '@ngrx/effects';
28
28
  import { EffectsModule } from '@ngrx/effects';
29
29
  import * as i1$7 from 'ngx-toastr';
@@ -1549,15 +1549,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1549
1549
  }] });
1550
1550
 
1551
1551
  class PopupItemComponent {
1552
+ custom = false;
1552
1553
  templateRef;
1553
1554
  clicked = new EventEmitter();
1554
1555
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1555
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PopupItemComponent, selector: "mrx-popup-item", outputs: { clicked: "clicked" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\r\n <div class=\"mrx-popup-item\" (click)=\"clicked.emit()\">\r\n <ng-content></ng-content>\r\n </div>\r\n</ng-template>\r\n", styles: [".mrx-popup-item{padding:8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer}.mrx-popup-item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}\n"] });
1556
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PopupItemComponent, selector: "mrx-popup-item", inputs: { custom: "custom" }, outputs: { clicked: "clicked" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\r\n <div class=\"mrx-popup-item\" [class.mrx-popup-item--default]=\"custom\" (click)=\"clicked.emit()\">\r\n <ng-content></ng-content>\r\n </div>\r\n</ng-template>\r\n", styles: [".mrx-popup-item{padding:8px 8px 8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer}.mrx-popup-item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}\n"] });
1556
1557
  }
1557
1558
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopupItemComponent, decorators: [{
1558
1559
  type: Component,
1559
- args: [{ selector: 'mrx-popup-item', template: "<ng-template>\r\n <div class=\"mrx-popup-item\" (click)=\"clicked.emit()\">\r\n <ng-content></ng-content>\r\n </div>\r\n</ng-template>\r\n", styles: [".mrx-popup-item{padding:8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer}.mrx-popup-item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}\n"] }]
1560
- }], propDecorators: { templateRef: [{
1560
+ args: [{ selector: 'mrx-popup-item', template: "<ng-template>\r\n <div class=\"mrx-popup-item\" [class.mrx-popup-item--default]=\"custom\" (click)=\"clicked.emit()\">\r\n <ng-content></ng-content>\r\n </div>\r\n</ng-template>\r\n", styles: [".mrx-popup-item{padding:8px 8px 8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer}.mrx-popup-item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}\n"] }]
1561
+ }], propDecorators: { custom: [{
1562
+ type: Input
1563
+ }], templateRef: [{
1561
1564
  type: ViewChild,
1562
1565
  args: [TemplateRef, { static: true }]
1563
1566
  }], clicked: [{
@@ -1566,16 +1569,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1566
1569
 
1567
1570
  class PopupComponent {
1568
1571
  closeAfterClick = true;
1569
- // @Input() maxWidth: string = '800px';
1570
1572
  templateRef;
1571
1573
  popupItemComponents;
1572
- closed = new EventEmitter();
1574
+ toggle = new EventEmitter();
1575
+ _toggleInner = new EventEmitter();
1576
+ _updateInner = new EventEmitter();
1577
+ togglePopup(value) {
1578
+ this._toggleInner.emit(value);
1579
+ }
1580
+ updatePopup() {
1581
+ this._updateInner.emit();
1582
+ }
1573
1583
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1574
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PopupComponent, selector: "mrx-popup", inputs: { closeAfterClick: "closeAfterClick" }, outputs: { closed: "closed" }, queries: [{ propertyName: "popupItemComponents", predicate: PopupItemComponent }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\r\n <div class=\"mrx-popup-content\" [style.width]=\"'100%'\">\r\n <ng-container *ngFor=\"let item of popupItemComponents; let index = index; let first = first; let last = last\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".mrx-popup-content{padding:8px 0;background-color:#fff;border-radius:4px;box-shadow:0 1px 4px #3a3a3a4d}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
1584
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PopupComponent, selector: "mrx-popup", inputs: { closeAfterClick: "closeAfterClick" }, outputs: { toggle: "toggle", _toggleInner: "_toggleInner", _updateInner: "_updateInner" }, queries: [{ propertyName: "popupItemComponents", predicate: PopupItemComponent }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\r\n <div class=\"mrx-popup-content\" [style.width]=\"'100%'\">\r\n <ng-container *ngFor=\"let item of popupItemComponents; let index = index; let first = first; let last = last\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".mrx-popup-content{background-color:#fff;border-radius:4px;box-shadow:0 1px 4px #3a3a3a4d}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
1575
1585
  }
1576
1586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopupComponent, decorators: [{
1577
1587
  type: Component,
1578
- args: [{ selector: 'mrx-popup', template: "<ng-template>\r\n <div class=\"mrx-popup-content\" [style.width]=\"'100%'\">\r\n <ng-container *ngFor=\"let item of popupItemComponents; let index = index; let first = first; let last = last\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".mrx-popup-content{padding:8px 0;background-color:#fff;border-radius:4px;box-shadow:0 1px 4px #3a3a3a4d}\n"] }]
1588
+ args: [{ selector: 'mrx-popup', template: "<ng-template>\r\n <div class=\"mrx-popup-content\" [style.width]=\"'100%'\">\r\n <ng-container *ngFor=\"let item of popupItemComponents; let index = index; let first = first; let last = last\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".mrx-popup-content{background-color:#fff;border-radius:4px;box-shadow:0 1px 4px #3a3a3a4d}\n"] }]
1579
1589
  }], propDecorators: { closeAfterClick: [{
1580
1590
  type: Input
1581
1591
  }], templateRef: [{
@@ -1584,7 +1594,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1584
1594
  }], popupItemComponents: [{
1585
1595
  type: ContentChildren,
1586
1596
  args: [PopupItemComponent]
1587
- }], closed: [{
1597
+ }], toggle: [{
1598
+ type: Output
1599
+ }], _toggleInner: [{
1600
+ type: Output
1601
+ }], _updateInner: [{
1588
1602
  type: Output
1589
1603
  }] } });
1590
1604
 
@@ -1593,7 +1607,8 @@ class PopupTriggerDirective {
1593
1607
  elementRef;
1594
1608
  viewContainerRef;
1595
1609
  dispatcher;
1596
- _subscriber$ = new Subscription();
1610
+ _subscriberDetach$ = new Subscription();
1611
+ _subscriberAttach$ = new Subscription();
1597
1612
  _isDropdownOpen = false;
1598
1613
  _overlayRef;
1599
1614
  popupPanel;
@@ -1604,6 +1619,20 @@ class PopupTriggerDirective {
1604
1619
  this.viewContainerRef = viewContainerRef;
1605
1620
  this.dispatcher = dispatcher;
1606
1621
  }
1622
+ ngAfterViewInit() {
1623
+ this.popupPanel._toggleInner.subscribe(isOpen => {
1624
+ console.log(isOpen);
1625
+ if (isOpen && !this._isDropdownOpen) {
1626
+ this.openDropdown();
1627
+ }
1628
+ if (!isOpen && this._isDropdownOpen) {
1629
+ this.closeDropdown();
1630
+ }
1631
+ });
1632
+ this.popupPanel._updateInner.subscribe(() => {
1633
+ asyncScheduler.schedule(() => this.updatePosition());
1634
+ });
1635
+ }
1607
1636
  togglePopup() {
1608
1637
  this._isDropdownOpen ? this.destroyDropdown() : this.openDropdown();
1609
1638
  }
@@ -1620,14 +1649,27 @@ class PopupTriggerDirective {
1620
1649
  });
1621
1650
  const templatePortal = new TemplatePortal(this.popupPanel.templateRef, this.viewContainerRef);
1622
1651
  this._overlayRef.attach(templatePortal);
1623
- this._subscriber$ = this._overlayRef.detachments().subscribe(_ => {
1652
+ this.popupPanel.toggle.emit(true);
1653
+ this._subscriberDetach$ = this._overlayRef.detachments().subscribe(_ => {
1624
1654
  this._isDropdownOpen = false;
1625
- this.popupPanel.closed.emit();
1655
+ this.popupPanel.toggle.emit(false);
1626
1656
  });
1627
1657
  }
1628
- close() {
1658
+ closeDropdown() {
1629
1659
  this.destroyDropdown();
1630
1660
  }
1661
+ updatePosition() {
1662
+ if (this._overlayRef) {
1663
+ this._overlayRef.updatePosition();
1664
+ }
1665
+ }
1666
+ updateSize() {
1667
+ if (this._overlayRef) {
1668
+ this._overlayRef.updateSize({
1669
+ minWidth: this.elementRef.nativeElement.getBoundingClientRect().width
1670
+ });
1671
+ }
1672
+ }
1631
1673
  getPositionStrategy() {
1632
1674
  return this.overlay
1633
1675
  .position()
@@ -1651,7 +1693,8 @@ class PopupTriggerDirective {
1651
1693
  if (this._overlayRef) {
1652
1694
  this._overlayRef.dispose();
1653
1695
  }
1654
- this._subscriber$.unsubscribe();
1696
+ this._subscriberDetach$.unsubscribe();
1697
+ this._subscriberAttach$.unsubscribe();
1655
1698
  }
1656
1699
  handleClick(event) {
1657
1700
  if (this.elementRef.nativeElement.contains(event.target))
@@ -1665,8 +1708,11 @@ class PopupTriggerDirective {
1665
1708
  }
1666
1709
  }
1667
1710
  }
1711
+ handleResize() {
1712
+ this.updateSize();
1713
+ }
1668
1714
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopupTriggerDirective, deps: [{ token: i1$3.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1$3.OverlayOutsideClickDispatcher }], target: i0.ɵɵFactoryTarget.Directive });
1669
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: PopupTriggerDirective, selector: "[mrxPopupTrigger]", inputs: { popupPanel: ["mrxPopupTrigger", "popupPanel"], popupPosition: "popupPosition" }, host: { listeners: { "click": "togglePopup()", "document:click": "handleClick($event)" } }, ngImport: i0 });
1715
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: PopupTriggerDirective, selector: "[mrxPopupTrigger]", inputs: { popupPanel: ["mrxPopupTrigger", "popupPanel"], popupPosition: "popupPosition" }, host: { listeners: { "click": "togglePopup()", "document:click": "handleClick($event)", "window:resize": "handleResize($event)" } }, ngImport: i0 });
1670
1716
  }
1671
1717
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopupTriggerDirective, decorators: [{
1672
1718
  type: Directive,
@@ -1684,6 +1730,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1684
1730
  }], handleClick: [{
1685
1731
  type: HostListener,
1686
1732
  args: ['document:click', ['$event']]
1733
+ }], handleResize: [{
1734
+ type: HostListener,
1735
+ args: ['window:resize', ['$event']]
1687
1736
  }] } });
1688
1737
 
1689
1738
  class PopupModule {
@@ -3707,7 +3756,6 @@ class ModalRef {
3707
3756
  this.afterClosedSubject.complete();
3708
3757
  }
3709
3758
  send(result) {
3710
- console.log('send is ref');
3711
3759
  this.afterSendSubject.next(result);
3712
3760
  }
3713
3761
  afterClosed() {
@@ -4543,9 +4591,9 @@ class ModalService {
4543
4591
  .centerVertically();
4544
4592
  const overlayRef = this.overlay.create({
4545
4593
  positionStrategy,
4546
- hasBackdrop: true,
4547
- backdropClass: 'mrx-modal',
4548
- panelClass: 'mrx-modal'
4594
+ hasBackdrop: config.hasBackdrop !== undefined ? config.hasBackdrop : true,
4595
+ backdropClass: config.backdropClass || ModalBackdropTypeClasses[config.type || ModalType.Modal],
4596
+ panelClass: config.panelClass || ModalTypeClasses[config.type || ModalType.Modal]
4549
4597
  });
4550
4598
  const dialogRef = new ModalRef(overlayRef, config, this, 'default');
4551
4599
  const injector = Injector.create({
@@ -16880,19 +16928,20 @@ var SelectSizeEnum;
16880
16928
  SelectSizeEnum["large"] = "mrx-select-lg";
16881
16929
  })(SelectSizeEnum || (SelectSizeEnum = {}));
16882
16930
 
16883
- var SelectTypeEnum;
16884
- (function (SelectTypeEnum) {
16885
- SelectTypeEnum["single"] = "mrx-select-single";
16886
- SelectTypeEnum["multi"] = "mrx-select-multi";
16887
- })(SelectTypeEnum || (SelectTypeEnum = {}));
16888
-
16889
16931
  class SelectComponent {
16890
- value = null;
16932
+ isOpen = false;
16933
+ selected = null;
16891
16934
  items = [];
16892
- type = 'single';
16893
16935
  size = 'large';
16936
+ bindValue = null;
16937
+ bindLabel = 'label';
16938
+ bindIcon = 'icon';
16939
+ dropdown;
16894
16940
  get getClasses() {
16895
- return `${SelectTypeEnum[this.type]} ${SelectSizeEnum[this.size]}`;
16941
+ return `${SelectSizeEnum[this.size]}`;
16942
+ }
16943
+ get getSelectedSingleLabels() {
16944
+ return this.selected?.[this.bindLabel] || '';
16896
16945
  }
16897
16946
  onChange = (value) => { };
16898
16947
  onTouched = () => { };
@@ -16902,27 +16951,48 @@ class SelectComponent {
16902
16951
  registerOnTouched(fn) {
16903
16952
  this.onTouched = fn;
16904
16953
  }
16905
- writeValue(obj) {
16954
+ writeValue(selected) {
16955
+ if (selected) {
16956
+ this.selected = selected;
16957
+ }
16906
16958
  }
16907
- updateValue(insideValue) {
16959
+ updateValue(selected) {
16960
+ this.selected = selected;
16961
+ // this.changed.emit(this.formatValue(insideValue));
16962
+ // this.modelChange.emit({value: this.formatValue(insideValue), id: this.uuid})
16963
+ this.onChange(this.bindValue ? this.selected[this.bindValue] : this.selected);
16964
+ this.onTouched();
16908
16965
  }
16909
- logger(value) {
16910
- console.log(value);
16966
+ onSelect(item) {
16967
+ this.selected = item;
16968
+ this.updateValue(item);
16911
16969
  }
16912
16970
  onOpen(event) {
16913
16971
  event.stopPropagation();
16972
+ if (this.isOpen) {
16973
+ this.dropdown.togglePopup(false);
16974
+ }
16975
+ else {
16976
+ this.dropdown.togglePopup(true);
16977
+ }
16914
16978
  }
16915
16979
  onClear(event) {
16916
16980
  event.stopPropagation();
16981
+ this.selected = null;
16982
+ this.updateValue(this.selected);
16983
+ this.dropdown.togglePopup(false);
16984
+ }
16985
+ togglePopup(isOpen) {
16986
+ this.isOpen = isOpen;
16917
16987
  }
16918
16988
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16919
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SelectComponent, selector: "mrx-select", inputs: { items: "items", type: "type", size: "size" }, providers: [
16989
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SelectComponent, selector: "mrx-select", inputs: { items: "items", size: "size", bindValue: "bindValue", bindLabel: "bindLabel", bindIcon: "bindIcon" }, providers: [
16920
16990
  {
16921
16991
  provide: NG_VALUE_ACCESSOR,
16922
16992
  useExisting: forwardRef(() => SelectComponent),
16923
16993
  multi: true,
16924
16994
  },
16925
- ], ngImport: i0, template: "<div class=\"mrx-select\" [class]=\"getClasses\">\r\n <div class=\"mrx-select__wrapper\">\r\n @switch (type) {\r\n @case ('multi') {\r\n\r\n }\r\n @default {\r\n <div class=\"mrx-select__input\" [mrxPopupTrigger]=\"dropdown\">\r\n <div class=\"mrx-select__input__box\">\r\n @if (value) {\r\n <div class=\"mrx-select__input__value\"></div>\r\n }\r\n @else {\r\n <div class=\"mrx-select__input__placeholder\"></div>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span class=\"mrx-icon icon-close icon-font-24\"></span>\r\n </div>\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span class=\"mrx-icon icon-chevron-down icon-font-24\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #dropdown (closed)=\"logger('closed')\" [closeAfterClick]=\"true\">\r\n <mrx-popup-item (clicked)=\"logger('clicked')\">Cut</mrx-popup-item>\r\n <mrx-popup-item (clicked)=\"logger('clicked')\">Copy</mrx-popup-item>\r\n <mrx-popup-item (clicked)=\"logger('clicked')\">Paste</mrx-popup-item>\r\n </mrx-popup>\r\n }\r\n }\r\n </div>\r\n</div>\r\n", styles: [".mrx-select.mrx-select-single .mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select.mrx-select-single .mrx-select__input:focus,.mrx-select.mrx-select-single .mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select.mrx-select-single .mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select.mrx-select-single .mrx-select__input__box{flex-grow:1}.mrx-select.mrx-select-single .mrx-select__input__controls{display:flex;align-items:center;gap:8px}.mrx-select.mrx-select-single .mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select.mrx-select-single .mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-single.mrx-select-lg .mrx-select__input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding:calc(var(--spacing-3) - var(--border-width-default)) var(--spacing-4)}.mrx-select.mrx-select-single.mrx-select-lg .mrx-select__input__box{min-height:24px}\n"], dependencies: [{ kind: "component", type: PopupComponent, selector: "mrx-popup", inputs: ["closeAfterClick"], outputs: ["closed"] }, { kind: "component", type: PopupItemComponent, selector: "mrx-popup-item", outputs: ["clicked"] }, { kind: "directive", type: PopupTriggerDirective, selector: "[mrxPopupTrigger]", inputs: ["mrxPopupTrigger", "popupPosition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16995
+ ], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"mrx-select\" [class]=\"getClasses\">\r\n <div class=\"mrx-select__wrapper\">\r\n {{ selected | json }}\r\n <div class=\"mrx-select__input\" [mrxPopupTrigger]=\"dropdown\">\r\n <div class=\"mrx-select__input__box\">\r\n @if (getSelectedSingleLabels) {\r\n <div class=\"mrx-select__input__value\">{{ getSelectedSingleLabels }}</div>\r\n } @else {\r\n <div class=\"mrx-select__input__placeholder\"></div>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n @if (selected) {\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span class=\"mrx-icon icon-close icon-font-24\"></span>\r\n </div>\r\n }\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n @if (isOpen) {\r\n <span class=\"mrx-icon icon-chevron-up icon-font-24\"></span>\r\n } @else {\r\n <span class=\"mrx-icon icon-chevron-down icon-font-24\"></span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #dropdown [closeAfterClick]=\"true\" (toggle)=\"togglePopup($event)\">\r\n @for (item of items; track item.name) {\r\n <mrx-popup-item [custom]=\"true\" (clicked)=\"onSelect(item)\">\r\n {{ item.label }}\r\n </mrx-popup-item>\r\n }\r\n </mrx-popup>\r\n </div>\r\n</div>\r\n", styles: [".mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select__input:focus,.mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select__input__box{flex-grow:1}.mrx-select__input__controls{display:flex;align-items:center;gap:8px}.mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-lg .mrx-select__input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding:calc(var(--spacing-3) - var(--border-width-default)) var(--spacing-4)}.mrx-select.mrx-select-lg .mrx-select__input__box{min-height:24px}.mrx-select__dropdown__item{padding:8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer;font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select__dropdown__item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}\n"], dependencies: [{ kind: "component", type: PopupComponent, selector: "mrx-popup", inputs: ["closeAfterClick"], outputs: ["toggle", "_toggleInner", "_updateInner"] }, { kind: "component", type: PopupItemComponent, selector: "mrx-popup-item", inputs: ["custom"], outputs: ["clicked"] }, { kind: "directive", type: PopupTriggerDirective, selector: "[mrxPopupTrigger]", inputs: ["mrxPopupTrigger", "popupPosition"] }, { kind: "pipe", type: i1$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16926
16996
  }
16927
16997
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectComponent, decorators: [{
16928
16998
  type: Component,
@@ -16932,34 +17002,175 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
16932
17002
  useExisting: forwardRef(() => SelectComponent),
16933
17003
  multi: true,
16934
17004
  },
16935
- ], template: "<div class=\"mrx-select\" [class]=\"getClasses\">\r\n <div class=\"mrx-select__wrapper\">\r\n @switch (type) {\r\n @case ('multi') {\r\n\r\n }\r\n @default {\r\n <div class=\"mrx-select__input\" [mrxPopupTrigger]=\"dropdown\">\r\n <div class=\"mrx-select__input__box\">\r\n @if (value) {\r\n <div class=\"mrx-select__input__value\"></div>\r\n }\r\n @else {\r\n <div class=\"mrx-select__input__placeholder\"></div>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span class=\"mrx-icon icon-close icon-font-24\"></span>\r\n </div>\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span class=\"mrx-icon icon-chevron-down icon-font-24\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #dropdown (closed)=\"logger('closed')\" [closeAfterClick]=\"true\">\r\n <mrx-popup-item (clicked)=\"logger('clicked')\">Cut</mrx-popup-item>\r\n <mrx-popup-item (clicked)=\"logger('clicked')\">Copy</mrx-popup-item>\r\n <mrx-popup-item (clicked)=\"logger('clicked')\">Paste</mrx-popup-item>\r\n </mrx-popup>\r\n }\r\n }\r\n </div>\r\n</div>\r\n", styles: [".mrx-select.mrx-select-single .mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select.mrx-select-single .mrx-select__input:focus,.mrx-select.mrx-select-single .mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select.mrx-select-single .mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select.mrx-select-single .mrx-select__input__box{flex-grow:1}.mrx-select.mrx-select-single .mrx-select__input__controls{display:flex;align-items:center;gap:8px}.mrx-select.mrx-select-single .mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select.mrx-select-single .mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-single.mrx-select-lg .mrx-select__input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding:calc(var(--spacing-3) - var(--border-width-default)) var(--spacing-4)}.mrx-select.mrx-select-single.mrx-select-lg .mrx-select__input__box{min-height:24px}\n"] }]
17005
+ ], template: "<div class=\"mrx-select\" [class]=\"getClasses\">\r\n <div class=\"mrx-select__wrapper\">\r\n {{ selected | json }}\r\n <div class=\"mrx-select__input\" [mrxPopupTrigger]=\"dropdown\">\r\n <div class=\"mrx-select__input__box\">\r\n @if (getSelectedSingleLabels) {\r\n <div class=\"mrx-select__input__value\">{{ getSelectedSingleLabels }}</div>\r\n } @else {\r\n <div class=\"mrx-select__input__placeholder\"></div>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n @if (selected) {\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span class=\"mrx-icon icon-close icon-font-24\"></span>\r\n </div>\r\n }\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n @if (isOpen) {\r\n <span class=\"mrx-icon icon-chevron-up icon-font-24\"></span>\r\n } @else {\r\n <span class=\"mrx-icon icon-chevron-down icon-font-24\"></span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #dropdown [closeAfterClick]=\"true\" (toggle)=\"togglePopup($event)\">\r\n @for (item of items; track item.name) {\r\n <mrx-popup-item [custom]=\"true\" (clicked)=\"onSelect(item)\">\r\n {{ item.label }}\r\n </mrx-popup-item>\r\n }\r\n </mrx-popup>\r\n </div>\r\n</div>\r\n", styles: [".mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select__input:focus,.mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select__input__box{flex-grow:1}.mrx-select__input__controls{display:flex;align-items:center;gap:8px}.mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-lg .mrx-select__input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding:calc(var(--spacing-3) - var(--border-width-default)) var(--spacing-4)}.mrx-select.mrx-select-lg .mrx-select__input__box{min-height:24px}.mrx-select__dropdown__item{padding:8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer;font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select__dropdown__item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}\n"] }]
16936
17006
  }], propDecorators: { items: [{
16937
17007
  type: Input
16938
- }], type: [{
17008
+ }], size: [{
17009
+ type: Input
17010
+ }], bindValue: [{
17011
+ type: Input
17012
+ }], bindLabel: [{
17013
+ type: Input
17014
+ }], bindIcon: [{
17015
+ type: Input
17016
+ }], dropdown: [{
17017
+ type: ViewChild,
17018
+ args: ['dropdown']
17019
+ }] } });
17020
+
17021
+ const getSelectedItems = (selected, bindValue) => {
17022
+ if (bindValue) {
17023
+ const modifiedSelected = [];
17024
+ for (let item of selected) {
17025
+ for (let key in item) {
17026
+ if (item.hasOwnProperty(bindValue) && key === bindValue) {
17027
+ modifiedSelected.push(item[bindValue]);
17028
+ }
17029
+ if (!item.hasOwnProperty(bindValue)) {
17030
+ modifiedSelected.push(null);
17031
+ break;
17032
+ }
17033
+ }
17034
+ }
17035
+ return modifiedSelected;
17036
+ }
17037
+ else {
17038
+ return selected;
17039
+ }
17040
+ };
17041
+
17042
+ const cleanSelectedItems = (innerList) => {
17043
+ return innerList.map(({ __id, __selected, ...rest }) => rest);
17044
+ };
17045
+
17046
+ class SelectMultiComponent {
17047
+ isOpen = false;
17048
+ originItems = [];
17049
+ innerItems = [];
17050
+ set items(list) {
17051
+ this.originItems = list;
17052
+ this.innerItems = list.map((item, idx) => ({
17053
+ ...item, __id: item['id'] || idx, __selected: false
17054
+ }));
17055
+ }
17056
+ size = 'large';
17057
+ bindValue = null;
17058
+ bindLabel = 'label';
17059
+ bindIcon = 'icon';
17060
+ dropdown;
17061
+ get getClasses() {
17062
+ return `${SelectSizeEnum[this.size]}`;
17063
+ }
17064
+ get getSelectedMultiLabels() {
17065
+ return this.innerItems.filter(i => i.__selected);
17066
+ }
17067
+ onChange = (value) => {
17068
+ };
17069
+ onTouched = () => {
17070
+ };
17071
+ registerOnChange(fn) {
17072
+ this.onChange = fn;
17073
+ }
17074
+ registerOnTouched(fn) {
17075
+ this.onTouched = fn;
17076
+ }
17077
+ writeValue(selected = []) {
17078
+ if (selected) {
17079
+ this.innerItems = this.originItems.map((item, idx) => {
17080
+ const findItem = selected.find(i => isEqual(i, item));
17081
+ return { ...item, __id: item['id'] || idx, __selected: !!findItem };
17082
+ });
17083
+ }
17084
+ }
17085
+ updateValue(selected) {
17086
+ console.log(selected);
17087
+ // this.changed.emit(this.formatValue(insideValue));
17088
+ // this.modelChange.emit({value: this.formatValue(insideValue), id: this.uuid})
17089
+ // this.onChange(getSelectedItems(this.selected, this.bindValue));
17090
+ this.onTouched();
17091
+ }
17092
+ onSelectMulti(item) {
17093
+ item.__selected = !item.__selected;
17094
+ this.dropdown.updatePopup();
17095
+ this.updateValue(getSelectedItems(cleanSelectedItems(this.innerItems.filter(item => item.__selected)), this.bindValue));
17096
+ }
17097
+ onOpen(event) {
17098
+ event.stopPropagation();
17099
+ if (this.isOpen) {
17100
+ this.dropdown.togglePopup(false);
17101
+ }
17102
+ else {
17103
+ this.dropdown.togglePopup(true);
17104
+ }
17105
+ }
17106
+ onClear(event) {
17107
+ event.stopPropagation();
17108
+ this.innerItems = this.innerItems.map(item => ({ ...item, __selected: false }));
17109
+ this.dropdown.togglePopup(false);
17110
+ this.updateValue([]);
17111
+ }
17112
+ togglePopup(isOpen) {
17113
+ this.isOpen = isOpen;
17114
+ }
17115
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectMultiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17116
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SelectMultiComponent, selector: "mrx-select-multi", inputs: { items: "items", size: "size", bindValue: "bindValue", bindLabel: "bindLabel", bindIcon: "bindIcon" }, providers: [
17117
+ {
17118
+ provide: NG_VALUE_ACCESSOR,
17119
+ useExisting: forwardRef(() => SelectMultiComponent),
17120
+ multi: true,
17121
+ },
17122
+ ], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"mrx-select\" [class]=\"getClasses\">\r\n <div class=\"mrx-select__wrapper\">\r\n <div class=\"mrx-select__input\" [mrxPopupTrigger]=\"dropdown\">\r\n <div class=\"mrx-select__input__box\">\r\n @if (getSelectedMultiLabels.length) {\r\n <div class=\"mrx-select__input__value\">\r\n @for (item of getSelectedMultiLabels; track item) {\r\n {{ item[bindLabel] }}\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"mrx-select__input__placeholder\"></div>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n @if (getSelectedMultiLabels.length) {\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span class=\"mrx-icon icon-close icon-font-24\"></span>\r\n </div>\r\n }\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n @if (isOpen) {\r\n <span class=\"mrx-icon icon-chevron-up icon-font-24\"></span>\r\n } @else {\r\n <span class=\"mrx-icon icon-chevron-down icon-font-24\"></span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #dropdown [closeAfterClick]=\"false\" (toggle)=\"togglePopup($event)\">\r\n @for (item of innerItems; track item.__id) {\r\n <mrx-popup-item [custom]=\"true\" (clicked)=\"onSelectMulti(item)\">\r\n {{ item['label'] }}\r\n </mrx-popup-item>\r\n }\r\n </mrx-popup>\r\n </div>\r\n</div>\r\n", styles: [".mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select__input:focus,.mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select__input__box{flex-grow:1}.mrx-select__input__controls{display:flex;align-items:center;gap:8px}.mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-lg .mrx-select__input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding:calc(var(--spacing-3) - var(--border-width-default)) var(--spacing-4)}.mrx-select.mrx-select-lg .mrx-select__input__box{min-height:24px}.mrx-select__dropdown__item{padding:8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer;font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select__dropdown__item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}\n"], dependencies: [{ kind: "component", type: PopupComponent, selector: "mrx-popup", inputs: ["closeAfterClick"], outputs: ["toggle", "_toggleInner", "_updateInner"] }, { kind: "component", type: PopupItemComponent, selector: "mrx-popup-item", inputs: ["custom"], outputs: ["clicked"] }, { kind: "directive", type: PopupTriggerDirective, selector: "[mrxPopupTrigger]", inputs: ["mrxPopupTrigger", "popupPosition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17123
+ }
17124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectMultiComponent, decorators: [{
17125
+ type: Component,
17126
+ args: [{ selector: 'mrx-select-multi', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
17127
+ {
17128
+ provide: NG_VALUE_ACCESSOR,
17129
+ useExisting: forwardRef(() => SelectMultiComponent),
17130
+ multi: true,
17131
+ },
17132
+ ], template: "<div class=\"mrx-select\" [class]=\"getClasses\">\r\n <div class=\"mrx-select__wrapper\">\r\n <div class=\"mrx-select__input\" [mrxPopupTrigger]=\"dropdown\">\r\n <div class=\"mrx-select__input__box\">\r\n @if (getSelectedMultiLabels.length) {\r\n <div class=\"mrx-select__input__value\">\r\n @for (item of getSelectedMultiLabels; track item) {\r\n {{ item[bindLabel] }}\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"mrx-select__input__placeholder\"></div>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n @if (getSelectedMultiLabels.length) {\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span class=\"mrx-icon icon-close icon-font-24\"></span>\r\n </div>\r\n }\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n @if (isOpen) {\r\n <span class=\"mrx-icon icon-chevron-up icon-font-24\"></span>\r\n } @else {\r\n <span class=\"mrx-icon icon-chevron-down icon-font-24\"></span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #dropdown [closeAfterClick]=\"false\" (toggle)=\"togglePopup($event)\">\r\n @for (item of innerItems; track item.__id) {\r\n <mrx-popup-item [custom]=\"true\" (clicked)=\"onSelectMulti(item)\">\r\n {{ item['label'] }}\r\n </mrx-popup-item>\r\n }\r\n </mrx-popup>\r\n </div>\r\n</div>\r\n", styles: [".mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select__input:focus,.mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select__input__box{flex-grow:1}.mrx-select__input__controls{display:flex;align-items:center;gap:8px}.mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-lg .mrx-select__input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding:calc(var(--spacing-3) - var(--border-width-default)) var(--spacing-4)}.mrx-select.mrx-select-lg .mrx-select__input__box{min-height:24px}.mrx-select__dropdown__item{padding:8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer;font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select__dropdown__item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}\n"] }]
17133
+ }], propDecorators: { items: [{
16939
17134
  type: Input
16940
17135
  }], size: [{
16941
17136
  type: Input
17137
+ }], bindValue: [{
17138
+ type: Input
17139
+ }], bindLabel: [{
17140
+ type: Input
17141
+ }], bindIcon: [{
17142
+ type: Input
17143
+ }], dropdown: [{
17144
+ type: ViewChild,
17145
+ args: ['dropdown']
16942
17146
  }] } });
16943
17147
 
16944
17148
  class SelectModule {
16945
17149
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16946
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: SelectModule, declarations: [SelectComponent], imports: [CommonModule,
16947
- PopupModule], exports: [SelectComponent] });
17150
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: SelectModule, declarations: [SelectComponent,
17151
+ SelectMultiComponent], imports: [CommonModule,
17152
+ FormsModule,
17153
+ PopupModule], exports: [SelectComponent,
17154
+ SelectMultiComponent] });
16948
17155
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectModule, imports: [CommonModule,
17156
+ FormsModule,
16949
17157
  PopupModule] });
16950
17158
  }
16951
17159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectModule, decorators: [{
16952
17160
  type: NgModule,
16953
17161
  args: [{
16954
17162
  declarations: [
16955
- SelectComponent
17163
+ SelectComponent,
17164
+ SelectMultiComponent
16956
17165
  ],
16957
17166
  imports: [
16958
17167
  CommonModule,
17168
+ FormsModule,
16959
17169
  PopupModule
16960
17170
  ],
16961
17171
  exports: [
16962
- SelectComponent
17172
+ SelectComponent,
17173
+ SelectMultiComponent
16963
17174
  ]
16964
17175
  }]
16965
17176
  }] });
@@ -17273,5 +17484,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
17273
17484
  * Generated bundle index. Do not edit.
17274
17485
  */
17275
17486
 
17276
- export { AlertColorClasses, AlertComponent, AlertIconClasses, AlertModule, BadgeColorClassesEnum, BadgeComponent, BadgeGroupComponent, BadgeSizeEnum, BadgeTagTypeClassesEnum, BadgeTargetTypesEnum, BadgeTypeEnum, BadgesModule, BreadcrumbsComponent, BreadcrumbsModule, BreadcrumbsTypeEnum, ButtonColorsEnum, ButtonComponent, ButtonIconPositionEnum, ButtonModule, ButtonSizesEnum, ButtonTypesEnum, CdkTooltipDirective, CdkTooltipModule, CharsLeftComponent, CharsLeftModule, CheckboxComponent, CheckboxGroupComponent, CheckboxGroupModule, CheckboxModule, ColumnComponent, ContentWrapperComponent, ContentWrapperModule, ContentWrapperTypeEnum, ControlsItemComponent, ControlsVisibilityEnum, ControlsWrapperComponent, ControlsWrapperModule, CountryISO$1 as CountryISO, CurrencyModule, CurrencyPipe, DateFormatModule, DateFormatPipe, DateTimeFormatPipe, DefaultPagerSettings, DropdownComponent, DropdownModule, EditorComponent, EditorModule, ErrorMessageComponent, ErrorMessageModule, FileUploadService, GalleryComponent, GalleryModule, HideAfterClickDirective, HintErrorMessageComponent, HintErrorMessageModule, IconButtonComponent, IconButtonModule, IconButtonSizeEnum, IconButtonStateEnum, IconButtonTypeEnum, InputDateSizesEnum$2 as InputDateSizesEnum, InputDateTimeComponent, InputDateTimeModule, InputDatepickerComponent, InputDatepickerModule, InputFileComponent, InputFileImageComponent, InputFileImageModule, InputFileImageTypeEnum, InputFileModule, InputNumberComponent, InputNumberModule, InputNumberSizesEnum, InputOptComponent, InputOptModule, InputPasswordComponent, InputPasswordModule, InputPasswordSizesEnum, InputPhoneComponent, InputPhoneModule, InputSearchComponent, InputSearchModule, InputSearchSizesEnum, InputSelectComponent, InputSelectModule, InputSelectSizeEnum, InputTelComponent, InputTelModule, InputTextComponent, InputTextIconColorEnum, InputTextModule, InputTextSizesEnum, InputTextareaComponent, InputTextareaModule, InputTextareaSizesEnum, InputTimepickerComponent, InputTimepickerModule, JsonEditorComponent, JsonEditorModule, JsonEditorOptions, LabelComponent, LabelModule, LinkComponent, LinkModule, LinkSizesEnum, LinkTargetTypesEnum, LinkTypesEnum, LoaderColorEnum, LoaderComponent, LoaderModule, LoaderSizesEnum, MODAL_CONFIG, MODAL_DATA, ModalAlignButtonsEnum, ModalBackdropTypeClasses, ModalColorEnum, ModalComponent, ModalModule, ModalRef, ModalService, ModalServiceComponent, ModalServiceModule, ModalSizesEnum, ModalType, ModalTypeClasses, MrxAutoSaveActionsEnum, MrxAutosaveService, MrxFormValidator, NgxOtpBehavior, PagesNavComponent, PagesNavEnum, PagesNavModule, PaginatorComponent, PaginatorModule, PaginatorPositionCss, PdfViewerComponent, PdfViewerComponentModule, PhoneFormatModule, PhoneFormatPipe, PopupComponent, PopupItemComponent, PopupModule, PopupTriggerDirective, PreviewEnum, ProgressClasses, ProgressComponent, ProgressModule, RadioComponent, RadioGroupComponent, RadioGroupModule, RadioModule, RadioTypesEnum, RatingComponent, RatingModule, RatingSizesEnum, RatingValueSizesEnum, RatingWrapperSizesEnum, SafeModule, SafePipe, SaveStateComponent, SaveStateModule, SaveStoreModule, SelectComponent, SelectModule, SelectSizeEnum, SelectTypeEnum, SidePageComponent, SidePageHeaderSizesEnum, SidePageModule, SidePagePositionEnum, SidePageSizesEnum, StepperClasses, StepperComponent, StepperModule, SwitchComponent, SwitchModule, SwitchSizeEnum, SwitchTypeEnum, TabComponent, TableComponent, TableModule, TableTypeEnum, TabsClasses, TabsGroupComponent, TabsModule, TabsTypesClasses, Timezone, ToasterPosition, ToasterService, ToasterServiceModule, ToasterType, Tooltip, TooltipComponent, TooltipModule, TooltipService, TooltipTextPositionEnum, TooltipTriggerComponent, TooltipTriggerEnum, TruncateDirective, TruncateDirectiveModule, TruncateModule, TruncatePipe, TruncateTextComponent, TruncateTextModule, ValidationMethodsEnum, ValidationOptionsEnum, ValidationTypesEnum, WarningMessageComponent, WarningMessageModule, WidgetWrapperComponent, WidgetWrapperModule, autosaveAddId, autosaveError, autosaveErrorFor, autosaveStart, autosaveStartFor, autosaveStop, autosaveStopFor, autosaveSuccess, autosaveSuccessFor, convertBase64ToFile, dateTimeFormat, defaultConfig, defaultCustomConfig, formatBytes, formattingDateRange, formattingIsoToString, getBase64FromUrl, getHashCode, innerListToList, sHashCode, selectFields, selectMrxAutoSaveState, sliceDate, toBytes, toDate, toNumberFormat, toastrDefaultConfig, wordForm };
17487
+ export { AlertColorClasses, AlertComponent, AlertIconClasses, AlertModule, BadgeColorClassesEnum, BadgeComponent, BadgeGroupComponent, BadgeSizeEnum, BadgeTagTypeClassesEnum, BadgeTargetTypesEnum, BadgeTypeEnum, BadgesModule, BreadcrumbsComponent, BreadcrumbsModule, BreadcrumbsTypeEnum, ButtonColorsEnum, ButtonComponent, ButtonIconPositionEnum, ButtonModule, ButtonSizesEnum, ButtonTypesEnum, CdkTooltipDirective, CdkTooltipModule, CharsLeftComponent, CharsLeftModule, CheckboxComponent, CheckboxGroupComponent, CheckboxGroupModule, CheckboxModule, ColumnComponent, ContentWrapperComponent, ContentWrapperModule, ContentWrapperTypeEnum, ControlsItemComponent, ControlsVisibilityEnum, ControlsWrapperComponent, ControlsWrapperModule, CountryISO$1 as CountryISO, CurrencyModule, CurrencyPipe, DateFormatModule, DateFormatPipe, DateTimeFormatPipe, DefaultPagerSettings, DropdownComponent, DropdownModule, EditorComponent, EditorModule, ErrorMessageComponent, ErrorMessageModule, FileUploadService, GalleryComponent, GalleryModule, HideAfterClickDirective, HintErrorMessageComponent, HintErrorMessageModule, IconButtonComponent, IconButtonModule, IconButtonSizeEnum, IconButtonStateEnum, IconButtonTypeEnum, InputDateSizesEnum$2 as InputDateSizesEnum, InputDateTimeComponent, InputDateTimeModule, InputDatepickerComponent, InputDatepickerModule, InputFileComponent, InputFileImageComponent, InputFileImageModule, InputFileImageTypeEnum, InputFileModule, InputNumberComponent, InputNumberModule, InputNumberSizesEnum, InputOptComponent, InputOptModule, InputPasswordComponent, InputPasswordModule, InputPasswordSizesEnum, InputPhoneComponent, InputPhoneModule, InputSearchComponent, InputSearchModule, InputSearchSizesEnum, InputSelectComponent, InputSelectModule, InputSelectSizeEnum, InputTelComponent, InputTelModule, InputTextComponent, InputTextIconColorEnum, InputTextModule, InputTextSizesEnum, InputTextareaComponent, InputTextareaModule, InputTextareaSizesEnum, InputTimepickerComponent, InputTimepickerModule, JsonEditorComponent, JsonEditorModule, JsonEditorOptions, LabelComponent, LabelModule, LinkComponent, LinkModule, LinkSizesEnum, LinkTargetTypesEnum, LinkTypesEnum, LoaderColorEnum, LoaderComponent, LoaderModule, LoaderSizesEnum, MODAL_CONFIG, MODAL_DATA, ModalAlignButtonsEnum, ModalBackdropTypeClasses, ModalColorEnum, ModalComponent, ModalModule, ModalRef, ModalService, ModalServiceComponent, ModalServiceModule, ModalSizesEnum, ModalType, ModalTypeClasses, MrxAutoSaveActionsEnum, MrxAutosaveService, MrxFormValidator, NgxOtpBehavior, PagesNavComponent, PagesNavEnum, PagesNavModule, PaginatorComponent, PaginatorModule, PaginatorPositionCss, PdfViewerComponent, PdfViewerComponentModule, PhoneFormatModule, PhoneFormatPipe, PopupComponent, PopupItemComponent, PopupModule, PopupTriggerDirective, PreviewEnum, ProgressClasses, ProgressComponent, ProgressModule, RadioComponent, RadioGroupComponent, RadioGroupModule, RadioModule, RadioTypesEnum, RatingComponent, RatingModule, RatingSizesEnum, RatingValueSizesEnum, RatingWrapperSizesEnum, SafeModule, SafePipe, SaveStateComponent, SaveStateModule, SaveStoreModule, SelectComponent, SelectModule, SelectMultiComponent, SelectSizeEnum, SidePageComponent, SidePageHeaderSizesEnum, SidePageModule, SidePagePositionEnum, SidePageSizesEnum, StepperClasses, StepperComponent, StepperModule, SwitchComponent, SwitchModule, SwitchSizeEnum, SwitchTypeEnum, TabComponent, TableComponent, TableModule, TableTypeEnum, TabsClasses, TabsGroupComponent, TabsModule, TabsTypesClasses, Timezone, ToasterPosition, ToasterService, ToasterServiceModule, ToasterType, Tooltip, TooltipComponent, TooltipModule, TooltipService, TooltipTextPositionEnum, TooltipTriggerComponent, TooltipTriggerEnum, TruncateDirective, TruncateDirectiveModule, TruncateModule, TruncatePipe, TruncateTextComponent, TruncateTextModule, ValidationMethodsEnum, ValidationOptionsEnum, ValidationTypesEnum, WarningMessageComponent, WarningMessageModule, WidgetWrapperComponent, WidgetWrapperModule, autosaveAddId, autosaveError, autosaveErrorFor, autosaveStart, autosaveStartFor, autosaveStop, autosaveStopFor, autosaveSuccess, autosaveSuccessFor, convertBase64ToFile, dateTimeFormat, defaultConfig, defaultCustomConfig, formatBytes, formattingDateRange, formattingIsoToString, getBase64FromUrl, getHashCode, innerListToList, sHashCode, selectFields, selectMrxAutoSaveState, sliceDate, toBytes, toDate, toNumberFormat, toastrDefaultConfig, wordForm };
17277
17488
  //# sourceMappingURL=myrta-ui.mjs.map