@simpleangularcontrols/sac-common 10.0.0-rc.12 → 10.0.0-rc.13

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 (40) hide show
  1. package/bundles/simpleangularcontrols-sac-common.umd.js +356 -408
  2. package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -1
  3. package/bundles/simpleangularcontrols-sac-common.umd.min.js +1 -1
  4. package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -1
  5. package/common/basemodelcontrol.d.ts +4 -8
  6. package/controls/contextmenu/contextmenu.d.ts +26 -19
  7. package/controls/contextmenu/contextmenu.interface.d.ts +3 -0
  8. package/controls/contextmenu/contextmenuitem.d.ts +5 -0
  9. package/controls/contextmenu/contextmenuitembutton.d.ts +21 -20
  10. package/controls/treeview/treeview.d.ts +87 -121
  11. package/esm2015/common/basemodelcontrol.js +28 -24
  12. package/esm2015/controls/contextmenu/contextmenu.interface.js +1 -0
  13. package/esm2015/controls/contextmenu/contextmenu.interface.ngfactory.js +7 -0
  14. package/esm2015/controls/contextmenu/contextmenu.js +22 -23
  15. package/esm2015/controls/contextmenu/contextmenuitem.js +13 -2
  16. package/esm2015/controls/contextmenu/contextmenuitembutton.js +34 -25
  17. package/esm2015/controls/treeview/treeview.js +232 -247
  18. package/esm2015/interfaces/ISacIconService.js +1 -1
  19. package/esm2015/interfaces/treeviewaction.interface.js +1 -0
  20. package/esm2015/interfaces/treeviewaction.interface.ngfactory.js +7 -0
  21. package/esm2015/public_api.js +4 -5
  22. package/esm2015/services/sac-icon.service.js +25 -1
  23. package/fesm2015/simpleangularcontrols-sac-common.js +343 -389
  24. package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
  25. package/interfaces/ISacIconService.d.ts +16 -0
  26. package/interfaces/treeviewaction.interface.d.ts +4 -0
  27. package/package.json +1 -1
  28. package/public_api.d.ts +3 -4
  29. package/services/sac-icon.service.d.ts +33 -1
  30. package/simpleangularcontrols-sac-common-10.0.0-rc.13.tgz +0 -0
  31. package/simpleangularcontrols-sac-common.metadata.json +1 -1
  32. package/controls/treeview/ngtreeitemaction.d.ts +0 -40
  33. package/controls/treeview/treeviewchild.d.ts +0 -12
  34. package/esm2015/controls/treeview/ngtreeitemaction.js +0 -60
  35. package/esm2015/controls/treeview/ngtreeitemaction.ngfactory.js +0 -7
  36. package/esm2015/controls/treeview/treeviewchild.js +0 -18
  37. package/esm2015/controls/treeview/treeviewchild.ngfactory.js +0 -7
  38. package/simpleangularcontrols-sac-common-10.0.0-rc.12.tgz +0 -0
  39. /package/controls/{treeview/ngtreeitemaction.ngfactory.d.ts → contextmenu/contextmenu.interface.ngfactory.d.ts} +0 -0
  40. /package/{controls/treeview/treeviewchild.ngfactory.d.ts → interfaces/treeviewaction.interface.ngfactory.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
- import { EventEmitter, Directive, Input, Output, ɵɵdefineInjectable, Injectable, InjectionToken, ɵɵinject, Inject, Host, Injector, ChangeDetectorRef, ViewChild, HostListener, Renderer2, ElementRef, ViewChildren, ContentChild, TemplateRef, NgZone, NgModule } from '@angular/core';
1
+ import { EventEmitter, Directive, Input, Output, ɵɵdefineInjectable, Injectable, InjectionToken, ɵɵinject, Inject, Host, Injector, ChangeDetectorRef, ViewChild, HostListener, Renderer2, ElementRef, ViewChildren, ContentChild, TemplateRef, NgZone, ContentChildren, forwardRef, NgModule } from '@angular/core';
2
+ import { HttpClient } from '@angular/common/http';
2
3
  import { Observable, of } from 'rxjs';
3
4
  import { NgControl, FormControlName, FormGroupDirective, Validators, FormGroup, NgForm } from '@angular/forms';
4
- import { HttpClient } from '@angular/common/http';
5
5
  import moment_, { ISO_8601 } from 'moment';
6
6
  import { MaskedRange } from 'imask';
7
7
  import { UploadxService } from 'ngx-uploadx';
@@ -753,6 +753,30 @@ class SacDefaultIconService extends SacAbstractIconService {
753
753
  get TimeComponentSelectorIcon() {
754
754
  return 'fa fa-clock';
755
755
  }
756
+ /**
757
+ * @inheritdoc
758
+ */
759
+ get TreeviewNodeActionIcon() {
760
+ return 'fa fa-pen';
761
+ }
762
+ /**
763
+ * @inheritdoc
764
+ */
765
+ get TreeviewNodeClosedIcon() {
766
+ return 'fa fa-folder-plus';
767
+ }
768
+ /**
769
+ * @inheritdoc
770
+ */
771
+ get TreeviewNodeEmptyIcon() {
772
+ return 'fa fa-folder';
773
+ }
774
+ /**
775
+ * @inheritdoc
776
+ */
777
+ get TreeviewNodeOpenIcon() {
778
+ return 'fa fa-folder-open';
779
+ }
756
780
  /**
757
781
  * @inheritdoc
758
782
  */
@@ -1563,6 +1587,8 @@ function createGuid() {
1563
1587
  * Abstract Klasse für SacBaseModelControl. Implements ControlValueAccessor, Validator, OnInit
1564
1588
  */
1565
1589
  class SacBaseModelControl {
1590
+ // #endregion Properties
1591
+ // #region Constructors
1566
1592
  /**
1567
1593
  * Constructor
1568
1594
  * @param formlayout SacFormLayoutCommon to define scoped layout settings
@@ -1570,6 +1596,7 @@ class SacBaseModelControl {
1570
1596
  */
1571
1597
  constructor(formlayout, injector) {
1572
1598
  this.injector = injector;
1599
+ // #region Properties
1573
1600
  /**
1574
1601
  * Inline Errors für das Control
1575
1602
  */
@@ -1672,6 +1699,8 @@ class SacBaseModelControl {
1672
1699
  this.configurationService = injector.get(SACCONFIGURATION_SERVICE, new SacDefaultConfigurationService());
1673
1700
  this.iconService = injector.get(SACICON_SERVICE, new SacDefaultIconService());
1674
1701
  }
1702
+ // #endregion Constructors
1703
+ // #region Public Getters And Setters
1675
1704
  /**
1676
1705
  * Get Icon for Helptext Tooltip
1677
1706
  */
@@ -1682,7 +1711,7 @@ class SacBaseModelControl {
1682
1711
  * Methode ergibt Boolean Wert für dirty
1683
1712
  */
1684
1713
  get dirty() {
1685
- if (this.ngControl !== null) {
1714
+ if (this.ngControl !== null && this.ngControl !== undefined) {
1686
1715
  this._dirty = this.ngControl.dirty;
1687
1716
  }
1688
1717
  return this._dirty;
@@ -1708,9 +1737,7 @@ class SacBaseModelControl {
1708
1737
  * Methode ergibt boolean Wert wenn Form invalid oder nicht invalid ist
1709
1738
  */
1710
1739
  get invalid() {
1711
- return (this.ngControl !== undefined &&
1712
- this.ngControl !== null &&
1713
- this.ngControl.invalid);
1740
+ return this.ngControl !== undefined && this.ngControl !== null && this.ngControl.invalid;
1714
1741
  }
1715
1742
  /**
1716
1743
  * Definiert ob das Control disabled ist
@@ -1726,8 +1753,7 @@ class SacBaseModelControl {
1726
1753
  if (this._inlineerrorenabled !== null) {
1727
1754
  return this._inlineerrorenabled;
1728
1755
  }
1729
- if (this.formlayout !== null &&
1730
- this.formlayout.IsInlineErrorEnabled !== null) {
1756
+ if (this.formlayout !== null && this.formlayout.IsInlineErrorEnabled !== null) {
1731
1757
  return (_a = this.formlayout) === null || _a === void 0 ? void 0 : _a.IsInlineErrorEnabled;
1732
1758
  }
1733
1759
  if (this.configurationService.InlineErrorEnabled !== null) {
@@ -1765,7 +1791,7 @@ class SacBaseModelControl {
1765
1791
  * Methode ergibt Boolean Wert für touched
1766
1792
  */
1767
1793
  get touched() {
1768
- if (this.ngControl !== null) {
1794
+ if (this.ngControl !== null && this.ngControl !== undefined) {
1769
1795
  this._touched = this.ngControl.touched;
1770
1796
  }
1771
1797
  return this._touched;
@@ -1787,6 +1813,8 @@ class SacBaseModelControl {
1787
1813
  this._value = this.ConvertInputValue(v);
1788
1814
  this.propagateChange(this._value);
1789
1815
  }
1816
+ // #endregion Public Getters And Setters
1817
+ // #region Public Methods
1790
1818
  /**
1791
1819
  * Methode ergibt Error anhand von gegebenen Kriterien
1792
1820
  */
@@ -1823,24 +1851,21 @@ class SacBaseModelControl {
1823
1851
  return this.lngResourceService.GetString(errorItem.errorMessageKey, parameters);
1824
1852
  }
1825
1853
  /**
1826
- * In Angular 10 the Control Label for Reactive Forms can be set first time here. With Angular 13 is supported by init in OnInit
1854
+ * Init Event
1827
1855
  */
1828
- ngAfterViewInit() {
1856
+ ngOnInit() {
1829
1857
  // receive form via formcontrolname or formcontrol instance
1830
1858
  const formControl = this.injector.get(NgControl, null);
1831
1859
  if (formControl instanceof FormControlName) {
1832
1860
  const form = this.injector.get(FormGroupDirective, null);
1833
1861
  this.ngControl = form.getControl(formControl);
1834
1862
  }
1835
- else if (formControl) {
1836
- this.ngControl = formControl.control;
1863
+ else {
1864
+ if (formControl) {
1865
+ this.ngControl = formControl.control;
1866
+ }
1837
1867
  }
1838
1868
  this.UpdateLabelToControl();
1839
- }
1840
- /**
1841
- * Init Event
1842
- */
1843
- ngOnInit() {
1844
1869
  // set label sizes from formlayout directive
1845
1870
  this.setLabelSizes();
1846
1871
  // set component heigth from fromlayout directive
@@ -1904,6 +1929,8 @@ class SacBaseModelControl {
1904
1929
  writeValue(value) {
1905
1930
  this._value = value;
1906
1931
  }
1932
+ // #endregion Public Methods
1933
+ // #region Protected Methods
1907
1934
  /**
1908
1935
  * Method can Overwriten in Parent Classes
1909
1936
  * @param value Wert welcher in den korrekten Typ konvertiert werden soll
@@ -1930,6 +1957,8 @@ class SacBaseModelControl {
1930
1957
  this.ngControl.updateValueAndValidity({ onlySelf: true });
1931
1958
  }
1932
1959
  }
1960
+ // #endregion Protected Methods
1961
+ // #region Private Methods
1933
1962
  UpdateLabelToControl() {
1934
1963
  // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
1935
1964
  if (this.ngControl) {
@@ -2046,8 +2075,7 @@ class SacBaseModelControl {
2046
2075
  this.splitlabelandhelptext = this.formlayout.splitlabelandhelptext;
2047
2076
  }
2048
2077
  else {
2049
- this.splitlabelandhelptext =
2050
- this.configurationService.SplitLabelAndHelptext;
2078
+ this.splitlabelandhelptext = this.configurationService.SplitLabelAndHelptext;
2051
2079
  }
2052
2080
  }
2053
2081
  }
@@ -7579,401 +7607,308 @@ SacTinyMceCommon.propDecorators = {
7579
7607
  };
7580
7608
 
7581
7609
  /**
7582
- *Basis Komponente für SacTreeItemAction
7610
+ * Basis Komponente für SacTreeView
7583
7611
  */
7584
- class SacTreeItemActionCommon {
7612
+ class SacTreeviewCommon extends SacBaseModelControl {
7613
+ // #endregion Properties
7614
+ // #region Constructors
7585
7615
  /**
7586
- * Konstruktor
7587
- * @param el Element Referenz
7616
+ * Constructor
7617
+ * @param injector Service Injector
7588
7618
  */
7589
- constructor(el) {
7590
- this.el = el;
7619
+ constructor(formlayout, injector) {
7620
+ super(formlayout, injector);
7621
+ // #region Properties
7591
7622
  /**
7592
- * Event wenn auf das Icon geclickt wird
7623
+ * Event when Action is clicked on Node. An object of the type 'TreeviewAction' is returned. In the default case, 'action' in this object is always the value 'default'. The value can be changed via the 'templateaction'.
7593
7624
  */
7594
- this.clicked = new EventEmitter();
7595
- }
7596
- /**
7597
- * lifecycle OnInit hook. Wird aufgeruren sobald das Komponent initialisiert ist.
7598
- */
7599
- ngOnInit() {
7600
- let rootElement = this.el.nativeElement;
7601
- let parentElement = rootElement.parentElement;
7602
- while (rootElement.firstChild) {
7603
- parentElement.insertBefore(rootElement.firstChild, rootElement);
7604
- }
7605
- parentElement.removeChild(rootElement);
7606
- }
7607
- /**
7608
- * Die Methode erstellt die CSS Klasse des Icon. Akzeptiert ein Key-word und baut ein vollständige CSS Klasse.
7609
- */
7610
- transformClass(initialClass) {
7611
- switch (initialClass) {
7612
- case 'add':
7613
- return 'jstree-icon icon icon-base-add jstree-add';
7614
- case 'delete':
7615
- return 'jstree-icon icon icon-base-delete jstree-delete';
7616
- default:
7617
- return initialClass;
7618
- }
7619
- }
7620
- /**
7621
- * Die Methode wird das cklickaction Emitter aktivieren.
7622
- */
7623
- iconaction() {
7624
- this.clicked.emit();
7625
- }
7626
- }
7627
- SacTreeItemActionCommon.decorators = [
7628
- { type: Directive }
7629
- ];
7630
- SacTreeItemActionCommon.ctorParameters = () => [
7631
- { type: ElementRef }
7632
- ];
7633
- SacTreeItemActionCommon.propDecorators = {
7634
- item: [{ type: Input }],
7635
- title: [{ type: Input }],
7636
- iconstyle: [{ type: Input }],
7637
- clicked: [{ type: Output }]
7638
- };
7639
-
7640
- /**
7641
- * Basis Komponente für SacTreeView
7642
- */
7643
- class SacTreeViewCommon {
7644
- constructor() {
7625
+ this.actionclicked = new EventEmitter();
7645
7626
  /**
7646
- * Das Property enthielt array of nodes. Default value: empty array [].
7627
+ * Property on the data object that contains the children of the structure element. Must be an array of objects. The default value is 'children'
7647
7628
  */
7648
- this.nodes = [];
7629
+ this.attrchildren = 'children';
7649
7630
  /**
7650
- * Das Property enthielt node attribute: 'isCollapsed'. Es wird benutzt beim rendering. Für Expand/Collapsed Sicht des Node(Wert)
7631
+ * Defines the property on the 'data' object with which the actions for a node can be deactivated. A 'disabled' property is used by default.
7651
7632
  */
7652
- this.collapseAttr = 'isCollapsed';
7633
+ this.attrdisableaction = 'disabled';
7653
7634
  /**
7654
- * Das Property enthielt node attribute: 'isSelected'. Es wird benutzt beim Vorbereitung des Data des TreeView
7635
+ * Property on the 'data' object that stores the expanded state. Property must be of type boolean. Default is 'expanded'
7655
7636
  */
7656
- this.selectAttr = 'isSelected';
7637
+ this.attrexanded = 'expanded';
7657
7638
  /**
7658
- * Das Property enthielt node attribute: 'isIndeterminate'. Es wird benutzt beim Vorbereitung des Data des TreeView
7639
+ * Property for saving the HoverState on the field. If the property is not present on the node, it is automatically created and removed again. The value can usually be left at the default value unless there is a conflict with a property on the node that is required for other purposes.
7659
7640
  */
7660
- this.inDeterminateAttr = 'isIndeterminate';
7641
+ this.attrhoverstate = 'hoverstate';
7661
7642
  /**
7662
- * Providen data for tree.
7643
+ * Property on 'data' object, which contains the icon for the node. By default, the property is not set, which hides the icon in the node.
7663
7644
  */
7664
- this._data = [];
7645
+ this.attricon = null;
7665
7646
  /**
7666
- * Input property für den Namen des TreeView. Type string. Default value: ""
7647
+ * property on the 'data' object contains an ID of the node. The default is 'id'. If the property is set to NULL, the selectedId event is no longer triggered.
7667
7648
  */
7668
- this.name = '';
7649
+ this.attrid = 'id';
7669
7650
  /**
7670
- * A flag indicating data is flatten in array and prepare is required.(Default
7671
- * is false).
7651
+ * Property on 'data' object, which contains the label for the node. Default is 'label'
7672
7652
  */
7673
- this.prepareData = false;
7653
+ this.attrlabel = 'label';
7674
7654
  /**
7675
- * Attribute for Text in Tree
7655
+ * Property on 'data' object, which defines whether the node is selected or not. It should be ensured that only 1 node has the value for Selected set to true. Default is 'selected'.
7676
7656
  */
7677
- this.textAttr = 'data';
7657
+ this.attrselected = 'selected';
7678
7658
  /**
7679
- * Name of ID property in input data.
7659
+ * Event when a node is collapsed. Returns the node element as a parameter
7680
7660
  */
7681
- this.idAttr = 'id';
7661
+ this.collabsed = new EventEmitter();
7682
7662
  /**
7683
- * Name of parent property in input data.
7663
+ * The property contains an array of nodes. The data must already map the tree via child properties.
7684
7664
  */
7685
- this.parentAttr = 'PARENT_ID';
7665
+ this.data = [];
7686
7666
  /**
7687
- * Name of children list property in input data.
7667
+ * Activates the 'expand' and 'collabse' event even if a node has no children. This is helpful if node elements are to be reloaded at runtime.
7688
7668
  */
7689
- this.childrenAttr = 'children';
7669
+ this.enableasynchload = false;
7690
7670
  /**
7691
- * Output Emitter. Emit das ID des selected Node.
7671
+ * Activates Ellipsis on the node labels
7692
7672
  */
7693
- this.selectedidchange = new EventEmitter();
7673
+ this.enableellipsis = true;
7694
7674
  /**
7695
- * Output Emitter. Emit das TextAttr des selected Node.
7675
+ * Event when a node is expanded. Returns the node element as a parameter
7696
7676
  */
7697
- this.selectedtextchanged = new EventEmitter();
7677
+ this.expanded = new EventEmitter();
7698
7678
  /**
7699
- * Output Emitter. Emit wenn ein Node selektiert wird.
7679
+ * Defines whether an icon for the expanded/collapsed status should be displayed.
7700
7680
  */
7701
- this.selecteditem = new EventEmitter();
7702
- }
7703
- /**
7704
- * Getter für Data des TreeView
7705
- */
7706
- get data() {
7707
- return this._data;
7681
+ this.expandedstate = true;
7682
+ /**
7683
+ * A node must be selected
7684
+ */
7685
+ this.isrequired = false;
7686
+ /**
7687
+ * Name of the TreeView control
7688
+ */
7689
+ this.name = '';
7690
+ /**
7691
+ * Event when a node is selected. Returns the id attribute as a parameter. The event is not triggered if 'attrid' is not set.
7692
+ */
7693
+ this.selected = new EventEmitter();
7694
+ /**
7695
+ * Event when a node is selected. Returns the node element as a parameter.
7696
+ */
7697
+ this.selectednode = new EventEmitter();
7698
+ /**
7699
+ * Resource Key für Validation Message Required bei Control
7700
+ */
7701
+ this.validationmessagerequired = this.validationKeyService.ValidationErrorRequired;
7702
+ /**
7703
+ * Resource Key für Validation Message Required in Validation Summary
7704
+ */
7705
+ this.validationmessagesummaryrequired = this.validationKeyService.ValidationErrorSummaryRequired;
7708
7706
  }
7709
- /**
7710
- * Input Property für Data des TreeView
7711
- */
7712
- set data(value) {
7713
- this._data = value;
7714
- this.nodes = value;
7715
- // this.nodes.forEach(node => node["typeId"] = "13")
7716
- this.LoadTree();
7717
- if (this._collapseAll !== undefined) {
7718
- this.collapseAllNode(this._collapseAll);
7719
- }
7707
+ // #endregion Constructors
7708
+ // #region Public Getters And Setters
7709
+ get iconAction() {
7710
+ return this.iconService.TreeviewNodeActionIcon;
7720
7711
  }
7721
7712
  /**
7722
- * Die Directive erhält die actions für das TreeView
7713
+ * CSS icon for folders in tree there are collabsed
7714
+ * @returns css class with icon
7723
7715
  */
7724
- set treeviewTemplate(v) {
7725
- this.template = v;
7716
+ get iconFolderCollabsed() {
7717
+ return this.iconService.TreeviewNodeClosedIcon;
7726
7718
  }
7727
7719
  /**
7728
- * Getter für das TreeView Template
7720
+ * CSS icon class for folders without subfolders
7721
+ * @returns css class with icon
7729
7722
  */
7730
- get treeviewTemplate() {
7731
- return this.template;
7723
+ get iconFolderEmpty() {
7724
+ return this.iconService.TreeviewNodeEmptyIcon;
7732
7725
  }
7733
7726
  /**
7734
- * Setter property. Deffiniert das FileIcon für das TreeView
7727
+ * CSS icon for folders in tree there are expanded
7728
+ * @returns css class with icon
7735
7729
  */
7736
- set treefileicon(v) {
7737
- this.fileicontemplate = v;
7730
+ get iconFolderOpen() {
7731
+ return this.iconService.TreeviewNodeOpenIcon;
7738
7732
  }
7733
+ // #endregion Public Getters And Setters
7734
+ // #region Public Methods
7739
7735
  /**
7740
- * Getter property. Ergibt das FileIcon für das TreeView
7736
+ * Creates an array of a certain size. Is required for a For in the UI, as Angular does not support counting loops
7737
+ * @param size Size of the array
7738
+ * @returns Array
7741
7739
  */
7742
- get treefileicon() {
7743
- return this.fileicontemplate;
7740
+ count(size) {
7741
+ return new Array(size);
7744
7742
  }
7745
- // @Input("titleAction") _titleAction: string
7746
- /**
7747
- * Collapse or expand all parent nodes.
7748
- */
7749
- set collapseall(value) {
7750
- this._collapseAll = value;
7751
- if (this.nodes && this.nodes.length && this.nodes.length > 0) {
7752
- this.collapseAllNode(this._collapseAll);
7743
+ getChildren(node) {
7744
+ if (!node || !this.attrchildren) {
7745
+ return [];
7753
7746
  }
7754
- // this._recursiveEdit(
7755
- // this.nodes, this.childrenAttr, this.collapseAttr, this._collapseAll);
7756
- // this.cd.detectChanges();
7757
- }
7758
- /**
7759
- * Getter für das collapse property. Ergibt boolean Wert, ob die Items collapsed/expand sind.
7760
- */
7761
- get collapseall() {
7762
- return this._collapseAll;
7747
+ let children = node[this.attrchildren];
7748
+ if (!Array.isArray(children)) {
7749
+ return [];
7750
+ }
7751
+ return children;
7763
7752
  }
7764
- /**
7765
- * Select or deselect all nodes.
7766
- */
7767
- set selectall(value) {
7768
- this._selectAll = value;
7769
- this._recursiveEdit(this.nodes, this.childrenAttr, this.selectAttr, value);
7770
- this._recursiveEdit(this.nodes, this.childrenAttr, this.inDeterminateAttr, false);
7753
+ getStringField(node, fieldname) {
7754
+ if (!node) {
7755
+ return '';
7756
+ }
7757
+ if (!fieldname) {
7758
+ return node;
7759
+ }
7760
+ let value = node[fieldname];
7761
+ if (!value) {
7762
+ return '';
7763
+ }
7764
+ return value;
7771
7765
  }
7772
- /**
7773
- * Input property - setter. Deffiniert das ID des selektierten Item(node)
7774
- */
7775
- set selectedid(v) {
7776
- this.selectedNode = this.findNode(this.nodes, v, this.idAttr);
7777
- // if (this.selectedNode) {
7778
- // this.selectedIdEmitter.emit(this.selectedNode[this.idAttr]);
7779
- // this.selectedTextEmitter.emit(this.selectedNode[this.textAttr]);
7780
- // }
7766
+ hasChildren(node) {
7767
+ return this.getChildren(node).length > 0;
7781
7768
  }
7782
- /**
7783
- * Getter. Ergibt das ID des selektierten Item(node)
7784
- */
7785
- get selectedId() {
7786
- return this.selectedNode ? this.selectedNode[this.idAttr] : null;
7787
- }
7788
- /**
7789
- * Setter für das selektierte Wert(node). Wenn aufgerufen das ID und TextAttr des selected Node wird emitted
7790
- */
7791
- set selectedNode(v) {
7792
- this._selectedNode = v;
7793
- if (this._selectedNode) {
7794
- this.selectedidchange.emit(this.selectedId);
7795
- this.selectedtextchanged.emit(v[this.textAttr]);
7769
+ isDisabledState(node) {
7770
+ if (!node || !this.attrdisableaction) {
7771
+ return false;
7796
7772
  }
7773
+ let value = node[this.attrdisableaction];
7774
+ return value === true || value === 'true';
7797
7775
  }
7798
- /**
7799
- * Getter für das selektierte Wert(node). Ergibt das selektierte Wert(node).
7800
- */
7801
- get selectedNode() {
7802
- return this._selectedNode;
7803
- }
7804
- /**
7805
- * A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive.
7806
- * Define an ngOnInit() method to handle any additional initialization tasks.
7807
- */
7808
- ngOnInit() {
7809
- this.collapseAllNode(this._collapseAll);
7810
- if (this.selectedId)
7811
- this.openSelectedNode(this.nodes);
7812
- }
7813
- /**
7814
- * Funktion setzt alle parent items recusiv zum selected node
7815
- * auf collapsed = false
7816
- */
7817
- openSelectedNode(data) {
7818
- let result = false;
7819
- for (let i = 0; i < data.length; i++) {
7820
- if (data[i][this.childrenAttr].length &&
7821
- data[i][this.idAttr] != this.selectedId)
7822
- result = this.openSelectedNode(data[i][this.childrenAttr]);
7823
- if (result || data[i][this.idAttr] == this.selectedId) {
7824
- data[i][this.collapseAttr] = false;
7825
- return true;
7826
- }
7776
+ isExpandedState(node) {
7777
+ if (!node || !this.attrexanded) {
7778
+ return false;
7827
7779
  }
7828
- return false;
7780
+ let value = node[this.attrexanded];
7781
+ return value === true || value === 'true';
7829
7782
  }
7830
- /**
7831
- * Die Methode vorbereitet die Daten für das TreeView. Die Funktion sollte geändert werden abhängig von dem kommenden Daten (wenn array)
7832
- */
7833
- LoadTree() {
7834
- //if the tree structure require array the function below should be changed
7835
- const cloned = this._data.map((x) => Object.assign({}, x));
7836
- // If data is flat, prepare data with recursive function.
7837
- this.nodes = this.prepareData ? this._getPreparedData(cloned) : this._data;
7783
+ isHoverState(node) {
7784
+ if (!node || !this.attrhoverstate) {
7785
+ return false;
7786
+ }
7787
+ let value = node[this.attrhoverstate];
7788
+ return value === true || value === 'true';
7838
7789
  }
7839
- /**
7840
- * Die Methode collapse/expand den selectierten Node
7841
- */
7842
- onCollapseClick(node) {
7843
- if (node[this.childrenAttr].length) {
7844
- node[this.collapseAttr] = !node[this.collapseAttr];
7790
+ isSelectedState(node) {
7791
+ if (!node || !this.attrselected) {
7792
+ return false;
7845
7793
  }
7794
+ let value = node[this.attrselected];
7795
+ return value === true || value === 'true';
7846
7796
  }
7847
7797
  /**
7848
- * Die Methode set den selektierten Node und emit es.
7798
+ * Method is called by clicking an action
7799
+ * @param action action and node
7849
7800
  */
7850
- onClick(node) {
7851
- this.selectedNode = node;
7852
- this.selecteditem.emit(this.selectedNode);
7853
- // this.cd.detectChanges();
7801
+ onActionClicked(action) {
7802
+ this.actionclicked.emit(action);
7854
7803
  }
7855
- /**
7856
- * Die Methode wird ein event mit Meldung zu Parent emit-en.
7857
- */
7858
- sendMsgToParent(msg) {
7859
- this.selecteditem.emit(msg);
7804
+ onNodeClicked(node) {
7805
+ if (this.isDisabledState(node) || this.isSelectedState(node)) {
7806
+ this.invertExpandedState(node);
7807
+ }
7808
+ this.setSelectedState(node);
7860
7809
  }
7861
- /**
7862
- * Die Methode wird alle Nodes collapse
7863
- */
7864
- collapseAllNode(command) {
7865
- this.nodes.forEach((node) => {
7866
- if (node[this.childrenAttr].length) {
7867
- collapseAllHIdden(node, this.collapseAttr, command, this.childrenAttr);
7868
- }
7869
- });
7870
- function collapseAllHIdden(node, collapseAttr, command, childrenAttr) {
7871
- node[collapseAttr] = command;
7872
- node.children.forEach((child) => {
7873
- if (child[childrenAttr].length) {
7874
- collapseAllHIdden(child, collapseAttr, command, childrenAttr);
7875
- }
7876
- });
7810
+ setHoverState(node, state) {
7811
+ if (!node || !this.attrhoverstate) {
7812
+ return;
7813
+ }
7814
+ if (state) {
7815
+ node[this.attrhoverstate] = true;
7816
+ return;
7817
+ }
7818
+ if (!node.hasOwnProperty(this.attrhoverstate)) {
7819
+ return;
7877
7820
  }
7821
+ delete node[this.attrhoverstate];
7878
7822
  }
7879
- /**
7880
- * Funktion gibt node aus der liste zurück, welches das Value auf dem gewünschten Attribut hat
7881
- * Wenn node nicht gefunden wird, wird null zurück gegeben
7882
- * @param data Liste der nodes
7883
- * @param searchValue Das gesuchte value
7884
- * @param attr Der namen des Attributs auf dem das value gesucht wird
7885
- */
7886
- findNode(data, searchValue, attr) {
7887
- let result = null;
7888
- for (let i = 0; i < data.length; i++) {
7889
- if (data[i][attr] == searchValue)
7890
- result = data[i];
7891
- else {
7892
- if (data[i][this.childrenAttr].length) {
7893
- let recursiveResult = this.findNode(data[i][this.childrenAttr], searchValue, attr);
7894
- if (recursiveResult)
7895
- result = recursiveResult;
7896
- }
7897
- }
7823
+ setSelectedState(node) {
7824
+ if (!node || !this.attrselected) {
7825
+ return;
7898
7826
  }
7899
- return result;
7827
+ // reset selected state of any node
7828
+ this.data.forEach((rootNode) => this.resetSelectedState(rootNode));
7829
+ // set selected node as selected
7830
+ node[this.attrselected] = true;
7831
+ // Update ngModel
7832
+ this.setValue(node);
7833
+ // Raise Selected Events
7834
+ this.selectednode.emit(node);
7835
+ if (!this.attrid) {
7836
+ return;
7837
+ }
7838
+ let id = this.getStringField(node, this.attrid);
7839
+ this.selected.emit(id);
7900
7840
  }
7901
- /**
7902
- * Die Methode editiert (recursive) alle eingegebene Nodes abhängig von gegebenen Attibute und Value Kriterien.
7903
- */
7904
- _recursiveEdit(list, childrenAttr, attr, value) {
7905
- if (Array.isArray(list)) {
7906
- for (let i = 0, len = list.length; i < len; i++) {
7907
- list[i][attr] = value;
7908
- if (list[i][childrenAttr].length) {
7909
- this._recursiveEdit(list[i][childrenAttr], childrenAttr, attr, value);
7910
- }
7911
- }
7841
+ validateData(c) {
7842
+ let error = null;
7843
+ if (this.isrequired) {
7844
+ error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
7912
7845
  }
7846
+ return error;
7913
7847
  }
7914
- /**
7915
- * Die Methode erstellt eine standarte Sicht-Liste von Nodes
7916
- */
7917
- _getPreparedData(list) {
7918
- const tree = [], lookup = {};
7919
- for (let i = 0, len = list.length; i < len; i++) {
7920
- lookup[list[i][this.idAttr]] = list[i];
7921
- list[i][this.childrenAttr] = [];
7922
- list[i][this.collapseAttr] = true;
7923
- list[i][this.selectAttr] = false;
7924
- list[i][this.inDeterminateAttr] = false;
7848
+ // #endregion Public Methods
7849
+ // #region Private Methods
7850
+ invertExpandedState(node) {
7851
+ if (!node || !this.attrexanded) {
7852
+ return;
7925
7853
  }
7926
- for (let i = 0, len = list.length; i < len; i++) {
7927
- if (list[i][this.parentAttr]) {
7928
- lookup[list[i][this.parentAttr]][this.childrenAttr].push(list[i]);
7929
- }
7930
- else {
7931
- tree.push(list[i]);
7932
- }
7854
+ // Items with no children cannot be collabsed
7855
+ if (!this.hasChildren(node) && !(this.enableasynchload === true || this.enableasynchload === 'true')) {
7856
+ return;
7857
+ }
7858
+ let value = node[this.attrexanded];
7859
+ if (value === true || value === 'true') {
7860
+ this.collabsed.emit(node);
7861
+ node[this.attrexanded] = false;
7862
+ }
7863
+ else {
7864
+ this.expanded.emit(node);
7865
+ node[this.attrexanded] = true;
7933
7866
  }
7934
- return tree;
7867
+ }
7868
+ resetSelectedState(node) {
7869
+ if (!node || !this.attrselected) {
7870
+ return;
7871
+ }
7872
+ node[this.attrselected] = false;
7873
+ this.getChildren(node).forEach((child) => {
7874
+ this.resetSelectedState(child);
7875
+ });
7935
7876
  }
7936
7877
  }
7937
- SacTreeViewCommon.decorators = [
7878
+ SacTreeviewCommon.decorators = [
7938
7879
  { type: Directive }
7939
7880
  ];
7940
- SacTreeViewCommon.propDecorators = {
7881
+ SacTreeviewCommon.ctorParameters = () => [
7882
+ { type: SacFormLayoutCommon, decorators: [{ type: Host }] },
7883
+ { type: Injector }
7884
+ ];
7885
+ SacTreeviewCommon.propDecorators = {
7886
+ actionclicked: [{ type: Output }],
7887
+ attrchildren: [{ type: Input }],
7888
+ attrdisableaction: [{ type: Input }],
7889
+ attrexanded: [{ type: Input }],
7890
+ attrhoverstate: [{ type: Input }],
7891
+ attricon: [{ type: Input }],
7892
+ attrid: [{ type: Input }],
7893
+ attrlabel: [{ type: Input }],
7894
+ attrselected: [{ type: Input }],
7895
+ collabsed: [{ type: Output }],
7941
7896
  data: [{ type: Input }],
7942
- template: [{ type: Input }],
7943
- treeviewTemplate: [{ type: ContentChild, args: ['actions', { static: true },] }],
7944
- fileicontemplate: [{ type: Input }],
7945
- treefileicon: [{ type: ContentChild, args: ['treefileicon', { static: true },] }],
7897
+ enableasynchload: [{ type: Input }],
7898
+ enableellipsis: [{ type: Input }],
7899
+ expanded: [{ type: Output }],
7900
+ expandedstate: [{ type: Input }],
7901
+ isrequired: [{ type: Input }],
7946
7902
  name: [{ type: Input }],
7947
- prepareData: [{ type: Input }],
7948
- textAttr: [{ type: Input }],
7949
- idAttr: [{ type: Input }],
7950
- parentAttr: [{ type: Input }],
7951
- childrenAttr: [{ type: Input }],
7952
- title: [{ type: Input }],
7953
- collapseall: [{ type: Input }],
7954
- selectall: [{ type: Input }],
7955
- selectedid: [{ type: Input }],
7956
- selectedidchange: [{ type: Output }],
7957
- selectedtextchanged: [{ type: Output }],
7958
- selecteditem: [{ type: Output }]
7903
+ selected: [{ type: Output }],
7904
+ selectednode: [{ type: Output }],
7905
+ showactionalways: [{ type: Input }],
7906
+ templateaction: [{ type: Input }],
7907
+ templatelabel: [{ type: Input }],
7908
+ validationmessagerequired: [{ type: Input }],
7909
+ validationmessagesummaryrequired: [{ type: Input }]
7959
7910
  };
7960
7911
 
7961
- /**
7962
- * Komponente für SacTreeViewChildCommon. Extends SacTreeViewCommon
7963
- */
7964
- class SacTreeViewChildCommon extends SacTreeViewCommon {
7965
- /**
7966
- * A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive.
7967
- * Define an ngOnInit() method to handle any additional initialization tasks.
7968
- */
7969
- ngOnInit() {
7970
- this.collapseAllNode(this.collapseall);
7971
- }
7972
- }
7973
- SacTreeViewChildCommon.decorators = [
7974
- { type: Directive }
7975
- ];
7976
-
7977
7912
  /**
7978
7913
  * Tooltip Component
7979
7914
  *
@@ -10080,6 +10015,26 @@ SacContextMenuContrainerCommon.ctorParameters = () => [
10080
10015
  { type: ElementRef }
10081
10016
  ];
10082
10017
 
10018
+ /**
10019
+ * Base Context Menu Item
10020
+ */
10021
+ class SacContextmenuItemCommon {
10022
+ constructor() {
10023
+ // #region Properties
10024
+ /**
10025
+ * Reference to the higher-level context menu. This property is always set automatically by the context menu. However, it may be necessary to set the reference manually.
10026
+ */
10027
+ this.contextmenu = null;
10028
+ // #endregion Properties
10029
+ }
10030
+ }
10031
+ SacContextmenuItemCommon.decorators = [
10032
+ { type: Directive }
10033
+ ];
10034
+ SacContextmenuItemCommon.propDecorators = {
10035
+ contextmenu: [{ type: Input }]
10036
+ };
10037
+
10083
10038
  /**
10084
10039
  * Base Context Menü Element. Die Logik wurde aus NG-BOOTSTRAP übernommen.
10085
10040
  */
@@ -10128,12 +10083,7 @@ class SacContextmenuCommon {
10128
10083
  *
10129
10084
  * Please see the [positioning overview](#/positioning) for more details.
10130
10085
  */
10131
- this.placement = [
10132
- 'bottom-left',
10133
- 'bottom-right',
10134
- 'top-left',
10135
- 'top-right',
10136
- ];
10086
+ this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];
10137
10087
  this.zoneSubscription = this.ngZone.onStable.subscribe(() => {
10138
10088
  this._positionMenu();
10139
10089
  });
@@ -10149,17 +10099,6 @@ class SacContextmenuCommon {
10149
10099
  }
10150
10100
  // #endregion Public Getters And Setters
10151
10101
  // #region Public Methods
10152
- /**
10153
- * HostListener um das Dropdown zu schliessen wenn nicht auf das Element geklickt wird.
10154
- */
10155
- onClick(targetElement) {
10156
- const anchor = this._anchor || this._anchorTemplate;
10157
- if (this._menu &&
10158
- !this._menu.nativeElement.contains(targetElement) &&
10159
- !anchor.nativeElement.contains(targetElement)) {
10160
- this.close();
10161
- }
10162
- }
10163
10102
  /**
10164
10103
  * Schliesst das Dropdown
10165
10104
  */
@@ -10167,6 +10106,9 @@ class SacContextmenuCommon {
10167
10106
  this._resetContainer();
10168
10107
  this.isopen = false;
10169
10108
  }
10109
+ ngAfterContentInit() {
10110
+ this.menuitems.forEach((button) => (button.contextmenu = this));
10111
+ }
10170
10112
  /**
10171
10113
  * Event wenn Component entfernt wird.
10172
10114
  */
@@ -10176,6 +10118,17 @@ class SacContextmenuCommon {
10176
10118
  }
10177
10119
  this.zoneSubscription.unsubscribe();
10178
10120
  }
10121
+ /**
10122
+ * HostListener um das Dropdown zu schliessen wenn nicht auf das Element geklickt wird.
10123
+ */
10124
+ onClick(targetElement) {
10125
+ const anchor = this._anchor || this._anchorTemplate;
10126
+ if (this._menu &&
10127
+ !this._menu.nativeElement.contains(targetElement) &&
10128
+ !anchor.nativeElement.contains(targetElement)) {
10129
+ this.close();
10130
+ }
10131
+ }
10179
10132
  /**
10180
10133
  * Öffnet das Dropdown / Zeigt das Menü an.
10181
10134
  */
@@ -10218,8 +10171,7 @@ class SacContextmenuCommon {
10218
10171
  if (container === 'body') {
10219
10172
  const renderer = this.renderer;
10220
10173
  const dropdownMenuElement = this._menu.nativeElement;
10221
- const bodyContainer = (this.bodyContainer =
10222
- this.bodyContainer || renderer.createElement('div'));
10174
+ const bodyContainer = (this.bodyContainer = this.bodyContainer || renderer.createElement('div'));
10223
10175
  // Override some styles to have the positioning working
10224
10176
  renderer.setStyle(bodyContainer, 'position', 'absolute');
10225
10177
  renderer.setStyle(dropdownMenuElement, 'position', 'static');
@@ -10257,37 +10209,30 @@ SacContextmenuCommon.ctorParameters = () => [
10257
10209
  { type: Injector }
10258
10210
  ];
10259
10211
  SacContextmenuCommon.propDecorators = {
10260
- _anchorTemplate: [{ type: ContentChild, args: [SacContextmenuAnchorCommon, { static: false },] }],
10261
10212
  _anchor: [{ type: ViewChild, args: [SacContextmenuAnchorCommon, { static: false },] }],
10213
+ _anchorTemplate: [{ type: ContentChild, args: [SacContextmenuAnchorCommon, { static: false },] }],
10262
10214
  _menu: [{ type: ViewChild, args: [SacContextMenuContrainerCommon, { static: false },] }],
10263
10215
  buttontemplate: [{ type: Input }],
10264
10216
  container: [{ type: Input }],
10265
10217
  cssclass: [{ type: Input }],
10266
10218
  isopen: [{ type: Input }],
10219
+ menuitems: [{ type: ContentChildren, args: [forwardRef(() => SacContextmenuItemCommon),] }],
10267
10220
  placement: [{ type: Input }],
10268
10221
  onClick: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
10269
10222
  };
10270
10223
 
10271
- /**
10272
- * Base Context Menu Item
10273
- */
10274
- class SacContextmenuItemCommon {
10275
- }
10276
- SacContextmenuItemCommon.decorators = [
10277
- { type: Directive }
10278
- ];
10279
-
10280
10224
  /**
10281
10225
  * Base Context Menu Button Item
10282
10226
  */
10283
10227
  class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
10228
+ // #endregion Properties
10229
+ // #region Constructors
10284
10230
  /**
10285
10231
  * Constructor
10286
- * @param contextmenu Instance of Context Menü.
10287
10232
  */
10288
- constructor(contextmenu) {
10233
+ constructor() {
10289
10234
  super();
10290
- this.contextmenu = contextmenu;
10235
+ // #region Properties
10291
10236
  /**
10292
10237
  * Menu Item ist deaktiviert
10293
10238
  */
@@ -10296,6 +10241,10 @@ class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
10296
10241
  * Icon Column in Menü ist deaktiviert
10297
10242
  */
10298
10243
  this._isicondisabled = false;
10244
+ /**
10245
+ * Event wenn auf den Button geklickt wird
10246
+ */
10247
+ this.clicked = new EventEmitter();
10299
10248
  /**
10300
10249
  * css class for button styling
10301
10250
  */
@@ -10305,9 +10254,17 @@ class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
10305
10254
  */
10306
10255
  this.iconstyle = '';
10307
10256
  /**
10308
- * Event wenn auf den Button geklickt wird
10257
+ * name of button. used for generate id and name
10309
10258
  */
10310
- this.clicked = new EventEmitter();
10259
+ this.name = '';
10260
+ }
10261
+ // #endregion Constructors
10262
+ // #region Public Getters And Setters
10263
+ /**
10264
+ * Menu Item ist deaktiviert
10265
+ */
10266
+ get isdisabled() {
10267
+ return this._isdisabled;
10311
10268
  }
10312
10269
  /**
10313
10270
  * Menu Item ist deaktiviert
@@ -10321,10 +10278,10 @@ class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
10321
10278
  }
10322
10279
  }
10323
10280
  /**
10324
- * Menu Item ist deaktiviert
10281
+ * Icon Column in Menü ist deaktiviert
10325
10282
  */
10326
- get isdisabled() {
10327
- return this._isdisabled;
10283
+ get isicondisabled() {
10284
+ return this._isicondisabled;
10328
10285
  }
10329
10286
  /**
10330
10287
  * Icon Column in Menü ist deaktiviert
@@ -10337,19 +10294,17 @@ class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
10337
10294
  this._isicondisabled = v === 'true';
10338
10295
  }
10339
10296
  }
10340
- /**
10341
- * Icon Column in Menü ist deaktiviert
10342
- */
10343
- get isicondisabled() {
10344
- return this._isicondisabled;
10345
- }
10297
+ // #endregion Public Getters And Setters
10298
+ // #region Public Methods
10346
10299
  /**
10347
10300
  * Die Methode wird das cklickaction Emitter aktivieren
10348
10301
  */
10349
10302
  callaction(event) {
10350
10303
  if (!this._isdisabled) {
10351
10304
  this.clicked.emit();
10352
- this.contextmenu.close();
10305
+ if (this.contextmenu !== null) {
10306
+ this.contextmenu.close();
10307
+ }
10353
10308
  }
10354
10309
  event.stopPropagation();
10355
10310
  }
@@ -10357,18 +10312,17 @@ class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
10357
10312
  SacContextmenuItemButtonCommon.decorators = [
10358
10313
  { type: Directive }
10359
10314
  ];
10360
- SacContextmenuItemButtonCommon.ctorParameters = () => [
10361
- { type: SacContextmenuCommon }
10362
- ];
10315
+ SacContextmenuItemButtonCommon.ctorParameters = () => [];
10363
10316
  SacContextmenuItemButtonCommon.propDecorators = {
10364
- icon: [{ type: Input }],
10317
+ clicked: [{ type: Output }],
10365
10318
  cssclass: [{ type: Input }],
10319
+ icon: [{ type: Input }],
10366
10320
  iconstyle: [{ type: Input }],
10367
10321
  image: [{ type: Input }],
10368
- isdisabled: [{ type: Input }],
10369
- isicondisabled: [{ type: Input }],
10322
+ name: [{ type: Input }],
10370
10323
  text: [{ type: Input }],
10371
- clicked: [{ type: Output }]
10324
+ isdisabled: [{ type: Input }],
10325
+ isicondisabled: [{ type: Input }]
10372
10326
  };
10373
10327
 
10374
10328
  /**
@@ -10941,5 +10895,5 @@ SACCommonListboxOptionModule.decorators = [
10941
10895
  * Generated bundle index. Do not edit.
10942
10896
  */
10943
10897
 
10944
- export { ControlHeight, GridResponse, IconType, Interpolation, LanguageModel, PagerData, PagerRequest, Positioning, SACCONFIGURATION_SERVICE, SACCommonListboxOptionModule, SACFILEBROWSER_SERVICE, SACICON_SERVICE, SACLANGUAGE_SERVICE, SACLOCALISATION_SERVICE, SACVALIDATIONKEY_SERVICE, SacAbstractConfigurationService, SacAbstractFileBrowserService, SacAbstractIconService, SacAbstractLanguageService, SacAbstractLocalisationService, SacBaseDateTimeControl, SacBaseListControl, SacBaseModelControl, SacBaseSelectControl, SacButtonCommon, SacCheckboxCommon, SacConfirmButton, SacConfirmCommon, SacContextMenuContrainerCommon, SacContextmenuAnchorCommon, SacContextmenuCommon, SacContextmenuItemButtonCommon, SacContextmenuItemCommon, SacDateCommon, SacDateSelectorCommon, SacDateTimeCommon, SacDialogCommon, SacDropdownCommon, SacDropdownOptionCommon, SacDropzoneMultipleCommon, SacDropzoneSingleCommon, SacFileBrowserCommon, SacFormCommon, SacFormLayoutCommon, SacGridButtonCommon, SacGridColumnActionCommon, SacGridColumnBaseCommon, SacGridColumnCommon, SacGridCommon, SacGridImageCommon, SacInputAreaCommon, SacInputBase, SacInputCommon, SacInputCurrencyCommon, SacInputDecimalCommon, SacInputEmailCommon, SacInputIntegerCommon, SacInputPasswordCommon, SacInputSearchCommon, SacListboxCommon, SacListboxOptionCommon, SacMultilanguageInputAreaCommon, SacMultilanguageInputCommon, SacPagingCommon, SacRadiobuttonCommon, SacRadiobuttonsCommon, SacStaticFormContainerCommon, SacStaticLabelCommon, SacTabCommon, SacTabItemCommon, SacTimeCommon, SacTinyMceCommon, SacTooltipCommon, SacTreeItemActionCommon, SacTreeViewChildCommon, SacTreeViewCommon, SacUploadBase, SacUploadFile, SacUploadMultipleCommon, SacUploadSingleCommon, SacValidationSummaryCommon, SacWizardCommon, SacWizardItemCommon, ServiceConfirmCommon, SortDescriptor, SortOrder, TooltipPosition, Validation, ValidationErrorItem, convertToBoolean, convertToNumber, isDefined, mapToObject, positionElements, positionService };
10898
+ export { ControlHeight, GridResponse, IconType, Interpolation, LanguageModel, PagerData, PagerRequest, Positioning, SACCONFIGURATION_SERVICE, SACCommonListboxOptionModule, SACFILEBROWSER_SERVICE, SACICON_SERVICE, SACLANGUAGE_SERVICE, SACLOCALISATION_SERVICE, SACVALIDATIONKEY_SERVICE, SacAbstractConfigurationService, SacAbstractFileBrowserService, SacAbstractIconService, SacAbstractLanguageService, SacAbstractLocalisationService, SacBaseDateTimeControl, SacBaseListControl, SacBaseModelControl, SacBaseSelectControl, SacButtonCommon, SacCheckboxCommon, SacConfirmButton, SacConfirmCommon, SacContextMenuContrainerCommon, SacContextmenuAnchorCommon, SacContextmenuCommon, SacContextmenuItemButtonCommon, SacContextmenuItemCommon, SacDateCommon, SacDateSelectorCommon, SacDateTimeCommon, SacDialogCommon, SacDropdownCommon, SacDropdownOptionCommon, SacDropzoneMultipleCommon, SacDropzoneSingleCommon, SacFileBrowserCommon, SacFormCommon, SacFormLayoutCommon, SacGridButtonCommon, SacGridColumnActionCommon, SacGridColumnBaseCommon, SacGridColumnCommon, SacGridCommon, SacGridImageCommon, SacInputAreaCommon, SacInputBase, SacInputCommon, SacInputCurrencyCommon, SacInputDecimalCommon, SacInputEmailCommon, SacInputIntegerCommon, SacInputPasswordCommon, SacInputSearchCommon, SacListboxCommon, SacListboxOptionCommon, SacMultilanguageInputAreaCommon, SacMultilanguageInputCommon, SacPagingCommon, SacRadiobuttonCommon, SacRadiobuttonsCommon, SacStaticFormContainerCommon, SacStaticLabelCommon, SacTabCommon, SacTabItemCommon, SacTimeCommon, SacTinyMceCommon, SacTooltipCommon, SacTreeviewCommon, SacUploadBase, SacUploadFile, SacUploadMultipleCommon, SacUploadSingleCommon, SacValidationSummaryCommon, SacWizardCommon, SacWizardItemCommon, ServiceConfirmCommon, SortDescriptor, SortOrder, TooltipPosition, Validation, ValidationErrorItem, convertToBoolean, convertToNumber, isDefined, mapToObject, positionElements, positionService };
10945
10899
  //# sourceMappingURL=simpleangularcontrols-sac-common.js.map