@porscheinformatik/material-addons 10.4.0 → 10.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/porscheinformatik-material-addons.umd.js +3 -1
- package/bundles/porscheinformatik-material-addons.umd.js.map +1 -1
- package/bundles/porscheinformatik-material-addons.umd.min.js +2 -2
- package/bundles/porscheinformatik-material-addons.umd.min.js.map +1 -1
- package/esm2015/lib/quick-list/base-quick-list.component.js +4 -2
- package/fesm2015/porscheinformatik-material-addons.js +3 -1
- package/fesm2015/porscheinformatik-material-addons.js.map +1 -1
- package/lib/quick-list/base-quick-list.component.d.ts +1 -0
- package/package.json +1 -1
- package/porscheinformatik-material-addons.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../projects/material-addons/src/lib/material-action-button/material-action-button.component.ts","../../../projects/material-addons/src/lib/material-action-button/material-action-button.module.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/material-addons/src/lib/button/mad-basic-button.ts","../../../projects/material-addons/src/lib/button/primary-button/primary-button.component.ts","../../../projects/material-addons/src/lib/button/outline-button/outline-button.component.ts","../../../projects/material-addons/src/lib/button/flat-button/link-button.component.ts","../../../projects/material-addons/src/lib/button/icon-button/icon-button.component.ts","../../../projects/material-addons/src/lib/button/danger-button/danger-button.component.ts","../../../projects/material-addons/src/lib/button/button.module.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.ts","../../../projects/material-addons/src/lib/numeric-field/number-format.service.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field/readonly-form-field.component.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field.module.ts","../../../projects/material-addons/src/lib/toolbar/toolbar.service.ts","../../../projects/material-addons/src/lib/toolbar/toolbar.component.ts","../../../projects/material-addons/src/lib/toolbar/toolbar.module.ts","../../../projects/material-addons/src/lib/numeric-field/numeric-field.directive.ts","../../../projects/material-addons/src/lib/numeric-field/numeric-field.module.ts","../../../projects/material-addons/src/lib/card/card.component.ts","../../../projects/material-addons/src/lib/throttle-click/throttle-click.directive.ts","../../../projects/material-addons/src/lib/throttle-click/throttle-click.module.ts","../../../projects/material-addons/src/lib/card/card.module.ts","../../../projects/material-addons/src/lib/quick-list/base-quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list-compact/quick-list-compact.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list.module.ts","../../../projects/material-addons/src/lib/table/table.component.ts","../../../projects/material-addons/src/lib/table/table.module.ts","../../../projects/material-addons/src/lib/data-table/data-table-action-type.ts","../../../projects/material-addons/src/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.ts","../../../projects/material-addons/src/lib/data-table/data-table.component.ts","../../../projects/material-addons/src/lib/data-table/data-table.module.ts","../../../projects/material-addons/src/lib/stepper/step-header/step-header.component.ts","../../../projects/material-addons/src/lib/stepper/mad-stepper-animation.ts","../../../projects/material-addons/src/lib/stepper/stepper.component.ts","../../../projects/material-addons/src/lib/stepper/stepper.module.ts","../../../projects/material-addons/src/lib/content-panel/content-header/content-header.component.ts","../../../projects/material-addons/src/lib/content-panel/content-panel-container/content-panel-container.component.ts","../../../projects/material-addons/src/lib/content-panel/content-panel-container-content/content-panel-container-content.component.ts","../../../projects/material-addons/src/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.ts","../../../projects/material-addons/src/lib/content-panel/main-container/main-container.component.ts","../../../projects/material-addons/src/lib/content-panel/content-panel.module.ts","../../../projects/material-addons/src/lib/flowbar/flowbar.component.ts","../../../projects/material-addons/src/lib/flowbar/flowbar.module.ts","../../../projects/material-addons/src/lib/material-addons.module.ts"],"names":["this","icon","liftHigher","liftHigher2","Component","args","selector","template","Input","NgModule","declarations","MaterialActionButtonComponent","imports","CommonModule","RouterModule","MatButtonModule","MatIconModule","MatTooltipModule","exports","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__values","o","s","Symbol","iterator","m","i","length","next","value","done","__read","n","r","e","ar","push","error","__spread","arguments","concat","MadBasicButton","disableClick","stopPropagation","defineProperty","disabled","ngOnChanges","disableButton","button","nativeElement","addEventListener","removeEventListener","HostBinding","PrimaryButtonComponent","_this","_super","title","ViewChild","read","ElementRef","static","OutlineButtonComponent","LinkButtonComponent","IconButtonComponent","DangerButtonComponent","ReadOnlyFormFieldWrapperComponent","changeDetector","elementRef","readonly","textAlign","formatNumber","decimalPlaces","roundValue","autofillDecimals","unit","unitPosition","errorMessage","multiline","rows","shrinkIfEmpty","toolTipForInputEnabled","ngOnInit","doRendering","ngAfterViewInit","setReadonlyFieldStyle","ngAfterViewChecked","setTooltipForOverflownField","_","getLabel","label","extractLabel","originalContent","detectChanges","correctWidth","labelElement","querySelector","innerHTML","formField","setAttribute","input","_b","_a","readOnlyContentWrapper","textOverFlowStyleValue","getTextOverFlowStyleValue","textOverflow","style","isEllipsisForTextOverflowEnabled","isTextOverflown","toolTipText","calculateToolTipText","offsetWidth","scrollWidth","ChangeDetectorRef","NumberFormatService","locale","allowedKeys","localeDecimalSeparator","toLocaleString","charAt","decimalSeparator","groupingSeparator","NUMBERS","NEGATIVE","valueIsSet","format","options","toString","replace","RegExp","valueOrDefault","DEFAULT_AUTOFILL_DECIMALS","DEFAULT_DECIMAL_PLACES","finalFormatting","DEFAULT_FINAL_FORMATTING","result","strip","removeLeadingZeros","decimalIndex","indexOf","isNegative","startsWith","substring","actualDecimalIndex","addMissingLeadingZero","actualDecimalPlaces","j","DEFAULT_REMOVE_LEADING_ZEROS","indexDecimalSep","ignoredChars","value_1","value_1_1","char","includes","defaultValue","Injectable","providedIn","Inject","LOCALE_ID","ReadOnlyFormFieldComponent","renderer","numberFormatService","errorMatcher","isErrorState","injectUnitSymbol","unitSpan","inputEl","inputWrapper","parentNode","createElement","setStyle","insertBefore","children","appendChild","inputStyles","window","getComputedStyle","parentElement","position","marginTop","getPropertyValue","paddingTop","paddingBottom","textSpan","document","body","font","fontSize","height","width","top","whiteSpace","visibility","Math","min","clientWidth","ceil","left","textContent","Renderer2","MatFormFieldModule","MatInputModule","FormsModule","ToolbarService","router","translate","mainActions","toolbarActions","toolbarActionsAlwaysAsMenu","toolbarActionsMenuTitle","routerSubscription","events","subscribe","routingEvent","NavigationEnd","currentUrl","urlAfterRedirects","clearToolbarActions","clearMainActions","backAction","dataTitle","url","toolbarTitle","ngOnDestroy","unsubscribe","getToolbarActions","addToolbarAction","action","get","i18nActionKey","toPromise","then","translated","actionName","setDataTitle","setToolbarActionsAlwaysAsMenu","getToolbarActionsAlwaysAsMenu","getDataTitle","getMainActions","getBackAction","setToolbarActionsMenuTitle","getToolbarActionsMenuTitle","addMainAction","mainAction","addBackAction","goBackRoute","isAbsoluteUrl","matIcon","href","routerLink","addSimpleBackButton","overrideIfPresent","history","back","Router","TranslateService","ToolbarComponent","breakpointObserver","titleService","toolbarService","isHandset$","observe","Breakpoints","Handset","pipe","map","matches","getTitle","hasPermission","showIf","of","isRouterLink","isAbsoluteLink","isAction","showBadgeForMenu","slice","filter","badge","hasImportantToolbarActions","importantAction","BreakpointObserver","Title","MatMenuModule","MatToolbarModule","MaterialActionButtonModule","ButtonModule","MatBadgeModule","OTHER_CONTROL_KEYS","Set","NumericFieldDirective","numericValueChanged","EventEmitter","displayValue","originalValue","NaN","onChange","onTouched","_numericValue","isNaN","roundOrTruncate","handleInputChanged","registerOnChange","fn","registerOnTouched","setDisabledState","writeValue","numericValue","parseInt","inputChangeListener","listen","event","formatInput","target","keyupListener","keyCode","has","keydownListener","key","metaKey","ctrlKey","altKey","indexNegativeSign","selectionStart","selectionEnd","cursorStart","substr","detachListener","setTimeout","updateInput","element","cursorPos","setCursor","textFormatted","max","parseFloat","emit","getValueForFormControl","display","method","pow","Directive","host","[class.text-right]","(change)","(input)","(blur)","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","Output","NumericFieldModule","forRoot","ngModule","CardComponent","cancelDisabled","cancelText","editText","expandable","expanded","saveDisabled","saveText","editMode","additionalActionText","edit","cancel","save","additionalAction","onCancel","undefined","onEdit","onSave","toggleCollapse","additionalActionClicked","animations","trigger","transition","opacity","overflow","animate","state","transform","ThrottleClickDirective","throttleTime","throttleClick","clicks","Subject","clickEvent","preventDefault","subscription","HostListener","MatCardModule","ThrottleClickModule","BaseQuickListComponent","changeDetectorRef","allItems","addLabel","addPossible","blankItem","added","removed","addEventFunction","addItem","bind","minItems","interalAddItem","setFocusOnAdd","newItem","removeItem","item","isDeleteAllowed","splice","rowCountFocus","itemRows","changes","els","last","firstFocusable","focus","isAddAllowed","maxItems","assign","id","random","ContentChild","TemplateRef","ViewChildren","QuickListComponent","QuickListCompactComponent","TableComponent","columns","filterLabel","filterPlaceholder","pageSizeOptions","defaultPageSize","rowActions","tableActions","tableAction","rowAction","sortEvent","ACTION_COLUMN_NAME","isFilterEnabled","isPaginationEnabled","data","dataSource","MatTableDataSource","pageSize","Number","MAX_VALUE","paginator","_changePageSize","setFilterValue","columnNames","column","isRowClickable","unshift","defaultAction","sort","filterPredicate","split","every","term","keys","find","onFilter","onRowEvent","row","isClickOnRowMenuIcon","outputRow","onSortingEvent","sortingParams","onTableAction","trim","toLowerCase","classList","contains","MatPaginator","MatSort","MatPaginatorModule","MatSortModule","MatTableModule","DataTableActionType","SINGLE","BATCH","NONE","DataTableColumnsModalComponent","dialogRef","selectedColumns","availableColumns","filteredAvailableColumns","definition","_c","allColumns","_d","columnId","displayedColumns","col","clearFilterValue","onDrop","previousContainer","container","moveItemInArray","previousIndex","currentIndex","itemIndex","findMatchingItemIndex","transferArrayItem","a","localeCompare","saveChange","close","onDelete","deleteChange","updateFilterValue","searchFilter","c","itemId","previousContainerItems","MatDialogRef","MAT_DIALOG_DATA","DataTableComponent","matDialog","filterColumnsLabel","filterColumnsPlaceHolder","noDataText","columnSettingsModalTitleLabel","selectedLabel","availableLabel","saveLabel","deleteLabel","cancelLabel","infoTextLabel","actions","deleteDefinitionAllowed","useAsync","actionEvent","pageEvent","allColumnsEvent","columnDefinitionChangeEvent","viewDefinitionChangeEvent","allSelected","displayedDataMap","Map","actualDataMap","selectionModel","SelectionModel","allColumnDefinitions","mode","showColumnModal","isLoading","paginatorLength","paginatorPageIndex","paginatorPageSize","cols","displayedColumnDefinition","columnIds","def","selectedColumnDefinion","createDataMapsAndSetDisplayedDataSourceData","page","pageIndex","definitions","editableColumnDefinitions","viewableColumnDefinitions","definitions_1","definitions_1_1","editable","defaultSize","extPaginator","unsetPageSizeIfNecessary","allAvailableColumns","openColumnModal","_forceMode","setActions","compare","x","active","y","ascending","direction","compareNumber","compareString","compareBoolean","transformData","transformer","transformerParams","Function","generateRowId","uuidV4","getTableMode","onColumnSettings","selectedDefinition","onViewDefinition","isCurrentDefinition","selected","getAllDataSourceRowsOfCurrentPage","_pageData","getSelectedCount","actionType","count","selectedCount","isDisabled","onToggleSelectAll","clear","forEach","select","rowId","isSelected","onRowCheckbox","toggle","idGenerator","emitTableAction","internalSort","onPageEvent","selection","emitAction","type","generateDisplayedDataElement","actualDataElement","displayedDataElement","actualValue","dataPropertyName","sortedData","hiddenInMode","displayedDataList","data_1","data_1_1","dataEntry","set","dialogData","titleLabel","open","afterClosed","distinctActionTypes","add","dataCount","MatDialog","MatProgressSpinnerModule","TranslateModule","MatCheckboxModule","DragDropModule","StepHeaderComponent","_focusMonitor","_elementRef","monitor","stopMonitoring","origin","focusVia","getCssForState","STEP_STATE","NUMBER","completed","hasError","getIcon","CdkStepHeader","inputs","class","role","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","FocusMonitor","madStepperAnimations","verticalStepTransition","StepComponent","stepper","_viewContainerRef","onNext","onDone","onHeaderClick","stepClosed","_isSelected","Subscription","EMPTY","ngAfterContentInit","_stepper","steps","switchMap","selectionChange","selectedStep","tap","startWith","markFormAsTouched","stepValidation","observers","selectAndMarkAsTouched","index","stepControl","markAllAsTouched","completeLast","resetValidations","DONE","valid","ERROR","CdkStep","StepperComponent","decorators","ViewContainerRef","dir","_document","animationDone","QueryList","_animationDone","_orientation","linear","takeUntil","_destroyed","_stateChanged","distinctUntilChanged","fromState","toState","_getAnimationDirection","selectedIndex","_steps","_stepIsNavigable","step","CdkStepper","[class.stepper-vertical]","[attr.aria-orientation]","Directionality","Optional","DOCUMENT","ContentChildren","descendants","CdkStepperModule","FlexModule","ContentHeaderComponent","ContentPanelContainerComponent","ContentPanelContainerContentComponent","ContentPanelContainerFooterComponent","MainContainerComponent","FlowbarComponent","_activeStepChange","_headerClick","_activeStep","activeSubStep","enabled","activeTabHasSubSteps","subSteps","_getIndicatorType","getIndexForActiveStep","changeActiveStep","changeActiveStepOnHeader","stepIndex","changeActiveSubStep","subStep","previous","isPreviousAvailable","isFirstSubStep","previousEnabledStep","findPreviousEnabledStep","subStepIndex","isNextAvailable","isLastSubStep","nextEnabledStep","findNextEnabledStep","getCurrentIndex","isAnyPreviousStepEnabled","isAnyFollowingStepEnabled","isLastStep","findIndex","getCurrentSubStepIndex","triggerClick","headerClick","reverse","MatStepperModule","ReadOnlyFormFieldModule","ToolbarModule","CardModule","QuickListModule"],"mappings":"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","sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mad-material-action-button',\n templateUrl: './material-action-button.component.html',\n styleUrls: ['./material-action-button.component.css'],\n})\nexport class MaterialActionButtonComponent {\n @Input()\n actionName: string;\n\n @Input()\n id: string;\n\n @Input()\n icon = 'add';\n\n @Input()\n routerLink: string;\n\n // Sets the lower padding higher providing some bottom space for a fixed paginator\n @Input()\n liftHigher = true;\n\n @Input()\n liftHigher2 = false;\n}\n","import { NgModule } from '@angular/core';\nimport { MaterialActionButtonComponent } from './material-action-button.component';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [MaterialActionButtonComponent],\n imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule],\n exports: [MaterialActionButtonComponent],\n})\nexport class MaterialActionButtonModule {}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ElementRef, HostBinding } from '@angular/core';\n\nexport class MadBasicButton {\n button: ElementRef;\n disabled: boolean;\n\n @HostBinding('style.pointer-events')\n get pointerEvent(): string {\n return this.disabled ? 'none' : 'auto';\n }\n\n @HostBinding('style.opacity')\n get opacity(): string {\n return this.disabled ? '0.35' : '1';\n }\n\n disableClick = (e: Event): any => e.stopPropagation();\n\n ngOnChanges(): void {\n this.disableButton();\n }\n\n disableButton(): void {\n if (this.disabled) {\n this.button.nativeElement.addEventListener('click', this.disableClick);\n } else {\n this.button.nativeElement.removeEventListener('click', this.disableClick);\n }\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n\n@Component({\n selector: 'mad-primary-button',\n templateUrl: './primary-button.component.html',\n styleUrls: ['./primary-button.component.css'],\n})\nexport class PrimaryButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n\n@Component({\n selector: 'mad-outline-button',\n templateUrl: './outline-button.component.html',\n styleUrls: ['./outline-button.component.css'],\n})\nexport class OutlineButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n@Component({\n selector: 'mad-link-button',\n templateUrl: './link-button.component.html',\n styleUrls: ['./link-button.component.css'],\n})\nexport class LinkButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n\n@Component({\n selector: 'mad-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.css'],\n})\nexport class IconButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n\n@Component({\n selector: 'mad-danger-button',\n templateUrl: './danger-button.component.html',\n styleUrls: ['./danger-button.component.css'],\n})\nexport class DangerButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { PrimaryButtonComponent } from './primary-button/primary-button.component';\nimport { OutlineButtonComponent } from './outline-button/outline-button.component';\nimport { LinkButtonComponent } from './flat-button/link-button.component';\nimport { IconButtonComponent } from './icon-button/icon-button.component';\nimport { DangerButtonComponent } from './danger-button/danger-button.component';\n\n@NgModule({\n declarations: [PrimaryButtonComponent, OutlineButtonComponent, LinkButtonComponent, DangerButtonComponent, IconButtonComponent],\n imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule],\n exports: [PrimaryButtonComponent, OutlineButtonComponent, LinkButtonComponent, DangerButtonComponent, IconButtonComponent],\n})\nexport class ButtonModule {}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\n\n/**\n * Wraps a mat-form-field to replace it by a readOnly representation if necessary\n *\n * @author Stefan Laesser\n */\n@Component({\n selector: 'mad-readonly-form-field-wrapper',\n templateUrl: './readonly-form-field-wrapper.component.html',\n styleUrls: ['./readonly-form-field-wrapper.component.css'],\n})\nexport class ReadOnlyFormFieldWrapperComponent implements OnInit, AfterViewInit, OnChanges, AfterViewChecked {\n @ViewChild('contentWrapper', { static: false })\n originalContent: ElementRef;\n @ViewChild('readOnlyContentWrapper', { static: false })\n readOnlyContentWrapper: ElementRef;\n\n /**\n * If set to \"false\", the contained mat-form-field is rendered in all it's glory.\n * If set to \"true\", a readonly representation of the value is shown using the mat-form-fields label.\n */\n @Input() readonly = true;\n\n /**\n * This input *MUST MATCH* the mat-form-field value to ensure correct data\n * binding and formatting of readOnly representation!\n */\n @Input('value') value: any;\n\n @Input('textAlign') textAlign: 'right' | 'left' = 'left';\n @Input('formatNumber') formatNumber = false;\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'left';\n @Input('errorMessage') errorMessage: string | null = null;\n @Input() id: string;\n /**\n * If set to \"false\", a readonly input will be rendered.\n * If set to \"true\", a readonly textarea will be rendered instead.\n */\n @Input() multiline = false;\n\n /**\n * Defines the rows for the readonly textarea.\n */\n @Input() rows = 3;\n\n /**\n * If shrinkIfEmpty is set to \"false\", nothing changes\n * If set to \"true\" and multiline is also \"true\", the textarea will\n * shrink to one row, if value is empty/null/undefined.\n * Otherwise, the defined rows-value will be used\n */\n @Input() shrinkIfEmpty = false;\n\n /**\n * Automatically taken from the contained <mat-label>\n */\n label: string;\n\n toolTipForInputEnabled = false;\n toolTipText: string;\n\n constructor(private changeDetector: ChangeDetectorRef, private elementRef: ElementRef) {}\n\n ngOnInit(): void {\n this.doRendering();\n }\n\n ngAfterViewInit(): void {\n this.setReadonlyFieldStyle();\n this.doRendering();\n }\n\n ngAfterViewChecked(): void {\n this.setReadonlyFieldStyle();\n this.setTooltipForOverflownField();\n }\n\n ngOnChanges(_: SimpleChanges): void {\n this.doRendering();\n }\n\n getLabel(): string {\n if (!this.label) {\n this.extractLabel();\n }\n return this.label;\n }\n\n private doRendering(): void {\n if (!this.originalContent) {\n return;\n }\n if (!this.readonly) {\n this.correctWidth();\n return;\n }\n\n this.changeDetector.detectChanges();\n }\n\n private extractLabel(): void {\n if (!this.originalContent || !this.originalContent.nativeElement) {\n return null;\n }\n const labelElement = this.originalContent.nativeElement.querySelector('mat-label');\n this.label = labelElement ? labelElement.innerHTML : 'mat-label is missing!';\n }\n\n private correctWidth(): void {\n const formField = this.originalContent.nativeElement.querySelector('mat-form-field');\n if (formField) {\n formField.setAttribute('style', 'width:100%');\n }\n }\n\n private setReadonlyFieldStyle(): void {\n const input = this.readOnlyContentWrapper?.nativeElement?.querySelector('input');\n\n if (input) {\n const textOverFlowStyleValue = this.getTextOverFlowStyleValue();\n if (textOverFlowStyleValue) {\n input.setAttribute('style', 'text-overflow: ' + textOverFlowStyleValue);\n }\n }\n }\n\n // Ellipsis is enabled by default as text-overflow behaviour\n private getTextOverFlowStyleValue(): string {\n // it works only if the style is added to the component directly. Should find a way for get it from the calculated\n // style. Than it would be possible to define the text-overflow in css for the whole application\n const textOverflow = this.elementRef?.nativeElement?.style.textOverflow;\n if (!textOverflow) {\n return 'ellipsis';\n }\n\n return textOverflow;\n }\n\n private setTooltipForOverflownField(): void {\n if (this.isEllipsisForTextOverflowEnabled()) {\n const input = this.readOnlyContentWrapper?.nativeElement?.querySelector('input');\n\n if (input) {\n this.toolTipForInputEnabled = this.isTextOverflown(input);\n if (this.toolTipForInputEnabled) {\n this.toolTipText = this.calculateToolTipText();\n }\n this.changeDetector.detectChanges();\n }\n }\n }\n\n private isEllipsisForTextOverflowEnabled(): boolean {\n return this.getTextOverFlowStyleValue() === 'ellipsis';\n }\n\n private isTextOverflown(input: any): boolean {\n if (input) {\n return input.offsetWidth < input.scrollWidth;\n }\n return false;\n }\n\n private calculateToolTipText(): string {\n if (!this.unit) {\n return this.value;\n }\n\n return this.unitPosition === 'left' ? this.unit + ' ' + this.value : this.value + ' ' + this.unit;\n }\n}\n","import { Inject, LOCALE_ID, Injectable } from '@angular/core';\n\nexport declare interface FormatOptions {\n decimalPlaces?: number;\n\n finalFormatting?: boolean;\n\n autofillDecimals?: boolean;\n}\n\nexport declare interface StripOptions {\n decimalPlaces?: number;\n\n removeLeadingZeros?: boolean;\n}\n\n@Injectable({\n providedIn: 'any',\n})\nexport class NumberFormatService {\n static readonly NEGATIVE = '-';\n static readonly NUMBERS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n static readonly DEFAULT_FINAL_FORMATTING = true;\n static readonly DEFAULT_DECIMAL_PLACES = 2;\n static readonly DEFAULT_AUTOFILL_DECIMALS = false;\n static readonly DEFAULT_REMOVE_LEADING_ZEROS = false;\n\n decimalSeparator: ',' | '.';\n groupingSeparator: ',' | '.';\n\n allowedKeys: string[] = [];\n\n constructor(@Inject(LOCALE_ID) locale: string) {\n // try to get the current formatting\n const localeDecimalSeparator = (1.1).toLocaleString(locale).charAt(1);\n this.decimalSeparator = localeDecimalSeparator === ',' ? ',' : '.';\n this.groupingSeparator = localeDecimalSeparator === ',' ? '.' : ',';\n\n this.allowedKeys = [...NumberFormatService.NUMBERS, NumberFormatService.NEGATIVE, this.decimalSeparator];\n }\n\n static valueIsSet(value: any): boolean {\n return typeof value !== 'undefined' && value !== null && (typeof value !== 'string' || value.length !== 0);\n }\n\n format(value: number, options?: Partial<FormatOptions>): string {\n return NumberFormatService.valueIsSet(value)\n ? this.formatNumber(value.toString().replace(new RegExp('[.]', 'g'), this.decimalSeparator), options)\n : '';\n }\n\n formatNumber(value: string, options?: Partial<FormatOptions>): string {\n const autofillDecimals = this.valueOrDefault(options?.autofillDecimals, NumberFormatService.DEFAULT_AUTOFILL_DECIMALS);\n const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);\n const finalFormatting = this.valueOrDefault(options?.finalFormatting, NumberFormatService.DEFAULT_FINAL_FORMATTING);\n\n let result = this.strip(value, { decimalPlaces, removeLeadingZeros: finalFormatting });\n\n /* add grouping separator */\n const decimalIndex = result.indexOf(this.decimalSeparator);\n const isNegative = result.startsWith(NumberFormatService.NEGATIVE);\n let i = decimalIndex > -1 ? decimalIndex : result.length;\n while (i > (isNegative ? 4 : 3)) {\n i -= 3;\n result = result.substring(0, i) + this.groupingSeparator + result.substring(i, result.length);\n }\n\n if (finalFormatting) {\n if (decimalPlaces > 0 && !!result) {\n /* autofill decimal places */\n let actualDecimalIndex = result.indexOf(this.decimalSeparator);\n if (autofillDecimals) {\n if (actualDecimalIndex === -1) {\n actualDecimalIndex = result.length;\n result += this.decimalSeparator;\n }\n\n result = this.addMissingLeadingZero(result, actualDecimalIndex);\n actualDecimalIndex = result.indexOf(this.decimalSeparator);\n\n const actualDecimalPlaces = result.length - actualDecimalIndex - 1;\n for (let j = 0; j < decimalPlaces - actualDecimalPlaces; j++) {\n result += '0';\n }\n } else {\n result = this.addMissingLeadingZero(result, actualDecimalIndex);\n }\n }\n }\n return result;\n }\n\n strip(value: string, options?: StripOptions): string {\n const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);\n const removeLeadingZeros = this.valueOrDefault(options?.removeLeadingZeros, NumberFormatService.DEFAULT_REMOVE_LEADING_ZEROS);\n\n let result = '';\n let indexDecimalSep = -1;\n let j = -1;\n let ignoredChars = 0;\n for (const char of value) {\n j++;\n if (this.allowedKeys.includes(char)) {\n if (char === this.decimalSeparator) {\n if (decimalPlaces === 0) {\n /* dismiss content after a decimal separator, when no places allowed */\n break;\n } else if (indexDecimalSep > -1) {\n /* ignore subsequent decimal separators */\n continue;\n }\n indexDecimalSep = j;\n }\n if (char === '0' && removeLeadingZeros) {\n /* remove leading zero only if it's not the only zero in the 'value' string */\n if ((result.length === 0 && j + 1 !== value.length) || result === NumberFormatService.NEGATIVE) {\n ignoredChars++;\n continue;\n }\n }\n if (char === NumberFormatService.NEGATIVE && j > 0) {\n /* dismiss content after a negative sign not on first position */\n break;\n }\n if (indexDecimalSep > -1 && result.length + ignoredChars > indexDecimalSep + decimalPlaces) {\n /* dismiss content after maximum decimal places reached */\n break;\n }\n result += char;\n } else if (char === this.groupingSeparator) {\n if (indexDecimalSep === -1) {\n ignoredChars++;\n }\n } else {\n /* dismiss content after a invalid character */\n break;\n }\n }\n return result;\n }\n\n private addMissingLeadingZero(result: string, actualDecimalIndex: number): string {\n const isNegative = result.startsWith(NumberFormatService.NEGATIVE);\n /* autoadd a zero before decimal separator, when it's missing */\n if (actualDecimalIndex === 0) {\n result = '0' + result;\n }\n /* autoadd a zero before decimal separator, when it's missing, for negative values */\n if (actualDecimalIndex === 1 && isNegative) {\n result = result[0] + '0' + result.substring(1, result.length);\n }\n return result;\n }\n\n private valueOrDefault(value: any, defaultValue: any): any {\n return NumberFormatService.valueIsSet(value) ? value : defaultValue;\n }\n}\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { NumberFormatService } from '../../numeric-field/number-format.service';\n\n/**\n * Read-only mat-form-field representation of provided value\n *\n * @author Stefan Laesser\n */\n\n@Component({\n selector: 'mad-readonly-form-field',\n templateUrl: './readonly-form-field.component.html',\n styleUrls: ['./readonly-form-field.component.css'],\n})\nexport class ReadOnlyFormFieldComponent implements OnChanges, AfterViewChecked {\n @Input('value') value: any;\n @Input('label') label: string;\n @Input('textAlign') textAlign: 'right' | 'left' = 'left';\n @Input('formatNumber') formatNumber = false;\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'left';\n @Input('errorMessage') errorMessage: string | null = null;\n @Input() multiline = false;\n @Input() rows = 3;\n @Input() id: string;\n /*\n * If shrinkIfEmpty is set to \"false\", nothing changes\n * If set to \"true\" and multiline is also \"true\", the textarea will\n * shrink to one row, if value is empty/null/undefined.\n * Otherwise, the defined rows-value will be used\n */\n @Input() shrinkIfEmpty = false;\n @ViewChild('inputEl') inputEl: ElementRef;\n errorMatcher: ErrorStateMatcher = {\n isErrorState: () => !!this.errorMessage,\n };\n\n private unitSpan: HTMLSpanElement;\n private textSpan: HTMLSpanElement;\n\n constructor(private changeDetector: ChangeDetectorRef, private renderer: Renderer2, private numberFormatService: NumberFormatService) {}\n\n ngOnChanges(_: SimpleChanges): void {\n if (!NumberFormatService.valueIsSet(this.value)) {\n this.value = '-';\n if (this.shrinkIfEmpty) {\n this.rows = 1;\n }\n } else if (this.formatNumber && typeof this.value === 'number') {\n this.value = this.numberFormatService.format(this.value, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting: true,\n autofillDecimals: this.autofillDecimals,\n });\n }\n this.changeDetector.detectChanges();\n }\n\n // TODO direct copy from NumericFieldDirective\n ngAfterViewChecked(): void {\n this.injectUnitSymbol();\n }\n\n private injectUnitSymbol(): void {\n // Need to inject the unit symbol when the input element width is set to its actual value,\n // otherwise the icon wont show in the correct position\n if (!!this.unit && !this.unitSpan && this.inputEl.nativeElement.offsetWidth !== 0) {\n // Get the input wrapper and apply necessary styles\n const inputWrapper = this.inputEl.nativeElement.parentNode.parentNode;\n\n // Create the span with unit symbol and apply necessary styles\n this.unitSpan = this.renderer.createElement('span');\n\n if (this.unitPosition === 'left') {\n this.renderer.setAttribute(this.unitSpan, 'matPrefix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-right', '5px');\n this.renderer.insertBefore(inputWrapper, this.unitSpan, inputWrapper.children[0]);\n } else {\n this.renderer.setAttribute(this.unitSpan, 'matSuffix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-left', '5px');\n this.renderer.appendChild(inputWrapper, this.unitSpan);\n }\n }\n\n // special handling to move unit symbol along with display value\n if (!!this.unitSpan && this.textAlign === 'left' && this.unitPosition === 'right') {\n const inputStyles = window.getComputedStyle(this.inputEl.nativeElement.parentElement, null);\n this.unitSpan.style.position = 'absolute';\n this.unitSpan.style.marginTop = inputStyles.getPropertyValue('border-top-width');\n this.unitSpan.style.paddingTop = inputStyles.getPropertyValue('padding-top');\n this.unitSpan.style.paddingBottom = inputStyles.getPropertyValue('padding-bottom');\n\n if (!this.textSpan) {\n this.textSpan = document.createElement('span');\n document.body.appendChild(this.textSpan);\n this.textSpan.style.font = inputStyles.getPropertyValue('font');\n this.textSpan.style.fontSize = inputStyles.getPropertyValue('font-size');\n this.textSpan.style.height = 'auto';\n this.textSpan.style.width = 'auto';\n this.textSpan.style.position = 'absolute';\n this.textSpan.style.top = '0';\n this.textSpan.style.whiteSpace = 'no-wrap';\n this.textSpan.style.visibility = 'hidden';\n }\n this.textSpan.innerHTML = this.value;\n const width = Math.min(this.inputEl.nativeElement.clientWidth - this.unitSpan.clientWidth, Math.ceil(this.textSpan.clientWidth));\n this.unitSpan.style.left = width + 'px';\n }\n // always reset unit symbol\n if (!!this.unitSpan) {\n this.unitSpan.textContent = this.unit;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { ReadOnlyFormFieldWrapperComponent } from './readonly-form-field-wrapper/readonly-form-field-wrapper.component';\nimport { ReadOnlyFormFieldComponent } from './readonly-form-field/readonly-form-field.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent],\n imports: [CommonModule, RouterModule, MatFormFieldModule, MatInputModule, FormsModule, MatTooltipModule],\n exports: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent],\n})\nexport class ReadOnlyFormFieldModule {}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BackAction, MainAction, ToolbarAction } from './toolbar-action.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToolbarService implements OnDestroy {\n backAction: BackAction;\n mainActions: MainAction[] = []; // shown on the left, next to title, as big buttons\n toolbarActions: ToolbarAction[] = []; // shown on the right as icons\n toolbarActionsAlwaysAsMenu = false; // show the mobile view (burger menu) for toolbar actions\n dataTitle: string;\n routerSubscription: Subscription;\n private title: string;\n private toolbarActionsMenuTitle = 'More'; // title of the burger menu\n\n private currentUrl: string;\n\n constructor(private router: Router, private translate: TranslateService) {\n this.routerSubscription = this.router.events.subscribe(routingEvent => {\n if (routingEvent instanceof NavigationEnd) {\n if (this.currentUrl !== routingEvent.urlAfterRedirects) {\n this.clearToolbarActions();\n this.clearMainActions();\n delete this.backAction;\n delete this.dataTitle;\n }\n this.currentUrl = router.url;\n }\n });\n }\n\n get toolbarTitle(): string {\n return this.title;\n }\n\n set toolbarTitle(toolbarTitle: string) {\n this.title = toolbarTitle;\n }\n\n ngOnDestroy(): void {\n if (this.routerSubscription) {\n this.routerSubscription.unsubscribe();\n }\n }\n\n getToolbarActions(): ToolbarAction[] {\n return this.toolbarActions;\n }\n\n addToolbarAction(action: ToolbarAction): void {\n this.translate\n .get(action.i18nActionKey)\n .toPromise()\n .then(translated => {\n action.actionName = translated;\n this.toolbarActions.push(action);\n });\n }\n\n setDataTitle(dataTitle: string): void {\n this.dataTitle = dataTitle;\n }\n\n setToolbarActionsAlwaysAsMenu(toolbarActionsAlwaysAsMenu: boolean): void {\n this.toolbarActionsAlwaysAsMenu = toolbarActionsAlwaysAsMenu;\n }\n\n getToolbarActionsAlwaysAsMenu(): boolean {\n return this.toolbarActionsAlwaysAsMenu;\n }\n\n getDataTitle(): string {\n return this.dataTitle;\n }\n\n clearToolbarActions(): void {\n this.toolbarActions = [];\n }\n\n getMainActions(): MainAction[] {\n return this.mainActions;\n }\n\n getBackAction(): BackAction {\n return this.backAction;\n }\n\n setToolbarActionsMenuTitle(toolbarActionsMenuTitle: string): void {\n this.toolbarActionsMenuTitle = toolbarActionsMenuTitle;\n }\n\n getToolbarActionsMenuTitle(): string {\n return this.toolbarActionsMenuTitle;\n }\n\n addMainAction(mainAction: MainAction): void {\n this.translate\n .get(mainAction.i18nActionKey)\n .toPromise()\n .then(translated => {\n mainAction.actionName = translated;\n this.mainActions.push(mainAction);\n });\n }\n\n /**\n * Per default the goBackRoute is a routerLink. But if a href should be used (for absolute browser routing) then isAbsoluteUrl can be set to true.\n */\n addBackAction(goBackRoute: string, isAbsoluteUrl = false): void {\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n };\n if (!isAbsoluteUrl) {\n this.backAction.routerLink = goBackRoute;\n } else {\n this.backAction.href = goBackRoute;\n }\n }\n\n addSimpleBackButton(overrideIfPresent = false): void {\n if (this.getBackAction() && !overrideIfPresent) {\n return;\n }\n\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n action(): void {\n window.history.back();\n },\n };\n }\n\n clearMainActions(): void {\n this.mainActions = [];\n }\n}\n","import { Component } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ToolbarService } from './toolbar.service';\nimport { Observable, of } from 'rxjs';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\nimport { Action, BackAction, MainAction, ToolbarAction } from './toolbar-action.interface';\n\n@Component({\n selector: 'mad-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.css'],\n})\nexport class ToolbarComponent {\n isHandset$: Observable<boolean> = this.breakpointObserver.observe([Breakpoints.Handset]).pipe(map(result => result.matches));\n\n constructor(private breakpointObserver: BreakpointObserver, private titleService: Title, private toolbarService: ToolbarService) {}\n\n getTitle(): string {\n const dataTitle = this.toolbarService.getDataTitle();\n const toolbarTitle = this.toolbarService.toolbarTitle;\n const title = !toolbarTitle || toolbarTitle.length <= 0 ? this.titleService.getTitle() : toolbarTitle;\n return !dataTitle || dataTitle.length <= 0 ? title : title + ': ' + dataTitle;\n }\n\n getToolbarActions(): ToolbarAction[] {\n return this.toolbarService.getToolbarActions();\n }\n\n getMainActions(): MainAction[] {\n return this.toolbarService.getMainActions();\n }\n\n hasPermission(action: Action): Observable<boolean> {\n if (!action || !action.showIf) {\n return of(true);\n }\n return action.showIf;\n }\n\n isRouterLink(): boolean {\n return this.toolbarService.getBackAction() && !!this.toolbarService.getBackAction().routerLink;\n }\n\n isAbsoluteLink(): boolean {\n return this.toolbarService.getBackAction() && !!this.toolbarService.getBackAction().href;\n }\n\n isAction(): boolean {\n return this.toolbarService.getBackAction() && !!this.toolbarService.getBackAction().action;\n }\n\n getBackAction(): BackAction {\n return this.toolbarService.getBackAction();\n }\n\n getToolbarActionsAlwaysAsMenu(): boolean {\n return this.toolbarService.getToolbarActionsAlwaysAsMenu();\n }\n\n getToolbarActionsMenuTitle(): string {\n return this.toolbarService.getToolbarActionsMenuTitle();\n }\n\n showBadgeForMenu(): boolean {\n return (\n this.getToolbarActions()\n .slice(1) // the first icon is not shown in menu\n .filter(value => value.badge && value.badge.value).length > 0\n );\n }\n\n hasImportantToolbarActions(): boolean {\n return this.getToolbarActions().filter(value => !!value.importantAction).length > 0;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { ToolbarComponent } from './toolbar.component';\nimport { MaterialActionButtonModule } from '../material-action-button/material-action-button.module';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ButtonModule } from '../button/button.module';\nimport { MatBadgeModule } from '@angular/material/badge';\n\n@NgModule({\n declarations: [ToolbarComponent],\n imports: [\n CommonModule,\n RouterModule,\n MatMenuModule,\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MaterialActionButtonModule,\n MatTooltipModule,\n ButtonModule,\n MatBadgeModule,\n ],\n exports: [ToolbarComponent],\n})\nexport class ToolbarModule {}\n","/*\n * Copyright (c) 2018-2020 Porsche Informatik. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterViewChecked,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NumberFormatService } from './number-format.service';\n\nconst BACK_KEYCODE = 8;\nconst SPACE_KEYCODE = 32;\nconst DEL_KEYCODE = 46;\nconst CONTROL_KEYCODES_UPPER_BORDER = 46;\nconst OTHER_CONTROL_KEYS = new Set([224, 91, 93]);\n\n@Directive({\n selector: '[madNumericField]',\n host: {\n '[class.text-right]': 'textAlign === \"right\"',\n '(change)': 'onChange(getValueForFormControl())',\n '(input)': 'onChange(getValueForFormControl())',\n '(blur)': 'onTouched()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumericFieldDirective), // eslint-disable-line\n multi: true,\n },\n ],\n})\nexport class NumericFieldDirective implements OnInit, OnDestroy, AfterViewChecked, ControlValueAccessor {\n @Input('textAlign') textAlign: 'right' | 'left' = 'right';\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'right';\n @Output('numericValueChange') numericValueChanged = new EventEmitter<number>();\n\n private displayValue = '';\n private originalValue = NaN;\n private _numericValue: number;\n private inputChangeListener: () => void;\n private keyupListener: () => void;\n private keydownListener: () => void;\n\n @Input('numericValue')\n set numericValue(value: number) {\n if (this._numericValue !== value && !(isNaN(this._numericValue) && (isNaN(value) || value === null))) {\n this.originalValue = value;\n // Don't roundOrTruncate if value was set to empty otherwise input value will be set to 0 instead of empty\n // which happens when an input is being reset\n this._numericValue = value === null || value === undefined ? value : this.roundOrTruncate(value); // eslint-disable-line\n this.handleInputChanged();\n }\n }\n\n private unitSpan: HTMLSpanElement;\n private textSpan: HTMLSpanElement;\n\n constructor(private renderer: Renderer2, private inputEl: ElementRef, private numberFormatService: NumberFormatService) {}\n\n /* Control Values Accessor Stuff below */\n // eslint-disable-next-line\n onChange: any = () => {};\n // eslint-disable-next-line\n onTouched: any = () => {};\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(): void {\n // Dont need to implement since its just a directive\n }\n\n writeValue(value: number): void {\n this.numericValue = value;\n }\n\n ngOnInit(): void {\n /* needs to be parsed as number explicitly as it comes as string from user input */\n this.decimalPlaces = parseInt(this.decimalPlaces.toString(), 10);\n\n this.inputChangeListener = this.renderer.listen(this.inputEl.nativeElement, 'blur', event => {\n this.formatInput(event.target, true);\n });\n\n this.keyupListener = this.renderer.listen(this.inputEl.nativeElement, 'keyup', event => {\n if (event.keyCode === BACK_KEYCODE || (event.keyCode >= CONTROL_KEYCODES_UPPER_BORDER && !OTHER_CONTROL_KEYS.has(event.keyCode))) {\n this.formatInput(event.target, false);\n }\n });\n\n this.keydownListener = this.renderer.listen(this.inputEl.nativeElement, 'keydown', event => {\n const value: string = event.target.value;\n if (\n this.numberFormatService.allowedKeys.includes(event.key) ||\n (event.keyCode <= CONTROL_KEYCODES_UPPER_BORDER && event.keyCode > 0 && event.keyCode !== SPACE_KEYCODE) ||\n event.metaKey ||\n event.ctrlKey ||\n event.altKey\n ) {\n /* allow negative sign only as first character and none exists outside of text selection */\n const indexNegativeSign = value.indexOf(NumberFormatService.NEGATIVE);\n if (\n event.key === NumberFormatService.NEGATIVE &&\n (event.target.selectionStart > 0 || indexNegativeSign > -1) &&\n (event.target.selectionStart === event.target.selectionEnd ||\n !(indexNegativeSign >= event.target.selectionStart && indexNegativeSign <= event.target.selectionEnd))\n ) {\n return false;\n }\n\n /* no duplicate decimal separators */\n const indexDecimalSep = value.indexOf(this.numberFormatService.decimalSeparator);\n if (\n event.key === this.numberFormatService.decimalSeparator &&\n (indexDecimalSep > -1 || this.decimalPlaces === 0) &&\n (event.target.selectionStart === event.target.selectionEnd ||\n !(indexDecimalSep >= event.target.selectionStart && indexDecimalSep <= event.target.selectionEnd))\n ) {\n return false;\n }\n\n /* prevent too many decimal places */\n if (\n NumberFormatService.NUMBERS.includes(event.key) &&\n indexDecimalSep > -1 &&\n indexDecimalSep < event.target.selectionStart &&\n event.target.selectionStart === event.target.selectionEnd &&\n value.length > indexDecimalSep + this.decimalPlaces\n ) {\n return false;\n }\n\n /* when deleting thousand separator, remove the digit before or after it */\n const cursorStart = event.target.selectionStart;\n\n if (cursorStart === event.target.selectionEnd) {\n if (event.keyCode === BACK_KEYCODE && value.substr(cursorStart - 1, 1) === this.numberFormatService.groupingSeparator) {\n event.target.value = value.substring(0, cursorStart - 2) + value.substring(cursorStart - 1, value.length);\n event.target.selectionStart = event.target.selectionEnd = cursorStart - 1;\n return false;\n } else if (event.keyCode === DEL_KEYCODE && value.substr(cursorStart, 1) === this.numberFormatService.groupingSeparator) {\n event.target.value = value.substring(0, cursorStart + 1) + value.substring(cursorStart + 2, value.length);\n event.target.selectionStart = event.target.selectionEnd = cursorStart + 1;\n return false;\n }\n }\n this.originalValue = NaN;\n } else {\n return false;\n }\n return true;\n });\n }\n\n ngOnDestroy(): void {\n this.detachListener();\n }\n\n ngAfterViewChecked(): void {\n this.injectUnitSymbol();\n }\n\n handleInputChanged(): void {\n // Call in set timeout to avoid Expression has changed after it has been checked error.\n // Sometimes the value changes because we cut off decimal places\n setTimeout(() => {\n this.updateInput(\n this.numberFormatService.format(this._numericValue, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting: false,\n autofillDecimals: this.autofillDecimals,\n }),\n );\n }, 1);\n }\n\n formatInput(element: HTMLInputElement, finalFormatting: boolean): void {\n const cursorPos = element.selectionStart;\n const length = element.value.length;\n const setCursor = this.displayValue !== element.value;\n const textFormatted = this.numberFormatService.formatNumber(element.value, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting,\n autofillDecimals: this.autofillDecimals,\n });\n\n // special handling to move unit symbol along with display value\n if (this.textAlign === 'left' && this.unitPosition === 'right') {\n const inputStyles = window.getComputedStyle(this.inputEl.nativeElement.parentElement, null);\n this.unitSpan.style.position = 'absolute';\n this.unitSpan.style.marginTop = inputStyles.getPropertyValue('border-top-width');\n this.unitSpan.style.paddingTop = inputStyles.getPropertyValue('padding-top');\n this.unitSpan.style.paddingBottom = inputStyles.getPropertyValue('padding-bottom');\n\n if (!this.textSpan) {\n this.textSpan = document.createElement('span');\n document.body.appendChild(this.textSpan);\n this.textSpan.style.font = inputStyles.getPropertyValue('font');\n this.textSpan.style.fontSize = inputStyles.getPropertyValue('font-size');\n this.textSpan.style.height = 'auto';\n this.textSpan.style.width = 'auto';\n this.textSpan.style.position = 'absolute';\n this.textSpan.style.top = '0';\n this.textSpan.style.whiteSpace = 'no-wrap';\n this.textSpan.style.visibility = 'hidden';\n }\n this.textSpan.innerHTML = textFormatted;\n const width = Math.min(this.inputEl.nativeElement.clientWidth - this.unitSpan.clientWidth, Math.ceil(this.textSpan.clientWidth));\n this.unitSpan.style.left = width + 'px';\n }\n\n this.updateInput(textFormatted);\n if (setCursor) {\n element.selectionStart = element.selectionEnd = Math.max(cursorPos + element.value.length - length, 0);\n }\n }\n\n updateInput(value: string): void {\n this.displayValue = value;\n this.inputEl.nativeElement.value = value;\n this._numericValue = parseFloat(\n this.numberFormatService.strip(value, { decimalPlaces: this.decimalPlaces }).replace(this.numberFormatService.decimalSeparator, '.'),\n );\n if (this._numericValue !== this.roundOrTruncate(this.originalValue)) {\n this.originalValue = this._numericValue;\n this.numericValueChanged.emit(this._numericValue);\n }\n }\n\n getValueForFormControl(): number | undefined {\n this.formatInput(this.inputEl.nativeElement, false);\n if (isNaN(this._numericValue)) {\n // Return undefined instead of NaN to support the default required validator.\n return undefined; // eslint-disable-line\n }\n return this._numericValue;\n }\n\n private injectUnitSymbol(): void {\n // Need to inject the unit symbol when the input element width is set to its actual value,\n // otherwise the icon wont show in the correct position\n if (!!this.unit && !this.unitSpan && this.inputEl.nativeElement.offsetWidth !== 0) {\n // Get the input wrapper and apply necessary styles\n const inputWrapper = this.inputEl.nativeElement.parentNode.parentNode;\n\n // Create the span with unit symbol and apply necessary styles\n this.unitSpan = this.renderer.createElement('span');\n\n if (this.unitPosition === 'left') {\n this.renderer.setAttribute(this.unitSpan, 'matPrefix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-right', '5px');\n this.renderer.insertBefore(inputWrapper, this.unitSpan, inputWrapper.children[0]);\n } else {\n this.renderer.setAttribute(this.unitSpan, 'matSuffix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-left', '5px');\n this.renderer.appendChild(inputWrapper, this.unitSpan);\n }\n }\n\n // do not display unit symbol if the unit should move along display value\n if (!!this.unitSpan && this.textAlign === 'left' && this.unitPosition === 'right') {\n if (NumberFormatService.valueIsSet(this.displayValue)) {\n this.unitSpan.style.display = 'unset';\n } else {\n this.unitSpan.style.display = 'none';\n }\n }\n // always reset unit symbol\n if (!!this.unitSpan) {\n this.unitSpan.textContent = this.unit;\n }\n }\n\n private detachListener(): void {\n if (this.inputChangeListener) {\n this.inputChangeListener();\n delete this.inputChangeListener;\n }\n if (this.keydownListener) {\n this.keydownListener();\n delete this.keydownListener;\n }\n if (this.keyupListener) {\n this.keyupListener();\n delete this.keyupListener;\n }\n }\n\n private roundOrTruncate(value: number): number {\n const method = this.roundValue ? 'round' : value < 0 ? 'ceil' : 'floor';\n return Math[method](value * Math.pow(10, this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NumericFieldDirective } from './numeric-field.directive';\nimport { NumberFormatService } from './number-format.service';\n\n@NgModule({\n providers: [NumberFormatService],\n declarations: [NumericFieldDirective],\n exports: [NumericFieldDirective],\n})\nexport class NumericFieldModule {\n static forRoot(): ModuleWithProviders<NumericFieldModule> {\n return {\n ngModule: NumericFieldModule,\n providers: [NumberFormatService],\n };\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'mad-card',\n templateUrl: './card.component.html',\n animations: [\n trigger('collapseExpandAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0, overflow: 'hidden' }),\n animate(\n '100ms',\n style({\n opacity: 1,\n height: '*',\n }),\n ),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '*', overflow: 'hidden' }),\n animate(\n '100ms',\n style({\n opacity: 0,\n height: 0,\n }),\n ),\n ]),\n ]),\n trigger('rotateIcon', [\n state('true', style({ transform: 'rotate(0)' })),\n state('false', style({ transform: 'rotate(180deg)' })),\n transition('true => false', animate('100ms ease-out')),\n transition('false => true', animate('100ms ease-in')),\n ]),\n ],\n styleUrls: ['./card.component.css'],\n})\nexport class CardComponent {\n @Input() cancelDisabled = false;\n @Input() cancelText = 'NOT SET';\n @Input() readonly = true;\n @Input() editText = 'NOT SET';\n @Input() expandable = true;\n @Input() expanded = true;\n @Input() saveDisabled = false;\n @Input() saveText = 'NOT SET';\n @Input() title: string;\n @Input() editMode = false;\n @Input() additionalActionIcon: string;\n @Input() additionalActionText = '';\n @Output() edit = new EventEmitter();\n @Output() cancel = new EventEmitter();\n @Output() save = new EventEmitter();\n @Output() additionalAction = new EventEmitter();\n\n onCancel(): void {\n this.cancel.emit(undefined);\n }\n\n onEdit(): void {\n this.edit.emit(undefined);\n this.expanded = true;\n }\n\n onSave(): void {\n this.save.emit(undefined);\n }\n\n toggleCollapse(): void {\n this.expanded = !this.expanded;\n }\n\n additionalActionClicked(): void {\n this.additionalAction.emit(undefined);\n }\n}\n","import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\n\n@Directive({\n selector: '[madThrottleClick]',\n})\nexport class ThrottleClickDirective implements OnInit, OnDestroy {\n @Input() throttleTime = 300;\n @Output() throttleClick = new EventEmitter();\n private clicks = new Subject();\n private subscription: Subscription;\n\n @HostListener('click', ['$event'])\n clickEvent(event: any): void {\n event.preventDefault();\n event.stopPropagation();\n this.clicks.next(event);\n }\n\n ngOnInit(): void {\n this.subscription = this.clicks.pipe(throttleTime(this.throttleTime)).subscribe(e => this.throttleClick.emit(e));\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThrottleClickDirective } from './throttle-click.directive';\n\n@NgModule({\n declarations: [ThrottleClickDirective],\n imports: [CommonModule],\n exports: [ThrottleClickDirective],\n})\nexport class ThrottleClickModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CardComponent } from './card.component';\nimport { ButtonModule } from '../button/button.module';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ThrottleClickModule } from '../throttle-click/throttle-click.module';\n\n@NgModule({\n declarations: [CardComponent],\n imports: [CommonModule, MatCardModule, MatIconModule, ButtonModule, MatButtonModule, ThrottleClickModule],\n exports: [CardComponent],\n})\nexport class CardModule {}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core';\n\nexport interface QuickListItem {\n id: string;\n}\n\n@Component({\n selector: 'mad-base-quick-list',\n template: '',\n styleUrls: [],\n})\nexport class BaseQuickListComponent<T> implements OnInit, AfterViewInit {\n @Input() allItems = [] as T[];\n @Input() addLabel = 'NOT SET';\n @Input() addPossible = true;\n @Input() blankItem = {} as any;\n @Input() readonly: boolean;\n @Input() maxItems: number;\n @Input() minItems: number;\n\n @Output() added = new EventEmitter<T>();\n @Output() removed = new EventEmitter<T>();\n @ContentChild(TemplateRef) itemTemplate: TemplateRef<any>;\n @ViewChildren('row') itemRows: QueryList<ElementRef>;\n\n rowCountFocus: number;\n addEventFunction: Function;\n\n constructor(public changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.addEventFunction = this.addItem.bind(this);\n if (this.minItems) {\n for (let n = this.allItems.length; n < this.minItems; n++) {\n this.interalAddItem();\n }\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this.setFocusOnAdd(), 1);\n }\n\n addItem(): void {\n const newItem = this.interalAddItem();\n if (!!newItem) {\n this.added.emit(newItem);\n }\n }\n\n removeItem(item: T): void {\n if (this.isDeleteAllowed()) {\n this.allItems.splice(this.allItems.indexOf(item), 1);\n this.removed.emit(item);\n }\n }\n\n setFocusOnAdd(): void {\n this.rowCountFocus = this.itemRows.length;\n this.itemRows.changes.subscribe((els: QueryList<ElementRef>) => {\n if (els.length > this.rowCountFocus && !!els.last) {\n const firstFocusable = els.last.nativeElement.querySelector(\"button, a, input, select, textarea, [tabindex]:not([tabindex='-1'])\");\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n this.rowCountFocus = els.length;\n });\n }\n\n isAddAllowed(): boolean {\n return this.addPossible && (!this.maxItems || this.allItems.length < this.maxItems);\n }\n\n isDeleteAllowed(): boolean {\n return !this.minItems || this.allItems.length > this.minItems;\n }\n\n private interalAddItem(): T {\n if (this.isAddAllowed()) {\n const newItem = { ...this.blankItem };\n // creates ids in the form of \"n5kdz1pljl8\"\n newItem.id = Math.random()\n .toString(36)\n .substring(2);\n this.allItems.push(newItem);\n this.changeDetectorRef.detectChanges();\n return newItem;\n }\n return null;\n }\n}\n","// Based on https://github.com/porscheinformatik/clarity-addons/blob/master/src/clr-addons/generic-quick-list/generic-quick-list.ts\n\nimport { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from './base-quick-list.component';\n\n@Component({\n selector: 'mad-quick-list',\n templateUrl: './quick-list.component.html',\n styleUrls: [],\n})\nexport class QuickListComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(public changeDetectorRef: ChangeDetectorRef) {\n super(changeDetectorRef);\n }\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from '../base-quick-list.component';\n\n@Component({\n selector: 'mad-quick-list-compact',\n templateUrl: './quick-list-compact.component.html',\n styleUrls: [],\n})\nexport class QuickListCompactComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(public changeDetectorRef: ChangeDetectorRef) {\n super(changeDetectorRef);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { QuickListComponent } from './quick-list.component';\nimport { ButtonModule } from '../button/button.module';\nimport { BaseQuickListComponent } from './base-quick-list.component';\nimport { QuickListCompactComponent } from './quick-list-compact/quick-list-compact.component';\n\n@NgModule({\n declarations: [QuickListComponent, BaseQuickListComponent, QuickListCompactComponent],\n imports: [CommonModule, MatButtonModule, MatIconModule, ButtonModule],\n exports: [QuickListComponent, QuickListCompactComponent, BaseQuickListComponent],\n})\nexport class QuickListModule {}\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { ColumnHeader } from './column-header';\nimport { TableAction } from './table-action';\n\n@Component({\n selector: 'mad-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n})\nexport class TableComponent implements OnInit, AfterViewInit {\n @Input() columns: ColumnHeader[] = [];\n @Input() filterLabel = 'NOT SET';\n @Input() filterPlaceholder = 'NOT SET';\n @Input() noDataText: string;\n @Input() pageSizeOptions = [5, 10, 15];\n @Input() defaultPageSize = this.pageSizeOptions?.[0] || 10;\n @Input() rowActions: TableAction[] = [];\n @Input() tableActions: TableAction[] = [];\n\n @Output() tableAction = new EventEmitter<TableAction>();\n @Output() rowAction = new EventEmitter<TableAction>();\n @Output() sortEvent = new EventEmitter<Sort>();\n\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n readonly ACTION_COLUMN_NAME = '__action__';\n dataSource: MatTableDataSource<any[]>;\n columnNames: string[];\n isRowClickable: boolean;\n defaultAction: TableAction;\n isFilterEnabled = false;\n isPaginationEnabled = false;\n\n @Input() set displayedData(data: any[]) {\n if (!this.dataSource) {\n this.dataSource = new MatTableDataSource<any>(data);\n } else {\n this.dataSource.data = data;\n }\n }\n\n @Input() set paginationEnabled(isPaginationEnabled: boolean) {\n this.isPaginationEnabled = isPaginationEnabled;\n // eslint-disable-next-line\n const pageSize = this.isPaginationEnabled ? this.defaultPageSize : Number.MAX_VALUE;\n if (this.dataSource.paginator) {\n this.dataSource.paginator._changePageSize(pageSize);\n }\n }\n\n @Input()\n set filterEnabled(isFilterEnabled: boolean) {\n this.isFilterEnabled = isFilterEnabled;\n this.setFilterValue(undefined);\n }\n\n ngOnInit(): void {\n this.columnNames = this.columns.map(column => column.label);\n this.isRowClickable = this.rowActions.length > 0;\n if (this.isRowClickable) {\n this.columnNames.unshift(this.ACTION_COLUMN_NAME);\n this.defaultAction = this.rowActions[0];\n }\n }\n\n ngAfterViewInit(): void {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n // set custom filter predicate to enable search for multiple search strings:\n // e.g. \"one two three\"\n this.dataSource.filterPredicate = (data: any, filter: string): any =>\n !filter || filter.split(/\\s+/).every(term => !!Object.keys(data).find(key => data[key].includes(term)));\n }\n\n onFilter(value: string): void {\n this.setFilterValue(value);\n }\n\n onRowEvent(event: MouseEvent, row: any, action = this.defaultAction): void {\n if (!!action && !this.isClickOnRowMenuIcon(event)) {\n this.rowAction.emit({ ...action, outputRow: row });\n }\n }\n\n onSortingEvent(sortingParams: Sort): void {\n this.sortEvent.emit(sortingParams);\n }\n\n onTableAction(tableAction: TableAction): void {\n if (!!tableAction) {\n this.tableAction.emit(tableAction);\n }\n }\n\n private setFilterValue(value: string): void {\n this.dataSource.filter = value?.trim().toLowerCase();\n }\n\n private isClickOnRowMenuIcon(event: MouseEvent): boolean {\n return (event?.target as HTMLElement)?.classList.contains('mat-icon');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { TableComponent } from './table.component';\nimport { ButtonModule } from '../button/button.module';\n\n@NgModule({\n declarations: [TableComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n ButtonModule,\n ],\n exports: [TableComponent],\n})\nexport class TableModule {}\n","export class DataTableActionType {\n static SINGLE = 'SINGLE';\n static BATCH = 'BATCH';\n static NONE = 'NONE';\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DataTableColumn } from '../data-table-column';\nimport { DataTableColumnDefinition, DataTableColumnDefinitionChange, DataTableDialogData } from '../data-table-column-definition';\nimport { CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'mad-data-table-columns-modal.component',\n templateUrl: './data-table-columns-modal.component.html',\n styleUrls: ['./data-table-columns-modal.component.scss'],\n})\nexport class DataTableColumnsModalComponent implements OnInit {\n definition: DataTableColumnDefinition;\n searchFilter: string;\n selectedColumns: DataTableColumn[] = [];\n availableColumns: DataTableColumn[] = [];\n filteredAvailableColumns: DataTableColumn[] = [];\n\n constructor(\n public dialogRef: MatDialogRef<DataTableColumnsModalComponent>,\n @Inject(MAT_DIALOG_DATA)\n public data: DataTableDialogData,\n ) {}\n\n ngOnInit(): void {\n this.definition = this.data.definition;\n for (const column of this.data.allColumns) {\n const columnId = column.id;\n const selectedColumnIds: string[] = this.definition.displayedColumns.map(col => col.id);\n if (selectedColumnIds.includes(columnId)) {\n this.selectedColumns.push(column);\n } else {\n this.availableColumns.push(column);\n }\n }\n this.clearFilterValue();\n }\n\n onDrop(event: CdkDragDrop<DataTableColumn[]>): void {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n const itemIndex = this.findMatchingItemIndex(event.previousContainer, event.item);\n transferArrayItem(event.previousContainer.data, event.container.data, itemIndex, event.currentIndex);\n this.clearFilterValue();\n this.availableColumns.sort((a, b) => a.label.localeCompare(b.label));\n }\n }\n\n onSave(): void {\n this.definition.displayedColumns = this.selectedColumns;\n const saveChange: DataTableColumnDefinitionChange = {\n action: 'SAVE',\n definition: this.definition,\n };\n this.dialogRef.close(saveChange);\n }\n\n onDelete(): void {\n const deleteChange: DataTableColumnDefinitionChange = {\n action: 'DELETE',\n definition: this.definition,\n };\n this.dialogRef.close(deleteChange);\n }\n\n onCancel(): void {\n this.dialogRef.close();\n }\n\n updateFilterValue(): void {\n if (this.searchFilter?.length > 0) {\n this.filteredAvailableColumns = this.availableColumns.filter(c => c.label.toLowerCase().includes(this.searchFilter.toLowerCase()));\n } else {\n this.filteredAvailableColumns = [...this.availableColumns];\n }\n }\n\n findMatchingItemIndex(previousContainer: CdkDropList, item: CdkDrag): number {\n const itemId = item.element.nativeElement.id;\n const previousContainerItems = [...previousContainer.data] as DataTableColumn[];\n if (previousContainerItems?.length < 1) {\n return 0;\n }\n for (let itemIndex = 0; itemIndex < previousContainerItems.length; itemIndex++) {\n if (previousContainerItems[itemIndex].id === itemId) {\n return itemIndex;\n }\n }\n return 0;\n }\n\n clearFilterValue(): void {\n this.searchFilter = '';\n this.filteredAvailableColumns = [...this.availableColumns];\n }\n}\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { DataTableColumn } from './data-table-column';\nimport { DataTableAction } from './data-table-action';\nimport { DataTableActionType } from './data-table-action-type';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { v4 as uuidV4 } from 'uuid';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DataTableColumnsModalComponent } from './data-table-columns-modal/data-table-columns-modal.component';\nimport { DataTableColumnDefinition, DataTableColumnDefinitionChange, DataTableDialogData } from './data-table-column-definition';\n\n@Component({\n selector: 'mad-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent implements OnInit, AfterViewInit {\n // Translations\n @Input() filterLabel = 'Filter';\n @Input() filterPlaceholder = '';\n @Input() filterColumnsLabel = 'Filter';\n @Input() filterColumnsPlaceHolder = 'Filter available columns';\n @Input() noDataText = 'No matching data found';\n @Input() columnSettingsModalTitleLabel = 'Column settings';\n @Input() selectedLabel = 'Selected columns';\n @Input() availableLabel = 'Available columns';\n @Input() saveLabel = 'Save';\n @Input() deleteLabel = 'Delete';\n @Input() cancelLabel = 'Cancel';\n @Input() infoTextLabel = 'Drag and drop a column to select or reorder it.';\n @Input() tableClass: string;\n\n @Input() pageSizeOptions = [5, 10, 15];\n @Input() externalFilter: any;\n\n @Input() actions: DataTableAction[] = [];\n @Input() idGenerator: any;\n @Input() deleteDefinitionAllowed = false;\n\n @Input() useAsync = false;\n\n @Input() set displayedColumns(cols: DataTableColumn[]) {\n if (!this.displayedColumnDefinition) {\n this.columns = cols ? [...cols] : [];\n this.columnIds = this.columns.map(column => column.id);\n this.columnIds.unshift(this.ACTION_COLUMN_NAME);\n }\n }\n\n @Input() set displayedColumnDefinition(def: DataTableColumnDefinition) {\n this.selectedColumnDefinion = def;\n this.columns = def.displayedColumns;\n this.columnIds = this.columns.map(column => column.id);\n this.columnIds.unshift(this.ACTION_COLUMN_NAME);\n }\n\n @Input() set tableData(data: any[]) {\n if (!this.dataSource) {\n this.dataSource = new MatTableDataSource<any>(data);\n }\n this.createDataMapsAndSetDisplayedDataSourceData(data);\n }\n\n @Input() set page(page: PageEvent) {\n this.paginatorPageIndex = page.pageIndex;\n this.paginatorPageSize = page.pageSize;\n this.paginatorLength = page.length;\n }\n\n @Input() set columnDefinitions(definitions: DataTableColumnDefinition[]) {\n this.editableColumnDefinitions = [];\n this.viewableColumnDefinitions = [];\n this.allColumnDefinitions = [...definitions];\n for (const definition of definitions) {\n if (definition.editable) {\n this.editableColumnDefinitions.push(definition);\n }\n if (definition.displayedColumns?.length > 0) {\n this.viewableColumnDefinitions.push(definition);\n }\n }\n }\n\n @Input() set loading(isLoading: boolean) {\n this.isLoading = isLoading;\n }\n\n @Input() set defaultPageSize(defaultSize: number) {\n this.paginatorPageSize = defaultSize;\n }\n\n @Input() set externalPaginator(paginator: any) {\n this.extPaginator = paginator;\n }\n\n @Input() set paginationEnabled(isPaginationEnabled: boolean) {\n this.isPaginationEnabled = isPaginationEnabled;\n this.unsetPageSizeIfNecessary();\n }\n\n @Input() set allColumns(allColumns: DataTableColumn[]) {\n this.allAvailableColumns = allColumns;\n if (allColumns && this.showColumnModal) {\n this.openColumnModal();\n }\n }\n\n @Input()\n set filterEnabled(isFilterEnabled: boolean) {\n this.isFilterEnabled = !this.useAsync ? isFilterEnabled : false;\n this.setFilterValue(undefined);\n }\n\n @Input()\n set forceMode(mode: string) {\n if (mode === this.SINGLE || mode === this.BATCH || mode === this.NONE) {\n this._forceMode = mode;\n this.mode = mode;\n this.setActions();\n }\n }\n\n @Output() sortEvent = new EventEmitter<Sort>();\n @Output() actionEvent = new EventEmitter<DataTableAction>();\n @Output() pageEvent = new EventEmitter<PageEvent>();\n @Output() allColumnsEvent = new EventEmitter<void>();\n @Output() columnDefinitionChangeEvent = new EventEmitter<DataTableColumnDefinitionChange>();\n @Output() viewDefinitionChangeEvent = new EventEmitter<DataTableColumnDefinition>();\n\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n readonly ACTION_COLUMN_NAME = '__action__';\n readonly SINGLE = DataTableActionType.SINGLE;\n readonly BATCH = DataTableActionType.BATCH;\n readonly NONE = DataTableActionType.NONE;\n\n tableActions: DataTableAction[] = [];\n rowActions: DataTableAction[] = [];\n columns: DataTableColumn[] = [];\n allSelected = false;\n selected: [];\n _forceMode: string;\n displayedDataMap = new Map<string, any>();\n actualDataMap = new Map<string, any>();\n dataSource: MatTableDataSource<any[]>;\n selectionModel = new SelectionModel<string>(true);\n columnIds: string[];\n allColumnDefinitions: DataTableColumnDefinition[] = [];\n editableColumnDefinitions: DataTableColumnDefinition[];\n viewableColumnDefinitions: DataTableColumnDefinition[];\n selectedColumnDefinion: DataTableColumnDefinition;\n allAvailableColumns: DataTableColumn[];\n selectedDefinition: DataTableColumnDefinition;\n defaultAction: DataTableAction;\n isFilterEnabled = false;\n isPaginationEnabled = false;\n mode = this.NONE;\n isRowClickable = false;\n showColumnModal = false;\n isLoading = false;\n extPaginator: MatPaginator;\n\n paginatorLength = 0;\n paginatorPageIndex = 0;\n paginatorPageSize = 50;\n\n constructor(private matDialog: MatDialog) {}\n\n static compare(a: Record<string, any>, b: Record<string, any>, sort: Sort): number {\n const x = a[sort.active];\n const y = b[sort.active];\n const ascending = sort.direction === 'asc';\n switch (typeof x) {\n case 'number':\n return DataTableComponent.compareNumber(x, y, ascending);\n case 'string':\n return DataTableComponent.compareString(x, y, ascending);\n case 'boolean':\n return DataTableComponent.compareBoolean(x, y, ascending);\n default:\n // cannot compare -> return equal\n return 0;\n }\n }\n\n static compareNumber(x: number, y: number, ascending: boolean): number {\n return ascending ? x - y : y - x;\n }\n\n static compareString(x: string, y: string, ascending: boolean): number {\n return ascending ? x.localeCompare(y) : y.localeCompare(x);\n }\n\n static compareBoolean(x: boolean, y: boolean, ascending: boolean): number {\n if (x === y) {\n return 0;\n }\n if (ascending) {\n // true first\n return x ? -1 : 1;\n } else {\n // false first\n return x ? 1 : -1;\n }\n }\n\n static transformData(value: any, transformer: any, transformerParams: any): any {\n if (!transformer || !(transformer instanceof Function)) {\n return value;\n }\n return transformer(value, transformerParams);\n }\n\n static generateRowId(): string {\n return uuidV4();\n }\n\n static isClickOnRowMenuIcon(event: MouseEvent): boolean {\n return (event?.target as HTMLElement)?.classList.contains('mat-icon');\n }\n\n ngOnInit(): void {\n this.mode = this.getTableMode();\n this.setActions();\n if (this.mode !== this.NONE) {\n this.isRowClickable = true;\n this.defaultAction = this.rowActions[0];\n }\n }\n\n ngAfterViewInit(): void {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n }\n\n onColumnSettings(definition?: DataTableColumnDefinition): void {\n this.showColumnModal = true;\n this.selectedDefinition = definition ? definition : this.allColumnDefinitions[0];\n if (this.allAvailableColumns) {\n this.openColumnModal();\n } else {\n // if no complete definitions have been loaded yet send an event so the app can load it\n this.allColumnsEvent.emit();\n }\n }\n\n onViewDefinition(definition: DataTableColumnDefinition): void {\n this.selectedDefinition = definition;\n this.viewDefinitionChangeEvent.emit(definition);\n }\n\n isCurrentDefinition(definition: DataTableColumnDefinition): boolean {\n return this.selectedDefinition && this.selectedDefinition.id === definition.id;\n }\n\n get selectedCount(): number {\n return this.selectionModel?.selected ? this.selectionModel.selected.length : 0;\n }\n\n get rowCount(): number {\n return this.getAllDataSourceRowsOfCurrentPage() ? this.getAllDataSourceRowsOfCurrentPage().length : 0;\n }\n\n getAllDataSourceRowsOfCurrentPage(): any[] {\n return this.dataSource?._pageData(this.dataSource.data);\n }\n\n getSelectedCount(actionType: string): string {\n const count = this.selectedCount;\n if (actionType !== this.BATCH || count < 2) {\n return '';\n }\n return ' (' + count + ')';\n }\n\n isDisabled(actionType: string): boolean {\n switch (actionType) {\n case this.SINGLE:\n return this.selectedCount !== 1;\n case this.BATCH:\n return this.selectedCount < 1;\n default:\n return false;\n }\n }\n\n onToggleSelectAll(): void {\n // clear all selection first\n this.selectionModel.clear();\n // toggle all checkbox\n this.allSelected = !this.allSelected;\n if (this.allSelected) {\n // select all rows of the current page\n this.getAllDataSourceRowsOfCurrentPage().forEach(row => {\n this.selectionModel.select('' + row.rowId);\n });\n }\n }\n\n isSelected(rowId: string): boolean {\n return this.selectionModel.isSelected(rowId);\n }\n\n setFilterValue(value: string): void {\n this.dataSource.filter = value?.trim().toLowerCase();\n }\n\n onRowCheckbox(event: MouseEvent, row: any): void {\n event.stopPropagation(); // no click event on row\n this.selectionModel.toggle(row.rowId);\n }\n\n onRowEvent(event: MouseEvent, row: any, action = this.defaultAction): void {\n switch (this.mode) {\n case this.BATCH:\n this.onRowCheckbox(event, row);\n break;\n case this.SINGLE:\n // emit the default action if the row (not the icon!) was clicked\n if (!!action && !DataTableComponent.isClickOnRowMenuIcon(event)) {\n const selected = [];\n // if ID-generator is provided, return the ID, else return the ACTUAL data\n selected.push(this.idGenerator ? row.rowId : this.actualDataMap.get(row.rowId));\n this.emitTableAction(action, selected);\n }\n break;\n default:\n // do nothing if mode is NONE (or null)\n return;\n }\n }\n\n onSortingEvent(sort: Sort): void {\n if (this.useAsync) {\n this.sortEvent.emit(sort);\n } else {\n this.internalSort(sort);\n }\n }\n\n onPageEvent(event: PageEvent): void {\n if (this.useAsync) {\n this.pageEvent.emit(event);\n }\n }\n\n onTableAction(tableAction: DataTableAction): void {\n if (!!tableAction) {\n const selection: any[] = [];\n for (const selected of this.selectionModel.selected) {\n selection.push(this.idGenerator ? selected : this.actualDataMap.get(selected));\n }\n tableAction.selected = selection;\n this.actionEvent.emit(tableAction);\n }\n }\n\n private emitTableAction(action: DataTableAction, selected: any[]): void {\n const emitAction = { ...action };\n if (action.type !== this.NONE) {\n emitAction.selected = [...selected];\n }\n this.actionEvent.emit(emitAction);\n }\n\n private generateDisplayedDataElement(rowId: string, actualDataElement: any): any {\n const displayedDataElement: { [key: string]: any } = {};\n displayedDataElement.rowId = rowId;\n for (const column of this.columns) {\n const actualValue = actualDataElement[column.dataPropertyName];\n displayedDataElement[column.dataPropertyName] = DataTableComponent.transformData(\n actualValue,\n column.transformer,\n column.transformerParams,\n );\n }\n return displayedDataElement;\n }\n\n private internalSort(sort: Sort) {\n const sortedData = [...this.dataSource.data].sort((a, b) => DataTableComponent.compare(a, b, sort));\n this.dataSource.data = [...sortedData];\n }\n\n private setActions(): void {\n this.rowActions = [];\n this.tableActions = [];\n for (const action of this.actions) {\n if (this.mode !== action.hiddenInMode) {\n switch (action.type) {\n case this.SINGLE:\n if (this.mode === this.SINGLE) {\n this.rowActions.push(action);\n } else {\n this.tableActions.push(action);\n }\n break;\n case this.BATCH:\n if (this.mode !== this.SINGLE) {\n this.tableActions.push(action);\n }\n break;\n default:\n this.tableActions.push(action);\n }\n }\n }\n }\n\n private createDataMapsAndSetDisplayedDataSourceData(data: any[]): void {\n const displayedDataList = [];\n this.actualDataMap.clear();\n this.displayedDataMap.clear();\n if (data?.length > 0) {\n for (const dataEntry of data) {\n const rowId = this.idGenerator ? this.idGenerator(dataEntry) : DataTableComponent.generateRowId();\n this.actualDataMap.set(rowId, dataEntry);\n const displayedDataElement = this.generateDisplayedDataElement(rowId, dataEntry);\n this.displayedDataMap.set(rowId, displayedDataElement);\n displayedDataList.push(displayedDataElement);\n }\n }\n this.dataSource.data = displayedDataList;\n this.unsetPageSizeIfNecessary();\n }\n\n private openColumnModal(): void {\n const dialogData: DataTableDialogData = {\n allColumns: this.allAvailableColumns,\n definition: this.selectedDefinition,\n deleteDefinitionAllowed: this.deleteDefinitionAllowed,\n filterColumnsLabel: this.filterColumnsLabel,\n filterColumnsPlaceHolder: this.filterColumnsPlaceHolder,\n noDataText: this.noDataText,\n titleLabel: this.columnSettingsModalTitleLabel,\n selectedLabel: this.selectedLabel,\n availableLabel: this.availableLabel,\n saveLabel: this.saveLabel,\n deleteLabel: this.deleteLabel,\n cancelLabel: this.cancelLabel,\n infoTextLabel: this.infoTextLabel,\n };\n const dialog = this.matDialog.open(DataTableColumnsModalComponent, { data: dialogData });\n dialog.afterClosed().subscribe(result => {\n // no event on CANCEL\n if (result) {\n this.columnDefinitionChangeEvent.emit(result);\n }\n });\n }\n\n private getTableMode(): string {\n if (this._forceMode) {\n return this._forceMode;\n }\n\n if (!this.actions) {\n return this.NONE;\n }\n const distinctActionTypes = new Set<string>();\n for (const rowAction of this.actions) {\n distinctActionTypes.add(rowAction.type);\n }\n if (distinctActionTypes.has(this.BATCH)) {\n return this.BATCH;\n }\n if (distinctActionTypes.has(this.SINGLE)) {\n return this.SINGLE;\n }\n return this.NONE;\n }\n\n private unsetPageSizeIfNecessary() {\n if (!this.useAsync && !this.isPaginationEnabled) {\n const dataCount = this.dataSource.data ? this.dataSource.data.length : 0;\n this.paginatorPageSize = dataCount;\n this.paginatorLength = dataCount;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { DataTableComponent } from './data-table.component';\nimport { ButtonModule } from '../button/button.module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { DataTableColumnsModalComponent } from './data-table-columns-modal/data-table-columns-modal.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [DataTableComponent, DataTableColumnsModalComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n MatProgressSpinnerModule,\n ButtonModule,\n TranslateModule,\n MatCheckboxModule,\n MatBadgeModule,\n DragDropModule,\n FormsModule,\n ],\n exports: [DataTableComponent, DataTableColumnsModalComponent],\n})\nexport class DataTableModule {}\n","import { CdkStepHeader, STEP_STATE, StepState } from '@angular/cdk/stepper';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'mad-step-header',\n templateUrl: './step-header.component.html',\n styleUrls: ['./step-header.component.scss'],\n inputs: ['color'],\n host: {\n class: 'mad-step-header',\n role: 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepHeaderComponent extends CdkStepHeader implements AfterViewInit, OnDestroy {\n @Input()\n index: number;\n\n @Input()\n label: string;\n\n @Input() state: StepState;\n\n @Input() errorMessage: string;\n\n @Input() selected: boolean;\n\n @Input() active: boolean;\n\n @Input() optional: boolean;\n\n @Input() hasError: boolean;\n\n @Input() completed: boolean;\n\n @Input() closed: boolean;\n\n constructor(private _focusMonitor: FocusMonitor, _elementRef: ElementRef<HTMLElement>) {\n super(_elementRef);\n }\n\n ngAfterViewInit(): void {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy(): void {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n focus(origin?: FocusOrigin, options?: FocusOptions): void {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n getCssForState(): string {\n if (this.state === STEP_STATE.NUMBER && !this.completed && !this.hasError) {\n return 'step-state-neutral'; //initiale state is 'number'\n } else if (this.completed) {\n return 'step-state-complete';\n } else if (this.hasError) {\n return 'step-state-error';\n }\n }\n\n getIcon(): string {\n if (this.completed) {\n return 'check_circle_outline';\n } else if (this.hasError) {\n return 'error_outline';\n }\n return '';\n }\n}\n","import { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\n/**\n * Animations used by the MAD stepper.\n */\nexport const madStepperAnimations: {\n readonly verticalStepTransition: AnimationTriggerMetadata;\n} = {\n verticalStepTransition: trigger('stepTransition', [\n state('previous', style({ height: '0px', visibility: 'hidden' })),\n state('next', style({ height: '0px', visibility: 'hidden' })),\n state('current', style({ height: '*', visibility: 'visible' })),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { CdkStep, CdkStepper, STEP_STATE, StepContentPositionState } from '@angular/cdk/stepper';\nimport { AnimationEvent } from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { StepHeaderComponent } from './step-header/step-header.component';\nimport { madStepperAnimations } from './mad-stepper-animation';\n\n@Component({\n selector: 'mad-step',\n templateUrl: './step.component.html',\n styleUrls: ['./stepper.component.scss'],\n providers: [{ provide: CdkStep, useExisting: StepComponent }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepComponent extends CdkStep implements AfterContentInit, OnDestroy {\n /** Action event for the next button. If not set the StepComponent will handle the step navigation */\n @Output()\n onNext = new EventEmitter<any>();\n\n /** Action event for the done button. If not set the StepComponent will handle the step navigation */\n @Output()\n onDone = new EventEmitter<any>();\n\n /*** Action event when the header is clicked. If not set the StepComponent will handle the step navigation*/\n @Output()\n onHeaderClick = new EventEmitter<any>();\n\n stepClosed = false;\n\n private _isSelected = Subscription.EMPTY;\n\n constructor(@Inject(forwardRef(() => StepperComponent)) private stepper: StepperComponent, private _viewContainerRef: ViewContainerRef) {\n super(stepper);\n }\n\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes\n .pipe(\n switchMap(() =>\n this._stepper.selectionChange.pipe(\n map(event => event.selectedStep === this),\n tap(() => (this.stepClosed = false)),\n startWith(this._stepper.selected === this),\n ),\n ),\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n\n next(markFormAsTouched = true): void {\n this.stepValidation(markFormAsTouched);\n\n if (this.onNext.observers.length <= 0) {\n this.stepper.next();\n }\n this.onNext.emit();\n }\n\n selectAndMarkAsTouched(index: number): void {\n //Mark current selected step as touched before selecting to display errors in the from\n this._stepper.selected?.stepControl?.markAllAsTouched();\n this.stepClosed = false;\n if (this.onHeaderClick.observers.length <= 0) {\n this.select();\n }\n this.onHeaderClick.emit(index);\n }\n\n completeLast(): void {\n this.stepValidation(true);\n this.stepClosed = true;\n\n if (this.onDone.observers.length <= 0) {\n this.stepper.next();\n }\n\n this.onDone.emit();\n }\n\n resetValidations(): void {\n this.hasError = false;\n this.completed = true;\n this.state = STEP_STATE.DONE;\n }\n\n private stepValidation(markFormAsTouched: boolean): void {\n if (markFormAsTouched) {\n this.stepControl?.markAllAsTouched();\n }\n if (this.stepControl?.valid) {\n this.hasError = false;\n this.completed = true;\n this.state = STEP_STATE.DONE;\n } else {\n this.completed = false;\n this.hasError = true;\n this.state = STEP_STATE.ERROR;\n }\n }\n}\n\n@Component({\n selector: 'mad-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n host: {\n '[class.stepper-vertical]': 'true',\n '[attr.aria-orientation]': '\"vertical\"',\n role: 'tablist',\n },\n animations: [madStepperAnimations.verticalStepTransition],\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n providers: [{ provide: CdkStepper, useExisting: StepperComponent }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepperComponent extends CdkStepper implements OnInit, AfterContentInit {\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n @Input()\n nextButtonLabel: string;\n\n @Input()\n doneButtonLabel: string;\n /** Step headers of all steps inside the stepper */\n @ViewChildren(StepHeaderComponent) _stepHeader: QueryList<StepHeaderComponent>;\n\n /** Steps inside the Stepper */\n @ContentChildren(StepComponent, { descendants: true }) _steps: QueryList<StepComponent>;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n steps: QueryList<StepComponent> = new QueryList<StepComponent>();\n\n readonly _animationDone = new Subject<AnimationEvent>();\n\n constructor(\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) _document: any,\n ) {\n super(dir, changeDetectorRef, elementRef, _document);\n this._orientation = 'vertical';\n }\n\n ngOnInit() {\n // Only linear stepper implementation is supported\n super.linear = true;\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n\n this._animationDone\n .pipe(\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n takeUntil(this._destroyed),\n )\n .subscribe(event => {\n if ((event.toState as StepContentPositionState) === 'current') {\n this.animationDone.emit();\n }\n });\n }\n\n /**\n * Method patched to enable the closing of the last step.\n */\n _getAnimationDirection(index: number): StepContentPositionState {\n const closeLastStep = this.selectedIndex === this.steps.length - 1 && this._steps.last?.completed && this._steps.last?.stepClosed;\n if (closeLastStep) {\n return 'next';\n }\n return super._getAnimationDirection(index);\n }\n\n _stepIsNavigable(index: number, step: StepComponent): boolean {\n return step.completed || this.selectedIndex === index || !this.linear;\n }\n}\n","import { StepComponent, StepperComponent } from './stepper.component';\nimport { StepHeaderComponent } from './step-header/step-header.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgModule } from '@angular/core';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { FlexModule } from '@angular/flex-layout';\n\n@NgModule({\n declarations: [StepperComponent, StepHeaderComponent, StepComponent],\n imports: [CommonModule, MatButtonModule, MatIconModule, CdkStepperModule, FlexModule],\n exports: [StepperComponent, StepHeaderComponent, StepComponent],\n})\nexport class StepperModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-header',\n templateUrl: './content-header.component.html',\n styleUrls: ['./content-header.component.scss'],\n})\nexport class ContentHeaderComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container',\n templateUrl: './content-panel-container.component.html',\n styleUrls: ['./content-panel-container.component.scss'],\n})\nexport class ContentPanelContainerComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-content',\n templateUrl: './content-panel-container-content.component.html',\n styleUrls: ['./content-panel-container-content.component.scss'],\n})\nexport class ContentPanelContainerContentComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-footer',\n templateUrl: './content-panel-container-footer.component.html',\n styleUrls: ['./content-panel-container-footer.component.scss'],\n})\nexport class ContentPanelContainerFooterComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-main-container',\n templateUrl: './main-container.component.html',\n styleUrls: ['./main-container.component.scss'],\n})\nexport class MainContainerComponent {}\n","import { ContentHeaderComponent } from './content-header/content-header.component';\nimport { ContentPanelContainerComponent } from './content-panel-container/content-panel-container.component';\nimport { ContentPanelContainerContentComponent } from './content-panel-container-content/content-panel-container-content.component';\nimport { ContentPanelContainerFooterComponent } from './content-panel-container-footer/content-panel-container-footer.component';\nimport { MainContainerComponent } from './main-container/main-container.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [\n ContentHeaderComponent,\n ContentPanelContainerComponent,\n ContentPanelContainerContentComponent,\n ContentPanelContainerFooterComponent,\n MainContainerComponent,\n ],\n imports: [CommonModule],\n exports: [\n ContentHeaderComponent,\n ContentPanelContainerComponent,\n ContentPanelContainerContentComponent,\n ContentPanelContainerFooterComponent,\n MainContainerComponent,\n ],\n})\nexport class ContentPanelModule {}\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatStepper } from '@angular/material/stepper';\n\nexport interface IStep {\n label: string;\n enabled?: boolean;\n subSteps?: IStep[];\n activeSubStep?: IStep;\n}\n\n@Component({\n selector: 'mad-flowbar',\n templateUrl: './flowbar.component.html',\n styleUrls: ['./flowbar.component.scss'],\n})\nexport class FlowbarComponent implements OnInit, AfterViewInit {\n @Input('steps') _steps: IStep[] = [];\n @Input('activeStep') _activeStep: IStep;\n @Output('activeStepChange') _activeStepChange: EventEmitter<IStep> = new EventEmitter<IStep>(true);\n /**\n * Event emitted when a step header is clicked.\n * When defined header navigation has to be implemented programmatically.\n * e.g. {@see changeActiveStepOnHeader}\n */\n @Output('headerClick') _headerClick: EventEmitter<IStep> = new EventEmitter<IStep>(true);\n @ViewChild('stepper') private stepper: MatStepper;\n\n get currentStepLabel(): string {\n return this._activeStep.label;\n }\n\n get currentSubStepLabel(): string {\n return this._activeStep.activeSubStep?.label;\n }\n\n ngOnInit(): void {\n // If no active step is set as input or the active step is not enabled, select the first enabled step\n if (!this._activeStep || !this._activeStep.enabled) {\n this._activeStep = this._steps.find(step => step.enabled);\n if (this._activeStep) {\n // If sub steps exist then set the first non disabled sub step per default\n if (this.activeTabHasSubSteps()) {\n this._activeStep.activeSubStep = this._activeStep.subSteps.find(step => step.enabled);\n }\n this._activeStepChange.emit(this._activeStep);\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.stepper._getIndicatorType = (): any => 'number';\n }\n\n getIndexForActiveStep(): number {\n const selectedIndex = this._steps.indexOf(this._activeStep);\n return selectedIndex === -1 ? 0 : selectedIndex;\n }\n\n changeActiveStep(step: IStep): void {\n const previousIndex = this._steps.indexOf(this._activeStep);\n this._activeStep = step;\n if (this.activeTabHasSubSteps()) {\n if (previousIndex < this._steps.indexOf(this._activeStep)) {\n this._activeStep.activeSubStep = this._activeStep.subSteps[0];\n } else {\n this._activeStep.activeSubStep = this._activeStep.subSteps[this._activeStep.subSteps.length - 1];\n }\n }\n this._activeStepChange.emit(this._activeStep);\n }\n\n changeActiveStepOnHeader(step: IStep): void {\n const stepIndex = this._steps.indexOf(step);\n this._activeStep = step;\n this.stepper.selected = this.stepper._steps.find((_, i) => i === stepIndex);\n }\n\n changeActiveSubStep(subStep: IStep): void {\n this._activeStep.activeSubStep = subStep;\n }\n\n previous(): void {\n if (this.isPreviousAvailable()) {\n // If active step has no sub steps or first sub step is selected -> go to previous main step\n if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {\n const previousEnabledStep = this.findPreviousEnabledStep();\n this.changeActiveStep(previousEnabledStep);\n this.stepper.selectedIndex = this._steps.indexOf(previousEnabledStep);\n } else {\n const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);\n this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex - 1];\n }\n }\n }\n\n next(): void {\n if (this.isNextAvailable()) {\n // If active step has no sub steps or last sub step is selected -> go to next main step\n if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {\n const nextEnabledStep = this.findNextEnabledStep();\n this.changeActiveStep(nextEnabledStep);\n this.stepper.selectedIndex = this._steps.indexOf(nextEnabledStep);\n } else {\n const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);\n this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex + 1];\n }\n }\n }\n\n isPreviousAvailable(): boolean {\n if (this._activeStep) {\n if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {\n const index = this.getCurrentIndex();\n return index > 0 && this.isAnyPreviousStepEnabled(index);\n } else {\n return true;\n }\n }\n return false;\n }\n\n isNextAvailable(): boolean {\n if (this._activeStep) {\n if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {\n const index = this.getCurrentIndex();\n return index < this._steps.length - 1 && this.isAnyFollowingStepEnabled(index);\n } else {\n return true;\n }\n }\n return false;\n }\n\n isLastStep(): boolean {\n if (this.getCurrentIndex() === this._steps.length - 1) {\n if (this.activeTabHasSubSteps()) {\n return this.isLastSubStep();\n } else {\n return true;\n }\n }\n return false;\n }\n\n getCurrentIndex(): number {\n return this._steps.findIndex(value => value === this._activeStep);\n }\n\n getCurrentSubStepIndex(): number {\n return this._activeStep.subSteps.findIndex(value => value === this._activeStep.activeSubStep);\n }\n\n triggerClick(): void {\n const selectedStep = this._steps[this.stepper.selectedIndex];\n this.changeActiveStep(selectedStep);\n }\n\n headerClick(event: any, step: IStep): void {\n event.stopPropagation(); //stop processing current header click event\n this._headerClick.emit(step);\n }\n\n private activeTabHasSubSteps(): boolean {\n return this._activeStep.subSteps && this._activeStep.subSteps.length > 0;\n }\n\n private isFirstSubStep(): boolean {\n return this._activeStep.activeSubStep === this._activeStep.subSteps[0];\n }\n\n private isLastSubStep(): boolean {\n return this._activeStep.activeSubStep === this._activeStep.subSteps[this._activeStep.subSteps.length - 1];\n }\n\n private isAnyPreviousStepEnabled(index: number): boolean {\n // eslint-disable-next-line id-blacklist\n return this._steps.slice(0, index).find(step => step.enabled) !== undefined;\n }\n\n private isAnyFollowingStepEnabled(index: number): boolean {\n // eslint-disable-next-line id-blacklist\n return this._steps.slice(index + 1, this._steps.length).find(step => step.enabled) !== undefined;\n }\n\n private findPreviousEnabledStep(): IStep {\n const index = this.getCurrentIndex();\n return this._steps\n .slice(0, index)\n .reverse()\n .find(step => step.enabled);\n }\n\n private findNextEnabledStep(): IStep {\n const index = this.getCurrentIndex();\n return this._steps.slice(index + 1, this._steps.length).find(step => step.enabled);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FlowbarComponent } from './flowbar.component';\n\n@NgModule({\n declarations: [FlowbarComponent],\n imports: [CommonModule, MatStepperModule],\n exports: [FlowbarComponent],\n})\nexport class FlowbarModule {}\n","import { NgModule } from '@angular/core';\nimport { ToolbarModule } from './toolbar/toolbar.module';\nimport { ReadOnlyFormFieldModule } from './readonly/readonly-form-field.module';\nimport { MaterialActionButtonModule } from './material-action-button/material-action-button.module';\nimport { NumericFieldModule } from './numeric-field/numeric-field.module';\nimport { CardModule } from './card/card.module';\nimport { QuickListModule } from './quick-list/quick-list.module';\nimport { ButtonModule } from './button/button.module';\nimport { ThrottleClickModule } from './throttle-click/throttle-click.module';\n\n@NgModule({\n exports: [\n ReadOnlyFormFieldModule,\n ButtonModule,\n ToolbarModule,\n MaterialActionButtonModule,\n NumericFieldModule,\n CardModule,\n QuickListModule,\n ThrottleClickModule,\n ],\n})\nexport class MaterialAddonsModule {}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../projects/material-addons/src/lib/material-action-button/material-action-button.component.ts","../../../projects/material-addons/src/lib/material-action-button/material-action-button.module.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/material-addons/src/lib/button/mad-basic-button.ts","../../../projects/material-addons/src/lib/button/primary-button/primary-button.component.ts","../../../projects/material-addons/src/lib/button/outline-button/outline-button.component.ts","../../../projects/material-addons/src/lib/button/flat-button/link-button.component.ts","../../../projects/material-addons/src/lib/button/icon-button/icon-button.component.ts","../../../projects/material-addons/src/lib/button/danger-button/danger-button.component.ts","../../../projects/material-addons/src/lib/button/button.module.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.ts","../../../projects/material-addons/src/lib/numeric-field/number-format.service.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field/readonly-form-field.component.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field.module.ts","../../../projects/material-addons/src/lib/toolbar/toolbar.service.ts","../../../projects/material-addons/src/lib/toolbar/toolbar.component.ts","../../../projects/material-addons/src/lib/toolbar/toolbar.module.ts","../../../projects/material-addons/src/lib/numeric-field/numeric-field.directive.ts","../../../projects/material-addons/src/lib/numeric-field/numeric-field.module.ts","../../../projects/material-addons/src/lib/card/card.component.ts","../../../projects/material-addons/src/lib/throttle-click/throttle-click.directive.ts","../../../projects/material-addons/src/lib/throttle-click/throttle-click.module.ts","../../../projects/material-addons/src/lib/card/card.module.ts","../../../projects/material-addons/src/lib/quick-list/base-quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list-compact/quick-list-compact.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list.module.ts","../../../projects/material-addons/src/lib/table/table.component.ts","../../../projects/material-addons/src/lib/table/table.module.ts","../../../projects/material-addons/src/lib/data-table/data-table-action-type.ts","../../../projects/material-addons/src/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.ts","../../../projects/material-addons/src/lib/data-table/data-table.component.ts","../../../projects/material-addons/src/lib/data-table/data-table.module.ts","../../../projects/material-addons/src/lib/stepper/step-header/step-header.component.ts","../../../projects/material-addons/src/lib/stepper/mad-stepper-animation.ts","../../../projects/material-addons/src/lib/stepper/stepper.component.ts","../../../projects/material-addons/src/lib/stepper/stepper.module.ts","../../../projects/material-addons/src/lib/content-panel/content-header/content-header.component.ts","../../../projects/material-addons/src/lib/content-panel/content-panel-container/content-panel-container.component.ts","../../../projects/material-addons/src/lib/content-panel/content-panel-container-content/content-panel-container-content.component.ts","../../../projects/material-addons/src/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.ts","../../../projects/material-addons/src/lib/content-panel/main-container/main-container.component.ts","../../../projects/material-addons/src/lib/content-panel/content-panel.module.ts","../../../projects/material-addons/src/lib/flowbar/flowbar.component.ts","../../../projects/material-addons/src/lib/flowbar/flowbar.module.ts","../../../projects/material-addons/src/lib/material-addons.module.ts"],"names":["this","icon","liftHigher","liftHigher2","Component","args","selector","template","Input","NgModule","declarations","MaterialActionButtonComponent","imports","CommonModule","RouterModule","MatButtonModule","MatIconModule","MatTooltipModule","exports","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__values","o","s","Symbol","iterator","m","i","length","next","value","done","__read","n","r","e","ar","push","error","__spread","arguments","concat","MadBasicButton","disableClick","stopPropagation","defineProperty","disabled","ngOnChanges","disableButton","button","nativeElement","addEventListener","removeEventListener","HostBinding","PrimaryButtonComponent","_this","_super","title","ViewChild","read","ElementRef","static","OutlineButtonComponent","LinkButtonComponent","IconButtonComponent","DangerButtonComponent","ReadOnlyFormFieldWrapperComponent","changeDetector","elementRef","readonly","textAlign","formatNumber","decimalPlaces","roundValue","autofillDecimals","unit","unitPosition","errorMessage","multiline","rows","shrinkIfEmpty","toolTipForInputEnabled","ngOnInit","doRendering","ngAfterViewInit","setReadonlyFieldStyle","ngAfterViewChecked","setTooltipForOverflownField","_","getLabel","label","extractLabel","originalContent","detectChanges","correctWidth","labelElement","querySelector","innerHTML","formField","setAttribute","input","_b","_a","readOnlyContentWrapper","textOverFlowStyleValue","getTextOverFlowStyleValue","textOverflow","style","isEllipsisForTextOverflowEnabled","isTextOverflown","toolTipText","calculateToolTipText","offsetWidth","scrollWidth","ChangeDetectorRef","NumberFormatService","locale","allowedKeys","localeDecimalSeparator","toLocaleString","charAt","decimalSeparator","groupingSeparator","NUMBERS","NEGATIVE","valueIsSet","format","options","toString","replace","RegExp","valueOrDefault","DEFAULT_AUTOFILL_DECIMALS","DEFAULT_DECIMAL_PLACES","finalFormatting","DEFAULT_FINAL_FORMATTING","result","strip","removeLeadingZeros","decimalIndex","indexOf","isNegative","startsWith","substring","actualDecimalIndex","addMissingLeadingZero","actualDecimalPlaces","j","DEFAULT_REMOVE_LEADING_ZEROS","indexDecimalSep","ignoredChars","value_1","value_1_1","char","includes","defaultValue","Injectable","providedIn","Inject","LOCALE_ID","ReadOnlyFormFieldComponent","renderer","numberFormatService","errorMatcher","isErrorState","injectUnitSymbol","unitSpan","inputEl","inputWrapper","parentNode","createElement","setStyle","insertBefore","children","appendChild","inputStyles","window","getComputedStyle","parentElement","position","marginTop","getPropertyValue","paddingTop","paddingBottom","textSpan","document","body","font","fontSize","height","width","top","whiteSpace","visibility","Math","min","clientWidth","ceil","left","textContent","Renderer2","MatFormFieldModule","MatInputModule","FormsModule","ToolbarService","router","translate","mainActions","toolbarActions","toolbarActionsAlwaysAsMenu","toolbarActionsMenuTitle","routerSubscription","events","subscribe","routingEvent","NavigationEnd","currentUrl","urlAfterRedirects","clearToolbarActions","clearMainActions","backAction","dataTitle","url","toolbarTitle","ngOnDestroy","unsubscribe","getToolbarActions","addToolbarAction","action","get","i18nActionKey","toPromise","then","translated","actionName","setDataTitle","setToolbarActionsAlwaysAsMenu","getToolbarActionsAlwaysAsMenu","getDataTitle","getMainActions","getBackAction","setToolbarActionsMenuTitle","getToolbarActionsMenuTitle","addMainAction","mainAction","addBackAction","goBackRoute","isAbsoluteUrl","matIcon","href","routerLink","addSimpleBackButton","overrideIfPresent","history","back","Router","TranslateService","ToolbarComponent","breakpointObserver","titleService","toolbarService","isHandset$","observe","Breakpoints","Handset","pipe","map","matches","getTitle","hasPermission","showIf","of","isRouterLink","isAbsoluteLink","isAction","showBadgeForMenu","slice","filter","badge","hasImportantToolbarActions","importantAction","BreakpointObserver","Title","MatMenuModule","MatToolbarModule","MaterialActionButtonModule","ButtonModule","MatBadgeModule","OTHER_CONTROL_KEYS","Set","NumericFieldDirective","numericValueChanged","EventEmitter","displayValue","originalValue","NaN","onChange","onTouched","_numericValue","isNaN","roundOrTruncate","handleInputChanged","registerOnChange","fn","registerOnTouched","setDisabledState","writeValue","numericValue","parseInt","inputChangeListener","listen","event","formatInput","target","keyupListener","keyCode","has","keydownListener","key","metaKey","ctrlKey","altKey","indexNegativeSign","selectionStart","selectionEnd","cursorStart","substr","detachListener","setTimeout","updateInput","element","cursorPos","setCursor","textFormatted","max","parseFloat","emit","getValueForFormControl","display","method","pow","Directive","host","[class.text-right]","(change)","(input)","(blur)","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","Output","NumericFieldModule","forRoot","ngModule","CardComponent","cancelDisabled","cancelText","editText","expandable","expanded","saveDisabled","saveText","editMode","additionalActionText","edit","cancel","save","additionalAction","onCancel","undefined","onEdit","onSave","toggleCollapse","additionalActionClicked","animations","trigger","transition","opacity","overflow","animate","state","transform","ThrottleClickDirective","throttleTime","throttleClick","clicks","Subject","clickEvent","preventDefault","subscription","HostListener","MatCardModule","ThrottleClickModule","BaseQuickListComponent","changeDetectorRef","allItems","addLabel","addPossible","removePossible","blankItem","added","removed","addEventFunction","addItem","bind","minItems","interalAddItem","setFocusOnAdd","newItem","removeItem","item","isDeleteAllowed","splice","rowCountFocus","itemRows","changes","els","last","firstFocusable","focus","isAddAllowed","maxItems","assign","id","random","ContentChild","TemplateRef","ViewChildren","QuickListComponent","QuickListCompactComponent","TableComponent","columns","filterLabel","filterPlaceholder","pageSizeOptions","defaultPageSize","rowActions","tableActions","tableAction","rowAction","sortEvent","ACTION_COLUMN_NAME","isFilterEnabled","isPaginationEnabled","data","dataSource","MatTableDataSource","pageSize","Number","MAX_VALUE","paginator","_changePageSize","setFilterValue","columnNames","column","isRowClickable","unshift","defaultAction","sort","filterPredicate","split","every","term","keys","find","onFilter","onRowEvent","row","isClickOnRowMenuIcon","outputRow","onSortingEvent","sortingParams","onTableAction","trim","toLowerCase","classList","contains","MatPaginator","MatSort","MatPaginatorModule","MatSortModule","MatTableModule","DataTableActionType","SINGLE","BATCH","NONE","DataTableColumnsModalComponent","dialogRef","selectedColumns","availableColumns","filteredAvailableColumns","definition","_c","allColumns","_d","columnId","displayedColumns","col","clearFilterValue","onDrop","previousContainer","container","moveItemInArray","previousIndex","currentIndex","itemIndex","findMatchingItemIndex","transferArrayItem","a","localeCompare","saveChange","close","onDelete","deleteChange","updateFilterValue","searchFilter","c","itemId","previousContainerItems","MatDialogRef","MAT_DIALOG_DATA","DataTableComponent","matDialog","filterColumnsLabel","filterColumnsPlaceHolder","noDataText","columnSettingsModalTitleLabel","selectedLabel","availableLabel","saveLabel","deleteLabel","cancelLabel","infoTextLabel","actions","deleteDefinitionAllowed","useAsync","actionEvent","pageEvent","allColumnsEvent","columnDefinitionChangeEvent","viewDefinitionChangeEvent","allSelected","displayedDataMap","Map","actualDataMap","selectionModel","SelectionModel","allColumnDefinitions","mode","showColumnModal","isLoading","paginatorLength","paginatorPageIndex","paginatorPageSize","cols","displayedColumnDefinition","columnIds","def","selectedColumnDefinion","createDataMapsAndSetDisplayedDataSourceData","page","pageIndex","definitions","editableColumnDefinitions","viewableColumnDefinitions","definitions_1","definitions_1_1","editable","defaultSize","extPaginator","unsetPageSizeIfNecessary","allAvailableColumns","openColumnModal","_forceMode","setActions","compare","x","active","y","ascending","direction","compareNumber","compareString","compareBoolean","transformData","transformer","transformerParams","Function","generateRowId","uuidV4","getTableMode","onColumnSettings","selectedDefinition","onViewDefinition","isCurrentDefinition","selected","getAllDataSourceRowsOfCurrentPage","_pageData","getSelectedCount","actionType","count","selectedCount","isDisabled","onToggleSelectAll","clear","forEach","select","rowId","isSelected","onRowCheckbox","toggle","idGenerator","emitTableAction","internalSort","onPageEvent","selection","emitAction","type","generateDisplayedDataElement","actualDataElement","displayedDataElement","actualValue","dataPropertyName","sortedData","hiddenInMode","displayedDataList","data_1","data_1_1","dataEntry","set","dialogData","titleLabel","open","afterClosed","distinctActionTypes","add","dataCount","MatDialog","MatProgressSpinnerModule","TranslateModule","MatCheckboxModule","DragDropModule","StepHeaderComponent","_focusMonitor","_elementRef","monitor","stopMonitoring","origin","focusVia","getCssForState","STEP_STATE","NUMBER","completed","hasError","getIcon","CdkStepHeader","inputs","class","role","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","FocusMonitor","madStepperAnimations","verticalStepTransition","StepComponent","stepper","_viewContainerRef","onNext","onDone","onHeaderClick","stepClosed","_isSelected","Subscription","EMPTY","ngAfterContentInit","_stepper","steps","switchMap","selectionChange","selectedStep","tap","startWith","markFormAsTouched","stepValidation","observers","selectAndMarkAsTouched","index","stepControl","markAllAsTouched","completeLast","resetValidations","DONE","valid","ERROR","CdkStep","StepperComponent","decorators","ViewContainerRef","dir","_document","animationDone","QueryList","_animationDone","_orientation","linear","takeUntil","_destroyed","_stateChanged","distinctUntilChanged","fromState","toState","_getAnimationDirection","selectedIndex","_steps","_stepIsNavigable","step","CdkStepper","[class.stepper-vertical]","[attr.aria-orientation]","Directionality","Optional","DOCUMENT","ContentChildren","descendants","CdkStepperModule","FlexModule","ContentHeaderComponent","ContentPanelContainerComponent","ContentPanelContainerContentComponent","ContentPanelContainerFooterComponent","MainContainerComponent","FlowbarComponent","_activeStepChange","_headerClick","_activeStep","activeSubStep","enabled","activeTabHasSubSteps","subSteps","_getIndicatorType","getIndexForActiveStep","changeActiveStep","changeActiveStepOnHeader","stepIndex","changeActiveSubStep","subStep","previous","isPreviousAvailable","isFirstSubStep","previousEnabledStep","findPreviousEnabledStep","subStepIndex","isNextAvailable","isLastSubStep","nextEnabledStep","findNextEnabledStep","getCurrentIndex","isAnyPreviousStepEnabled","isAnyFollowingStepEnabled","isLastStep","findIndex","getCurrentSubStepIndex","triggerClick","headerClick","reverse","MatStepperModule","ReadOnlyFormFieldModule","ToolbarModule","CardModule","QuickListModule"],"mappings":"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","sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mad-material-action-button',\n templateUrl: './material-action-button.component.html',\n styleUrls: ['./material-action-button.component.css'],\n})\nexport class MaterialActionButtonComponent {\n @Input()\n actionName: string;\n\n @Input()\n id: string;\n\n @Input()\n icon = 'add';\n\n @Input()\n routerLink: string;\n\n // Sets the lower padding higher providing some bottom space for a fixed paginator\n @Input()\n liftHigher = true;\n\n @Input()\n liftHigher2 = false;\n}\n","import { NgModule } from '@angular/core';\nimport { MaterialActionButtonComponent } from './material-action-button.component';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [MaterialActionButtonComponent],\n imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule],\n exports: [MaterialActionButtonComponent],\n})\nexport class MaterialActionButtonModule {}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ElementRef, HostBinding } from '@angular/core';\n\nexport class MadBasicButton {\n button: ElementRef;\n disabled: boolean;\n\n @HostBinding('style.pointer-events')\n get pointerEvent(): string {\n return this.disabled ? 'none' : 'auto';\n }\n\n @HostBinding('style.opacity')\n get opacity(): string {\n return this.disabled ? '0.35' : '1';\n }\n\n disableClick = (e: Event): any => e.stopPropagation();\n\n ngOnChanges(): void {\n this.disableButton();\n }\n\n disableButton(): void {\n if (this.disabled) {\n this.button.nativeElement.addEventListener('click', this.disableClick);\n } else {\n this.button.nativeElement.removeEventListener('click', this.disableClick);\n }\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n\n@Component({\n selector: 'mad-primary-button',\n templateUrl: './primary-button.component.html',\n styleUrls: ['./primary-button.component.css'],\n})\nexport class PrimaryButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n\n@Component({\n selector: 'mad-outline-button',\n templateUrl: './outline-button.component.html',\n styleUrls: ['./outline-button.component.css'],\n})\nexport class OutlineButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n@Component({\n selector: 'mad-link-button',\n templateUrl: './link-button.component.html',\n styleUrls: ['./link-button.component.css'],\n})\nexport class LinkButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n\n@Component({\n selector: 'mad-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.css'],\n})\nexport class IconButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\n\n@Component({\n selector: 'mad-danger-button',\n templateUrl: './danger-button.component.html',\n styleUrls: ['./danger-button.component.css'],\n})\nexport class DangerButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n super.button = this.button;\n super.disabled = this.disabled;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { PrimaryButtonComponent } from './primary-button/primary-button.component';\nimport { OutlineButtonComponent } from './outline-button/outline-button.component';\nimport { LinkButtonComponent } from './flat-button/link-button.component';\nimport { IconButtonComponent } from './icon-button/icon-button.component';\nimport { DangerButtonComponent } from './danger-button/danger-button.component';\n\n@NgModule({\n declarations: [PrimaryButtonComponent, OutlineButtonComponent, LinkButtonComponent, DangerButtonComponent, IconButtonComponent],\n imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule],\n exports: [PrimaryButtonComponent, OutlineButtonComponent, LinkButtonComponent, DangerButtonComponent, IconButtonComponent],\n})\nexport class ButtonModule {}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\n\n/**\n * Wraps a mat-form-field to replace it by a readOnly representation if necessary\n *\n * @author Stefan Laesser\n */\n@Component({\n selector: 'mad-readonly-form-field-wrapper',\n templateUrl: './readonly-form-field-wrapper.component.html',\n styleUrls: ['./readonly-form-field-wrapper.component.css'],\n})\nexport class ReadOnlyFormFieldWrapperComponent implements OnInit, AfterViewInit, OnChanges, AfterViewChecked {\n @ViewChild('contentWrapper', { static: false })\n originalContent: ElementRef;\n @ViewChild('readOnlyContentWrapper', { static: false })\n readOnlyContentWrapper: ElementRef;\n\n /**\n * If set to \"false\", the contained mat-form-field is rendered in all it's glory.\n * If set to \"true\", a readonly representation of the value is shown using the mat-form-fields label.\n */\n @Input() readonly = true;\n\n /**\n * This input *MUST MATCH* the mat-form-field value to ensure correct data\n * binding and formatting of readOnly representation!\n */\n @Input('value') value: any;\n\n @Input('textAlign') textAlign: 'right' | 'left' = 'left';\n @Input('formatNumber') formatNumber = false;\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'left';\n @Input('errorMessage') errorMessage: string | null = null;\n @Input() id: string;\n /**\n * If set to \"false\", a readonly input will be rendered.\n * If set to \"true\", a readonly textarea will be rendered instead.\n */\n @Input() multiline = false;\n\n /**\n * Defines the rows for the readonly textarea.\n */\n @Input() rows = 3;\n\n /**\n * If shrinkIfEmpty is set to \"false\", nothing changes\n * If set to \"true\" and multiline is also \"true\", the textarea will\n * shrink to one row, if value is empty/null/undefined.\n * Otherwise, the defined rows-value will be used\n */\n @Input() shrinkIfEmpty = false;\n\n /**\n * Automatically taken from the contained <mat-label>\n */\n label: string;\n\n toolTipForInputEnabled = false;\n toolTipText: string;\n\n constructor(private changeDetector: ChangeDetectorRef, private elementRef: ElementRef) {}\n\n ngOnInit(): void {\n this.doRendering();\n }\n\n ngAfterViewInit(): void {\n this.setReadonlyFieldStyle();\n this.doRendering();\n }\n\n ngAfterViewChecked(): void {\n this.setReadonlyFieldStyle();\n this.setTooltipForOverflownField();\n }\n\n ngOnChanges(_: SimpleChanges): void {\n this.doRendering();\n }\n\n getLabel(): string {\n if (!this.label) {\n this.extractLabel();\n }\n return this.label;\n }\n\n private doRendering(): void {\n if (!this.originalContent) {\n return;\n }\n if (!this.readonly) {\n this.correctWidth();\n return;\n }\n\n this.changeDetector.detectChanges();\n }\n\n private extractLabel(): void {\n if (!this.originalContent || !this.originalContent.nativeElement) {\n return null;\n }\n const labelElement = this.originalContent.nativeElement.querySelector('mat-label');\n this.label = labelElement ? labelElement.innerHTML : 'mat-label is missing!';\n }\n\n private correctWidth(): void {\n const formField = this.originalContent.nativeElement.querySelector('mat-form-field');\n if (formField) {\n formField.setAttribute('style', 'width:100%');\n }\n }\n\n private setReadonlyFieldStyle(): void {\n const input = this.readOnlyContentWrapper?.nativeElement?.querySelector('input');\n\n if (input) {\n const textOverFlowStyleValue = this.getTextOverFlowStyleValue();\n if (textOverFlowStyleValue) {\n input.setAttribute('style', 'text-overflow: ' + textOverFlowStyleValue);\n }\n }\n }\n\n // Ellipsis is enabled by default as text-overflow behaviour\n private getTextOverFlowStyleValue(): string {\n // it works only if the style is added to the component directly. Should find a way for get it from the calculated\n // style. Than it would be possible to define the text-overflow in css for the whole application\n const textOverflow = this.elementRef?.nativeElement?.style.textOverflow;\n if (!textOverflow) {\n return 'ellipsis';\n }\n\n return textOverflow;\n }\n\n private setTooltipForOverflownField(): void {\n if (this.isEllipsisForTextOverflowEnabled()) {\n const input = this.readOnlyContentWrapper?.nativeElement?.querySelector('input');\n\n if (input) {\n this.toolTipForInputEnabled = this.isTextOverflown(input);\n if (this.toolTipForInputEnabled) {\n this.toolTipText = this.calculateToolTipText();\n }\n this.changeDetector.detectChanges();\n }\n }\n }\n\n private isEllipsisForTextOverflowEnabled(): boolean {\n return this.getTextOverFlowStyleValue() === 'ellipsis';\n }\n\n private isTextOverflown(input: any): boolean {\n if (input) {\n return input.offsetWidth < input.scrollWidth;\n }\n return false;\n }\n\n private calculateToolTipText(): string {\n if (!this.unit) {\n return this.value;\n }\n\n return this.unitPosition === 'left' ? this.unit + ' ' + this.value : this.value + ' ' + this.unit;\n }\n}\n","import { Inject, LOCALE_ID, Injectable } from '@angular/core';\n\nexport declare interface FormatOptions {\n decimalPlaces?: number;\n\n finalFormatting?: boolean;\n\n autofillDecimals?: boolean;\n}\n\nexport declare interface StripOptions {\n decimalPlaces?: number;\n\n removeLeadingZeros?: boolean;\n}\n\n@Injectable({\n providedIn: 'any',\n})\nexport class NumberFormatService {\n static readonly NEGATIVE = '-';\n static readonly NUMBERS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n static readonly DEFAULT_FINAL_FORMATTING = true;\n static readonly DEFAULT_DECIMAL_PLACES = 2;\n static readonly DEFAULT_AUTOFILL_DECIMALS = false;\n static readonly DEFAULT_REMOVE_LEADING_ZEROS = false;\n\n decimalSeparator: ',' | '.';\n groupingSeparator: ',' | '.';\n\n allowedKeys: string[] = [];\n\n constructor(@Inject(LOCALE_ID) locale: string) {\n // try to get the current formatting\n const localeDecimalSeparator = (1.1).toLocaleString(locale).charAt(1);\n this.decimalSeparator = localeDecimalSeparator === ',' ? ',' : '.';\n this.groupingSeparator = localeDecimalSeparator === ',' ? '.' : ',';\n\n this.allowedKeys = [...NumberFormatService.NUMBERS, NumberFormatService.NEGATIVE, this.decimalSeparator];\n }\n\n static valueIsSet(value: any): boolean {\n return typeof value !== 'undefined' && value !== null && (typeof value !== 'string' || value.length !== 0);\n }\n\n format(value: number, options?: Partial<FormatOptions>): string {\n return NumberFormatService.valueIsSet(value)\n ? this.formatNumber(value.toString().replace(new RegExp('[.]', 'g'), this.decimalSeparator), options)\n : '';\n }\n\n formatNumber(value: string, options?: Partial<FormatOptions>): string {\n const autofillDecimals = this.valueOrDefault(options?.autofillDecimals, NumberFormatService.DEFAULT_AUTOFILL_DECIMALS);\n const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);\n const finalFormatting = this.valueOrDefault(options?.finalFormatting, NumberFormatService.DEFAULT_FINAL_FORMATTING);\n\n let result = this.strip(value, { decimalPlaces, removeLeadingZeros: finalFormatting });\n\n /* add grouping separator */\n const decimalIndex = result.indexOf(this.decimalSeparator);\n const isNegative = result.startsWith(NumberFormatService.NEGATIVE);\n let i = decimalIndex > -1 ? decimalIndex : result.length;\n while (i > (isNegative ? 4 : 3)) {\n i -= 3;\n result = result.substring(0, i) + this.groupingSeparator + result.substring(i, result.length);\n }\n\n if (finalFormatting) {\n if (decimalPlaces > 0 && !!result) {\n /* autofill decimal places */\n let actualDecimalIndex = result.indexOf(this.decimalSeparator);\n if (autofillDecimals) {\n if (actualDecimalIndex === -1) {\n actualDecimalIndex = result.length;\n result += this.decimalSeparator;\n }\n\n result = this.addMissingLeadingZero(result, actualDecimalIndex);\n actualDecimalIndex = result.indexOf(this.decimalSeparator);\n\n const actualDecimalPlaces = result.length - actualDecimalIndex - 1;\n for (let j = 0; j < decimalPlaces - actualDecimalPlaces; j++) {\n result += '0';\n }\n } else {\n result = this.addMissingLeadingZero(result, actualDecimalIndex);\n }\n }\n }\n return result;\n }\n\n strip(value: string, options?: StripOptions): string {\n const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);\n const removeLeadingZeros = this.valueOrDefault(options?.removeLeadingZeros, NumberFormatService.DEFAULT_REMOVE_LEADING_ZEROS);\n\n let result = '';\n let indexDecimalSep = -1;\n let j = -1;\n let ignoredChars = 0;\n for (const char of value) {\n j++;\n if (this.allowedKeys.includes(char)) {\n if (char === this.decimalSeparator) {\n if (decimalPlaces === 0) {\n /* dismiss content after a decimal separator, when no places allowed */\n break;\n } else if (indexDecimalSep > -1) {\n /* ignore subsequent decimal separators */\n continue;\n }\n indexDecimalSep = j;\n }\n if (char === '0' && removeLeadingZeros) {\n /* remove leading zero only if it's not the only zero in the 'value' string */\n if ((result.length === 0 && j + 1 !== value.length) || result === NumberFormatService.NEGATIVE) {\n ignoredChars++;\n continue;\n }\n }\n if (char === NumberFormatService.NEGATIVE && j > 0) {\n /* dismiss content after a negative sign not on first position */\n break;\n }\n if (indexDecimalSep > -1 && result.length + ignoredChars > indexDecimalSep + decimalPlaces) {\n /* dismiss content after maximum decimal places reached */\n break;\n }\n result += char;\n } else if (char === this.groupingSeparator) {\n if (indexDecimalSep === -1) {\n ignoredChars++;\n }\n } else {\n /* dismiss content after a invalid character */\n break;\n }\n }\n return result;\n }\n\n private addMissingLeadingZero(result: string, actualDecimalIndex: number): string {\n const isNegative = result.startsWith(NumberFormatService.NEGATIVE);\n /* autoadd a zero before decimal separator, when it's missing */\n if (actualDecimalIndex === 0) {\n result = '0' + result;\n }\n /* autoadd a zero before decimal separator, when it's missing, for negative values */\n if (actualDecimalIndex === 1 && isNegative) {\n result = result[0] + '0' + result.substring(1, result.length);\n }\n return result;\n }\n\n private valueOrDefault(value: any, defaultValue: any): any {\n return NumberFormatService.valueIsSet(value) ? value : defaultValue;\n }\n}\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { NumberFormatService } from '../../numeric-field/number-format.service';\n\n/**\n * Read-only mat-form-field representation of provided value\n *\n * @author Stefan Laesser\n */\n\n@Component({\n selector: 'mad-readonly-form-field',\n templateUrl: './readonly-form-field.component.html',\n styleUrls: ['./readonly-form-field.component.css'],\n})\nexport class ReadOnlyFormFieldComponent implements OnChanges, AfterViewChecked {\n @Input('value') value: any;\n @Input('label') label: string;\n @Input('textAlign') textAlign: 'right' | 'left' = 'left';\n @Input('formatNumber') formatNumber = false;\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'left';\n @Input('errorMessage') errorMessage: string | null = null;\n @Input() multiline = false;\n @Input() rows = 3;\n @Input() id: string;\n /*\n * If shrinkIfEmpty is set to \"false\", nothing changes\n * If set to \"true\" and multiline is also \"true\", the textarea will\n * shrink to one row, if value is empty/null/undefined.\n * Otherwise, the defined rows-value will be used\n */\n @Input() shrinkIfEmpty = false;\n @ViewChild('inputEl') inputEl: ElementRef;\n errorMatcher: ErrorStateMatcher = {\n isErrorState: () => !!this.errorMessage,\n };\n\n private unitSpan: HTMLSpanElement;\n private textSpan: HTMLSpanElement;\n\n constructor(private changeDetector: ChangeDetectorRef, private renderer: Renderer2, private numberFormatService: NumberFormatService) {}\n\n ngOnChanges(_: SimpleChanges): void {\n if (!NumberFormatService.valueIsSet(this.value)) {\n this.value = '-';\n if (this.shrinkIfEmpty) {\n this.rows = 1;\n }\n } else if (this.formatNumber && typeof this.value === 'number') {\n this.value = this.numberFormatService.format(this.value, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting: true,\n autofillDecimals: this.autofillDecimals,\n });\n }\n this.changeDetector.detectChanges();\n }\n\n // TODO direct copy from NumericFieldDirective\n ngAfterViewChecked(): void {\n this.injectUnitSymbol();\n }\n\n private injectUnitSymbol(): void {\n // Need to inject the unit symbol when the input element width is set to its actual value,\n // otherwise the icon wont show in the correct position\n if (!!this.unit && !this.unitSpan && this.inputEl.nativeElement.offsetWidth !== 0) {\n // Get the input wrapper and apply necessary styles\n const inputWrapper = this.inputEl.nativeElement.parentNode.parentNode;\n\n // Create the span with unit symbol and apply necessary styles\n this.unitSpan = this.renderer.createElement('span');\n\n if (this.unitPosition === 'left') {\n this.renderer.setAttribute(this.unitSpan, 'matPrefix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-right', '5px');\n this.renderer.insertBefore(inputWrapper, this.unitSpan, inputWrapper.children[0]);\n } else {\n this.renderer.setAttribute(this.unitSpan, 'matSuffix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-left', '5px');\n this.renderer.appendChild(inputWrapper, this.unitSpan);\n }\n }\n\n // special handling to move unit symbol along with display value\n if (!!this.unitSpan && this.textAlign === 'left' && this.unitPosition === 'right') {\n const inputStyles = window.getComputedStyle(this.inputEl.nativeElement.parentElement, null);\n this.unitSpan.style.position = 'absolute';\n this.unitSpan.style.marginTop = inputStyles.getPropertyValue('border-top-width');\n this.unitSpan.style.paddingTop = inputStyles.getPropertyValue('padding-top');\n this.unitSpan.style.paddingBottom = inputStyles.getPropertyValue('padding-bottom');\n\n if (!this.textSpan) {\n this.textSpan = document.createElement('span');\n document.body.appendChild(this.textSpan);\n this.textSpan.style.font = inputStyles.getPropertyValue('font');\n this.textSpan.style.fontSize = inputStyles.getPropertyValue('font-size');\n this.textSpan.style.height = 'auto';\n this.textSpan.style.width = 'auto';\n this.textSpan.style.position = 'absolute';\n this.textSpan.style.top = '0';\n this.textSpan.style.whiteSpace = 'no-wrap';\n this.textSpan.style.visibility = 'hidden';\n }\n this.textSpan.innerHTML = this.value;\n const width = Math.min(this.inputEl.nativeElement.clientWidth - this.unitSpan.clientWidth, Math.ceil(this.textSpan.clientWidth));\n this.unitSpan.style.left = width + 'px';\n }\n // always reset unit symbol\n if (!!this.unitSpan) {\n this.unitSpan.textContent = this.unit;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { ReadOnlyFormFieldWrapperComponent } from './readonly-form-field-wrapper/readonly-form-field-wrapper.component';\nimport { ReadOnlyFormFieldComponent } from './readonly-form-field/readonly-form-field.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent],\n imports: [CommonModule, RouterModule, MatFormFieldModule, MatInputModule, FormsModule, MatTooltipModule],\n exports: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent],\n})\nexport class ReadOnlyFormFieldModule {}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BackAction, MainAction, ToolbarAction } from './toolbar-action.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToolbarService implements OnDestroy {\n backAction: BackAction;\n mainActions: MainAction[] = []; // shown on the left, next to title, as big buttons\n toolbarActions: ToolbarAction[] = []; // shown on the right as icons\n toolbarActionsAlwaysAsMenu = false; // show the mobile view (burger menu) for toolbar actions\n dataTitle: string;\n routerSubscription: Subscription;\n private title: string;\n private toolbarActionsMenuTitle = 'More'; // title of the burger menu\n\n private currentUrl: string;\n\n constructor(private router: Router, private translate: TranslateService) {\n this.routerSubscription = this.router.events.subscribe(routingEvent => {\n if (routingEvent instanceof NavigationEnd) {\n if (this.currentUrl !== routingEvent.urlAfterRedirects) {\n this.clearToolbarActions();\n this.clearMainActions();\n delete this.backAction;\n delete this.dataTitle;\n }\n this.currentUrl = router.url;\n }\n });\n }\n\n get toolbarTitle(): string {\n return this.title;\n }\n\n set toolbarTitle(toolbarTitle: string) {\n this.title = toolbarTitle;\n }\n\n ngOnDestroy(): void {\n if (this.routerSubscription) {\n this.routerSubscription.unsubscribe();\n }\n }\n\n getToolbarActions(): ToolbarAction[] {\n return this.toolbarActions;\n }\n\n addToolbarAction(action: ToolbarAction): void {\n this.translate\n .get(action.i18nActionKey)\n .toPromise()\n .then(translated => {\n action.actionName = translated;\n this.toolbarActions.push(action);\n });\n }\n\n setDataTitle(dataTitle: string): void {\n this.dataTitle = dataTitle;\n }\n\n setToolbarActionsAlwaysAsMenu(toolbarActionsAlwaysAsMenu: boolean): void {\n this.toolbarActionsAlwaysAsMenu = toolbarActionsAlwaysAsMenu;\n }\n\n getToolbarActionsAlwaysAsMenu(): boolean {\n return this.toolbarActionsAlwaysAsMenu;\n }\n\n getDataTitle(): string {\n return this.dataTitle;\n }\n\n clearToolbarActions(): void {\n this.toolbarActions = [];\n }\n\n getMainActions(): MainAction[] {\n return this.mainActions;\n }\n\n getBackAction(): BackAction {\n return this.backAction;\n }\n\n setToolbarActionsMenuTitle(toolbarActionsMenuTitle: string): void {\n this.toolbarActionsMenuTitle = toolbarActionsMenuTitle;\n }\n\n getToolbarActionsMenuTitle(): string {\n return this.toolbarActionsMenuTitle;\n }\n\n addMainAction(mainAction: MainAction): void {\n this.translate\n .get(mainAction.i18nActionKey)\n .toPromise()\n .then(translated => {\n mainAction.actionName = translated;\n this.mainActions.push(mainAction);\n });\n }\n\n /**\n * Per default the goBackRoute is a routerLink. But if a href should be used (for absolute browser routing) then isAbsoluteUrl can be set to true.\n */\n addBackAction(goBackRoute: string, isAbsoluteUrl = false): void {\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n };\n if (!isAbsoluteUrl) {\n this.backAction.routerLink = goBackRoute;\n } else {\n this.backAction.href = goBackRoute;\n }\n }\n\n addSimpleBackButton(overrideIfPresent = false): void {\n if (this.getBackAction() && !overrideIfPresent) {\n return;\n }\n\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n action(): void {\n window.history.back();\n },\n };\n }\n\n clearMainActions(): void {\n this.mainActions = [];\n }\n}\n","import { Component } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ToolbarService } from './toolbar.service';\nimport { Observable, of } from 'rxjs';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\nimport { Action, BackAction, MainAction, ToolbarAction } from './toolbar-action.interface';\n\n@Component({\n selector: 'mad-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.css'],\n})\nexport class ToolbarComponent {\n isHandset$: Observable<boolean> = this.breakpointObserver.observe([Breakpoints.Handset]).pipe(map(result => result.matches));\n\n constructor(private breakpointObserver: BreakpointObserver, private titleService: Title, private toolbarService: ToolbarService) {}\n\n getTitle(): string {\n const dataTitle = this.toolbarService.getDataTitle();\n const toolbarTitle = this.toolbarService.toolbarTitle;\n const title = !toolbarTitle || toolbarTitle.length <= 0 ? this.titleService.getTitle() : toolbarTitle;\n return !dataTitle || dataTitle.length <= 0 ? title : title + ': ' + dataTitle;\n }\n\n getToolbarActions(): ToolbarAction[] {\n return this.toolbarService.getToolbarActions();\n }\n\n getMainActions(): MainAction[] {\n return this.toolbarService.getMainActions();\n }\n\n hasPermission(action: Action): Observable<boolean> {\n if (!action || !action.showIf) {\n return of(true);\n }\n return action.showIf;\n }\n\n isRouterLink(): boolean {\n return this.toolbarService.getBackAction() && !!this.toolbarService.getBackAction().routerLink;\n }\n\n isAbsoluteLink(): boolean {\n return this.toolbarService.getBackAction() && !!this.toolbarService.getBackAction().href;\n }\n\n isAction(): boolean {\n return this.toolbarService.getBackAction() && !!this.toolbarService.getBackAction().action;\n }\n\n getBackAction(): BackAction {\n return this.toolbarService.getBackAction();\n }\n\n getToolbarActionsAlwaysAsMenu(): boolean {\n return this.toolbarService.getToolbarActionsAlwaysAsMenu();\n }\n\n getToolbarActionsMenuTitle(): string {\n return this.toolbarService.getToolbarActionsMenuTitle();\n }\n\n showBadgeForMenu(): boolean {\n return (\n this.getToolbarActions()\n .slice(1) // the first icon is not shown in menu\n .filter(value => value.badge && value.badge.value).length > 0\n );\n }\n\n hasImportantToolbarActions(): boolean {\n return this.getToolbarActions().filter(value => !!value.importantAction).length > 0;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { ToolbarComponent } from './toolbar.component';\nimport { MaterialActionButtonModule } from '../material-action-button/material-action-button.module';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ButtonModule } from '../button/button.module';\nimport { MatBadgeModule } from '@angular/material/badge';\n\n@NgModule({\n declarations: [ToolbarComponent],\n imports: [\n CommonModule,\n RouterModule,\n MatMenuModule,\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MaterialActionButtonModule,\n MatTooltipModule,\n ButtonModule,\n MatBadgeModule,\n ],\n exports: [ToolbarComponent],\n})\nexport class ToolbarModule {}\n","/*\n * Copyright (c) 2018-2020 Porsche Informatik. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterViewChecked,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NumberFormatService } from './number-format.service';\n\nconst BACK_KEYCODE = 8;\nconst SPACE_KEYCODE = 32;\nconst DEL_KEYCODE = 46;\nconst CONTROL_KEYCODES_UPPER_BORDER = 46;\nconst OTHER_CONTROL_KEYS = new Set([224, 91, 93]);\n\n@Directive({\n selector: '[madNumericField]',\n host: {\n '[class.text-right]': 'textAlign === \"right\"',\n '(change)': 'onChange(getValueForFormControl())',\n '(input)': 'onChange(getValueForFormControl())',\n '(blur)': 'onTouched()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumericFieldDirective), // eslint-disable-line\n multi: true,\n },\n ],\n})\nexport class NumericFieldDirective implements OnInit, OnDestroy, AfterViewChecked, ControlValueAccessor {\n @Input('textAlign') textAlign: 'right' | 'left' = 'right';\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'right';\n @Output('numericValueChange') numericValueChanged = new EventEmitter<number>();\n\n private displayValue = '';\n private originalValue = NaN;\n private _numericValue: number;\n private inputChangeListener: () => void;\n private keyupListener: () => void;\n private keydownListener: () => void;\n\n @Input('numericValue')\n set numericValue(value: number) {\n if (this._numericValue !== value && !(isNaN(this._numericValue) && (isNaN(value) || value === null))) {\n this.originalValue = value;\n // Don't roundOrTruncate if value was set to empty otherwise input value will be set to 0 instead of empty\n // which happens when an input is being reset\n this._numericValue = value === null || value === undefined ? value : this.roundOrTruncate(value); // eslint-disable-line\n this.handleInputChanged();\n }\n }\n\n private unitSpan: HTMLSpanElement;\n private textSpan: HTMLSpanElement;\n\n constructor(private renderer: Renderer2, private inputEl: ElementRef, private numberFormatService: NumberFormatService) {}\n\n /* Control Values Accessor Stuff below */\n // eslint-disable-next-line\n onChange: any = () => {};\n // eslint-disable-next-line\n onTouched: any = () => {};\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(): void {\n // Dont need to implement since its just a directive\n }\n\n writeValue(value: number): void {\n this.numericValue = value;\n }\n\n ngOnInit(): void {\n /* needs to be parsed as number explicitly as it comes as string from user input */\n this.decimalPlaces = parseInt(this.decimalPlaces.toString(), 10);\n\n this.inputChangeListener = this.renderer.listen(this.inputEl.nativeElement, 'blur', event => {\n this.formatInput(event.target, true);\n });\n\n this.keyupListener = this.renderer.listen(this.inputEl.nativeElement, 'keyup', event => {\n if (event.keyCode === BACK_KEYCODE || (event.keyCode >= CONTROL_KEYCODES_UPPER_BORDER && !OTHER_CONTROL_KEYS.has(event.keyCode))) {\n this.formatInput(event.target, false);\n }\n });\n\n this.keydownListener = this.renderer.listen(this.inputEl.nativeElement, 'keydown', event => {\n const value: string = event.target.value;\n if (\n this.numberFormatService.allowedKeys.includes(event.key) ||\n (event.keyCode <= CONTROL_KEYCODES_UPPER_BORDER && event.keyCode > 0 && event.keyCode !== SPACE_KEYCODE) ||\n event.metaKey ||\n event.ctrlKey ||\n event.altKey\n ) {\n /* allow negative sign only as first character and none exists outside of text selection */\n const indexNegativeSign = value.indexOf(NumberFormatService.NEGATIVE);\n if (\n event.key === NumberFormatService.NEGATIVE &&\n (event.target.selectionStart > 0 || indexNegativeSign > -1) &&\n (event.target.selectionStart === event.target.selectionEnd ||\n !(indexNegativeSign >= event.target.selectionStart && indexNegativeSign <= event.target.selectionEnd))\n ) {\n return false;\n }\n\n /* no duplicate decimal separators */\n const indexDecimalSep = value.indexOf(this.numberFormatService.decimalSeparator);\n if (\n event.key === this.numberFormatService.decimalSeparator &&\n (indexDecimalSep > -1 || this.decimalPlaces === 0) &&\n (event.target.selectionStart === event.target.selectionEnd ||\n !(indexDecimalSep >= event.target.selectionStart && indexDecimalSep <= event.target.selectionEnd))\n ) {\n return false;\n }\n\n /* prevent too many decimal places */\n if (\n NumberFormatService.NUMBERS.includes(event.key) &&\n indexDecimalSep > -1 &&\n indexDecimalSep < event.target.selectionStart &&\n event.target.selectionStart === event.target.selectionEnd &&\n value.length > indexDecimalSep + this.decimalPlaces\n ) {\n return false;\n }\n\n /* when deleting thousand separator, remove the digit before or after it */\n const cursorStart = event.target.selectionStart;\n\n if (cursorStart === event.target.selectionEnd) {\n if (event.keyCode === BACK_KEYCODE && value.substr(cursorStart - 1, 1) === this.numberFormatService.groupingSeparator) {\n event.target.value = value.substring(0, cursorStart - 2) + value.substring(cursorStart - 1, value.length);\n event.target.selectionStart = event.target.selectionEnd = cursorStart - 1;\n return false;\n } else if (event.keyCode === DEL_KEYCODE && value.substr(cursorStart, 1) === this.numberFormatService.groupingSeparator) {\n event.target.value = value.substring(0, cursorStart + 1) + value.substring(cursorStart + 2, value.length);\n event.target.selectionStart = event.target.selectionEnd = cursorStart + 1;\n return false;\n }\n }\n this.originalValue = NaN;\n } else {\n return false;\n }\n return true;\n });\n }\n\n ngOnDestroy(): void {\n this.detachListener();\n }\n\n ngAfterViewChecked(): void {\n this.injectUnitSymbol();\n }\n\n handleInputChanged(): void {\n // Call in set timeout to avoid Expression has changed after it has been checked error.\n // Sometimes the value changes because we cut off decimal places\n setTimeout(() => {\n this.updateInput(\n this.numberFormatService.format(this._numericValue, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting: false,\n autofillDecimals: this.autofillDecimals,\n }),\n );\n }, 1);\n }\n\n formatInput(element: HTMLInputElement, finalFormatting: boolean): void {\n const cursorPos = element.selectionStart;\n const length = element.value.length;\n const setCursor = this.displayValue !== element.value;\n const textFormatted = this.numberFormatService.formatNumber(element.value, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting,\n autofillDecimals: this.autofillDecimals,\n });\n\n // special handling to move unit symbol along with display value\n if (this.textAlign === 'left' && this.unitPosition === 'right') {\n const inputStyles = window.getComputedStyle(this.inputEl.nativeElement.parentElement, null);\n this.unitSpan.style.position = 'absolute';\n this.unitSpan.style.marginTop = inputStyles.getPropertyValue('border-top-width');\n this.unitSpan.style.paddingTop = inputStyles.getPropertyValue('padding-top');\n this.unitSpan.style.paddingBottom = inputStyles.getPropertyValue('padding-bottom');\n\n if (!this.textSpan) {\n this.textSpan = document.createElement('span');\n document.body.appendChild(this.textSpan);\n this.textSpan.style.font = inputStyles.getPropertyValue('font');\n this.textSpan.style.fontSize = inputStyles.getPropertyValue('font-size');\n this.textSpan.style.height = 'auto';\n this.textSpan.style.width = 'auto';\n this.textSpan.style.position = 'absolute';\n this.textSpan.style.top = '0';\n this.textSpan.style.whiteSpace = 'no-wrap';\n this.textSpan.style.visibility = 'hidden';\n }\n this.textSpan.innerHTML = textFormatted;\n const width = Math.min(this.inputEl.nativeElement.clientWidth - this.unitSpan.clientWidth, Math.ceil(this.textSpan.clientWidth));\n this.unitSpan.style.left = width + 'px';\n }\n\n this.updateInput(textFormatted);\n if (setCursor) {\n element.selectionStart = element.selectionEnd = Math.max(cursorPos + element.value.length - length, 0);\n }\n }\n\n updateInput(value: string): void {\n this.displayValue = value;\n this.inputEl.nativeElement.value = value;\n this._numericValue = parseFloat(\n this.numberFormatService.strip(value, { decimalPlaces: this.decimalPlaces }).replace(this.numberFormatService.decimalSeparator, '.'),\n );\n if (this._numericValue !== this.roundOrTruncate(this.originalValue)) {\n this.originalValue = this._numericValue;\n this.numericValueChanged.emit(this._numericValue);\n }\n }\n\n getValueForFormControl(): number | undefined {\n this.formatInput(this.inputEl.nativeElement, false);\n if (isNaN(this._numericValue)) {\n // Return undefined instead of NaN to support the default required validator.\n return undefined; // eslint-disable-line\n }\n return this._numericValue;\n }\n\n private injectUnitSymbol(): void {\n // Need to inject the unit symbol when the input element width is set to its actual value,\n // otherwise the icon wont show in the correct position\n if (!!this.unit && !this.unitSpan && this.inputEl.nativeElement.offsetWidth !== 0) {\n // Get the input wrapper and apply necessary styles\n const inputWrapper = this.inputEl.nativeElement.parentNode.parentNode;\n\n // Create the span with unit symbol and apply necessary styles\n this.unitSpan = this.renderer.createElement('span');\n\n if (this.unitPosition === 'left') {\n this.renderer.setAttribute(this.unitSpan, 'matPrefix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-right', '5px');\n this.renderer.insertBefore(inputWrapper, this.unitSpan, inputWrapper.children[0]);\n } else {\n this.renderer.setAttribute(this.unitSpan, 'matSuffix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-left', '5px');\n this.renderer.appendChild(inputWrapper, this.unitSpan);\n }\n }\n\n // do not display unit symbol if the unit should move along display value\n if (!!this.unitSpan && this.textAlign === 'left' && this.unitPosition === 'right') {\n if (NumberFormatService.valueIsSet(this.displayValue)) {\n this.unitSpan.style.display = 'unset';\n } else {\n this.unitSpan.style.display = 'none';\n }\n }\n // always reset unit symbol\n if (!!this.unitSpan) {\n this.unitSpan.textContent = this.unit;\n }\n }\n\n private detachListener(): void {\n if (this.inputChangeListener) {\n this.inputChangeListener();\n delete this.inputChangeListener;\n }\n if (this.keydownListener) {\n this.keydownListener();\n delete this.keydownListener;\n }\n if (this.keyupListener) {\n this.keyupListener();\n delete this.keyupListener;\n }\n }\n\n private roundOrTruncate(value: number): number {\n const method = this.roundValue ? 'round' : value < 0 ? 'ceil' : 'floor';\n return Math[method](value * Math.pow(10, this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NumericFieldDirective } from './numeric-field.directive';\nimport { NumberFormatService } from './number-format.service';\n\n@NgModule({\n providers: [NumberFormatService],\n declarations: [NumericFieldDirective],\n exports: [NumericFieldDirective],\n})\nexport class NumericFieldModule {\n static forRoot(): ModuleWithProviders<NumericFieldModule> {\n return {\n ngModule: NumericFieldModule,\n providers: [NumberFormatService],\n };\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'mad-card',\n templateUrl: './card.component.html',\n animations: [\n trigger('collapseExpandAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0, overflow: 'hidden' }),\n animate(\n '100ms',\n style({\n opacity: 1,\n height: '*',\n }),\n ),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '*', overflow: 'hidden' }),\n animate(\n '100ms',\n style({\n opacity: 0,\n height: 0,\n }),\n ),\n ]),\n ]),\n trigger('rotateIcon', [\n state('true', style({ transform: 'rotate(0)' })),\n state('false', style({ transform: 'rotate(180deg)' })),\n transition('true => false', animate('100ms ease-out')),\n transition('false => true', animate('100ms ease-in')),\n ]),\n ],\n styleUrls: ['./card.component.css'],\n})\nexport class CardComponent {\n @Input() cancelDisabled = false;\n @Input() cancelText = 'NOT SET';\n @Input() readonly = true;\n @Input() editText = 'NOT SET';\n @Input() expandable = true;\n @Input() expanded = true;\n @Input() saveDisabled = false;\n @Input() saveText = 'NOT SET';\n @Input() title: string;\n @Input() editMode = false;\n @Input() additionalActionIcon: string;\n @Input() additionalActionText = '';\n @Output() edit = new EventEmitter();\n @Output() cancel = new EventEmitter();\n @Output() save = new EventEmitter();\n @Output() additionalAction = new EventEmitter();\n\n onCancel(): void {\n this.cancel.emit(undefined);\n }\n\n onEdit(): void {\n this.edit.emit(undefined);\n this.expanded = true;\n }\n\n onSave(): void {\n this.save.emit(undefined);\n }\n\n toggleCollapse(): void {\n this.expanded = !this.expanded;\n }\n\n additionalActionClicked(): void {\n this.additionalAction.emit(undefined);\n }\n}\n","import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\n\n@Directive({\n selector: '[madThrottleClick]',\n})\nexport class ThrottleClickDirective implements OnInit, OnDestroy {\n @Input() throttleTime = 300;\n @Output() throttleClick = new EventEmitter();\n private clicks = new Subject();\n private subscription: Subscription;\n\n @HostListener('click', ['$event'])\n clickEvent(event: any): void {\n event.preventDefault();\n event.stopPropagation();\n this.clicks.next(event);\n }\n\n ngOnInit(): void {\n this.subscription = this.clicks.pipe(throttleTime(this.throttleTime)).subscribe(e => this.throttleClick.emit(e));\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThrottleClickDirective } from './throttle-click.directive';\n\n@NgModule({\n declarations: [ThrottleClickDirective],\n imports: [CommonModule],\n exports: [ThrottleClickDirective],\n})\nexport class ThrottleClickModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CardComponent } from './card.component';\nimport { ButtonModule } from '../button/button.module';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ThrottleClickModule } from '../throttle-click/throttle-click.module';\n\n@NgModule({\n declarations: [CardComponent],\n imports: [CommonModule, MatCardModule, MatIconModule, ButtonModule, MatButtonModule, ThrottleClickModule],\n exports: [CardComponent],\n})\nexport class CardModule {}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core';\n\nexport interface QuickListItem {\n id: string;\n}\n\n@Component({\n selector: 'mad-base-quick-list',\n template: '',\n styleUrls: [],\n})\nexport class BaseQuickListComponent<T> implements OnInit, AfterViewInit {\n @Input() allItems = [] as T[];\n @Input() addLabel = 'NOT SET';\n @Input() addPossible = true;\n @Input() removePossible = true;\n @Input() blankItem = {} as any;\n @Input() readonly: boolean;\n @Input() maxItems: number;\n @Input() minItems: number;\n\n @Output() added = new EventEmitter<T>();\n @Output() removed = new EventEmitter<T>();\n @ContentChild(TemplateRef) itemTemplate: TemplateRef<any>;\n @ViewChildren('row') itemRows: QueryList<ElementRef>;\n\n rowCountFocus: number;\n addEventFunction: Function;\n\n constructor(public changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.addEventFunction = this.addItem.bind(this);\n if (this.minItems) {\n for (let n = this.allItems.length; n < this.minItems; n++) {\n this.interalAddItem();\n }\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this.setFocusOnAdd(), 1);\n }\n\n addItem(): void {\n const newItem = this.interalAddItem();\n if (!!newItem) {\n this.added.emit(newItem);\n }\n }\n\n removeItem(item: T): void {\n if (this.isDeleteAllowed()) {\n this.allItems.splice(this.allItems.indexOf(item), 1);\n this.removed.emit(item);\n }\n }\n\n setFocusOnAdd(): void {\n this.rowCountFocus = this.itemRows.length;\n this.itemRows.changes.subscribe((els: QueryList<ElementRef>) => {\n if (els.length > this.rowCountFocus && !!els.last) {\n const firstFocusable = els.last.nativeElement.querySelector(\"button, a, input, select, textarea, [tabindex]:not([tabindex='-1'])\");\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n this.rowCountFocus = els.length;\n });\n }\n\n isAddAllowed(): boolean {\n return this.addPossible && (!this.maxItems || this.allItems.length < this.maxItems);\n }\n\n isDeleteAllowed(): boolean {\n return this.removePossible && (!this.minItems || this.allItems.length > this.minItems);\n }\n\n private interalAddItem(): T {\n if (this.isAddAllowed()) {\n const newItem = { ...this.blankItem };\n // creates ids in the form of \"n5kdz1pljl8\"\n newItem.id = Math.random()\n .toString(36)\n .substring(2);\n this.allItems.push(newItem);\n this.changeDetectorRef.detectChanges();\n return newItem;\n }\n return null;\n }\n}\n","// Based on https://github.com/porscheinformatik/clarity-addons/blob/master/src/clr-addons/generic-quick-list/generic-quick-list.ts\n\nimport { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from './base-quick-list.component';\n\n@Component({\n selector: 'mad-quick-list',\n templateUrl: './quick-list.component.html',\n styleUrls: [],\n})\nexport class QuickListComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(public changeDetectorRef: ChangeDetectorRef) {\n super(changeDetectorRef);\n }\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from '../base-quick-list.component';\n\n@Component({\n selector: 'mad-quick-list-compact',\n templateUrl: './quick-list-compact.component.html',\n styleUrls: [],\n})\nexport class QuickListCompactComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(public changeDetectorRef: ChangeDetectorRef) {\n super(changeDetectorRef);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { QuickListComponent } from './quick-list.component';\nimport { ButtonModule } from '../button/button.module';\nimport { BaseQuickListComponent } from './base-quick-list.component';\nimport { QuickListCompactComponent } from './quick-list-compact/quick-list-compact.component';\n\n@NgModule({\n declarations: [QuickListComponent, BaseQuickListComponent, QuickListCompactComponent],\n imports: [CommonModule, MatButtonModule, MatIconModule, ButtonModule],\n exports: [QuickListComponent, QuickListCompactComponent, BaseQuickListComponent],\n})\nexport class QuickListModule {}\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { ColumnHeader } from './column-header';\nimport { TableAction } from './table-action';\n\n@Component({\n selector: 'mad-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n})\nexport class TableComponent implements OnInit, AfterViewInit {\n @Input() columns: ColumnHeader[] = [];\n @Input() filterLabel = 'NOT SET';\n @Input() filterPlaceholder = 'NOT SET';\n @Input() noDataText: string;\n @Input() pageSizeOptions = [5, 10, 15];\n @Input() defaultPageSize = this.pageSizeOptions?.[0] || 10;\n @Input() rowActions: TableAction[] = [];\n @Input() tableActions: TableAction[] = [];\n\n @Output() tableAction = new EventEmitter<TableAction>();\n @Output() rowAction = new EventEmitter<TableAction>();\n @Output() sortEvent = new EventEmitter<Sort>();\n\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n readonly ACTION_COLUMN_NAME = '__action__';\n dataSource: MatTableDataSource<any[]>;\n columnNames: string[];\n isRowClickable: boolean;\n defaultAction: TableAction;\n isFilterEnabled = false;\n isPaginationEnabled = false;\n\n @Input() set displayedData(data: any[]) {\n if (!this.dataSource) {\n this.dataSource = new MatTableDataSource<any>(data);\n } else {\n this.dataSource.data = data;\n }\n }\n\n @Input() set paginationEnabled(isPaginationEnabled: boolean) {\n this.isPaginationEnabled = isPaginationEnabled;\n // eslint-disable-next-line\n const pageSize = this.isPaginationEnabled ? this.defaultPageSize : Number.MAX_VALUE;\n if (this.dataSource.paginator) {\n this.dataSource.paginator._changePageSize(pageSize);\n }\n }\n\n @Input()\n set filterEnabled(isFilterEnabled: boolean) {\n this.isFilterEnabled = isFilterEnabled;\n this.setFilterValue(undefined);\n }\n\n ngOnInit(): void {\n this.columnNames = this.columns.map(column => column.label);\n this.isRowClickable = this.rowActions.length > 0;\n if (this.isRowClickable) {\n this.columnNames.unshift(this.ACTION_COLUMN_NAME);\n this.defaultAction = this.rowActions[0];\n }\n }\n\n ngAfterViewInit(): void {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n // set custom filter predicate to enable search for multiple search strings:\n // e.g. \"one two three\"\n this.dataSource.filterPredicate = (data: any, filter: string): any =>\n !filter || filter.split(/\\s+/).every(term => !!Object.keys(data).find(key => data[key].includes(term)));\n }\n\n onFilter(value: string): void {\n this.setFilterValue(value);\n }\n\n onRowEvent(event: MouseEvent, row: any, action = this.defaultAction): void {\n if (!!action && !this.isClickOnRowMenuIcon(event)) {\n this.rowAction.emit({ ...action, outputRow: row });\n }\n }\n\n onSortingEvent(sortingParams: Sort): void {\n this.sortEvent.emit(sortingParams);\n }\n\n onTableAction(tableAction: TableAction): void {\n if (!!tableAction) {\n this.tableAction.emit(tableAction);\n }\n }\n\n private setFilterValue(value: string): void {\n this.dataSource.filter = value?.trim().toLowerCase();\n }\n\n private isClickOnRowMenuIcon(event: MouseEvent): boolean {\n return (event?.target as HTMLElement)?.classList.contains('mat-icon');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { TableComponent } from './table.component';\nimport { ButtonModule } from '../button/button.module';\n\n@NgModule({\n declarations: [TableComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n ButtonModule,\n ],\n exports: [TableComponent],\n})\nexport class TableModule {}\n","export class DataTableActionType {\n static SINGLE = 'SINGLE';\n static BATCH = 'BATCH';\n static NONE = 'NONE';\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DataTableColumn } from '../data-table-column';\nimport { DataTableColumnDefinition, DataTableColumnDefinitionChange, DataTableDialogData } from '../data-table-column-definition';\nimport { CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'mad-data-table-columns-modal.component',\n templateUrl: './data-table-columns-modal.component.html',\n styleUrls: ['./data-table-columns-modal.component.scss'],\n})\nexport class DataTableColumnsModalComponent implements OnInit {\n definition: DataTableColumnDefinition;\n searchFilter: string;\n selectedColumns: DataTableColumn[] = [];\n availableColumns: DataTableColumn[] = [];\n filteredAvailableColumns: DataTableColumn[] = [];\n\n constructor(\n public dialogRef: MatDialogRef<DataTableColumnsModalComponent>,\n @Inject(MAT_DIALOG_DATA)\n public data: DataTableDialogData,\n ) {}\n\n ngOnInit(): void {\n this.definition = this.data.definition;\n for (const column of this.data.allColumns) {\n const columnId = column.id;\n const selectedColumnIds: string[] = this.definition.displayedColumns.map(col => col.id);\n if (selectedColumnIds.includes(columnId)) {\n this.selectedColumns.push(column);\n } else {\n this.availableColumns.push(column);\n }\n }\n this.clearFilterValue();\n }\n\n onDrop(event: CdkDragDrop<DataTableColumn[]>): void {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n const itemIndex = this.findMatchingItemIndex(event.previousContainer, event.item);\n transferArrayItem(event.previousContainer.data, event.container.data, itemIndex, event.currentIndex);\n this.clearFilterValue();\n this.availableColumns.sort((a, b) => a.label.localeCompare(b.label));\n }\n }\n\n onSave(): void {\n this.definition.displayedColumns = this.selectedColumns;\n const saveChange: DataTableColumnDefinitionChange = {\n action: 'SAVE',\n definition: this.definition,\n };\n this.dialogRef.close(saveChange);\n }\n\n onDelete(): void {\n const deleteChange: DataTableColumnDefinitionChange = {\n action: 'DELETE',\n definition: this.definition,\n };\n this.dialogRef.close(deleteChange);\n }\n\n onCancel(): void {\n this.dialogRef.close();\n }\n\n updateFilterValue(): void {\n if (this.searchFilter?.length > 0) {\n this.filteredAvailableColumns = this.availableColumns.filter(c => c.label.toLowerCase().includes(this.searchFilter.toLowerCase()));\n } else {\n this.filteredAvailableColumns = [...this.availableColumns];\n }\n }\n\n findMatchingItemIndex(previousContainer: CdkDropList, item: CdkDrag): number {\n const itemId = item.element.nativeElement.id;\n const previousContainerItems = [...previousContainer.data] as DataTableColumn[];\n if (previousContainerItems?.length < 1) {\n return 0;\n }\n for (let itemIndex = 0; itemIndex < previousContainerItems.length; itemIndex++) {\n if (previousContainerItems[itemIndex].id === itemId) {\n return itemIndex;\n }\n }\n return 0;\n }\n\n clearFilterValue(): void {\n this.searchFilter = '';\n this.filteredAvailableColumns = [...this.availableColumns];\n }\n}\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { DataTableColumn } from './data-table-column';\nimport { DataTableAction } from './data-table-action';\nimport { DataTableActionType } from './data-table-action-type';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { v4 as uuidV4 } from 'uuid';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DataTableColumnsModalComponent } from './data-table-columns-modal/data-table-columns-modal.component';\nimport { DataTableColumnDefinition, DataTableColumnDefinitionChange, DataTableDialogData } from './data-table-column-definition';\n\n@Component({\n selector: 'mad-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent implements OnInit, AfterViewInit {\n // Translations\n @Input() filterLabel = 'Filter';\n @Input() filterPlaceholder = '';\n @Input() filterColumnsLabel = 'Filter';\n @Input() filterColumnsPlaceHolder = 'Filter available columns';\n @Input() noDataText = 'No matching data found';\n @Input() columnSettingsModalTitleLabel = 'Column settings';\n @Input() selectedLabel = 'Selected columns';\n @Input() availableLabel = 'Available columns';\n @Input() saveLabel = 'Save';\n @Input() deleteLabel = 'Delete';\n @Input() cancelLabel = 'Cancel';\n @Input() infoTextLabel = 'Drag and drop a column to select or reorder it.';\n @Input() tableClass: string;\n\n @Input() pageSizeOptions = [5, 10, 15];\n @Input() externalFilter: any;\n\n @Input() actions: DataTableAction[] = [];\n @Input() idGenerator: any;\n @Input() deleteDefinitionAllowed = false;\n\n @Input() useAsync = false;\n\n @Input() set displayedColumns(cols: DataTableColumn[]) {\n if (!this.displayedColumnDefinition) {\n this.columns = cols ? [...cols] : [];\n this.columnIds = this.columns.map(column => column.id);\n this.columnIds.unshift(this.ACTION_COLUMN_NAME);\n }\n }\n\n @Input() set displayedColumnDefinition(def: DataTableColumnDefinition) {\n this.selectedColumnDefinion = def;\n this.columns = def.displayedColumns;\n this.columnIds = this.columns.map(column => column.id);\n this.columnIds.unshift(this.ACTION_COLUMN_NAME);\n }\n\n @Input() set tableData(data: any[]) {\n if (!this.dataSource) {\n this.dataSource = new MatTableDataSource<any>(data);\n }\n this.createDataMapsAndSetDisplayedDataSourceData(data);\n }\n\n @Input() set page(page: PageEvent) {\n this.paginatorPageIndex = page.pageIndex;\n this.paginatorPageSize = page.pageSize;\n this.paginatorLength = page.length;\n }\n\n @Input() set columnDefinitions(definitions: DataTableColumnDefinition[]) {\n this.editableColumnDefinitions = [];\n this.viewableColumnDefinitions = [];\n this.allColumnDefinitions = [...definitions];\n for (const definition of definitions) {\n if (definition.editable) {\n this.editableColumnDefinitions.push(definition);\n }\n if (definition.displayedColumns?.length > 0) {\n this.viewableColumnDefinitions.push(definition);\n }\n }\n }\n\n @Input() set loading(isLoading: boolean) {\n this.isLoading = isLoading;\n }\n\n @Input() set defaultPageSize(defaultSize: number) {\n this.paginatorPageSize = defaultSize;\n }\n\n @Input() set externalPaginator(paginator: any) {\n this.extPaginator = paginator;\n }\n\n @Input() set paginationEnabled(isPaginationEnabled: boolean) {\n this.isPaginationEnabled = isPaginationEnabled;\n this.unsetPageSizeIfNecessary();\n }\n\n @Input() set allColumns(allColumns: DataTableColumn[]) {\n this.allAvailableColumns = allColumns;\n if (allColumns && this.showColumnModal) {\n this.openColumnModal();\n }\n }\n\n @Input()\n set filterEnabled(isFilterEnabled: boolean) {\n this.isFilterEnabled = !this.useAsync ? isFilterEnabled : false;\n this.setFilterValue(undefined);\n }\n\n @Input()\n set forceMode(mode: string) {\n if (mode === this.SINGLE || mode === this.BATCH || mode === this.NONE) {\n this._forceMode = mode;\n this.mode = mode;\n this.setActions();\n }\n }\n\n @Output() sortEvent = new EventEmitter<Sort>();\n @Output() actionEvent = new EventEmitter<DataTableAction>();\n @Output() pageEvent = new EventEmitter<PageEvent>();\n @Output() allColumnsEvent = new EventEmitter<void>();\n @Output() columnDefinitionChangeEvent = new EventEmitter<DataTableColumnDefinitionChange>();\n @Output() viewDefinitionChangeEvent = new EventEmitter<DataTableColumnDefinition>();\n\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n readonly ACTION_COLUMN_NAME = '__action__';\n readonly SINGLE = DataTableActionType.SINGLE;\n readonly BATCH = DataTableActionType.BATCH;\n readonly NONE = DataTableActionType.NONE;\n\n tableActions: DataTableAction[] = [];\n rowActions: DataTableAction[] = [];\n columns: DataTableColumn[] = [];\n allSelected = false;\n selected: [];\n _forceMode: string;\n displayedDataMap = new Map<string, any>();\n actualDataMap = new Map<string, any>();\n dataSource: MatTableDataSource<any[]>;\n selectionModel = new SelectionModel<string>(true);\n columnIds: string[];\n allColumnDefinitions: DataTableColumnDefinition[] = [];\n editableColumnDefinitions: DataTableColumnDefinition[];\n viewableColumnDefinitions: DataTableColumnDefinition[];\n selectedColumnDefinion: DataTableColumnDefinition;\n allAvailableColumns: DataTableColumn[];\n selectedDefinition: DataTableColumnDefinition;\n defaultAction: DataTableAction;\n isFilterEnabled = false;\n isPaginationEnabled = false;\n mode = this.NONE;\n isRowClickable = false;\n showColumnModal = false;\n isLoading = false;\n extPaginator: MatPaginator;\n\n paginatorLength = 0;\n paginatorPageIndex = 0;\n paginatorPageSize = 50;\n\n constructor(private matDialog: MatDialog) {}\n\n static compare(a: Record<string, any>, b: Record<string, any>, sort: Sort): number {\n const x = a[sort.active];\n const y = b[sort.active];\n const ascending = sort.direction === 'asc';\n switch (typeof x) {\n case 'number':\n return DataTableComponent.compareNumber(x, y, ascending);\n case 'string':\n return DataTableComponent.compareString(x, y, ascending);\n case 'boolean':\n return DataTableComponent.compareBoolean(x, y, ascending);\n default:\n // cannot compare -> return equal\n return 0;\n }\n }\n\n static compareNumber(x: number, y: number, ascending: boolean): number {\n return ascending ? x - y : y - x;\n }\n\n static compareString(x: string, y: string, ascending: boolean): number {\n return ascending ? x.localeCompare(y) : y.localeCompare(x);\n }\n\n static compareBoolean(x: boolean, y: boolean, ascending: boolean): number {\n if (x === y) {\n return 0;\n }\n if (ascending) {\n // true first\n return x ? -1 : 1;\n } else {\n // false first\n return x ? 1 : -1;\n }\n }\n\n static transformData(value: any, transformer: any, transformerParams: any): any {\n if (!transformer || !(transformer instanceof Function)) {\n return value;\n }\n return transformer(value, transformerParams);\n }\n\n static generateRowId(): string {\n return uuidV4();\n }\n\n static isClickOnRowMenuIcon(event: MouseEvent): boolean {\n return (event?.target as HTMLElement)?.classList.contains('mat-icon');\n }\n\n ngOnInit(): void {\n this.mode = this.getTableMode();\n this.setActions();\n if (this.mode !== this.NONE) {\n this.isRowClickable = true;\n this.defaultAction = this.rowActions[0];\n }\n }\n\n ngAfterViewInit(): void {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n }\n\n onColumnSettings(definition?: DataTableColumnDefinition): void {\n this.showColumnModal = true;\n this.selectedDefinition = definition ? definition : this.allColumnDefinitions[0];\n if (this.allAvailableColumns) {\n this.openColumnModal();\n } else {\n // if no complete definitions have been loaded yet send an event so the app can load it\n this.allColumnsEvent.emit();\n }\n }\n\n onViewDefinition(definition: DataTableColumnDefinition): void {\n this.selectedDefinition = definition;\n this.viewDefinitionChangeEvent.emit(definition);\n }\n\n isCurrentDefinition(definition: DataTableColumnDefinition): boolean {\n return this.selectedDefinition && this.selectedDefinition.id === definition.id;\n }\n\n get selectedCount(): number {\n return this.selectionModel?.selected ? this.selectionModel.selected.length : 0;\n }\n\n get rowCount(): number {\n return this.getAllDataSourceRowsOfCurrentPage() ? this.getAllDataSourceRowsOfCurrentPage().length : 0;\n }\n\n getAllDataSourceRowsOfCurrentPage(): any[] {\n return this.dataSource?._pageData(this.dataSource.data);\n }\n\n getSelectedCount(actionType: string): string {\n const count = this.selectedCount;\n if (actionType !== this.BATCH || count < 2) {\n return '';\n }\n return ' (' + count + ')';\n }\n\n isDisabled(actionType: string): boolean {\n switch (actionType) {\n case this.SINGLE:\n return this.selectedCount !== 1;\n case this.BATCH:\n return this.selectedCount < 1;\n default:\n return false;\n }\n }\n\n onToggleSelectAll(): void {\n // clear all selection first\n this.selectionModel.clear();\n // toggle all checkbox\n this.allSelected = !this.allSelected;\n if (this.allSelected) {\n // select all rows of the current page\n this.getAllDataSourceRowsOfCurrentPage().forEach(row => {\n this.selectionModel.select('' + row.rowId);\n });\n }\n }\n\n isSelected(rowId: string): boolean {\n return this.selectionModel.isSelected(rowId);\n }\n\n setFilterValue(value: string): void {\n this.dataSource.filter = value?.trim().toLowerCase();\n }\n\n onRowCheckbox(event: MouseEvent, row: any): void {\n event.stopPropagation(); // no click event on row\n this.selectionModel.toggle(row.rowId);\n }\n\n onRowEvent(event: MouseEvent, row: any, action = this.defaultAction): void {\n switch (this.mode) {\n case this.BATCH:\n this.onRowCheckbox(event, row);\n break;\n case this.SINGLE:\n // emit the default action if the row (not the icon!) was clicked\n if (!!action && !DataTableComponent.isClickOnRowMenuIcon(event)) {\n const selected = [];\n // if ID-generator is provided, return the ID, else return the ACTUAL data\n selected.push(this.idGenerator ? row.rowId : this.actualDataMap.get(row.rowId));\n this.emitTableAction(action, selected);\n }\n break;\n default:\n // do nothing if mode is NONE (or null)\n return;\n }\n }\n\n onSortingEvent(sort: Sort): void {\n if (this.useAsync) {\n this.sortEvent.emit(sort);\n } else {\n this.internalSort(sort);\n }\n }\n\n onPageEvent(event: PageEvent): void {\n if (this.useAsync) {\n this.pageEvent.emit(event);\n }\n }\n\n onTableAction(tableAction: DataTableAction): void {\n if (!!tableAction) {\n const selection: any[] = [];\n for (const selected of this.selectionModel.selected) {\n selection.push(this.idGenerator ? selected : this.actualDataMap.get(selected));\n }\n tableAction.selected = selection;\n this.actionEvent.emit(tableAction);\n }\n }\n\n private emitTableAction(action: DataTableAction, selected: any[]): void {\n const emitAction = { ...action };\n if (action.type !== this.NONE) {\n emitAction.selected = [...selected];\n }\n this.actionEvent.emit(emitAction);\n }\n\n private generateDisplayedDataElement(rowId: string, actualDataElement: any): any {\n const displayedDataElement: { [key: string]: any } = {};\n displayedDataElement.rowId = rowId;\n for (const column of this.columns) {\n const actualValue = actualDataElement[column.dataPropertyName];\n displayedDataElement[column.dataPropertyName] = DataTableComponent.transformData(\n actualValue,\n column.transformer,\n column.transformerParams,\n );\n }\n return displayedDataElement;\n }\n\n private internalSort(sort: Sort) {\n const sortedData = [...this.dataSource.data].sort((a, b) => DataTableComponent.compare(a, b, sort));\n this.dataSource.data = [...sortedData];\n }\n\n private setActions(): void {\n this.rowActions = [];\n this.tableActions = [];\n for (const action of this.actions) {\n if (this.mode !== action.hiddenInMode) {\n switch (action.type) {\n case this.SINGLE:\n if (this.mode === this.SINGLE) {\n this.rowActions.push(action);\n } else {\n this.tableActions.push(action);\n }\n break;\n case this.BATCH:\n if (this.mode !== this.SINGLE) {\n this.tableActions.push(action);\n }\n break;\n default:\n this.tableActions.push(action);\n }\n }\n }\n }\n\n private createDataMapsAndSetDisplayedDataSourceData(data: any[]): void {\n const displayedDataList = [];\n this.actualDataMap.clear();\n this.displayedDataMap.clear();\n if (data?.length > 0) {\n for (const dataEntry of data) {\n const rowId = this.idGenerator ? this.idGenerator(dataEntry) : DataTableComponent.generateRowId();\n this.actualDataMap.set(rowId, dataEntry);\n const displayedDataElement = this.generateDisplayedDataElement(rowId, dataEntry);\n this.displayedDataMap.set(rowId, displayedDataElement);\n displayedDataList.push(displayedDataElement);\n }\n }\n this.dataSource.data = displayedDataList;\n this.unsetPageSizeIfNecessary();\n }\n\n private openColumnModal(): void {\n const dialogData: DataTableDialogData = {\n allColumns: this.allAvailableColumns,\n definition: this.selectedDefinition,\n deleteDefinitionAllowed: this.deleteDefinitionAllowed,\n filterColumnsLabel: this.filterColumnsLabel,\n filterColumnsPlaceHolder: this.filterColumnsPlaceHolder,\n noDataText: this.noDataText,\n titleLabel: this.columnSettingsModalTitleLabel,\n selectedLabel: this.selectedLabel,\n availableLabel: this.availableLabel,\n saveLabel: this.saveLabel,\n deleteLabel: this.deleteLabel,\n cancelLabel: this.cancelLabel,\n infoTextLabel: this.infoTextLabel,\n };\n const dialog = this.matDialog.open(DataTableColumnsModalComponent, { data: dialogData });\n dialog.afterClosed().subscribe(result => {\n // no event on CANCEL\n if (result) {\n this.columnDefinitionChangeEvent.emit(result);\n }\n });\n }\n\n private getTableMode(): string {\n if (this._forceMode) {\n return this._forceMode;\n }\n\n if (!this.actions) {\n return this.NONE;\n }\n const distinctActionTypes = new Set<string>();\n for (const rowAction of this.actions) {\n distinctActionTypes.add(rowAction.type);\n }\n if (distinctActionTypes.has(this.BATCH)) {\n return this.BATCH;\n }\n if (distinctActionTypes.has(this.SINGLE)) {\n return this.SINGLE;\n }\n return this.NONE;\n }\n\n private unsetPageSizeIfNecessary() {\n if (!this.useAsync && !this.isPaginationEnabled) {\n const dataCount = this.dataSource.data ? this.dataSource.data.length : 0;\n this.paginatorPageSize = dataCount;\n this.paginatorLength = dataCount;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { DataTableComponent } from './data-table.component';\nimport { ButtonModule } from '../button/button.module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { DataTableColumnsModalComponent } from './data-table-columns-modal/data-table-columns-modal.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [DataTableComponent, DataTableColumnsModalComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n MatProgressSpinnerModule,\n ButtonModule,\n TranslateModule,\n MatCheckboxModule,\n MatBadgeModule,\n DragDropModule,\n FormsModule,\n ],\n exports: [DataTableComponent, DataTableColumnsModalComponent],\n})\nexport class DataTableModule {}\n","import { CdkStepHeader, STEP_STATE, StepState } from '@angular/cdk/stepper';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'mad-step-header',\n templateUrl: './step-header.component.html',\n styleUrls: ['./step-header.component.scss'],\n inputs: ['color'],\n host: {\n class: 'mad-step-header',\n role: 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepHeaderComponent extends CdkStepHeader implements AfterViewInit, OnDestroy {\n @Input()\n index: number;\n\n @Input()\n label: string;\n\n @Input() state: StepState;\n\n @Input() errorMessage: string;\n\n @Input() selected: boolean;\n\n @Input() active: boolean;\n\n @Input() optional: boolean;\n\n @Input() hasError: boolean;\n\n @Input() completed: boolean;\n\n @Input() closed: boolean;\n\n constructor(private _focusMonitor: FocusMonitor, _elementRef: ElementRef<HTMLElement>) {\n super(_elementRef);\n }\n\n ngAfterViewInit(): void {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy(): void {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n focus(origin?: FocusOrigin, options?: FocusOptions): void {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n getCssForState(): string {\n if (this.state === STEP_STATE.NUMBER && !this.completed && !this.hasError) {\n return 'step-state-neutral'; //initiale state is 'number'\n } else if (this.completed) {\n return 'step-state-complete';\n } else if (this.hasError) {\n return 'step-state-error';\n }\n }\n\n getIcon(): string {\n if (this.completed) {\n return 'check_circle_outline';\n } else if (this.hasError) {\n return 'error_outline';\n }\n return '';\n }\n}\n","import { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\n/**\n * Animations used by the MAD stepper.\n */\nexport const madStepperAnimations: {\n readonly verticalStepTransition: AnimationTriggerMetadata;\n} = {\n verticalStepTransition: trigger('stepTransition', [\n state('previous', style({ height: '0px', visibility: 'hidden' })),\n state('next', style({ height: '0px', visibility: 'hidden' })),\n state('current', style({ height: '*', visibility: 'visible' })),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { CdkStep, CdkStepper, STEP_STATE, StepContentPositionState } from '@angular/cdk/stepper';\nimport { AnimationEvent } from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { StepHeaderComponent } from './step-header/step-header.component';\nimport { madStepperAnimations } from './mad-stepper-animation';\n\n@Component({\n selector: 'mad-step',\n templateUrl: './step.component.html',\n styleUrls: ['./stepper.component.scss'],\n providers: [{ provide: CdkStep, useExisting: StepComponent }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepComponent extends CdkStep implements AfterContentInit, OnDestroy {\n /** Action event for the next button. If not set the StepComponent will handle the step navigation */\n @Output()\n onNext = new EventEmitter<any>();\n\n /** Action event for the done button. If not set the StepComponent will handle the step navigation */\n @Output()\n onDone = new EventEmitter<any>();\n\n /*** Action event when the header is clicked. If not set the StepComponent will handle the step navigation*/\n @Output()\n onHeaderClick = new EventEmitter<any>();\n\n stepClosed = false;\n\n private _isSelected = Subscription.EMPTY;\n\n constructor(@Inject(forwardRef(() => StepperComponent)) private stepper: StepperComponent, private _viewContainerRef: ViewContainerRef) {\n super(stepper);\n }\n\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes\n .pipe(\n switchMap(() =>\n this._stepper.selectionChange.pipe(\n map(event => event.selectedStep === this),\n tap(() => (this.stepClosed = false)),\n startWith(this._stepper.selected === this),\n ),\n ),\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n\n next(markFormAsTouched = true): void {\n this.stepValidation(markFormAsTouched);\n\n if (this.onNext.observers.length <= 0) {\n this.stepper.next();\n }\n this.onNext.emit();\n }\n\n selectAndMarkAsTouched(index: number): void {\n //Mark current selected step as touched before selecting to display errors in the from\n this._stepper.selected?.stepControl?.markAllAsTouched();\n this.stepClosed = false;\n if (this.onHeaderClick.observers.length <= 0) {\n this.select();\n }\n this.onHeaderClick.emit(index);\n }\n\n completeLast(): void {\n this.stepValidation(true);\n this.stepClosed = true;\n\n if (this.onDone.observers.length <= 0) {\n this.stepper.next();\n }\n\n this.onDone.emit();\n }\n\n resetValidations(): void {\n this.hasError = false;\n this.completed = true;\n this.state = STEP_STATE.DONE;\n }\n\n private stepValidation(markFormAsTouched: boolean): void {\n if (markFormAsTouched) {\n this.stepControl?.markAllAsTouched();\n }\n if (this.stepControl?.valid) {\n this.hasError = false;\n this.completed = true;\n this.state = STEP_STATE.DONE;\n } else {\n this.completed = false;\n this.hasError = true;\n this.state = STEP_STATE.ERROR;\n }\n }\n}\n\n@Component({\n selector: 'mad-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n host: {\n '[class.stepper-vertical]': 'true',\n '[attr.aria-orientation]': '\"vertical\"',\n role: 'tablist',\n },\n animations: [madStepperAnimations.verticalStepTransition],\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n providers: [{ provide: CdkStepper, useExisting: StepperComponent }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepperComponent extends CdkStepper implements OnInit, AfterContentInit {\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n @Input()\n nextButtonLabel: string;\n\n @Input()\n doneButtonLabel: string;\n /** Step headers of all steps inside the stepper */\n @ViewChildren(StepHeaderComponent) _stepHeader: QueryList<StepHeaderComponent>;\n\n /** Steps inside the Stepper */\n @ContentChildren(StepComponent, { descendants: true }) _steps: QueryList<StepComponent>;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n steps: QueryList<StepComponent> = new QueryList<StepComponent>();\n\n readonly _animationDone = new Subject<AnimationEvent>();\n\n constructor(\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) _document: any,\n ) {\n super(dir, changeDetectorRef, elementRef, _document);\n this._orientation = 'vertical';\n }\n\n ngOnInit() {\n // Only linear stepper implementation is supported\n super.linear = true;\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n\n this._animationDone\n .pipe(\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n takeUntil(this._destroyed),\n )\n .subscribe(event => {\n if ((event.toState as StepContentPositionState) === 'current') {\n this.animationDone.emit();\n }\n });\n }\n\n /**\n * Method patched to enable the closing of the last step.\n */\n _getAnimationDirection(index: number): StepContentPositionState {\n const closeLastStep = this.selectedIndex === this.steps.length - 1 && this._steps.last?.completed && this._steps.last?.stepClosed;\n if (closeLastStep) {\n return 'next';\n }\n return super._getAnimationDirection(index);\n }\n\n _stepIsNavigable(index: number, step: StepComponent): boolean {\n return step.completed || this.selectedIndex === index || !this.linear;\n }\n}\n","import { StepComponent, StepperComponent } from './stepper.component';\nimport { StepHeaderComponent } from './step-header/step-header.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgModule } from '@angular/core';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { FlexModule } from '@angular/flex-layout';\n\n@NgModule({\n declarations: [StepperComponent, StepHeaderComponent, StepComponent],\n imports: [CommonModule, MatButtonModule, MatIconModule, CdkStepperModule, FlexModule],\n exports: [StepperComponent, StepHeaderComponent, StepComponent],\n})\nexport class StepperModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-header',\n templateUrl: './content-header.component.html',\n styleUrls: ['./content-header.component.scss'],\n})\nexport class ContentHeaderComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container',\n templateUrl: './content-panel-container.component.html',\n styleUrls: ['./content-panel-container.component.scss'],\n})\nexport class ContentPanelContainerComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-content',\n templateUrl: './content-panel-container-content.component.html',\n styleUrls: ['./content-panel-container-content.component.scss'],\n})\nexport class ContentPanelContainerContentComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-footer',\n templateUrl: './content-panel-container-footer.component.html',\n styleUrls: ['./content-panel-container-footer.component.scss'],\n})\nexport class ContentPanelContainerFooterComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-main-container',\n templateUrl: './main-container.component.html',\n styleUrls: ['./main-container.component.scss'],\n})\nexport class MainContainerComponent {}\n","import { ContentHeaderComponent } from './content-header/content-header.component';\nimport { ContentPanelContainerComponent } from './content-panel-container/content-panel-container.component';\nimport { ContentPanelContainerContentComponent } from './content-panel-container-content/content-panel-container-content.component';\nimport { ContentPanelContainerFooterComponent } from './content-panel-container-footer/content-panel-container-footer.component';\nimport { MainContainerComponent } from './main-container/main-container.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [\n ContentHeaderComponent,\n ContentPanelContainerComponent,\n ContentPanelContainerContentComponent,\n ContentPanelContainerFooterComponent,\n MainContainerComponent,\n ],\n imports: [CommonModule],\n exports: [\n ContentHeaderComponent,\n ContentPanelContainerComponent,\n ContentPanelContainerContentComponent,\n ContentPanelContainerFooterComponent,\n MainContainerComponent,\n ],\n})\nexport class ContentPanelModule {}\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatStepper } from '@angular/material/stepper';\n\nexport interface IStep {\n label: string;\n enabled?: boolean;\n subSteps?: IStep[];\n activeSubStep?: IStep;\n}\n\n@Component({\n selector: 'mad-flowbar',\n templateUrl: './flowbar.component.html',\n styleUrls: ['./flowbar.component.scss'],\n})\nexport class FlowbarComponent implements OnInit, AfterViewInit {\n @Input('steps') _steps: IStep[] = [];\n @Input('activeStep') _activeStep: IStep;\n @Output('activeStepChange') _activeStepChange: EventEmitter<IStep> = new EventEmitter<IStep>(true);\n /**\n * Event emitted when a step header is clicked.\n * When defined header navigation has to be implemented programmatically.\n * e.g. {@see changeActiveStepOnHeader}\n */\n @Output('headerClick') _headerClick: EventEmitter<IStep> = new EventEmitter<IStep>(true);\n @ViewChild('stepper') private stepper: MatStepper;\n\n get currentStepLabel(): string {\n return this._activeStep.label;\n }\n\n get currentSubStepLabel(): string {\n return this._activeStep.activeSubStep?.label;\n }\n\n ngOnInit(): void {\n // If no active step is set as input or the active step is not enabled, select the first enabled step\n if (!this._activeStep || !this._activeStep.enabled) {\n this._activeStep = this._steps.find(step => step.enabled);\n if (this._activeStep) {\n // If sub steps exist then set the first non disabled sub step per default\n if (this.activeTabHasSubSteps()) {\n this._activeStep.activeSubStep = this._activeStep.subSteps.find(step => step.enabled);\n }\n this._activeStepChange.emit(this._activeStep);\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.stepper._getIndicatorType = (): any => 'number';\n }\n\n getIndexForActiveStep(): number {\n const selectedIndex = this._steps.indexOf(this._activeStep);\n return selectedIndex === -1 ? 0 : selectedIndex;\n }\n\n changeActiveStep(step: IStep): void {\n const previousIndex = this._steps.indexOf(this._activeStep);\n this._activeStep = step;\n if (this.activeTabHasSubSteps()) {\n if (previousIndex < this._steps.indexOf(this._activeStep)) {\n this._activeStep.activeSubStep = this._activeStep.subSteps[0];\n } else {\n this._activeStep.activeSubStep = this._activeStep.subSteps[this._activeStep.subSteps.length - 1];\n }\n }\n this._activeStepChange.emit(this._activeStep);\n }\n\n changeActiveStepOnHeader(step: IStep): void {\n const stepIndex = this._steps.indexOf(step);\n this._activeStep = step;\n this.stepper.selected = this.stepper._steps.find((_, i) => i === stepIndex);\n }\n\n changeActiveSubStep(subStep: IStep): void {\n this._activeStep.activeSubStep = subStep;\n }\n\n previous(): void {\n if (this.isPreviousAvailable()) {\n // If active step has no sub steps or first sub step is selected -> go to previous main step\n if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {\n const previousEnabledStep = this.findPreviousEnabledStep();\n this.changeActiveStep(previousEnabledStep);\n this.stepper.selectedIndex = this._steps.indexOf(previousEnabledStep);\n } else {\n const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);\n this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex - 1];\n }\n }\n }\n\n next(): void {\n if (this.isNextAvailable()) {\n // If active step has no sub steps or last sub step is selected -> go to next main step\n if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {\n const nextEnabledStep = this.findNextEnabledStep();\n this.changeActiveStep(nextEnabledStep);\n this.stepper.selectedIndex = this._steps.indexOf(nextEnabledStep);\n } else {\n const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);\n this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex + 1];\n }\n }\n }\n\n isPreviousAvailable(): boolean {\n if (this._activeStep) {\n if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {\n const index = this.getCurrentIndex();\n return index > 0 && this.isAnyPreviousStepEnabled(index);\n } else {\n return true;\n }\n }\n return false;\n }\n\n isNextAvailable(): boolean {\n if (this._activeStep) {\n if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {\n const index = this.getCurrentIndex();\n return index < this._steps.length - 1 && this.isAnyFollowingStepEnabled(index);\n } else {\n return true;\n }\n }\n return false;\n }\n\n isLastStep(): boolean {\n if (this.getCurrentIndex() === this._steps.length - 1) {\n if (this.activeTabHasSubSteps()) {\n return this.isLastSubStep();\n } else {\n return true;\n }\n }\n return false;\n }\n\n getCurrentIndex(): number {\n return this._steps.findIndex(value => value === this._activeStep);\n }\n\n getCurrentSubStepIndex(): number {\n return this._activeStep.subSteps.findIndex(value => value === this._activeStep.activeSubStep);\n }\n\n triggerClick(): void {\n const selectedStep = this._steps[this.stepper.selectedIndex];\n this.changeActiveStep(selectedStep);\n }\n\n headerClick(event: any, step: IStep): void {\n event.stopPropagation(); //stop processing current header click event\n this._headerClick.emit(step);\n }\n\n private activeTabHasSubSteps(): boolean {\n return this._activeStep.subSteps && this._activeStep.subSteps.length > 0;\n }\n\n private isFirstSubStep(): boolean {\n return this._activeStep.activeSubStep === this._activeStep.subSteps[0];\n }\n\n private isLastSubStep(): boolean {\n return this._activeStep.activeSubStep === this._activeStep.subSteps[this._activeStep.subSteps.length - 1];\n }\n\n private isAnyPreviousStepEnabled(index: number): boolean {\n // eslint-disable-next-line id-blacklist\n return this._steps.slice(0, index).find(step => step.enabled) !== undefined;\n }\n\n private isAnyFollowingStepEnabled(index: number): boolean {\n // eslint-disable-next-line id-blacklist\n return this._steps.slice(index + 1, this._steps.length).find(step => step.enabled) !== undefined;\n }\n\n private findPreviousEnabledStep(): IStep {\n const index = this.getCurrentIndex();\n return this._steps\n .slice(0, index)\n .reverse()\n .find(step => step.enabled);\n }\n\n private findNextEnabledStep(): IStep {\n const index = this.getCurrentIndex();\n return this._steps.slice(index + 1, this._steps.length).find(step => step.enabled);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FlowbarComponent } from './flowbar.component';\n\n@NgModule({\n declarations: [FlowbarComponent],\n imports: [CommonModule, MatStepperModule],\n exports: [FlowbarComponent],\n})\nexport class FlowbarModule {}\n","import { NgModule } from '@angular/core';\nimport { ToolbarModule } from './toolbar/toolbar.module';\nimport { ReadOnlyFormFieldModule } from './readonly/readonly-form-field.module';\nimport { MaterialActionButtonModule } from './material-action-button/material-action-button.module';\nimport { NumericFieldModule } from './numeric-field/numeric-field.module';\nimport { CardModule } from './card/card.module';\nimport { QuickListModule } from './quick-list/quick-list.module';\nimport { ButtonModule } from './button/button.module';\nimport { ThrottleClickModule } from './throttle-click/throttle-click.module';\n\n@NgModule({\n exports: [\n ReadOnlyFormFieldModule,\n ButtonModule,\n ToolbarModule,\n MaterialActionButtonModule,\n NumericFieldModule,\n CardModule,\n QuickListModule,\n ThrottleClickModule,\n ],\n})\nexport class MaterialAddonsModule {}\n"]}
|