boruto-xrmui 1.22.32 → 1.22.34

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.
@@ -852,6 +852,23 @@ function selectablesFromEnum(values, options) {
852
852
  return options.filter(item => ids.has(item.id));
853
853
  }
854
854
 
855
+ function createOptionSetValue(value, name) {
856
+ const value$ = signal(value, /* @ts-ignore */
857
+ ...(ngDevMode ? [{ debugName: "value$" }] : /* istanbul ignore next */ []));
858
+ const name$ = signal(name, /* @ts-ignore */
859
+ ...(ngDevMode ? [{ debugName: "name$" }] : /* istanbul ignore next */ []));
860
+ return {
861
+ name: name,
862
+ value: value,
863
+ value$,
864
+ name$,
865
+ set(id, name) {
866
+ value$.set(id);
867
+ name$.set(name);
868
+ }
869
+ };
870
+ }
871
+
855
872
  class DKCustomDateAdapter extends NativeDateAdapter {
856
873
  format(date, displayFormat) {
857
874
  if (!date)
@@ -1591,6 +1608,8 @@ class XrmuiInput {
1591
1608
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
1592
1609
  value = model(null, /* @ts-ignore */
1593
1610
  ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
1611
+ _initialValue = signal(undefined, /* @ts-ignore */
1612
+ ...(ngDevMode ? [{ debugName: "_initialValue" }] : /* istanbul ignore next */ []));
1594
1613
  _disabled = input(undefined, { ...(ngDevMode ? { debugName: "_disabled" } : /* istanbul ignore next */ {}), alias: 'disabled' });
1595
1614
  disabled = computed(() => {
1596
1615
  const d = this._disabled();
@@ -1635,6 +1654,8 @@ class XrmuiInput {
1635
1654
  ...(ngDevMode ? [{ debugName: "multiselected" }] : /* istanbul ignore next */ []));
1636
1655
  optionsetvalue = input(null, /* @ts-ignore */
1637
1656
  ...(ngDevMode ? [{ debugName: "optionsetvalue" }] : /* istanbul ignore next */ []));
1657
+ multioptionsetvalue = input(null, /* @ts-ignore */
1658
+ ...(ngDevMode ? [{ debugName: "multioptionsetvalue" }] : /* istanbul ignore next */ []));
1638
1659
  entityreference = input(null, /* @ts-ignore */
1639
1660
  ...(ngDevMode ? [{ debugName: "entityreference" }] : /* istanbul ignore next */ []));
1640
1661
  onselect = output();
@@ -1665,6 +1686,8 @@ class XrmuiInput {
1665
1686
  ...(ngDevMode ? [{ debugName: "isselectable" }] : /* istanbul ignore next */ []));
1666
1687
  ismultible = computed(() => this.multiselected() != undefined, /* @ts-ignore */
1667
1688
  ...(ngDevMode ? [{ debugName: "ismultible" }] : /* istanbul ignore next */ []));
1689
+ inputalign = input(null, /* @ts-ignore */
1690
+ ...(ngDevMode ? [{ debugName: "inputalign" }] : /* istanbul ignore next */ []));
1668
1691
  autoopenonblank = computed(() => {
1669
1692
  const au = this._autoopenonblank();
1670
1693
  if (au != undefined) {
@@ -1716,6 +1739,14 @@ class XrmuiInput {
1716
1739
  isnumber = computed(() => this.validate() == 'decimal' || this.validate() == 'number', /* @ts-ignore */
1717
1740
  ...(ngDevMode ? [{ debugName: "isnumber" }] : /* istanbul ignore next */ []));
1718
1741
  inputclasses = computed(() => {
1742
+ if (this.inputalign() == 'left')
1743
+ return 'left';
1744
+ if (this.inputalign() == 'right')
1745
+ return 'right';
1746
+ if (this.isnumber() && this.formScope?.formScope().inputalign == 'left')
1747
+ return 'left';
1748
+ if (this.isnumber() && this.formScope?.formScope().inputalign == 'right')
1749
+ return 'right';
1719
1750
  if (!this.isnumber())
1720
1751
  return this.type();
1721
1752
  return this.type() + ' ' + 'number';
@@ -1729,6 +1760,7 @@ class XrmuiInput {
1729
1760
  clearTimeout(this.blurThead);
1730
1761
  }
1731
1762
  });
1763
+ effect(() => this._initialValue.set(this.value()));
1732
1764
  effect(() => {
1733
1765
  const sf = this.setfocus();
1734
1766
  if (sf == true) {
@@ -1774,8 +1806,8 @@ class XrmuiInput {
1774
1806
  const osv = this.optionsetvalue();
1775
1807
  const sels = this.selectable();
1776
1808
  if (osv) {
1777
- const n = osv.name$();
1778
- this.shadowValue.set(n ?? '');
1809
+ const n = osv.name$() ?? '';
1810
+ this.shadowValue.set(n);
1779
1811
  }
1780
1812
  if (osv && sels && sels.length > 0) {
1781
1813
  const v = osv.value$();
@@ -1785,9 +1817,35 @@ class XrmuiInput {
1785
1817
  this.selected.set(sel);
1786
1818
  }
1787
1819
  }
1820
+ else {
1821
+ this.selected.set(undefined);
1822
+ }
1788
1823
  }
1789
1824
  ;
1790
1825
  });
1826
+ effect(() => {
1827
+ const mus = this.multioptionsetvalue();
1828
+ if (mus) {
1829
+ const selectable = this.selectable();
1830
+ if (selectable && selectable.length > 0) {
1831
+ const values = mus.values();
1832
+ if (values.length == 0) {
1833
+ this.multiselected.set([]);
1834
+ }
1835
+ else {
1836
+ const next = [];
1837
+ values.forEach(v => {
1838
+ const id = (untracked(() => v.value$()) ?? -1).toString();
1839
+ const s = selectable.find(s => s.id == id);
1840
+ if (s) {
1841
+ next.push(s);
1842
+ }
1843
+ });
1844
+ this.multiselected.set(next);
1845
+ }
1846
+ }
1847
+ }
1848
+ });
1791
1849
  effect(() => {
1792
1850
  const re = this.entityreference();
1793
1851
  if (re) {
@@ -1868,31 +1926,32 @@ class XrmuiInput {
1868
1926
  }
1869
1927
  }
1870
1928
  onValueChanged() {
1929
+ const _i = untracked(() => this._initialValue());
1871
1930
  const sv = this.shadowValue();
1872
- if (sv == '') {
1931
+ if (sv == '' || sv == null || sv == undefined) {
1873
1932
  if (this.nullable() == true) {
1874
1933
  this.value.set(null);
1875
1934
  }
1876
1935
  else {
1877
1936
  this.value.set('');
1878
1937
  }
1938
+ this.notifyIfNeeded(_i);
1879
1939
  }
1880
1940
  else {
1881
- const next = sv.replaceAll('.', '').replace(',', '.');
1882
1941
  switch (this.validate()) {
1883
1942
  case 'number': {
1884
1943
  // sync value on blue ... this is to early
1885
- break;
1944
+ return;
1886
1945
  }
1887
1946
  case 'decimal': {
1888
1947
  // syncvalue on blur ... this is to early
1889
- break;
1948
+ return;
1890
1949
  }
1891
1950
  default:
1892
1951
  this.value.set(sv);
1952
+ this.searchbyname();
1893
1953
  }
1894
1954
  }
1895
- this.searchbyname();
1896
1955
  }
1897
1956
  onCheckboxToggle() {
1898
1957
  this.value.set(this.shadowBool());
@@ -2011,6 +2070,7 @@ class XrmuiInput {
2011
2070
  this.onselect.emit(this.current);
2012
2071
  this.showitems.set(false);
2013
2072
  this.shadowValue.set(this.current.name ?? '');
2073
+ this.notifyOnChange();
2014
2074
  }
2015
2075
  }
2016
2076
  onesc(e) {
@@ -2085,15 +2145,33 @@ class XrmuiInput {
2085
2145
  SetSelectedItem(v) {
2086
2146
  if (this.ismultible()) {
2087
2147
  if (v != undefined) {
2088
- const issel = this.isSelected(v);
2089
- if (v == this.selectall) {
2090
- const allSelected = untracked(() => this.allIsSelected());
2091
- if (allSelected) {
2092
- this.multiselected.set([]);
2148
+ try {
2149
+ const issel = this.isSelected(v);
2150
+ if (v == this.selectall) {
2151
+ const allSelected = untracked(() => this.allIsSelected());
2152
+ if (allSelected) {
2153
+ this.multiselected.set([]);
2154
+ }
2155
+ else {
2156
+ this.multiselected.set([...this.selectable()]);
2157
+ }
2158
+ return;
2159
+ }
2160
+ if (issel) {
2161
+ const next = this.multiselected().filter(r => r.id != v.id);
2162
+ this.multiselected.set(next);
2163
+ this.notifyOnChange();
2093
2164
  }
2094
2165
  else {
2095
- this.multiselected.set([...this.selectable()]);
2166
+ const next = [...this.multiselected(), v];
2167
+ this.multiselected.set(next);
2096
2168
  }
2169
+ this.current = v;
2170
+ this.currentindex.set(this.itemlist().indexOf(v));
2171
+ return;
2172
+ }
2173
+ finally {
2174
+ this.syncToMultiOptionSetValue();
2097
2175
  this.notifyOnChange();
2098
2176
  this.autoRefocus();
2099
2177
  setTimeout(() => {
@@ -2101,26 +2179,7 @@ class XrmuiInput {
2101
2179
  this.overlayRef.updatePosition();
2102
2180
  }
2103
2181
  }, 100);
2104
- return;
2105
- }
2106
- if (issel) {
2107
- const next = this.multiselected().filter(r => r.id != v.id);
2108
- this.multiselected.set(next);
2109
- this.notifyOnChange();
2110
2182
  }
2111
- else {
2112
- const next = [...this.multiselected(), v];
2113
- this.multiselected.set(next);
2114
- }
2115
- this.current = v;
2116
- this.currentindex.set(this.itemlist().indexOf(v));
2117
- this.notifyOnChange();
2118
- this.autoRefocus();
2119
- setTimeout(() => {
2120
- if (this.overlayRef) {
2121
- this.overlayRef.updatePosition();
2122
- }
2123
- }, 100);
2124
2183
  }
2125
2184
  return;
2126
2185
  }
@@ -2152,6 +2211,19 @@ class XrmuiInput {
2152
2211
  this.notifyOnChange();
2153
2212
  }
2154
2213
  }
2214
+ syncToMultiOptionSetValue() {
2215
+ const multi = untracked(() => this.multioptionsetvalue());
2216
+ if (multi) {
2217
+ const multiValues = untracked(() => multi.values());
2218
+ const newValues = untracked(() => this.multiselected()) ?? [];
2219
+ const multiIds = multiValues.map(r => untracked(() => r.value$() ?? -1).toString());
2220
+ const newIds = newValues?.map(r => r.id);
2221
+ if (multiIds.length != newIds?.length || !multiIds.every(m => newIds.includes(m))) {
2222
+ const next = newValues.map(n => createOptionSetValue(Number(n.id), n.name ?? '')).sort((a, b) => a.name.localeCompare(b.name));
2223
+ multi.values.set(next);
2224
+ }
2225
+ }
2226
+ }
2155
2227
  next(e) {
2156
2228
  if (!this.showitems()) {
2157
2229
  return;
@@ -2255,10 +2327,22 @@ class XrmuiInput {
2255
2327
  }, mSec);
2256
2328
  }
2257
2329
  }
2330
+ notifyIfNeeded(_i) {
2331
+ const _v = untracked(() => this.value());
2332
+ if ((_v == undefined || _v == null) && (_i == undefined || _i == null)) {
2333
+ return;
2334
+ }
2335
+ if (_v != _i) {
2336
+ this.notifyOnChange();
2337
+ this._initialValue.set(_v);
2338
+ }
2339
+ }
2258
2340
  handleNumber() {
2341
+ const _i = untracked(() => this._initialValue());
2259
2342
  let sv = this.shadowValue();
2260
2343
  if (sv == '') {
2261
2344
  this.value.set(null);
2345
+ this.notifyIfNeeded(_i);
2262
2346
  }
2263
2347
  else {
2264
2348
  const next = sv.replaceAll('.', '').replace(',', '.');
@@ -2283,6 +2367,7 @@ class XrmuiInput {
2283
2367
  this.decimalsUsed.emit(spl[1].length);
2284
2368
  }
2285
2369
  }
2370
+ this.notifyIfNeeded(_i);
2286
2371
  }
2287
2372
  }
2288
2373
  expandedItems = new Map();
@@ -2326,10 +2411,16 @@ class XrmuiInput {
2326
2411
  e.stopPropagation();
2327
2412
  const nextMS = this.multiselected().filter(r => r.id != v.id);
2328
2413
  this.multiselected.set(nextMS);
2414
+ this.syncToMultiOptionSetValue();
2329
2415
  this.notifyOnChange();
2330
2416
  }
2331
2417
  setNumberValueString() {
2332
- const v = Number(this.value());
2418
+ const _v = untracked(() => this.value());
2419
+ if (this.nullable() && (_v == undefined || _v == null || _v == '')) {
2420
+ this.shadowValue.set('');
2421
+ return;
2422
+ }
2423
+ const v = Number(_v);
2333
2424
  let decimals = this.decimals();
2334
2425
  if (decimals == undefined && this.validate() == 'number') {
2335
2426
  decimals = 0;
@@ -2364,23 +2455,45 @@ class XrmuiInput {
2364
2455
  if (this.searchElement && this.overlayRef && !this.overlayRef.hasAttached()) {
2365
2456
  const portal = new TemplatePortal(this.suggestionsTemplate, this.viewContainerRef);
2366
2457
  this.overlayRef.attach(portal);
2458
+ this.overlayRef.updateSize({
2459
+ width: this.searchElement.nativeElement.getBoundingClientRect().width
2460
+ });
2367
2461
  const autocomplete = this.overlayRef.overlayElement
2368
2462
  .querySelector('.autocomplete');
2369
2463
  if (autocomplete) {
2370
2464
  autocomplete.style.width =
2371
2465
  `${this.searchElement.nativeElement.offsetWidth}px`;
2372
2466
  }
2467
+ this.observeInputResize();
2373
2468
  }
2374
2469
  }
2375
2470
  hideAutocompleteSuggestions() {
2376
2471
  this.overlayRef?.detach();
2377
2472
  }
2473
+ resizeObserver;
2474
+ observeInputResize() {
2475
+ this.resizeObserver = new ResizeObserver(() => {
2476
+ const w = this.searchElement?.nativeElement.getBoundingClientRect().width;
2477
+ if (this.overlayRef?.hasAttached()) {
2478
+ this.overlayRef.updateSize({
2479
+ width: w
2480
+ });
2481
+ this.overlayRef.updatePosition();
2482
+ }
2483
+ });
2484
+ this.resizeObserver.observe(this.searchElement?.nativeElement);
2485
+ }
2486
+ ngOnDestroy() {
2487
+ this.resizeObserver?.disconnect();
2488
+ this.overlayRef?.detach();
2489
+ this.overlayRef?.dispose();
2490
+ }
2378
2491
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: XrmuiInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
2379
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: XrmuiInput, isStandalone: true, selector: "xrmui-input", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, _shortLabel: { classPropertyName: "_shortLabel", publicName: "short-label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, _showlock: { classPropertyName: "_showlock", publicName: "showlock", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, inputid: { classPropertyName: "inputid", publicName: "inputid", isSignal: true, isRequired: false, transformFunction: null }, setfocus: { classPropertyName: "setfocus", publicName: "setfocus", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, multiselected: { classPropertyName: "multiselected", publicName: "multiselected", isSignal: true, isRequired: false, transformFunction: null }, optionsetvalue: { classPropertyName: "optionsetvalue", publicName: "optionsetvalue", isSignal: true, isRequired: false, transformFunction: null }, entityreference: { classPropertyName: "entityreference", publicName: "entityreference", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, validate: { classPropertyName: "validate", publicName: "validate", isSignal: true, isRequired: false, transformFunction: null }, decimals: { classPropertyName: "decimals", publicName: "decimals", isSignal: true, isRequired: false, transformFunction: null }, resizeable: { classPropertyName: "resizeable", publicName: "resizeable", isSignal: true, isRequired: false, transformFunction: null }, info: { classPropertyName: "info", publicName: "info", isSignal: true, isRequired: false, transformFunction: null }, notdark: { classPropertyName: "notdark", publicName: "notdark", isSignal: true, isRequired: false, transformFunction: null }, _autoopenonblank: { classPropertyName: "_autoopenonblank", publicName: "autoopenonblank", isSignal: true, isRequired: false, transformFunction: null }, nullable: { classPropertyName: "nullable", publicName: "nullable", isSignal: true, isRequired: false, transformFunction: null }, release: { classPropertyName: "release", publicName: "release", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolIcon: { classPropertyName: "toolIcon", publicName: "toolIcon", isSignal: true, isRequired: false, transformFunction: null }, numberoflines: { classPropertyName: "numberoflines", publicName: "numberoflines", isSignal: true, isRequired: false, transformFunction: null }, maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", setfocus: "setfocusChange", selected: "selectedChange", multiselected: "multiselectedChange", onselect: "onselect", validate: "validateChange", onfocusEvent: "focus", onblurEvent: "blur", click: "click", released: "released", decimalsUsed: "decimalsUsed", onEnter: "onEnter", toolClick: "toolClick" }, viewQueries: [{ propertyName: "searchElement", first: true, predicate: ["inputfield"], descendants: true }, { propertyName: "textareaElement", first: true, predicate: ["textareafield"], descendants: true }, { propertyName: "datefieldElement", first: true, predicate: ["datefield"], descendants: true }, { propertyName: "suggestionsTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true }, { propertyName: "options", predicate: ["option"], descendants: true }], ngImport: i0, template: "<div class=\"boruto-ui\">\r\n@if (label() != '' && label().length > 0 && shortLabel() != 'above') {\r\n<div class=\"label\" [ngClass]=\"{ short: shortLabel() == true }\" (click)=\"focusMe($event)\">{{ label() }}</div>\r\n}\r\n@if ((label() != '' || type() == 'number') && showlock()) {\r\n<div class=\"locked\">\r\n @if (required() && shortLabel() != 'above') {\r\n <div style=\"display: inline-block;height: 10px;color: red; position: relative; top: -8px; right: 0\">*</div>\r\n }\r\n @if (disabled()) {\r\n <mat-icon fontSet=\"material-symbols-outlined\">lock</mat-icon>\r\n }\r\n</div>\r\n}\r\n<div class=\"input\" \r\n [ngClass]=\"{ focus: hasfocus(), multi: ismultible(), error: error(), textarea: numberoflines() > 1, labelabove: shortLabel() == 'above', toolicon: toolIcon()?.length ?? 0 > 0 }\" \r\n (mouseover)=\"isover.set(true)\"\r\n (mouseleave)=\"isover.set(false)\"\r\n (click)=\"focusMe($event, true)\">\r\n @if (shortLabel() == 'above' && label() != '') {\r\n <div class=\"label-above\">\r\n {{ label() }}\r\n @if (required()) {<span style=\"color: red\">&nbsp;*</span>}\r\n </div>\r\n }\r\n @if (numberoflines() == 1 && validate() != 'date' && validate() != 'checkbox' && !isselect()) {\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #inputfield \r\n autocomplete=\"off\"\r\n [ngClass]=\"inputclasses()\"\r\n [type]=\"type() != 'password'? 'text' : 'password'\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n [(ngModel)]=\"shadowValue\" \r\n (ngModelChange)=\"onValueChanged()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlur()\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown)=\"onkeydown($event)\"\r\n [maxlength]=\"maxlength()\"/>\r\n }\r\n @if (validate() == 'checkbox') {\r\n <div class=\"checkbox\">\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n type=\"checkbox\"\r\n class=\"text checkbox\"\r\n [(ngModel)]=\"shadowBool\"\r\n [disabled]=\"disabled()\"\r\n (ngModelChange)=\"onCheckboxToggle()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlurCheckbox()\"\r\n />\r\n </div>\r\n }\r\n @if (numberoflines() == 1 && validate() == 'date' && !isselect()) {\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #datefield\r\n class=\"text datepicker\"\r\n [matDatepicker]=\"picker\"\r\n [value]=\"shadowDate()\"\r\n (dateChange)=\"pickDate($event)\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlurDate()\"/>\r\n @if (!disabled()) {\r\n <mat-icon \r\n class=\"calendar-icon\" \r\n fontSet=\"material-symbols-outlined\"\r\n (click)=\"picker.open()\">calendar_month</mat-icon>\r\n }\r\n <mat-datepicker #picker></mat-datepicker>\r\n }\r\n @if (numberoflines() > 1 && !isselect()) {\r\n <textarea\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #textareafield\r\n [maxlength]=\"maxlength()\"\r\n [rows]=\"numberoflines()\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n [(ngModel)]=\"shadowValue\" \r\n [ngClass]=\"{ noresize: !resizeable() }\"\r\n (ngModelChange)=\"onValueChanged()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlur()\"></textarea>\r\n }\r\n @let options = selectable();\r\n @if (options && options.length > 0 && !ismultible()) {\r\n <button \r\n #inputfield \r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n (click)=\"openSelect()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"disabled()\"\r\n class=\"optionsetbutton\"\r\n [ngClass]=\"{ grayed: selected() === undefined }\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown)=\"onkeydown($event)\">\r\n <div class=\"bo-grid-rows\">\r\n <div class=\"bo-row\">\r\n <div class=bo-grid-columns>\r\n <div class=\"bo-column\">{{ selected()?.name ?? setdefaultitem.name }}</div>\r\n <div class=\"bo-column bo-fixed\" style=\"--bo-fixed-size: 25 px; margin-top: -10px;position: relative;\">\r\n <xrmui-icon icon=\"keyboard_arrow_down\" type=\"font\" style=\"color: black\"></xrmui-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n @if (options && options.length > 0 && ismultible()) {\r\n <div class=\"multi-select\">\r\n @let optionsselected = multiselected()!;\r\n @for (ms of optionsselected; track ms.id; let ix = $index) {\r\n <div class=\"multi-select-item\" [ngClass]=\"{ over: isover() && !showitems() }\">@if(ix>0 && (!isover() || showitems())) {, }\r\n <button tabindex=\"-1\" (click)=\"removeMultiSelected($event, ms)\">\r\n @if (ms.icon && ms.icon.length > 0) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: small; position: relative; top: 3px\">{{ ms.icon }}</span>\r\n }\r\n {{ ms.name }}\r\n @if (isover() && !showitems()) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: small; position: relative; top: 3px\">close_small</span>\r\n }\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n <div style=\"height: 2px\" class=\"multi-select-input\">\r\n <input \r\n #inputfield \r\n readonly\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n (click)=\"openSelect()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"disabled()\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown.backspace)=\"onbackspace($event)\"\r\n (keydown)=\"onkeydown($event)\"\r\n />\r\n </div>\r\n }\r\n @let ti = toolIcon();\r\n @if (!disabled() && ti && ti.length > 0) {\r\n <mat-icon class=\"toolicon\" fontSet=\"material-symbols-outlined\" (click)=\"toolClicked($event)\">{{ ti }}</mat-icon>\r\n }\r\n</div>\r\n\r\n@if (label() == '' && type() != 'number' && showlock()) {\r\n <div class=\"locked\" style=\"text-align: left;\">\r\n @if (disabled()) {\r\n <mat-icon fontSet=\"material-symbols-outlined\">lock</mat-icon>\r\n }\r\n </div>\r\n}\r\n\r\n@if (info()) {<div class=\"info\" [title]=\"info()\"><mat-icon class=\"info\">info</mat-icon></div>}\r\n</div>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <div class=\"boruto-ui\">\r\n <div class=\"autocomplete\" [ngClass]=\"{ nolabel: (!label() || label().length == 0 || shortLabel() == 'above'), shortLabel: shortLabel() == true, notdark: notdark() }\">\r\n @if (itemlist().length == 0) {\r\n <div class=\"element\"><div class=\"item\">Ingen fundet</div></div>\r\n }\r\n @for (elm of itemlist(); track elm) {\r\n <div #option class=\"element\" [ngClass]=\"{ current: current == elm, selectable: !elm.disabled }\" (click)=\"select($event, elm)\">\r\n @if (elm.icon && elm.icon.length > 0) {\r\n <div class=\"icon\" style=\"min-width: 28px;\">\r\n <xrmui-icon type=\"font\" [icon]=\"elm.icon\"></xrmui-icon>\r\n </div>\r\n }\r\n <div class=\"item\">\r\n @if (itemTemplate(); as template) {\r\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: elm }\"></ng-container>\r\n } @else {\r\n @if (elm == selectall) {\r\n @if (allIsSelected()) {\r\n Remove all\r\n } @else {\r\n Select all\r\n }\r\n } @else {\r\n {{ elm.name }}\r\n }\r\n }\r\n </div>\r\n @if (isselectable() && !multiselected()) {\r\n <div class=\"icon\" style=\"min-width: 24px;\">\r\n @if (current == elm && elm != setdefaultitem) {\r\n <xrmui-icon type=\"font\" icon=\"check\" inlineStyle=\"font-size: small\"></xrmui-icon>\r\n }\r\n </div>\r\n }\r\n @if (isselectable() && multiselected() && elm != selectall) {\r\n <div class=\"icon\" style=\"min-width: 24px;\">\r\n @if (isSelected(elm)) {\r\n <xrmui-icon type=\"font\" icon=\"check_box\"></xrmui-icon>\r\n }\r\n @if (!isSelected(elm)) {\r\n <xrmui-icon type=\"font\" icon=\"check_box_outline_blank\"></xrmui-icon>\r\n }\r\n </div>\r\n }\r\n @if (elm.expandable == true) {\r\n <div class=\"icon expand\" (click)=\"expand($event, elm)\">\r\n <xrmui-icon icon=\"arrow_drop_down\" size=\"24\"></xrmui-icon>\r\n </div>\r\n }\r\n @if (elm.completeOnly == true) {\r\n <div class=\"icon complete\" (click)=\"complete($event, elm)\">\r\n <xrmui-icon icon=\"search\" size=\"24\"></xrmui-icon>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n", styles: [".boruto-ui{display:flex;margin-bottom:10px}.boruto-ui div.autocomplete{display:block;box-sizing:border-box;background-color:#fff;color:#000;border:solid;border-width:1px 1px 1px 1px;border-color:#d3d3d3;border-radius:4px;padding:5px;max-height:200px;overflow-x:hidden;overflow-y:auto}.boruto-ui div.autocomplete.nolabel{left:0}.boruto-ui div.autocomplete.shortLabel{left:124px}.boruto-ui div.autocomplete div.element.selectable{cursor:pointer}.boruto-ui div.autocomplete div.element{margin:5px;padding:5px;display:flex;border:solid;border-width:0 0 1px 0;border-color:#d3d3d3;font-size:14px;color:gray}.boruto-ui div.autocomplete div.element.current{border-color:#0f6cbd;color:#000}.boruto-ui div.autocomplete div.element div.item{display:flex;flex-grow:1;align-items:center}.boruto-ui div.label{width:180px;min-width:180px;max-height:180px;height:32px;line-height:32px}.boruto-ui div.label.short{width:90px;min-width:90px}.boruto-ui div.locked{width:30px;min-width:30px;max-width:30px;height:32px;line-height:32px;text-align:right;padding-right:3px}.boruto-ui div.input{flex-grow:1;height:32px;line-height:32px;background-color:#f5f5f5;border-radius:3px;margin:0;padding:0;border:solid;border-width:0 0 3px 0;border-color:transparent}.boruto-ui div.input.multi{height:auto;min-height:32px;line-height:normal}.boruto-ui div.input.labelabove{height:48px}.boruto-ui div.input.labelabove.multi{height:auto;min-height:48px;line-height:normal}.boruto-ui div.input.labelabove div.label-above{font-size:12px;line-height:12px;width:100%;padding-left:15px;padding-top:5px;color:gray}.boruto-ui div.input.focus.labelabove div.label-above{color:#0f6cbd}.boruto-ui div.input.textarea{height:inherit}.boruto-ui div.info{width:30px}.boruto-ui div textarea{background-color:#f5f5f5;border-radius:3px;margin:0;padding:10px 15px;border:solid;border-width:0 0 3px 0;border-color:transparent;width:100%;box-sizing:border-box}.boruto-ui div.input.focus,.boruto-ui div.textarea.focus,.boruto-ui div.select.focus{border-color:#0f6cbd}.boruto-ui div.input.error,.boruto-ui div.input.focus.error,.boruto-ui div.select.focus.error{border-color:red;color:red}.boruto-ui input{background-color:transparent;margin:0;border:none;height:29px;padding:0 0 0 15px;width:100%;box-sizing:border-box}.boruto-ui input.number{text-align:right}.boruto-ui select{background-color:transparent;margin:0;border:none;height:29px;padding:0 0 0 15px;width:calc(100% - 10px);box-sizing:border-box}.boruto-ui input.datepicker{width:calc(100% - 35px)}.boruto-ui div.input>div.checkbox{margin-left:15px;margin-top:5px}.boruto-ui div.input.above>div.checkbox{margin-top:2px}.boruto-ui input.checkbox{width:15px;height:15px}.boruto-ui div.input.toolicon input{width:calc(100% - 35px)}@media(prefers-color-scheme:dark){.boruto-ui input{color:#000}.boruto-ui input:disabled{color:#5f615f}}.boruto-ui input.number{text-align:right;padding-right:15px;padding-left:0}.boruto-ui *:focus{outline:none}.boruto-ui mat-icon{color:#d3d3d3;font-size:12px;position:relative;top:5px;width:12px}.boruto-ui .complete mat-icon,.boruto-ui .expand mat-icon{width:24px}.boruto-ui textarea.noresize{resize:none}.boruto-ui mat-icon.info{font-size:30px;width:30px;height:30px;color:gray}.boruto-ui mat-icon.info:hover{color:#000}.boruto-ui mat-icon.calendar-icon{font-size:25px;width:25px;height:25px;color:#a9a9a9}.boruto-ui mat-icon.toolicon{cursor:pointer;font-size:25px;width:25px;height:25px;color:gray}.boruto-ui mat-icon.dropdown{position:absolute;right:10px;top:4px;font-size:25px;width:25px;height:25px;color:gray;pointer-events:none}.boruto-ui div.input.labelabove mat-icon.dropdown{top:12px}.boruto-ui div.input.labelabove mat-icon.toolicon,.boruto-ui div.input.labelabove mat-icon.calendar-icon{position:relative;top:-5px}.boruto-ui select{appearance:none;-webkit-appearance:none;-moz-appearance:none}.boruto-ui button.optionsetbutton{width:100%;height:29px;border:none;box-sizing:border-box;background-color:transparent;text-align:left;padding-left:15px}.boruto-ui button.optionsetbutton.grayed{color:gray}.boruto-ui div.multi-select{padding-left:15px;font-size:small;display:flex;flex-direction:row;flex-wrap:wrap;min-height:27px}.boruto-ui div.multi-select div.multi-select-item{line-height:1.2;margin-right:2px;margin-top:5px;white-space:nowrap}.boruto-ui div.multi-select div.multi-select-item.over{padding:4px;margin-right:4px;background-color:#d8d8d8;cursor:pointer}.boruto-ui div.multi-select div.multi-select-item button{margin:0;padding:0;border:none;background-color:transparent;height:100%;cursor:pointer}.boruto-ui div.multi-select-input{position:relative;height:6px}.boruto-ui div.multi-select-input input{position:absolute;opacity:0;width:100%;height:11px;padding:0;border:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox]:not([ngNoCva])[formControlName],input[type=checkbox]:not([ngNoCva])[formControl],input[type=checkbox]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: XrmuiIcon, selector: "xrmui-icon", inputs: ["icon", "fontClass", "inlineStyle", "disabled", "type", "size"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None });
2492
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: XrmuiInput, isStandalone: true, selector: "xrmui-input", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, _shortLabel: { classPropertyName: "_shortLabel", publicName: "short-label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, _showlock: { classPropertyName: "_showlock", publicName: "showlock", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, inputid: { classPropertyName: "inputid", publicName: "inputid", isSignal: true, isRequired: false, transformFunction: null }, setfocus: { classPropertyName: "setfocus", publicName: "setfocus", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, multiselected: { classPropertyName: "multiselected", publicName: "multiselected", isSignal: true, isRequired: false, transformFunction: null }, optionsetvalue: { classPropertyName: "optionsetvalue", publicName: "optionsetvalue", isSignal: true, isRequired: false, transformFunction: null }, multioptionsetvalue: { classPropertyName: "multioptionsetvalue", publicName: "multioptionsetvalue", isSignal: true, isRequired: false, transformFunction: null }, entityreference: { classPropertyName: "entityreference", publicName: "entityreference", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, validate: { classPropertyName: "validate", publicName: "validate", isSignal: true, isRequired: false, transformFunction: null }, decimals: { classPropertyName: "decimals", publicName: "decimals", isSignal: true, isRequired: false, transformFunction: null }, resizeable: { classPropertyName: "resizeable", publicName: "resizeable", isSignal: true, isRequired: false, transformFunction: null }, info: { classPropertyName: "info", publicName: "info", isSignal: true, isRequired: false, transformFunction: null }, notdark: { classPropertyName: "notdark", publicName: "notdark", isSignal: true, isRequired: false, transformFunction: null }, _autoopenonblank: { classPropertyName: "_autoopenonblank", publicName: "autoopenonblank", isSignal: true, isRequired: false, transformFunction: null }, nullable: { classPropertyName: "nullable", publicName: "nullable", isSignal: true, isRequired: false, transformFunction: null }, release: { classPropertyName: "release", publicName: "release", isSignal: true, isRequired: false, transformFunction: null }, inputalign: { classPropertyName: "inputalign", publicName: "inputalign", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolIcon: { classPropertyName: "toolIcon", publicName: "toolIcon", isSignal: true, isRequired: false, transformFunction: null }, numberoflines: { classPropertyName: "numberoflines", publicName: "numberoflines", isSignal: true, isRequired: false, transformFunction: null }, maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", setfocus: "setfocusChange", selected: "selectedChange", multiselected: "multiselectedChange", onselect: "onselect", validate: "validateChange", onfocusEvent: "focus", onblurEvent: "blur", click: "click", released: "released", decimalsUsed: "decimalsUsed", onEnter: "onEnter", toolClick: "toolClick" }, viewQueries: [{ propertyName: "searchElement", first: true, predicate: ["inputfield"], descendants: true }, { propertyName: "textareaElement", first: true, predicate: ["textareafield"], descendants: true }, { propertyName: "datefieldElement", first: true, predicate: ["datefield"], descendants: true }, { propertyName: "suggestionsTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true }, { propertyName: "options", predicate: ["option"], descendants: true }], ngImport: i0, template: "<div class=\"boruto-ui\">\r\n@if (label() != '' && label().length > 0 && shortLabel() != 'above') {\r\n<div class=\"label\" [ngClass]=\"{ short: shortLabel() == true }\" (click)=\"focusMe($event)\">{{ label() }}</div>\r\n}\r\n@if ((label() != '' || type() == 'number') && showlock()) {\r\n<div class=\"locked\">\r\n @if (required() && shortLabel() != 'above') {\r\n <div style=\"display: inline-block;height: 10px;color: red; position: relative; top: -8px; right: 0\">*</div>\r\n }\r\n @if (disabled()) {\r\n <mat-icon fontSet=\"material-symbols-outlined\">lock</mat-icon>\r\n }\r\n</div>\r\n}\r\n<div class=\"input\" \r\n [ngClass]=\"{ focus: hasfocus(), multi: ismultible(), error: error(), textarea: numberoflines() > 1, labelabove: shortLabel() == 'above', toolicon: toolIcon()?.length ?? 0 > 0 }\" \r\n (mouseover)=\"isover.set(true)\"\r\n (mouseleave)=\"isover.set(false)\"\r\n (click)=\"focusMe($event, true)\">\r\n @if (shortLabel() == 'above' && label() != '') {\r\n <div class=\"label-above\">\r\n {{ label() }}\r\n @if (required()) {<span style=\"color: red\">&nbsp;*</span>}\r\n </div>\r\n }\r\n @if (numberoflines() == 1 && validate() != 'date' && validate() != 'checkbox' && !isselect()) {\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #inputfield \r\n autocomplete=\"off\"\r\n [ngClass]=\"inputclasses()\"\r\n [type]=\"type() != 'password'? 'text' : 'password'\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n [(ngModel)]=\"shadowValue\" \r\n (ngModelChange)=\"onValueChanged()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlur()\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown)=\"onkeydown($event)\"\r\n [maxlength]=\"maxlength()\"/>\r\n }\r\n @if (validate() == 'checkbox') {\r\n <div class=\"checkbox\">\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n type=\"checkbox\"\r\n class=\"text checkbox\"\r\n [(ngModel)]=\"shadowBool\"\r\n [disabled]=\"disabled()\"\r\n (ngModelChange)=\"onCheckboxToggle()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlurCheckbox()\"\r\n />\r\n </div>\r\n }\r\n @if (numberoflines() == 1 && validate() == 'date' && !isselect()) {\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #datefield\r\n class=\"text datepicker\"\r\n [matDatepicker]=\"picker\"\r\n [value]=\"shadowDate()\"\r\n (dateChange)=\"pickDate($event)\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlurDate()\"/>\r\n @if (!disabled()) {\r\n <mat-icon \r\n class=\"calendar-icon\" \r\n fontSet=\"material-symbols-outlined\"\r\n (click)=\"picker.open()\">calendar_month</mat-icon>\r\n }\r\n <mat-datepicker #picker></mat-datepicker>\r\n }\r\n @if (numberoflines() > 1 && !isselect()) {\r\n <textarea\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #textareafield\r\n [maxlength]=\"maxlength()\"\r\n [rows]=\"numberoflines()\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n [(ngModel)]=\"shadowValue\" \r\n [ngClass]=\"{ noresize: !resizeable() }\"\r\n (ngModelChange)=\"onValueChanged()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlur()\"></textarea>\r\n }\r\n @let options = selectable();\r\n @if (options && options.length > 0 && !ismultible()) {\r\n <button \r\n #inputfield \r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n (click)=\"openSelect()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"disabled()\"\r\n class=\"optionsetbutton\"\r\n [ngClass]=\"{ grayed: selected() === undefined }\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown)=\"onkeydown($event)\">\r\n <div class=\"bo-grid-rows\">\r\n <div class=\"bo-row\">\r\n <div class=bo-grid-columns>\r\n <div class=\"bo-column\">{{ selected()?.name ?? setdefaultitem.name }}</div>\r\n @if (!disabled()) {\r\n <div class=\"bo-column bo-fixed\" style=\"--bo-fixed-size: 25 px; margin-top: -2px;position: relative;\">\r\n <xrmui-icon icon=\"keyboard_arrow_down\" type=\"font\" style=\"color: black\"></xrmui-icon>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n @if (options && options.length > 0 && ismultible()) {\r\n <div style=\"display: flex; flex-direction: row;\">\r\n <div style=\"flex-grow: 1;\">\r\n <div class=\"multi-select\">\r\n @let optionsselected = multiselected()!;\r\n @for (ms of optionsselected; track ms.id; let ix = $index) {\r\n <div class=\"multi-select-item\" [ngClass]=\"{ over: isover() && !showitems() }\">@if(ix>0 && (!isover() || showitems())) {, }\r\n <button tabindex=\"-1\" (click)=\"removeMultiSelected($event, ms)\">\r\n @if (ms.icon && ms.icon.length > 0) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: small; position: relative; top: 3px\">{{ ms.icon }}</span>\r\n }\r\n {{ ms.name }}\r\n @if (isover() && !showitems() && !disabled()) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: small; position: relative; top: 3px\">close_small</span>\r\n }\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n <div style=\"height: 2px\" class=\"multi-select-input\">\r\n <input \r\n #inputfield \r\n readonly\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n (click)=\"openSelect()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"disabled()\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown.backspace)=\"onbackspace($event)\"\r\n (keydown)=\"onkeydown($event)\"\r\n />\r\n </div>\r\n </div>\r\n @if (!disabled()) {\r\n <div style=\"max-width: 25px; max-width: 25px; width: 25px; margin-right: 5px;margin-top: 5px; cursor: pointer;\">\r\n <xrmui-icon icon=\"keyboard_arrow_down\" type=\"font\" style=\"color: black\"></xrmui-icon>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @let ti = toolIcon();\r\n @if (!disabled() && ti && ti.length > 0) {\r\n <mat-icon class=\"toolicon\" fontSet=\"material-symbols-outlined\" (click)=\"toolClicked($event)\">{{ ti }}</mat-icon>\r\n }\r\n</div>\r\n\r\n@if (label() == '' && type() != 'number' && showlock()) {\r\n <div class=\"locked\" style=\"text-align: left;\">\r\n @if (disabled()) {\r\n <mat-icon fontSet=\"material-symbols-outlined\">lock</mat-icon>\r\n }\r\n </div>\r\n}\r\n\r\n@if (info()) {<div class=\"info\" [title]=\"info()\"><mat-icon class=\"info\">info</mat-icon></div>}\r\n</div>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <div class=\"boruto-ui autocomplete\">\r\n <div class=\"autocomplete\" [ngClass]=\"{ nolabel: (!label() || label().length == 0 || shortLabel() == 'above'), shortLabel: shortLabel() == true, notdark: notdark() }\">\r\n @if (itemlist().length == 0) {\r\n <div class=\"element\"><div class=\"item\">Ingen fundet</div></div>\r\n }\r\n @for (elm of itemlist(); track elm) {\r\n <div #option class=\"element\" [ngClass]=\"{ current: current == elm, selectable: !elm.disabled }\" (click)=\"select($event, elm)\">\r\n @if (elm.icon && elm.icon.length > 0) {\r\n <div class=\"icon\" style=\"min-width: 28px;\">\r\n <xrmui-icon type=\"font\" [icon]=\"elm.icon\"></xrmui-icon>\r\n </div>\r\n }\r\n <div class=\"item\">\r\n @if (itemTemplate(); as template) {\r\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: elm }\"></ng-container>\r\n } @else {\r\n @if (elm == selectall) {\r\n @if (allIsSelected()) {\r\n Remove all\r\n } @else {\r\n Select all\r\n }\r\n } @else {\r\n {{ elm.name }}\r\n }\r\n }\r\n </div>\r\n @if (isselectable() && !multiselected()) {\r\n <div class=\"icon\" style=\"min-width: 24px;\">\r\n @if (current == elm && elm != setdefaultitem) {\r\n <xrmui-icon type=\"font\" icon=\"check\" inlineStyle=\"font-size: small\"></xrmui-icon>\r\n }\r\n </div>\r\n }\r\n @if (isselectable() && multiselected() && elm != selectall) {\r\n <div class=\"icon\" style=\"min-width: 24px;\">\r\n @if (isSelected(elm)) {\r\n <xrmui-icon type=\"font\" icon=\"check_box\"></xrmui-icon>\r\n }\r\n @if (!isSelected(elm)) {\r\n <xrmui-icon type=\"font\" icon=\"check_box_outline_blank\"></xrmui-icon>\r\n }\r\n </div>\r\n }\r\n @if (elm.expandable == true) {\r\n <div class=\"icon expand\" (click)=\"expand($event, elm)\">\r\n <xrmui-icon icon=\"arrow_drop_down\" size=\"24\"></xrmui-icon>\r\n </div>\r\n }\r\n @if (elm.completeOnly == true) {\r\n <div class=\"icon complete\" (click)=\"complete($event, elm)\">\r\n <xrmui-icon icon=\"search\" size=\"24\"></xrmui-icon>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n", styles: [".boruto-ui{display:flex;margin-bottom:10px}.boruto-ui.autocomplete{width:100%;display:flex;flex-grow:1}.boruto-ui div.autocomplete{display:block;background-color:#fff;color:#000;border:solid;border-width:1px 1px 1px 1px;border-color:#d3d3d3;border-radius:4px;padding:5px;max-height:250px;overflow-x:hidden;overflow-y:auto;width:100%;box-sizing:border-box}.boruto-ui div.autocomplete.nolabel{left:0}.boruto-ui div.autocomplete.shortLabel{left:124px}.boruto-ui div.autocomplete div.element.selectable{cursor:pointer}.boruto-ui div.autocomplete div.element{margin:5px;padding:5px;display:flex;border:solid;border-width:0 0 1px 0;border-color:#d3d3d3;font-size:14px;color:gray}.boruto-ui div.autocomplete div.element.current{border-color:#0f6cbd;color:#000}.boruto-ui div.autocomplete div.element div.item{display:flex;flex-grow:1;align-items:center}.boruto-ui div.label{width:180px;min-width:180px;max-height:180px;height:32px;line-height:32px}.boruto-ui div.label.short{width:90px;min-width:90px}.boruto-ui div.locked{width:30px;min-width:30px;max-width:30px;height:32px;line-height:32px;text-align:right;padding-right:3px}.boruto-ui div.input{flex-grow:1;height:32px;line-height:32px;background-color:#f5f5f5;border-radius:3px;margin:0;padding:0;border:solid;border-width:0 0 3px 0;border-color:transparent}.boruto-ui div.input.multi{height:auto;min-height:32px;line-height:normal}.boruto-ui div.input.labelabove{height:48px}.boruto-ui div.input.labelabove.multi{height:auto;min-height:48px;line-height:normal}.boruto-ui div.input.labelabove div.label-above{font-size:12px;line-height:12px;width:100%;padding-left:15px;padding-top:5px;color:gray}.boruto-ui div.input.focus.labelabove div.label-above{color:#0f6cbd}.boruto-ui div.input.textarea{height:inherit}.boruto-ui div.info{width:30px}.boruto-ui div textarea{background-color:#f5f5f5;border-radius:3px;margin:0;padding:10px 15px;border:solid;border-width:0 0 3px 0;border-color:transparent;width:100%;box-sizing:border-box}.boruto-ui div.input.focus,.boruto-ui div.textarea.focus,.boruto-ui div.select.focus{border-color:#0f6cbd}.boruto-ui div.input.error,.boruto-ui div.input.focus.error,.boruto-ui div.select.focus.error{border-color:red;color:red}.boruto-ui input{background-color:transparent;margin:0;border:none;height:29px;padding:0 0 0 15px;width:100%;box-sizing:border-box}.boruto-ui input.right,.boruto-ui input.number{text-align:right}.boruto ui-input.left{text-align:left}.boruto-ui select{background-color:transparent;margin:0;border:none;height:29px;padding:0 0 0 15px;width:calc(100% - 10px);box-sizing:border-box}.boruto-ui input.datepicker{width:calc(100% - 35px)}.boruto-ui div.input>div.checkbox{margin-left:15px;margin-top:5px}.boruto-ui div.input.above>div.checkbox{margin-top:2px}.boruto-ui input.checkbox{width:15px;height:15px}.boruto-ui div.input.toolicon input{width:calc(100% - 35px)}@media(prefers-color-scheme:dark){.boruto-ui input{color:#000}.boruto-ui input:disabled{color:#5f615f}}.boruto-ui input.right,.boruto-ui input.number{text-align:right;padding-right:15px;padding-left:0}.boruto-ui input.left{text-align:left;padding-left:15px}.boruto-ui *:focus{outline:none}.boruto-ui mat-icon{color:#d3d3d3;font-size:12px;position:relative;top:5px;width:12px}.boruto-ui .complete mat-icon,.boruto-ui .expand mat-icon{width:24px}.boruto-ui textarea.noresize{resize:none}.boruto-ui mat-icon.info{font-size:30px;width:30px;height:30px;color:gray}.boruto-ui mat-icon.info:hover{color:#000}.boruto-ui mat-icon.calendar-icon{font-size:25px;width:25px;height:25px;color:#a9a9a9}.boruto-ui mat-icon.toolicon{cursor:pointer;font-size:25px;width:25px;height:25px;color:gray}.boruto-ui mat-icon.dropdown{position:absolute;right:10px;top:4px;font-size:25px;width:25px;height:25px;color:gray;pointer-events:none}.boruto-ui div.input.labelabove mat-icon.dropdown{top:12px}.boruto-ui div.input.labelabove mat-icon.toolicon,.boruto-ui div.input.labelabove mat-icon.calendar-icon{position:relative;top:-5px}.boruto-ui select{appearance:none;-webkit-appearance:none;-moz-appearance:none}.boruto-ui button.optionsetbutton{width:100%;height:29px;border:none;box-sizing:border-box;background-color:transparent;text-align:left;padding-left:15px}.boruto-ui button.optionsetbutton.grayed{color:gray}.boruto-ui div.multi-select{padding-left:15px;font-size:small;display:flex;flex-direction:row;flex-wrap:wrap;min-height:27px}.boruto-ui div.multi-select div.multi-select-item{line-height:1.2;margin-right:2px;margin-top:5px;white-space:nowrap}.boruto-ui div.multi-select div.multi-select-item.over{padding:4px;margin-right:4px;background-color:#d8d8d8;cursor:pointer}.boruto-ui div.multi-select div.multi-select-item button{margin:0;padding:0;border:none;background-color:transparent;height:100%;cursor:pointer}.boruto-ui div.multi-select-input{position:relative;height:6px}.boruto-ui div.multi-select-input input{position:absolute;opacity:0;width:calc(100% + 30px);height:11px;padding:0;border:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox]:not([ngNoCva])[formControlName],input[type=checkbox]:not([ngNoCva])[formControl],input[type=checkbox]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: XrmuiIcon, selector: "xrmui-icon", inputs: ["icon", "fontClass", "inlineStyle", "disabled", "type", "size"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None });
2380
2493
  }
2381
2494
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: XrmuiInput, decorators: [{
2382
2495
  type: Component,
2383
- args: [{ selector: 'xrmui-input', changeDetection: ChangeDetectionStrategy.Eager, encapsulation: ViewEncapsulation.None, imports: [FormsModule, NgClass, MatIcon, TextFieldModule, MatDatepickerModule, MatCheckboxModule, XrmuiIcon, NgTemplateOutlet], template: "<div class=\"boruto-ui\">\r\n@if (label() != '' && label().length > 0 && shortLabel() != 'above') {\r\n<div class=\"label\" [ngClass]=\"{ short: shortLabel() == true }\" (click)=\"focusMe($event)\">{{ label() }}</div>\r\n}\r\n@if ((label() != '' || type() == 'number') && showlock()) {\r\n<div class=\"locked\">\r\n @if (required() && shortLabel() != 'above') {\r\n <div style=\"display: inline-block;height: 10px;color: red; position: relative; top: -8px; right: 0\">*</div>\r\n }\r\n @if (disabled()) {\r\n <mat-icon fontSet=\"material-symbols-outlined\">lock</mat-icon>\r\n }\r\n</div>\r\n}\r\n<div class=\"input\" \r\n [ngClass]=\"{ focus: hasfocus(), multi: ismultible(), error: error(), textarea: numberoflines() > 1, labelabove: shortLabel() == 'above', toolicon: toolIcon()?.length ?? 0 > 0 }\" \r\n (mouseover)=\"isover.set(true)\"\r\n (mouseleave)=\"isover.set(false)\"\r\n (click)=\"focusMe($event, true)\">\r\n @if (shortLabel() == 'above' && label() != '') {\r\n <div class=\"label-above\">\r\n {{ label() }}\r\n @if (required()) {<span style=\"color: red\">&nbsp;*</span>}\r\n </div>\r\n }\r\n @if (numberoflines() == 1 && validate() != 'date' && validate() != 'checkbox' && !isselect()) {\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #inputfield \r\n autocomplete=\"off\"\r\n [ngClass]=\"inputclasses()\"\r\n [type]=\"type() != 'password'? 'text' : 'password'\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n [(ngModel)]=\"shadowValue\" \r\n (ngModelChange)=\"onValueChanged()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlur()\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown)=\"onkeydown($event)\"\r\n [maxlength]=\"maxlength()\"/>\r\n }\r\n @if (validate() == 'checkbox') {\r\n <div class=\"checkbox\">\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n type=\"checkbox\"\r\n class=\"text checkbox\"\r\n [(ngModel)]=\"shadowBool\"\r\n [disabled]=\"disabled()\"\r\n (ngModelChange)=\"onCheckboxToggle()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlurCheckbox()\"\r\n />\r\n </div>\r\n }\r\n @if (numberoflines() == 1 && validate() == 'date' && !isselect()) {\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #datefield\r\n class=\"text datepicker\"\r\n [matDatepicker]=\"picker\"\r\n [value]=\"shadowDate()\"\r\n (dateChange)=\"pickDate($event)\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlurDate()\"/>\r\n @if (!disabled()) {\r\n <mat-icon \r\n class=\"calendar-icon\" \r\n fontSet=\"material-symbols-outlined\"\r\n (click)=\"picker.open()\">calendar_month</mat-icon>\r\n }\r\n <mat-datepicker #picker></mat-datepicker>\r\n }\r\n @if (numberoflines() > 1 && !isselect()) {\r\n <textarea\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #textareafield\r\n [maxlength]=\"maxlength()\"\r\n [rows]=\"numberoflines()\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n [(ngModel)]=\"shadowValue\" \r\n [ngClass]=\"{ noresize: !resizeable() }\"\r\n (ngModelChange)=\"onValueChanged()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlur()\"></textarea>\r\n }\r\n @let options = selectable();\r\n @if (options && options.length > 0 && !ismultible()) {\r\n <button \r\n #inputfield \r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n (click)=\"openSelect()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"disabled()\"\r\n class=\"optionsetbutton\"\r\n [ngClass]=\"{ grayed: selected() === undefined }\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown)=\"onkeydown($event)\">\r\n <div class=\"bo-grid-rows\">\r\n <div class=\"bo-row\">\r\n <div class=bo-grid-columns>\r\n <div class=\"bo-column\">{{ selected()?.name ?? setdefaultitem.name }}</div>\r\n <div class=\"bo-column bo-fixed\" style=\"--bo-fixed-size: 25 px; margin-top: -10px;position: relative;\">\r\n <xrmui-icon icon=\"keyboard_arrow_down\" type=\"font\" style=\"color: black\"></xrmui-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n @if (options && options.length > 0 && ismultible()) {\r\n <div class=\"multi-select\">\r\n @let optionsselected = multiselected()!;\r\n @for (ms of optionsselected; track ms.id; let ix = $index) {\r\n <div class=\"multi-select-item\" [ngClass]=\"{ over: isover() && !showitems() }\">@if(ix>0 && (!isover() || showitems())) {, }\r\n <button tabindex=\"-1\" (click)=\"removeMultiSelected($event, ms)\">\r\n @if (ms.icon && ms.icon.length > 0) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: small; position: relative; top: 3px\">{{ ms.icon }}</span>\r\n }\r\n {{ ms.name }}\r\n @if (isover() && !showitems()) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: small; position: relative; top: 3px\">close_small</span>\r\n }\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n <div style=\"height: 2px\" class=\"multi-select-input\">\r\n <input \r\n #inputfield \r\n readonly\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n (click)=\"openSelect()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"disabled()\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown.backspace)=\"onbackspace($event)\"\r\n (keydown)=\"onkeydown($event)\"\r\n />\r\n </div>\r\n }\r\n @let ti = toolIcon();\r\n @if (!disabled() && ti && ti.length > 0) {\r\n <mat-icon class=\"toolicon\" fontSet=\"material-symbols-outlined\" (click)=\"toolClicked($event)\">{{ ti }}</mat-icon>\r\n }\r\n</div>\r\n\r\n@if (label() == '' && type() != 'number' && showlock()) {\r\n <div class=\"locked\" style=\"text-align: left;\">\r\n @if (disabled()) {\r\n <mat-icon fontSet=\"material-symbols-outlined\">lock</mat-icon>\r\n }\r\n </div>\r\n}\r\n\r\n@if (info()) {<div class=\"info\" [title]=\"info()\"><mat-icon class=\"info\">info</mat-icon></div>}\r\n</div>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <div class=\"boruto-ui\">\r\n <div class=\"autocomplete\" [ngClass]=\"{ nolabel: (!label() || label().length == 0 || shortLabel() == 'above'), shortLabel: shortLabel() == true, notdark: notdark() }\">\r\n @if (itemlist().length == 0) {\r\n <div class=\"element\"><div class=\"item\">Ingen fundet</div></div>\r\n }\r\n @for (elm of itemlist(); track elm) {\r\n <div #option class=\"element\" [ngClass]=\"{ current: current == elm, selectable: !elm.disabled }\" (click)=\"select($event, elm)\">\r\n @if (elm.icon && elm.icon.length > 0) {\r\n <div class=\"icon\" style=\"min-width: 28px;\">\r\n <xrmui-icon type=\"font\" [icon]=\"elm.icon\"></xrmui-icon>\r\n </div>\r\n }\r\n <div class=\"item\">\r\n @if (itemTemplate(); as template) {\r\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: elm }\"></ng-container>\r\n } @else {\r\n @if (elm == selectall) {\r\n @if (allIsSelected()) {\r\n Remove all\r\n } @else {\r\n Select all\r\n }\r\n } @else {\r\n {{ elm.name }}\r\n }\r\n }\r\n </div>\r\n @if (isselectable() && !multiselected()) {\r\n <div class=\"icon\" style=\"min-width: 24px;\">\r\n @if (current == elm && elm != setdefaultitem) {\r\n <xrmui-icon type=\"font\" icon=\"check\" inlineStyle=\"font-size: small\"></xrmui-icon>\r\n }\r\n </div>\r\n }\r\n @if (isselectable() && multiselected() && elm != selectall) {\r\n <div class=\"icon\" style=\"min-width: 24px;\">\r\n @if (isSelected(elm)) {\r\n <xrmui-icon type=\"font\" icon=\"check_box\"></xrmui-icon>\r\n }\r\n @if (!isSelected(elm)) {\r\n <xrmui-icon type=\"font\" icon=\"check_box_outline_blank\"></xrmui-icon>\r\n }\r\n </div>\r\n }\r\n @if (elm.expandable == true) {\r\n <div class=\"icon expand\" (click)=\"expand($event, elm)\">\r\n <xrmui-icon icon=\"arrow_drop_down\" size=\"24\"></xrmui-icon>\r\n </div>\r\n }\r\n @if (elm.completeOnly == true) {\r\n <div class=\"icon complete\" (click)=\"complete($event, elm)\">\r\n <xrmui-icon icon=\"search\" size=\"24\"></xrmui-icon>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n", styles: [".boruto-ui{display:flex;margin-bottom:10px}.boruto-ui div.autocomplete{display:block;box-sizing:border-box;background-color:#fff;color:#000;border:solid;border-width:1px 1px 1px 1px;border-color:#d3d3d3;border-radius:4px;padding:5px;max-height:200px;overflow-x:hidden;overflow-y:auto}.boruto-ui div.autocomplete.nolabel{left:0}.boruto-ui div.autocomplete.shortLabel{left:124px}.boruto-ui div.autocomplete div.element.selectable{cursor:pointer}.boruto-ui div.autocomplete div.element{margin:5px;padding:5px;display:flex;border:solid;border-width:0 0 1px 0;border-color:#d3d3d3;font-size:14px;color:gray}.boruto-ui div.autocomplete div.element.current{border-color:#0f6cbd;color:#000}.boruto-ui div.autocomplete div.element div.item{display:flex;flex-grow:1;align-items:center}.boruto-ui div.label{width:180px;min-width:180px;max-height:180px;height:32px;line-height:32px}.boruto-ui div.label.short{width:90px;min-width:90px}.boruto-ui div.locked{width:30px;min-width:30px;max-width:30px;height:32px;line-height:32px;text-align:right;padding-right:3px}.boruto-ui div.input{flex-grow:1;height:32px;line-height:32px;background-color:#f5f5f5;border-radius:3px;margin:0;padding:0;border:solid;border-width:0 0 3px 0;border-color:transparent}.boruto-ui div.input.multi{height:auto;min-height:32px;line-height:normal}.boruto-ui div.input.labelabove{height:48px}.boruto-ui div.input.labelabove.multi{height:auto;min-height:48px;line-height:normal}.boruto-ui div.input.labelabove div.label-above{font-size:12px;line-height:12px;width:100%;padding-left:15px;padding-top:5px;color:gray}.boruto-ui div.input.focus.labelabove div.label-above{color:#0f6cbd}.boruto-ui div.input.textarea{height:inherit}.boruto-ui div.info{width:30px}.boruto-ui div textarea{background-color:#f5f5f5;border-radius:3px;margin:0;padding:10px 15px;border:solid;border-width:0 0 3px 0;border-color:transparent;width:100%;box-sizing:border-box}.boruto-ui div.input.focus,.boruto-ui div.textarea.focus,.boruto-ui div.select.focus{border-color:#0f6cbd}.boruto-ui div.input.error,.boruto-ui div.input.focus.error,.boruto-ui div.select.focus.error{border-color:red;color:red}.boruto-ui input{background-color:transparent;margin:0;border:none;height:29px;padding:0 0 0 15px;width:100%;box-sizing:border-box}.boruto-ui input.number{text-align:right}.boruto-ui select{background-color:transparent;margin:0;border:none;height:29px;padding:0 0 0 15px;width:calc(100% - 10px);box-sizing:border-box}.boruto-ui input.datepicker{width:calc(100% - 35px)}.boruto-ui div.input>div.checkbox{margin-left:15px;margin-top:5px}.boruto-ui div.input.above>div.checkbox{margin-top:2px}.boruto-ui input.checkbox{width:15px;height:15px}.boruto-ui div.input.toolicon input{width:calc(100% - 35px)}@media(prefers-color-scheme:dark){.boruto-ui input{color:#000}.boruto-ui input:disabled{color:#5f615f}}.boruto-ui input.number{text-align:right;padding-right:15px;padding-left:0}.boruto-ui *:focus{outline:none}.boruto-ui mat-icon{color:#d3d3d3;font-size:12px;position:relative;top:5px;width:12px}.boruto-ui .complete mat-icon,.boruto-ui .expand mat-icon{width:24px}.boruto-ui textarea.noresize{resize:none}.boruto-ui mat-icon.info{font-size:30px;width:30px;height:30px;color:gray}.boruto-ui mat-icon.info:hover{color:#000}.boruto-ui mat-icon.calendar-icon{font-size:25px;width:25px;height:25px;color:#a9a9a9}.boruto-ui mat-icon.toolicon{cursor:pointer;font-size:25px;width:25px;height:25px;color:gray}.boruto-ui mat-icon.dropdown{position:absolute;right:10px;top:4px;font-size:25px;width:25px;height:25px;color:gray;pointer-events:none}.boruto-ui div.input.labelabove mat-icon.dropdown{top:12px}.boruto-ui div.input.labelabove mat-icon.toolicon,.boruto-ui div.input.labelabove mat-icon.calendar-icon{position:relative;top:-5px}.boruto-ui select{appearance:none;-webkit-appearance:none;-moz-appearance:none}.boruto-ui button.optionsetbutton{width:100%;height:29px;border:none;box-sizing:border-box;background-color:transparent;text-align:left;padding-left:15px}.boruto-ui button.optionsetbutton.grayed{color:gray}.boruto-ui div.multi-select{padding-left:15px;font-size:small;display:flex;flex-direction:row;flex-wrap:wrap;min-height:27px}.boruto-ui div.multi-select div.multi-select-item{line-height:1.2;margin-right:2px;margin-top:5px;white-space:nowrap}.boruto-ui div.multi-select div.multi-select-item.over{padding:4px;margin-right:4px;background-color:#d8d8d8;cursor:pointer}.boruto-ui div.multi-select div.multi-select-item button{margin:0;padding:0;border:none;background-color:transparent;height:100%;cursor:pointer}.boruto-ui div.multi-select-input{position:relative;height:6px}.boruto-ui div.multi-select-input input{position:absolute;opacity:0;width:100%;height:11px;padding:0;border:0}\n"] }]
2496
+ args: [{ selector: 'xrmui-input', changeDetection: ChangeDetectionStrategy.Eager, encapsulation: ViewEncapsulation.None, imports: [FormsModule, NgClass, MatIcon, TextFieldModule, MatDatepickerModule, MatCheckboxModule, XrmuiIcon, NgTemplateOutlet], template: "<div class=\"boruto-ui\">\r\n@if (label() != '' && label().length > 0 && shortLabel() != 'above') {\r\n<div class=\"label\" [ngClass]=\"{ short: shortLabel() == true }\" (click)=\"focusMe($event)\">{{ label() }}</div>\r\n}\r\n@if ((label() != '' || type() == 'number') && showlock()) {\r\n<div class=\"locked\">\r\n @if (required() && shortLabel() != 'above') {\r\n <div style=\"display: inline-block;height: 10px;color: red; position: relative; top: -8px; right: 0\">*</div>\r\n }\r\n @if (disabled()) {\r\n <mat-icon fontSet=\"material-symbols-outlined\">lock</mat-icon>\r\n }\r\n</div>\r\n}\r\n<div class=\"input\" \r\n [ngClass]=\"{ focus: hasfocus(), multi: ismultible(), error: error(), textarea: numberoflines() > 1, labelabove: shortLabel() == 'above', toolicon: toolIcon()?.length ?? 0 > 0 }\" \r\n (mouseover)=\"isover.set(true)\"\r\n (mouseleave)=\"isover.set(false)\"\r\n (click)=\"focusMe($event, true)\">\r\n @if (shortLabel() == 'above' && label() != '') {\r\n <div class=\"label-above\">\r\n {{ label() }}\r\n @if (required()) {<span style=\"color: red\">&nbsp;*</span>}\r\n </div>\r\n }\r\n @if (numberoflines() == 1 && validate() != 'date' && validate() != 'checkbox' && !isselect()) {\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #inputfield \r\n autocomplete=\"off\"\r\n [ngClass]=\"inputclasses()\"\r\n [type]=\"type() != 'password'? 'text' : 'password'\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n [(ngModel)]=\"shadowValue\" \r\n (ngModelChange)=\"onValueChanged()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlur()\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown)=\"onkeydown($event)\"\r\n [maxlength]=\"maxlength()\"/>\r\n }\r\n @if (validate() == 'checkbox') {\r\n <div class=\"checkbox\">\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n type=\"checkbox\"\r\n class=\"text checkbox\"\r\n [(ngModel)]=\"shadowBool\"\r\n [disabled]=\"disabled()\"\r\n (ngModelChange)=\"onCheckboxToggle()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlurCheckbox()\"\r\n />\r\n </div>\r\n }\r\n @if (numberoflines() == 1 && validate() == 'date' && !isselect()) {\r\n <input\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #datefield\r\n class=\"text datepicker\"\r\n [matDatepicker]=\"picker\"\r\n [value]=\"shadowDate()\"\r\n (dateChange)=\"pickDate($event)\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlurDate()\"/>\r\n @if (!disabled()) {\r\n <mat-icon \r\n class=\"calendar-icon\" \r\n fontSet=\"material-symbols-outlined\"\r\n (click)=\"picker.open()\">calendar_month</mat-icon>\r\n }\r\n <mat-datepicker #picker></mat-datepicker>\r\n }\r\n @if (numberoflines() > 1 && !isselect()) {\r\n <textarea\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n #textareafield\r\n [maxlength]=\"maxlength()\"\r\n [rows]=\"numberoflines()\"\r\n [disabled]=\"disabled()\" \r\n [placeholder]=\"placeholder()\" \r\n [(ngModel)]=\"shadowValue\" \r\n [ngClass]=\"{ noresize: !resizeable() }\"\r\n (ngModelChange)=\"onValueChanged()\" \r\n (focus)=\"onFocus()\" \r\n (blur)=\"onBlur()\"></textarea>\r\n }\r\n @let options = selectable();\r\n @if (options && options.length > 0 && !ismultible()) {\r\n <button \r\n #inputfield \r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n (click)=\"openSelect()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"disabled()\"\r\n class=\"optionsetbutton\"\r\n [ngClass]=\"{ grayed: selected() === undefined }\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown)=\"onkeydown($event)\">\r\n <div class=\"bo-grid-rows\">\r\n <div class=\"bo-row\">\r\n <div class=bo-grid-columns>\r\n <div class=\"bo-column\">{{ selected()?.name ?? setdefaultitem.name }}</div>\r\n @if (!disabled()) {\r\n <div class=\"bo-column bo-fixed\" style=\"--bo-fixed-size: 25 px; margin-top: -2px;position: relative;\">\r\n <xrmui-icon icon=\"keyboard_arrow_down\" type=\"font\" style=\"color: black\"></xrmui-icon>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n @if (options && options.length > 0 && ismultible()) {\r\n <div style=\"display: flex; flex-direction: row;\">\r\n <div style=\"flex-grow: 1;\">\r\n <div class=\"multi-select\">\r\n @let optionsselected = multiselected()!;\r\n @for (ms of optionsselected; track ms.id; let ix = $index) {\r\n <div class=\"multi-select-item\" [ngClass]=\"{ over: isover() && !showitems() }\">@if(ix>0 && (!isover() || showitems())) {, }\r\n <button tabindex=\"-1\" (click)=\"removeMultiSelected($event, ms)\">\r\n @if (ms.icon && ms.icon.length > 0) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: small; position: relative; top: 3px\">{{ ms.icon }}</span>\r\n }\r\n {{ ms.name }}\r\n @if (isover() && !showitems() && !disabled()) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: small; position: relative; top: 3px\">close_small</span>\r\n }\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n <div style=\"height: 2px\" class=\"multi-select-input\">\r\n <input \r\n #inputfield \r\n readonly\r\n [id]=\"inputid()\"\r\n [name]=\"name()\"\r\n (click)=\"openSelect()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"disabled()\"\r\n (keydown.arrowdown)=\"ondown($event)\"\r\n (keydown.arrowup)=\"onup($event)\"\r\n (keydown.enter)=\"onenter($event)\"\r\n (keydown.esc)=\"onesc($event)\"\r\n (keydown.backspace)=\"onbackspace($event)\"\r\n (keydown)=\"onkeydown($event)\"\r\n />\r\n </div>\r\n </div>\r\n @if (!disabled()) {\r\n <div style=\"max-width: 25px; max-width: 25px; width: 25px; margin-right: 5px;margin-top: 5px; cursor: pointer;\">\r\n <xrmui-icon icon=\"keyboard_arrow_down\" type=\"font\" style=\"color: black\"></xrmui-icon>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @let ti = toolIcon();\r\n @if (!disabled() && ti && ti.length > 0) {\r\n <mat-icon class=\"toolicon\" fontSet=\"material-symbols-outlined\" (click)=\"toolClicked($event)\">{{ ti }}</mat-icon>\r\n }\r\n</div>\r\n\r\n@if (label() == '' && type() != 'number' && showlock()) {\r\n <div class=\"locked\" style=\"text-align: left;\">\r\n @if (disabled()) {\r\n <mat-icon fontSet=\"material-symbols-outlined\">lock</mat-icon>\r\n }\r\n </div>\r\n}\r\n\r\n@if (info()) {<div class=\"info\" [title]=\"info()\"><mat-icon class=\"info\">info</mat-icon></div>}\r\n</div>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <div class=\"boruto-ui autocomplete\">\r\n <div class=\"autocomplete\" [ngClass]=\"{ nolabel: (!label() || label().length == 0 || shortLabel() == 'above'), shortLabel: shortLabel() == true, notdark: notdark() }\">\r\n @if (itemlist().length == 0) {\r\n <div class=\"element\"><div class=\"item\">Ingen fundet</div></div>\r\n }\r\n @for (elm of itemlist(); track elm) {\r\n <div #option class=\"element\" [ngClass]=\"{ current: current == elm, selectable: !elm.disabled }\" (click)=\"select($event, elm)\">\r\n @if (elm.icon && elm.icon.length > 0) {\r\n <div class=\"icon\" style=\"min-width: 28px;\">\r\n <xrmui-icon type=\"font\" [icon]=\"elm.icon\"></xrmui-icon>\r\n </div>\r\n }\r\n <div class=\"item\">\r\n @if (itemTemplate(); as template) {\r\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: elm }\"></ng-container>\r\n } @else {\r\n @if (elm == selectall) {\r\n @if (allIsSelected()) {\r\n Remove all\r\n } @else {\r\n Select all\r\n }\r\n } @else {\r\n {{ elm.name }}\r\n }\r\n }\r\n </div>\r\n @if (isselectable() && !multiselected()) {\r\n <div class=\"icon\" style=\"min-width: 24px;\">\r\n @if (current == elm && elm != setdefaultitem) {\r\n <xrmui-icon type=\"font\" icon=\"check\" inlineStyle=\"font-size: small\"></xrmui-icon>\r\n }\r\n </div>\r\n }\r\n @if (isselectable() && multiselected() && elm != selectall) {\r\n <div class=\"icon\" style=\"min-width: 24px;\">\r\n @if (isSelected(elm)) {\r\n <xrmui-icon type=\"font\" icon=\"check_box\"></xrmui-icon>\r\n }\r\n @if (!isSelected(elm)) {\r\n <xrmui-icon type=\"font\" icon=\"check_box_outline_blank\"></xrmui-icon>\r\n }\r\n </div>\r\n }\r\n @if (elm.expandable == true) {\r\n <div class=\"icon expand\" (click)=\"expand($event, elm)\">\r\n <xrmui-icon icon=\"arrow_drop_down\" size=\"24\"></xrmui-icon>\r\n </div>\r\n }\r\n @if (elm.completeOnly == true) {\r\n <div class=\"icon complete\" (click)=\"complete($event, elm)\">\r\n <xrmui-icon icon=\"search\" size=\"24\"></xrmui-icon>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n", styles: [".boruto-ui{display:flex;margin-bottom:10px}.boruto-ui.autocomplete{width:100%;display:flex;flex-grow:1}.boruto-ui div.autocomplete{display:block;background-color:#fff;color:#000;border:solid;border-width:1px 1px 1px 1px;border-color:#d3d3d3;border-radius:4px;padding:5px;max-height:250px;overflow-x:hidden;overflow-y:auto;width:100%;box-sizing:border-box}.boruto-ui div.autocomplete.nolabel{left:0}.boruto-ui div.autocomplete.shortLabel{left:124px}.boruto-ui div.autocomplete div.element.selectable{cursor:pointer}.boruto-ui div.autocomplete div.element{margin:5px;padding:5px;display:flex;border:solid;border-width:0 0 1px 0;border-color:#d3d3d3;font-size:14px;color:gray}.boruto-ui div.autocomplete div.element.current{border-color:#0f6cbd;color:#000}.boruto-ui div.autocomplete div.element div.item{display:flex;flex-grow:1;align-items:center}.boruto-ui div.label{width:180px;min-width:180px;max-height:180px;height:32px;line-height:32px}.boruto-ui div.label.short{width:90px;min-width:90px}.boruto-ui div.locked{width:30px;min-width:30px;max-width:30px;height:32px;line-height:32px;text-align:right;padding-right:3px}.boruto-ui div.input{flex-grow:1;height:32px;line-height:32px;background-color:#f5f5f5;border-radius:3px;margin:0;padding:0;border:solid;border-width:0 0 3px 0;border-color:transparent}.boruto-ui div.input.multi{height:auto;min-height:32px;line-height:normal}.boruto-ui div.input.labelabove{height:48px}.boruto-ui div.input.labelabove.multi{height:auto;min-height:48px;line-height:normal}.boruto-ui div.input.labelabove div.label-above{font-size:12px;line-height:12px;width:100%;padding-left:15px;padding-top:5px;color:gray}.boruto-ui div.input.focus.labelabove div.label-above{color:#0f6cbd}.boruto-ui div.input.textarea{height:inherit}.boruto-ui div.info{width:30px}.boruto-ui div textarea{background-color:#f5f5f5;border-radius:3px;margin:0;padding:10px 15px;border:solid;border-width:0 0 3px 0;border-color:transparent;width:100%;box-sizing:border-box}.boruto-ui div.input.focus,.boruto-ui div.textarea.focus,.boruto-ui div.select.focus{border-color:#0f6cbd}.boruto-ui div.input.error,.boruto-ui div.input.focus.error,.boruto-ui div.select.focus.error{border-color:red;color:red}.boruto-ui input{background-color:transparent;margin:0;border:none;height:29px;padding:0 0 0 15px;width:100%;box-sizing:border-box}.boruto-ui input.right,.boruto-ui input.number{text-align:right}.boruto ui-input.left{text-align:left}.boruto-ui select{background-color:transparent;margin:0;border:none;height:29px;padding:0 0 0 15px;width:calc(100% - 10px);box-sizing:border-box}.boruto-ui input.datepicker{width:calc(100% - 35px)}.boruto-ui div.input>div.checkbox{margin-left:15px;margin-top:5px}.boruto-ui div.input.above>div.checkbox{margin-top:2px}.boruto-ui input.checkbox{width:15px;height:15px}.boruto-ui div.input.toolicon input{width:calc(100% - 35px)}@media(prefers-color-scheme:dark){.boruto-ui input{color:#000}.boruto-ui input:disabled{color:#5f615f}}.boruto-ui input.right,.boruto-ui input.number{text-align:right;padding-right:15px;padding-left:0}.boruto-ui input.left{text-align:left;padding-left:15px}.boruto-ui *:focus{outline:none}.boruto-ui mat-icon{color:#d3d3d3;font-size:12px;position:relative;top:5px;width:12px}.boruto-ui .complete mat-icon,.boruto-ui .expand mat-icon{width:24px}.boruto-ui textarea.noresize{resize:none}.boruto-ui mat-icon.info{font-size:30px;width:30px;height:30px;color:gray}.boruto-ui mat-icon.info:hover{color:#000}.boruto-ui mat-icon.calendar-icon{font-size:25px;width:25px;height:25px;color:#a9a9a9}.boruto-ui mat-icon.toolicon{cursor:pointer;font-size:25px;width:25px;height:25px;color:gray}.boruto-ui mat-icon.dropdown{position:absolute;right:10px;top:4px;font-size:25px;width:25px;height:25px;color:gray;pointer-events:none}.boruto-ui div.input.labelabove mat-icon.dropdown{top:12px}.boruto-ui div.input.labelabove mat-icon.toolicon,.boruto-ui div.input.labelabove mat-icon.calendar-icon{position:relative;top:-5px}.boruto-ui select{appearance:none;-webkit-appearance:none;-moz-appearance:none}.boruto-ui button.optionsetbutton{width:100%;height:29px;border:none;box-sizing:border-box;background-color:transparent;text-align:left;padding-left:15px}.boruto-ui button.optionsetbutton.grayed{color:gray}.boruto-ui div.multi-select{padding-left:15px;font-size:small;display:flex;flex-direction:row;flex-wrap:wrap;min-height:27px}.boruto-ui div.multi-select div.multi-select-item{line-height:1.2;margin-right:2px;margin-top:5px;white-space:nowrap}.boruto-ui div.multi-select div.multi-select-item.over{padding:4px;margin-right:4px;background-color:#d8d8d8;cursor:pointer}.boruto-ui div.multi-select div.multi-select-item button{margin:0;padding:0;border:none;background-color:transparent;height:100%;cursor:pointer}.boruto-ui div.multi-select-input{position:relative;height:6px}.boruto-ui div.multi-select-input input{position:absolute;opacity:0;width:calc(100% + 30px);height:11px;padding:0;border:0}\n"] }]
2384
2497
  }], ctorParameters: () => [], propDecorators: { searchElement: [{
2385
2498
  type: ViewChild,
2386
2499
  args: ['inputfield']
@@ -2396,7 +2509,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
2396
2509
  }], suggestionsTemplate: [{
2397
2510
  type: ViewChild,
2398
2511
  args: ['suggestionsTemplate']
2399
- }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], _shortLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "short-label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], _disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], _showlock: [{ type: i0.Input, args: [{ isSignal: true, alias: "showlock", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], inputid: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputid", required: false }] }], setfocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "setfocus", required: false }] }, { type: i0.Output, args: ["setfocusChange"] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], multiselected: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiselected", required: false }] }, { type: i0.Output, args: ["multiselectedChange"] }], optionsetvalue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionsetvalue", required: false }] }], entityreference: [{ type: i0.Input, args: [{ isSignal: true, alias: "entityreference", required: false }] }], onselect: [{ type: i0.Output, args: ["onselect"] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], validate: [{ type: i0.Input, args: [{ isSignal: true, alias: "validate", required: false }] }, { type: i0.Output, args: ["validateChange"] }], decimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "decimals", required: false }] }], onfocusEvent: [{ type: i0.Output, args: ["focus"] }], onblurEvent: [{ type: i0.Output, args: ["blur"] }], click: [{ type: i0.Output, args: ["click"] }], resizeable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizeable", required: false }] }], info: [{ type: i0.Input, args: [{ isSignal: true, alias: "info", required: false }] }], notdark: [{ type: i0.Input, args: [{ isSignal: true, alias: "notdark", required: false }] }], _autoopenonblank: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoopenonblank", required: false }] }], nullable: [{ type: i0.Input, args: [{ isSignal: true, alias: "nullable", required: false }] }], release: [{ type: i0.Input, args: [{ isSignal: true, alias: "release", required: false }] }], released: [{ type: i0.Output, args: ["released"] }], itemTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemTemplate", required: false }] }], decimalsUsed: [{ type: i0.Output, args: ["decimalsUsed"] }], onEnter: [{ type: i0.Output, args: ["onEnter"] }], toolIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "toolIcon", required: false }] }], toolClick: [{ type: i0.Output, args: ["toolClick"] }], numberoflines: [{ type: i0.Input, args: [{ isSignal: true, alias: "numberoflines", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }] } });
2512
+ }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], _shortLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "short-label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], _disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], _showlock: [{ type: i0.Input, args: [{ isSignal: true, alias: "showlock", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], inputid: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputid", required: false }] }], setfocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "setfocus", required: false }] }, { type: i0.Output, args: ["setfocusChange"] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], multiselected: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiselected", required: false }] }, { type: i0.Output, args: ["multiselectedChange"] }], optionsetvalue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionsetvalue", required: false }] }], multioptionsetvalue: [{ type: i0.Input, args: [{ isSignal: true, alias: "multioptionsetvalue", required: false }] }], entityreference: [{ type: i0.Input, args: [{ isSignal: true, alias: "entityreference", required: false }] }], onselect: [{ type: i0.Output, args: ["onselect"] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], validate: [{ type: i0.Input, args: [{ isSignal: true, alias: "validate", required: false }] }, { type: i0.Output, args: ["validateChange"] }], decimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "decimals", required: false }] }], onfocusEvent: [{ type: i0.Output, args: ["focus"] }], onblurEvent: [{ type: i0.Output, args: ["blur"] }], click: [{ type: i0.Output, args: ["click"] }], resizeable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizeable", required: false }] }], info: [{ type: i0.Input, args: [{ isSignal: true, alias: "info", required: false }] }], notdark: [{ type: i0.Input, args: [{ isSignal: true, alias: "notdark", required: false }] }], _autoopenonblank: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoopenonblank", required: false }] }], nullable: [{ type: i0.Input, args: [{ isSignal: true, alias: "nullable", required: false }] }], release: [{ type: i0.Input, args: [{ isSignal: true, alias: "release", required: false }] }], released: [{ type: i0.Output, args: ["released"] }], inputalign: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputalign", required: false }] }], itemTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemTemplate", required: false }] }], decimalsUsed: [{ type: i0.Output, args: ["decimalsUsed"] }], onEnter: [{ type: i0.Output, args: ["onEnter"] }], toolIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "toolIcon", required: false }] }], toolClick: [{ type: i0.Output, args: ["toolClick"] }], numberoflines: [{ type: i0.Input, args: [{ isSignal: true, alias: "numberoflines", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }] } });
2400
2513
 
