@porscheinformatik/material-addons 10.4.0 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2015/porscheinformatik-material-addons.mjs +2984 -0
- package/fesm2015/porscheinformatik-material-addons.mjs.map +1 -0
- package/lib/button/button.d.ts +7 -0
- package/lib/button/button.d.ts.map +1 -0
- package/lib/button/button.module.d.ts +15 -0
- package/lib/button/button.module.d.ts.map +1 -0
- package/lib/button/danger-button/danger-button.component.d.ts +4 -0
- package/lib/button/danger-button/danger-button.component.d.ts.map +1 -0
- package/lib/button/flat-button/link-button.component.d.ts +4 -0
- package/lib/button/flat-button/link-button.component.d.ts.map +1 -0
- package/lib/button/icon-button/icon-button.component.d.ts +4 -0
- package/lib/button/icon-button/icon-button.component.d.ts.map +1 -0
- package/lib/button/mad-basic-button.d.ts +5 -1
- package/lib/button/mad-basic-button.d.ts.map +1 -0
- package/lib/button/outline-button/outline-button.component.d.ts +4 -0
- package/lib/button/outline-button/outline-button.component.d.ts.map +1 -0
- package/lib/button/primary-button/primary-button.component.d.ts +4 -0
- package/lib/button/primary-button/primary-button.component.d.ts.map +1 -0
- package/lib/card/card.component.d.ts +4 -0
- package/lib/card/card.component.d.ts.map +1 -0
- package/lib/card/card.d.ts +2 -0
- package/lib/card/card.d.ts.map +1 -0
- package/lib/card/card.module.d.ts +12 -0
- package/lib/card/card.module.d.ts.map +1 -0
- package/lib/content-panel/content-header/content-header.component.d.ts +4 -0
- package/lib/content-panel/content-header/content-header.component.d.ts.map +1 -0
- package/lib/content-panel/content-panel-container/content-panel-container.component.d.ts +4 -0
- package/lib/content-panel/content-panel-container/content-panel-container.component.d.ts.map +1 -0
- package/lib/content-panel/content-panel-container-content/content-panel-container-content.component.d.ts +4 -0
- package/lib/content-panel/content-panel-container-content/content-panel-container-content.component.d.ts.map +1 -0
- package/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.d.ts +4 -0
- package/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.d.ts.map +1 -0
- package/lib/content-panel/content-panel.module.d.ts +11 -0
- package/lib/content-panel/content-panel.module.d.ts.map +1 -0
- package/lib/content-panel/main-container/main-container.component.d.ts +4 -0
- package/lib/content-panel/main-container/main-container.component.d.ts.map +1 -0
- package/lib/data-table/data-table-action-type.d.ts +1 -0
- package/lib/data-table/data-table-action-type.d.ts.map +1 -0
- package/lib/data-table/data-table-action.d.ts +1 -0
- package/lib/data-table/data-table-action.d.ts.map +1 -0
- package/lib/data-table/data-table-column-definition.d.ts +1 -0
- package/lib/data-table/data-table-column-definition.d.ts.map +1 -0
- package/lib/data-table/data-table-column.d.ts +1 -0
- package/lib/data-table/data-table-column.d.ts.map +1 -0
- package/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.d.ts +4 -0
- package/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.d.ts.map +1 -0
- package/lib/data-table/data-table.component.d.ts +4 -0
- package/lib/data-table/data-table.component.d.ts.map +1 -0
- package/lib/data-table/data-table.d.ts +3 -0
- package/lib/data-table/data-table.d.ts.map +1 -0
- package/lib/data-table/data-table.module.d.ts +23 -0
- package/lib/data-table/data-table.module.d.ts.map +1 -0
- package/lib/flowbar/flowbar.component.d.ts +4 -0
- package/lib/flowbar/flowbar.component.d.ts.map +1 -0
- package/lib/flowbar/flowbar.module.d.ts +8 -0
- package/lib/flowbar/flowbar.module.d.ts.map +1 -0
- package/lib/material-action-button/material-action-button.component.d.ts +4 -0
- package/lib/material-action-button/material-action-button.component.d.ts.map +1 -0
- package/lib/material-action-button/material-action-button.module.d.ts +11 -0
- package/lib/material-action-button/material-action-button.module.d.ts.map +1 -0
- package/lib/material-addons.module.d.ts +13 -0
- package/lib/material-addons.module.d.ts.map +1 -0
- package/lib/numeric-field/number-format.service.d.ts +4 -0
- package/lib/numeric-field/number-format.service.d.ts.map +1 -0
- package/lib/numeric-field/numeric-field.d.ts +2 -0
- package/lib/numeric-field/numeric-field.d.ts.map +1 -0
- package/lib/numeric-field/numeric-field.directive.d.ts +4 -0
- package/lib/numeric-field/numeric-field.directive.d.ts.map +1 -0
- package/lib/numeric-field/numeric-field.module.d.ts +6 -0
- package/lib/numeric-field/numeric-field.module.d.ts.map +1 -0
- package/lib/quick-list/base-quick-list.component.d.ts +5 -0
- package/lib/quick-list/base-quick-list.component.d.ts.map +1 -0
- package/lib/quick-list/quick-list-compact/quick-list-compact.component.d.ts +4 -0
- package/lib/quick-list/quick-list-compact/quick-list-compact.component.d.ts.map +1 -0
- package/lib/quick-list/quick-list.component.d.ts +4 -0
- package/lib/quick-list/quick-list.component.d.ts.map +1 -0
- package/lib/quick-list/quick-list.d.ts +4 -0
- package/lib/quick-list/quick-list.d.ts.map +1 -0
- package/lib/quick-list/quick-list.module.d.ts +12 -0
- package/lib/quick-list/quick-list.module.d.ts.map +1 -0
- package/lib/readonly/readonly-form-field/readonly-form-field.component.d.ts +4 -0
- package/lib/readonly/readonly-form-field/readonly-form-field.component.d.ts.map +1 -0
- package/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.d.ts +4 -0
- package/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.d.ts.map +1 -0
- package/lib/readonly/readonly-form-field.module.d.ts +13 -0
- package/lib/readonly/readonly-form-field.module.d.ts.map +1 -0
- package/lib/stepper/mad-stepper-animation.d.ts +1 -0
- package/lib/stepper/mad-stepper-animation.d.ts.map +1 -0
- package/lib/stepper/step-header/step-header.component.d.ts +4 -0
- package/lib/stepper/step-header/step-header.component.d.ts.map +1 -0
- package/lib/stepper/stepper.component.d.ts +7 -1
- package/lib/stepper/stepper.component.d.ts.map +1 -0
- package/lib/stepper/stepper.module.d.ts +12 -0
- package/lib/stepper/stepper.module.d.ts.map +1 -0
- package/lib/table/column-header.d.ts +1 -0
- package/lib/table/column-header.d.ts.map +1 -0
- package/lib/table/table-action.d.ts +1 -0
- package/lib/table/table-action.d.ts.map +1 -0
- package/lib/table/table.component.d.ts +4 -0
- package/lib/table/table.component.d.ts.map +1 -0
- package/lib/table/table.d.ts +2 -0
- package/lib/table/table.d.ts.map +1 -0
- package/lib/table/table.module.d.ts +16 -0
- package/lib/table/table.module.d.ts.map +1 -0
- package/lib/throttle-click/throttle-click.directive.d.ts +4 -0
- package/lib/throttle-click/throttle-click.directive.d.ts.map +1 -0
- package/lib/throttle-click/throttle-click.module.d.ts +7 -0
- package/lib/throttle-click/throttle-click.module.d.ts.map +1 -0
- package/lib/toolbar/toolbar-action.interface.d.ts +1 -0
- package/lib/toolbar/toolbar-action.interface.d.ts.map +1 -0
- package/lib/toolbar/toolbar.component.d.ts +4 -0
- package/lib/toolbar/toolbar.component.d.ts.map +1 -0
- package/lib/toolbar/toolbar.module.d.ts +16 -0
- package/lib/toolbar/toolbar.module.d.ts.map +1 -0
- package/lib/toolbar/toolbar.service.d.ts +4 -0
- package/lib/toolbar/toolbar.service.d.ts.map +1 -0
- package/package.json +29 -16
- package/public-api.d.ts +5 -0
- package/themes/common/styles.scss +23 -22
- package/bundles/porscheinformatik-material-addons.umd.js +0 -3299
- package/bundles/porscheinformatik-material-addons.umd.js.map +0 -1
- package/bundles/porscheinformatik-material-addons.umd.min.js +0 -17
- package/bundles/porscheinformatik-material-addons.umd.min.js.map +0 -1
- package/esm2015/lib/button/button.module.js +0 -21
- package/esm2015/lib/button/danger-button/danger-button.component.js +0 -25
- package/esm2015/lib/button/flat-button/link-button.component.js +0 -25
- package/esm2015/lib/button/icon-button/icon-button.component.js +0 -25
- package/esm2015/lib/button/mad-basic-button.js +0 -28
- package/esm2015/lib/button/outline-button/outline-button.component.js +0 -25
- package/esm2015/lib/button/primary-button/primary-button.component.js +0 -25
- package/esm2015/lib/card/card.component.js +0 -86
- package/esm2015/lib/card/card.module.js +0 -18
- package/esm2015/lib/content-panel/content-header/content-header.component.js +0 -11
- package/esm2015/lib/content-panel/content-panel-container/content-panel-container.component.js +0 -11
- package/esm2015/lib/content-panel/content-panel-container-content/content-panel-container-content.component.js +0 -11
- package/esm2015/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.js +0 -11
- package/esm2015/lib/content-panel/content-panel.module.js +0 -29
- package/esm2015/lib/content-panel/main-container/main-container.component.js +0 -11
- package/esm2015/lib/data-table/data-table-action-type.js +0 -6
- package/esm2015/lib/data-table/data-table-action.js +0 -1
- package/esm2015/lib/data-table/data-table-column-definition.js +0 -1
- package/esm2015/lib/data-table/data-table-column.js +0 -1
- package/esm2015/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.js +0 -93
- package/esm2015/lib/data-table/data-table.component.js +0 -459
- package/esm2015/lib/data-table/data-table.js +0 -1
- package/esm2015/lib/data-table/data-table.module.js +0 -46
- package/esm2015/lib/flowbar/flowbar.component.js +0 -182
- package/esm2015/lib/flowbar/flowbar.module.js +0 -14
- package/esm2015/lib/material-action-button/material-action-button.component.js +0 -25
- package/esm2015/lib/material-action-button/material-action-button.module.js +0 -17
- package/esm2015/lib/material-addons.module.js +0 -26
- package/esm2015/lib/numeric-field/number-format.service.js +0 -137
- package/esm2015/lib/numeric-field/numeric-field.directive.js +0 -275
- package/esm2015/lib/numeric-field/numeric-field.module.js +0 -19
- package/esm2015/lib/quick-list/base-quick-list.component.js +0 -89
- package/esm2015/lib/quick-list/quick-list-compact/quick-list-compact.component.js +0 -18
- package/esm2015/lib/quick-list/quick-list.component.js +0 -19
- package/esm2015/lib/quick-list/quick-list.module.js +0 -18
- package/esm2015/lib/readonly/readonly-form-field/readonly-form-field.component.js +0 -131
- package/esm2015/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.js +0 -164
- package/esm2015/lib/readonly/readonly-form-field.module.js +0 -19
- package/esm2015/lib/stepper/mad-stepper-animation.js +0 -13
- package/esm2015/lib/stepper/step-header/step-header.component.js +0 -75
- package/esm2015/lib/stepper/stepper.component.js +0 -169
- package/esm2015/lib/stepper/stepper.module.js +0 -18
- package/esm2015/lib/table/column-header.js +0 -1
- package/esm2015/lib/table/table-action.js +0 -1
- package/esm2015/lib/table/table.component.js +0 -106
- package/esm2015/lib/table/table.js +0 -1
- package/esm2015/lib/table/table.module.js +0 -33
- package/esm2015/lib/throttle-click/throttle-click.directive.js +0 -32
- package/esm2015/lib/throttle-click/throttle-click.module.js +0 -13
- package/esm2015/lib/toolbar/toolbar-action.interface.js +0 -1
- package/esm2015/lib/toolbar/toolbar.component.js +0 -71
- package/esm2015/lib/toolbar/toolbar.module.js +0 -33
- package/esm2015/lib/toolbar/toolbar.service.js +0 -127
- package/esm2015/porscheinformatik-material-addons.js +0 -19
- package/esm2015/public-api.js +0 -37
- package/fesm2015/porscheinformatik-material-addons.js +0 -2656
- package/fesm2015/porscheinformatik-material-addons.js.map +0 -1
- package/porscheinformatik-material-addons.d.ts +0 -19
- package/porscheinformatik-material-addons.metadata.json +0 -1
|
@@ -1 +0,0 @@
|
|
|
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,21 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { RouterModule } from '@angular/router';
|
|
4
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
7
|
-
import { PrimaryButtonComponent } from './primary-button/primary-button.component';
|
|
8
|
-
import { OutlineButtonComponent } from './outline-button/outline-button.component';
|
|
9
|
-
import { LinkButtonComponent } from './flat-button/link-button.component';
|
|
10
|
-
import { IconButtonComponent } from './icon-button/icon-button.component';
|
|
11
|
-
import { DangerButtonComponent } from './danger-button/danger-button.component';
|
|
12
|
-
export class ButtonModule {
|
|
13
|
-
}
|
|
14
|
-
ButtonModule.decorators = [
|
|
15
|
-
{ type: NgModule, args: [{
|
|
16
|
-
declarations: [PrimaryButtonComponent, OutlineButtonComponent, LinkButtonComponent, DangerButtonComponent, IconButtonComponent],
|
|
17
|
-
imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule],
|
|
18
|
-
exports: [PrimaryButtonComponent, OutlineButtonComponent, LinkButtonComponent, DangerButtonComponent, IconButtonComponent],
|
|
19
|
-
},] }
|
|
20
|
-
];
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9tYXRlcmlhbC1hZGRvbnMvbWF0ZXJpYWwtYWRkb25zL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvIiwic291cmNlcyI6WyJsaWIvYnV0dG9uL2J1dHRvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFPaEYsTUFBTSxPQUFPLFlBQVk7OztZQUx4QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLENBQUM7Z0JBQy9ILE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQztnQkFDdkYsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLENBQUM7YUFDM0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgUHJpbWFyeUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vcHJpbWFyeS1idXR0b24vcHJpbWFyeS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE91dGxpbmVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL291dGxpbmUtYnV0dG9uL291dGxpbmUtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaW5rQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9mbGF0LWJ1dHRvbi9saW5rLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERhbmdlckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZGFuZ2VyLWJ1dHRvbi9kYW5nZXItYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1ByaW1hcnlCdXR0b25Db21wb25lbnQsIE91dGxpbmVCdXR0b25Db21wb25lbnQsIExpbmtCdXR0b25Db21wb25lbnQsIERhbmdlckJ1dHRvbkNvbXBvbmVudCwgSWNvbkJ1dHRvbkNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlXSxcbiAgZXhwb3J0czogW1ByaW1hcnlCdXR0b25Db21wb25lbnQsIE91dGxpbmVCdXR0b25Db21wb25lbnQsIExpbmtCdXR0b25Db21wb25lbnQsIERhbmdlckJ1dHRvbkNvbXBvbmVudCwgSWNvbkJ1dHRvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbk1vZHVsZSB7fVxuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { MadBasicButton } from '../mad-basic-button';
|
|
3
|
-
export class DangerButtonComponent extends MadBasicButton {
|
|
4
|
-
constructor() {
|
|
5
|
-
super();
|
|
6
|
-
this.title = '';
|
|
7
|
-
super.button = this.button;
|
|
8
|
-
super.disabled = this.disabled;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
DangerButtonComponent.decorators = [
|
|
12
|
-
{ type: Component, args: [{
|
|
13
|
-
selector: 'mad-danger-button',
|
|
14
|
-
template: "<button mat-raised-button color=\"warn\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n",
|
|
15
|
-
styles: [""]
|
|
16
|
-
},] }
|
|
17
|
-
];
|
|
18
|
-
DangerButtonComponent.ctorParameters = () => [];
|
|
19
|
-
DangerButtonComponent.propDecorators = {
|
|
20
|
-
type: [{ type: Input }],
|
|
21
|
-
disabled: [{ type: Input }],
|
|
22
|
-
title: [{ type: Input }],
|
|
23
|
-
button: [{ type: ViewChild, args: ['btn', { read: ElementRef, static: true },] }]
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2VyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL2J1dHRvbi9kYW5nZXItYnV0dG9uL2Rhbmdlci1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBT3JELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxjQUFjO0lBWXZEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFMVixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBTVQsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDOzs7WUFyQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLHNJQUE2Qzs7YUFFOUM7Ozs7bUJBRUUsS0FBSzt1QkFHTCxLQUFLO29CQUdMLEtBQUs7cUJBR0wsU0FBUyxTQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWFkQmFzaWNCdXR0b24gfSBmcm9tICcuLi9tYWQtYmFzaWMtYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLWRhbmdlci1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGFuZ2VyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rhbmdlci1idXR0b24uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYW5nZXJCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBNYWRCYXNpY0J1dHRvbiB7XG4gIEBJbnB1dCgpXG4gIHR5cGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICB0aXRsZSA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoJ2J0bicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGJ1dHRvbjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHN1cGVyLmJ1dHRvbiA9IHRoaXMuYnV0dG9uO1xuICAgIHN1cGVyLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcbiAgfVxufVxuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { MadBasicButton } from '../mad-basic-button';
|
|
3
|
-
export class LinkButtonComponent extends MadBasicButton {
|
|
4
|
-
constructor() {
|
|
5
|
-
super();
|
|
6
|
-
this.title = '';
|
|
7
|
-
super.button = this.button;
|
|
8
|
-
super.disabled = this.disabled;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
LinkButtonComponent.decorators = [
|
|
12
|
-
{ type: Component, args: [{
|
|
13
|
-
selector: 'mad-link-button',
|
|
14
|
-
template: "<button [title]=\"title\" [type]=\"type\" color=\"primary\" #btn mat-button>\n <ng-content></ng-content>\n</button>\n",
|
|
15
|
-
styles: [""]
|
|
16
|
-
},] }
|
|
17
|
-
];
|
|
18
|
-
LinkButtonComponent.ctorParameters = () => [];
|
|
19
|
-
LinkButtonComponent.propDecorators = {
|
|
20
|
-
type: [{ type: Input }],
|
|
21
|
-
disabled: [{ type: Input }],
|
|
22
|
-
title: [{ type: Input }],
|
|
23
|
-
button: [{ type: ViewChild, args: ['btn', { read: ElementRef, static: true },] }]
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL21hdGVyaWFsLWFkZG9ucy9tYXRlcmlhbC1hZGRvbnMvcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9idXR0b24vZmxhdC1idXR0b24vbGluay1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBTXJELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxjQUFjO0lBWXJEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFMVixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBTVQsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDOzs7WUFyQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLGtJQUEyQzs7YUFFNUM7Ozs7bUJBRUUsS0FBSzt1QkFHTCxLQUFLO29CQUdMLEtBQUs7cUJBR0wsU0FBUyxTQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWFkQmFzaWNCdXR0b24gfSBmcm9tICcuLi9tYWQtYmFzaWMtYnV0dG9uJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hZC1saW5rLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5rLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmstYnV0dG9uLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlua0J1dHRvbkNvbXBvbmVudCBleHRlbmRzIE1hZEJhc2ljQnV0dG9uIHtcbiAgQElucHV0KClcbiAgdHlwZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHRpdGxlID0gJyc7XG5cbiAgQFZpZXdDaGlsZCgnYnRuJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgYnV0dG9uOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgc3VwZXIuYnV0dG9uID0gdGhpcy5idXR0b247XG4gICAgc3VwZXIuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xuICB9XG59XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { MadBasicButton } from '../mad-basic-button';
|
|
3
|
-
export class IconButtonComponent extends MadBasicButton {
|
|
4
|
-
constructor() {
|
|
5
|
-
super();
|
|
6
|
-
this.title = '';
|
|
7
|
-
super.button = this.button;
|
|
8
|
-
super.disabled = this.disabled;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
IconButtonComponent.decorators = [
|
|
12
|
-
{ type: Component, args: [{
|
|
13
|
-
selector: 'mad-icon-button',
|
|
14
|
-
template: "<button mat-icon-button color=\"primary\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n",
|
|
15
|
-
styles: [""]
|
|
16
|
-
},] }
|
|
17
|
-
];
|
|
18
|
-
IconButtonComponent.ctorParameters = () => [];
|
|
19
|
-
IconButtonComponent.propDecorators = {
|
|
20
|
-
type: [{ type: Input }],
|
|
21
|
-
disabled: [{ type: Input }],
|
|
22
|
-
title: [{ type: Input }],
|
|
23
|
-
button: [{ type: ViewChild, args: ['btn', { read: ElementRef, static: true },] }]
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL21hdGVyaWFsLWFkZG9ucy9tYXRlcmlhbC1hZGRvbnMvcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9idXR0b24vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBT3JELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxjQUFjO0lBWXJEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFMVixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBTVQsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDOzs7WUFyQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLHVJQUEyQzs7YUFFNUM7Ozs7bUJBRUUsS0FBSzt1QkFHTCxLQUFLO29CQUdMLEtBQUs7cUJBR0wsU0FBUyxTQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWFkQmFzaWNCdXR0b24gfSBmcm9tICcuLi9tYWQtYmFzaWMtYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLWljb24tYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi1idXR0b24uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJY29uQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgTWFkQmFzaWNCdXR0b24ge1xuICBASW5wdXQoKVxuICB0eXBlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgdGl0bGUgPSAnJztcblxuICBAVmlld0NoaWxkKCdidG4nLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBidXR0b246IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBzdXBlci5idXR0b24gPSB0aGlzLmJ1dHRvbjtcbiAgICBzdXBlci5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gIH1cbn1cbiJdfQ==
|