2401
2514
  class XrmuiRibbon {
2402
2515
  fill = input(true, /* @ts-ignore */
@@ -2760,5 +2873,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
2760
2873
  * Generated bundle index. Do not edit.
2761
2874
  */
2762
2875
 
2763
- export { BorutoXrmUIModule, CTRL_KEYS, ChangeScopeDirective, DECIMALS, DKCustomDateAdapter, FormScopeDirective, KiponUiModule, KoAlertComponent, KoButtonGroupComponent, KoDecimalDirective, KoDivider, KoExpansionPanelComponent, KoFocusDirective, KoHeaderComponent, KoHorizontalScrollComponent, KoHorizontalSplitComponent, KoLeftMenuComponent, KoMainComponent, KoNavigationByCssClass, KoNavigationByImageUrl, KoOverDirective, KoTablePanelComponent, KoTitlePanelComponent, KoTopMenuComponent, KoVerticalScrollComponent, KoVerticalSplitComponent, KoViewComponent, KoWriteDirective, NAVIGATIONKEYS, NUMBERS, XrmuiButton, XrmuiDevider, XrmuiIcon, XrmuiInfo, XrmuiInput, XrmuiLayout, XrmuiPanel, XrmuiRibbon, XrmuiSection, XrmuiSpinner, XrmuiTabs, enumToSelectable, nFormater, selectableToEnum, selectablesFromEnum };
2876
+ export { BorutoXrmUIModule, CTRL_KEYS, ChangeScopeDirective, DECIMALS, DKCustomDateAdapter, FormScopeDirective, KiponUiModule, KoAlertComponent, KoButtonGroupComponent, KoDecimalDirective, KoDivider, KoExpansionPanelComponent, KoFocusDirective, KoHeaderComponent, KoHorizontalScrollComponent, KoHorizontalSplitComponent, KoLeftMenuComponent, KoMainComponent, KoNavigationByCssClass, KoNavigationByImageUrl, KoOverDirective, KoTablePanelComponent, KoTitlePanelComponent, KoTopMenuComponent, KoVerticalScrollComponent, KoVerticalSplitComponent, KoViewComponent, KoWriteDirective, NAVIGATIONKEYS, NUMBERS, XrmuiButton, XrmuiDevider, XrmuiIcon, XrmuiInfo, XrmuiInput, XrmuiLayout, XrmuiPanel, XrmuiRibbon, XrmuiSection, XrmuiSpinner, XrmuiTabs, createOptionSetValue, enumToSelectable, nFormater, selectableToEnum, selectablesFromEnum };
2764
2877
  //# sourceMappingURL=boruto-xrmui.mjs.map