qms-angular 1.0.69 → 1.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/qms-angular.umd.js +818 -163
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/badges/qms-badges.component.js +3 -3
- package/esm2015/lib/components/qms-app-bar/index.js +2 -0
- package/esm2015/lib/components/qms-app-bar/models/qms-app-bar.model.js +10 -0
- package/esm2015/lib/components/qms-app-bar/public_api.js +3 -0
- package/esm2015/lib/components/qms-app-bar/qms-app-bar.component.js +2 -2
- package/esm2015/lib/components/qms-navigation-drawer/index.js +2 -0
- package/esm2015/lib/components/qms-navigation-drawer/models/qms-navigation-drawer.model.js +3 -0
- package/esm2015/lib/components/qms-navigation-drawer/public_api.js +3 -0
- package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.js +348 -0
- package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.module.js +33 -0
- package/esm2015/lib/components/qms-status-dropdown/qms-status-dropdown.component.js +1 -1
- package/esm2015/lib/components/qms-stepper/index.js +2 -0
- package/esm2015/lib/components/qms-stepper/models/qms-stepper.model.js +9 -0
- package/esm2015/lib/components/qms-stepper/public_api.js +3 -0
- package/esm2015/lib/components/qms-stepper/qms-stepper.component.js +3 -3
- package/esm2015/lib/components/related/popup/related-popup.component.js +2 -2
- package/esm2015/lib/components/select-include-children/model/select-popup-data.model.js +2 -1
- package/esm2015/lib/components/select-include-children/select-include-children.component.js +45 -45
- package/esm2015/lib/components/tab/directive/tab-group-advanced.directive.js +30 -0
- package/esm2015/lib/components/tab/directive/tab-group.directive.js +20 -0
- package/esm2015/lib/components/tab/directive/tab-label.directive.js +20 -0
- package/esm2015/lib/components/tab/index.js +2 -0
- package/esm2015/lib/components/tab/public-api.js +5 -0
- package/esm2015/lib/components/tab/tab.module.js +25 -0
- package/esm2015/lib/components/tree/tree.component.js +6 -3
- package/esm2015/lib/directives/table/table.directive.js +201 -0
- package/esm2015/lib/qms-angular.module.js +17 -11
- package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +2 -2
- package/esm2015/public-api.js +7 -10
- package/fesm2015/qms-angular.js +730 -149
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/components/qms-app-bar/index.d.ts +1 -0
- package/lib/components/qms-app-bar/{qms-app-bar.model.d.ts → models/qms-app-bar.model.d.ts} +0 -0
- package/lib/components/qms-app-bar/public_api.d.ts +2 -0
- package/lib/components/qms-app-bar/qms-app-bar.component.d.ts +1 -1
- package/lib/components/qms-navigation-drawer/index.d.ts +1 -0
- package/lib/components/qms-navigation-drawer/models/qms-navigation-drawer.model.d.ts +19 -0
- package/lib/components/qms-navigation-drawer/public_api.d.ts +2 -0
- package/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.d.ts +105 -0
- package/lib/components/qms-navigation-drawer/qms-navigation-drawer.module.d.ts +2 -0
- package/lib/components/qms-stepper/index.d.ts +1 -0
- package/lib/components/qms-stepper/{qms-stepper.model.d.ts → models/qms-stepper.model.d.ts} +0 -0
- package/lib/components/qms-stepper/public_api.d.ts +2 -0
- package/lib/components/qms-stepper/qms-stepper.component.d.ts +1 -1
- package/lib/components/select-include-children/model/select-popup-data.model.d.ts +1 -0
- package/lib/components/select-include-children/select-include-children.component.d.ts +3 -2
- package/lib/{directives/tab → components/tab/directive}/tab-group-advanced.directive.d.ts +0 -0
- package/lib/{directives/tab → components/tab/directive}/tab-group.directive.d.ts +0 -0
- package/lib/{directives/tab → components/tab/directive}/tab-label.directive.d.ts +0 -0
- package/lib/components/tab/index.d.ts +1 -0
- package/lib/components/tab/public-api.d.ts +4 -0
- package/lib/components/tab/tab.module.d.ts +2 -0
- package/lib/directives/table/table.directive.d.ts +50 -0
- package/lib.theme.scss +1 -0
- package/package.json +4 -2
- package/public-api.d.ts +5 -9
- package/qms-angular.metadata.json +1 -1
- package/src/assets/fonts/icomoon.eot +0 -0
- package/src/assets/fonts/icomoon.svg +203 -0
- package/src/assets/fonts/icomoon.ttf +0 -0
- package/src/assets/fonts/icomoon.woff +0 -0
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +2 -2
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ar.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/az.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/bg.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/cs.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/da.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/de-ch.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/de.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/en-au.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/en-gb.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/es.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/et.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fa.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/gl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hu.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/id.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/it.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ja.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ko.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ku.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/lt.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/lv.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/nb.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ne.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/nl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/no.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/pl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/pt-br.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ro.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ru.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sq.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sr-latn.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sv.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/th.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/tk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/tr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ug.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/uk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/vi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/zh-cn.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/zh.js +1 -1
- package/src/assets/qms-ckeditor-plugin/package-lock.json +29 -1
- package/src/assets/qms-ckeditor-plugin/src/ckeditor.js +6 -0
- package/src/assets/svg-icons/acutely-toxic.svg +19 -0
- package/src/assets/svg-icons/add-column.svg +4 -0
- package/src/assets/svg-icons/add-tooltip.svg +6 -0
- package/src/assets/svg-icons/admin.svg +3 -0
- package/src/assets/svg-icons/annual-cycle.svg +10 -0
- package/src/assets/svg-icons/assignment-repete.svg +4 -0
- package/src/assets/svg-icons/barrier-add.svg +7 -0
- package/src/assets/svg-icons/barrier-edit.svg +7 -0
- package/src/assets/svg-icons/barrier-view.svg +3 -0
- package/src/assets/svg-icons/button-group.svg +5 -0
- package/src/assets/svg-icons/checklist.svg +8 -0
- package/src/assets/svg-icons/chemical-manager.svg +5 -0
- package/src/assets/svg-icons/chronic-health-hazard.svg +17 -0
- package/src/assets/svg-icons/contingency.svg +3 -0
- package/src/assets/svg-icons/corrosive.svg +23 -0
- package/src/assets/svg-icons/dashboard.svg +3 -0
- package/src/assets/svg-icons/database-sds.svg +4 -0
- package/src/assets/svg-icons/department-document.svg +4 -0
- package/src/assets/svg-icons/department-folder-closed.svg +4 -0
- package/src/assets/svg-icons/department-folder-open.svg +4 -0
- package/src/assets/svg-icons/description-add.svg +6 -0
- package/src/assets/svg-icons/description-edit.svg +6 -0
- package/src/assets/svg-icons/description-view.svg +3 -0
- package/src/assets/svg-icons/deviation.svg +3 -0
- package/src/assets/svg-icons/document-read.svg +5 -0
- package/src/assets/svg-icons/draft.svg +7 -0
- package/src/assets/svg-icons/dropdown-folder.svg +4 -0
- package/src/assets/svg-icons/enterprise-document.svg +4 -0
- package/src/assets/svg-icons/enterprise-folder-closed.svg +4 -0
- package/src/assets/svg-icons/enterprise-folder-open.svg +4 -0
- package/src/assets/svg-icons/expired-off.svg +3 -0
- package/src/assets/svg-icons/expired-on.svg +5 -0
- package/src/assets/svg-icons/explosive.svg +48 -0
- package/src/assets/svg-icons/file-excel.svg +3 -0
- package/src/assets/svg-icons/file-pdf-verified.svg +5 -0
- package/src/assets/svg-icons/file-pdf.svg +3 -0
- package/src/assets/svg-icons/file-word.svg +3 -0
- package/src/assets/svg-icons/filter-alt.svg +3 -0
- package/src/assets/svg-icons/flammable.svg +5 -0
- package/src/assets/svg-icons/flowchart-BPMN.svg +9 -0
- package/src/assets/svg-icons/folder-closed.svg +3 -0
- package/src/assets/svg-icons/folder-open.svg +3 -0
- package/src/assets/svg-icons/gas-under-pressure.svg +4 -0
- package/src/assets/svg-icons/health-hazard.svg +4 -0
- package/src/assets/svg-icons/keyboard_arrow_down.svg +1 -0
- package/src/assets/svg-icons/keyboard_arrow_up.svg +1 -0
- package/src/assets/svg-icons/line-break.svg +7 -0
- package/src/assets/svg-icons/local-document.svg +4 -0
- package/src/assets/svg-icons/local-folder-closed.svg +4 -0
- package/src/assets/svg-icons/local-folder-open.svg +4 -0
- package/src/assets/svg-icons/location.svg +3 -0
- package/src/assets/svg-icons/measure-add.svg +5 -0
- package/src/assets/svg-icons/measure-edit.svg +5 -0
- package/src/assets/svg-icons/measure-view.svg +3 -0
- package/src/assets/svg-icons/messages.svg +3 -0
- package/src/assets/svg-icons/monitoring.svg +5 -0
- package/src/assets/svg-icons/move.svg +3 -0
- package/src/assets/svg-icons/oxidizing.svg +6 -0
- package/src/assets/svg-icons/process-area-closed.svg +4 -0
- package/src/assets/svg-icons/process-area-open.svg +4 -0
- package/src/assets/svg-icons/process-linked.svg +4 -0
- package/src/assets/svg-icons/process.svg +3 -0
- package/src/assets/svg-icons/regional-document.svg +4 -0
- package/src/assets/svg-icons/regional-folder-closed.svg +4 -0
- package/src/assets/svg-icons/regional-folder-open.svg +4 -0
- package/src/assets/svg-icons/risk.svg +3 -0
- package/src/assets/svg-icons/search-in-file.svg +4 -0
- package/src/assets/svg-icons/sort-ascending.svg +3 -0
- package/src/assets/svg-icons/sort-descending.svg +3 -0
- package/src/assets/svg-icons/subscript.svg +4 -0
- package/src/assets/svg-icons/superscript.svg +4 -0
- package/src/assets/svg-icons/syncronice-favorites.svg +5 -0
- package/src/assets/svg-icons/system-settings.svg +3 -0
- package/src/assets/svg-icons/view-three-outlined.svg +5 -0
- package/src/assets/svg-icons/wiris.svg +9 -0
- package/src/assets/svg-icons/workplace-safety.svg +5 -0
- package/src/lib/components/badges/_qms-badges-base.scss +8 -7
- package/src/lib/components/badges/qms-badges.component.scss +1 -1
- package/src/lib/components/qms-app-bar/qms-app-bar.component.scss +10 -0
- package/src/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.scss +174 -0
- package/src/lib/components/qms-status-dropdown/qms-status-dropdown.component.scss +6 -2
- package/src/lib/components/tree/tree.component.scss +3 -1
- package/src/themes/_qms-icon-font.scss +894 -0
- package/src/themes/core/_colors.scss +1 -0
- package/src/themes/core/_range-slider.scss +6 -2
- package/src/themes/core/_tab.scss +42 -1
- package/src/themes/core/_table.scss +54 -0
- package/esm2015/lib/components/qms-app-bar/qms-app-bar.model.js +0 -10
- package/esm2015/lib/components/qms-stepper/qms-stepper.model.js +0 -9
- package/esm2015/lib/directives/tab/tab-group-advanced.directive.js +0 -30
- package/esm2015/lib/directives/tab/tab-group.directive.js +0 -20
- package/esm2015/lib/directives/tab/tab-label.directive.js +0 -20
@@ -16,8 +16,8 @@ export class QmsBadgesComponent {
|
|
16
16
|
QmsBadgesComponent.decorators = [
|
17
17
|
{ type: Component, args: [{
|
18
18
|
selector: 'qms-badges',
|
19
|
-
template: "<div\r\n class=\"qms-badges-container badges-container-{{ color }} text-color-{{\r\n color\r\n }} font-size-14 line-height-22 qms-badges-default\"\r\n *ngIf=\"type === typeBadges.default\"\r\n>\r\n <mat-icon class=\"font-size-16\" *ngIf=\"icon && !fontIconGG\">{{
|
20
|
-
styles: ["@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFWJ0bbck.woff2) format(\"woff2\");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFUZ0bbck.woff2) format(\"woff2\");unicode-range:U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFWZ0bbck.woff2) format(\"woff2\");unicode-range:U+1f??}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFVp0bbck.woff2) format(\"woff2\");unicode-range:U+0370-03ff}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFWp0bbck.woff2) format(\"woff2\");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+1ea0-1ef9,U+20ab}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFW50bbck.woff2) format(\"woff2\");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFVZ0b.woff2) format(\"woff2\");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCFPrEHJA.woff2) format(\"woff2\");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCMPrEHJA.woff2) format(\"woff2\");unicode-range:U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCHPrEHJA.woff2) format(\"woff2\");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+1ea0-1ef9,U+20ab}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCGPrEHJA.woff2) format(\"woff2\");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrE.woff2) format(\"woff2\");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}.badges-container-primary{background-color:#b7daf8}.badges-container-yellow{background-color:rgba(228,207,83,.3)}.badges-container-green{background-color:rgba(0,128,76,.1);border:#005935}.badges-container-red{background-color
|
19
|
+
template: "<div\r\n class=\"qms-badges-container badges-container-{{ color }} text-color-{{\r\n color\r\n }} font-size-14 line-height-22 qms-badges-default\"\r\n *ngIf=\"type === typeBadges.default\"\r\n>\r\n <mat-icon class=\"font-size-16\" *ngIf=\"icon && !fontIconGG\">{{\r\n icon\r\n }}</mat-icon>\r\n <mat-icon\r\n *ngIf=\"itemIconSvg\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined item-icon\"\r\n [svgIcon]=\"itemIconSvg\"\r\n ></mat-icon>\r\n <img *ngIf=\"itemIconPath\" [src]=\"itemIconPath\" />\r\n <span *ngIf=\"icon && fontIconGG\" class=\"{{ fontIconGG }}\">{{ icon }}</span>\r\n <span *ngIf=\"contents\">{{ contents }}</span>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"type === typeBadges.circle\"\r\n class=\"qms-badges-circle-{{ size }} badges-container-circle-{{\r\n color\r\n }} text-color-white\"\r\n>\r\n <span\r\n *ngIf=\"contents > 99 && size !== sizeCircleBadges.small\"\r\n class=\"font-size-8\"\r\n >\r\n {{ \"99\" }}+\r\n </span>\r\n <span\r\n *ngIf=\"contents < 100 && size !== sizeCircleBadges.small\"\r\n class=\"font-size-12\"\r\n >\r\n {{ contents }}\r\n </span>\r\n</div>\r\n\r\n<div\r\n class=\"qms-badges-container badges-container-icon-{{\r\n color\r\n }} font-size-12 line-height-22 qms-badges-default\"\r\n *ngIf=\"type === typeBadges.icon\"\r\n>\r\n <mat-icon class=\"font-size-16 text-color-white\" *ngIf=\"icon && !fontIconGG\">{{\r\n icon\r\n }}</mat-icon>\r\n <mat-icon\r\n *ngIf=\"itemIconSvg\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined item-icon\"\r\n [svgIcon]=\"itemIconSvg\"\r\n ></mat-icon>\r\n <img *ngIf=\"itemIconPath\" [src]=\"itemIconPath\" />\r\n <span *ngIf=\"fontIconGG\" class=\"text-color-white {{ fontIconGG }}\">\r\n {{ icon }}</span\r\n >\r\n</div>\r\n",
|
20
|
+
styles: ["@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFWJ0bbck.woff2) format(\"woff2\");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFUZ0bbck.woff2) format(\"woff2\");unicode-range:U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFWZ0bbck.woff2) format(\"woff2\");unicode-range:U+1f??}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFVp0bbck.woff2) format(\"woff2\");unicode-range:U+0370-03ff}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFWp0bbck.woff2) format(\"woff2\");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+1ea0-1ef9,U+20ab}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFW50bbck.woff2) format(\"woff2\");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v20/mem8YaGs126MiZpBA-UFVZ0b.woff2) format(\"woff2\");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCFPrEHJA.woff2) format(\"woff2\");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCMPrEHJA.woff2) format(\"woff2\");unicode-range:U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCHPrEHJA.woff2) format(\"woff2\");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+1ea0-1ef9,U+20ab}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCGPrEHJA.woff2) format(\"woff2\");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Raleway;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v19/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrE.woff2) format(\"woff2\");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}.badges-container-primary{background-color:#b7daf8}.badges-container-yellow{background-color:rgba(228,207,83,.3)}.badges-container-green{background-color:rgba(0,128,76,.1);border:#005935}.badges-container-red{background-color:#f4e9e6}.badges-container-orange{background-color:#faede8}.badges-container-grey{background-color:#e5e5e5}.badges-container-brown{background-color:#f0eae7}.badges-container-icon-primary{background-color:#00324e}.badges-container-icon-green{background-color:#005935}.badges-container-icon-orange,.badges-container-icon-red{background-color:#9e360f}.badges-container-icon-brown{background-color:#59280b}.badges-container-icon-yellow{background-color:rgba(228,207,83,.3)}.badges-container-circle-primary{background-color:#00324e}.badges-container-circle-orange{background-color:#9e360f}.text-color-primary{color:#00324e}.text-color-red{color:#74280b}.text-color-green{color:#005935}.text-color-yellow{color:#726729}.text-color-grey{color:#525252}.text-color-brown{color:#59280b}.text-color-orange{color:#9e360f}.text-color-white{color:#fff}.qms-badges-container{display:flex;align-items:center;width:100%;height:100%;font-family:Open Sans;font-style:normal;font-weight:600;font-size:12px;line-height:16px}.qms-badges-container-text{margin-top:10px;margin-bottom:10px}.qms-badges-container .margin-horizontal-17{margin-left:17px;margin-right:17px}.qms-badges-container .qms-badges-button{margin-left:auto;margin-right:8px}.qms-badges-circle-large{width:24px;height:24px}.qms-badges-circle-large,.qms-badges-circle-medium{border-radius:50%;display:flex;align-items:center;justify-content:center}.qms-badges-circle-medium{width:20px;height:20px}.qms-badges-circle-small{width:10px;height:10px;border-radius:50%}.qms-badges-circle-small,.qms-badges-default{display:flex;align-items:center;justify-content:center}.qms-badges-default{height:24px;padding:0 6px;border-radius:4px}.qms-badges-default .mat-icon{width:auto;height:auto}.font-bold{font-weight:700}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-12{font-size:12px}.font-size-8{font-size:8px}.line-height-22{line-height:22px}"]
|
21
21
|
},] }
|
22
22
|
];
|
23
23
|
QmsBadgesComponent.propDecorators = {
|
@@ -30,4 +30,4 @@ QmsBadgesComponent.propDecorators = {
|
|
30
30
|
itemIconSvg: [{ type: Input }],
|
31
31
|
fontIconGG: [{ type: Input }]
|
32
32
|
};
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWJhZGdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYmFkZ2VzL3Ftcy1iYWRnZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBT3hFLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFNVyxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUNqQyxTQUFJLEdBQVcsRUFBRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFHdkMsU0FBSSxHQUFXLEVBQUUsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO0lBV3hELENBQUM7SUFMRyxRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0M7SUFDTCxDQUFDOzs7WUFyQkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixveERBQTBDOzthQUU3Qzs7O21CQUlJLEtBQUs7b0JBQ0wsS0FBSzt1QkFDTCxLQUFLO21CQUNMLEtBQUs7bUJBQ0wsS0FBSzsyQkFDTCxLQUFLOzBCQUNMLEtBQUs7eUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhZGdlQ2lyY2xlU2l6ZSwgQmFkZ2VzVHlwZSB9IGZyb20gJy4vbW9kZWxzL3Ftcy1iYWRnZXMubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Ftcy1iYWRnZXMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1iYWRnZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcW1zLWJhZGdlcy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRbXNCYWRnZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgcHVibGljIHR5cGVCYWRnZXMgPSBCYWRnZXNUeXBlO1xyXG4gICAgcHVibGljIHNpemVDaXJjbGVCYWRnZXMgPSBCYWRnZUNpcmNsZVNpemU7XHJcbiAgICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSAnJyB8fCBCYWRnZXNUeXBlLmNpcmNsZTtcclxuICAgIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjb250ZW50czogYW55O1xyXG4gICAgQElucHV0KCkgc2l6ZTogc3RyaW5nID0gJycgfHwgQmFkZ2VDaXJjbGVTaXplLnNtYWxsO1xyXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaXRlbUljb25QYXRoOiBhbnk7XHJcbiAgICBASW5wdXQoKSBpdGVtSWNvblN2ZzogYW55O1xyXG4gICAgQElucHV0KCkgZm9udEljb25HRzogc3RyaW5nO1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IEJhZGdlc1R5cGUuY2lyY2xlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSBuZXcgTnVtYmVyKHRoaXMuY29udGVudHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export * from "./public_api";
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcW1zLWFwcC1iYXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9wdWJsaWNfYXBpXCI7Il19
|
@@ -0,0 +1,10 @@
|
|
1
|
+
export class IconModel {
|
2
|
+
constructor(icon, tooltip, cssClass = '', svg = false, isShow = true) {
|
3
|
+
this.icon = icon;
|
4
|
+
this.tooltip = tooltip;
|
5
|
+
this.svg = svg;
|
6
|
+
this.cssClass = cssClass;
|
7
|
+
this.isShow = isShow;
|
8
|
+
}
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWFwcC1iYXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcW1zLWFwcC1iYXIvbW9kZWxzL3Ftcy1hcHAtYmFyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO0lBTXBCLFlBQVksSUFBWSxFQUFFLE9BQWUsRUFBRSxRQUFRLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDaEYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSWNvbk1vZGVsIHtcclxuICBpY29uOiBzdHJpbmc7XHJcbiAgdG9vbHRpcDogc3RyaW5nO1xyXG4gIGNzc0NsYXNzOiBzdHJpbmc7XHJcbiAgc3ZnOiBib29sZWFuO1xyXG4gIGlzU2hvdzogYm9vbGVhbjtcclxuICBjb25zdHJ1Y3RvcihpY29uOiBzdHJpbmcsIHRvb2x0aXA6IHN0cmluZywgY3NzQ2xhc3MgPSAnJywgc3ZnID0gZmFsc2UsIGlzU2hvdyA9IHRydWUpIHtcclxuICAgICAgdGhpcy5pY29uID0gaWNvbjtcclxuICAgICAgdGhpcy50b29sdGlwID0gdG9vbHRpcDtcclxuICAgICAgdGhpcy5zdmcgPSBzdmc7XHJcbiAgICAgIHRoaXMuY3NzQ2xhc3MgPSBjc3NDbGFzcztcclxuICAgICAgdGhpcy5pc1Nob3cgPSBpc1Nob3c7XHJcbiAgfVxyXG59Il19
|
@@ -0,0 +1,3 @@
|
|
1
|
+
export * from "./qms-app-bar.module";
|
2
|
+
export * from "./qms-app-bar.component";
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9xbXMtYXBwLWJhci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3Ftcy1hcHAtYmFyLm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9xbXMtYXBwLWJhci5jb21wb25lbnRcIjsiXX0=
|
@@ -35,7 +35,7 @@ QmsAppBarComponent.decorators = [
|
|
35
35
|
{ type: Component, args: [{
|
36
36
|
selector: 'app-qms-app-bar',
|
37
37
|
template: "<div class=\"qms-app-bar-container\">\r\n <mat-toolbar class=\"bar-container\" *ngIf=\"!isNomalType\">\r\n <span class=\"w-100\">\r\n <span class=\"col-4 d-inline-flex align-items-lg-center\">\r\n <div *ngIf=\"hideMenuDropdown\" class=\"border align-self-center\">\r\n <div *ngIf=\"logoSvgPath\" class=\"logo-container\">\r\n <img [src]=\"logoSvgPath\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div *ngIf=\"!hideMenuDropdown\">\r\n <button #menu class=\"collapse-icon\" mat-button>\r\n <mat-icon class=\"mat-icon-rtl-mirror\" (click)=\"onMenuClicked()\">\r\n menu\r\n </mat-icon>\r\n </button>\r\n <img [src]=\"logoSvgPath\" alt=\"\" />\r\n </div>\r\n <div class=\"pr-8\"></div>\r\n <span class=\"content-title\">{{title}}</span>\r\n <div class=\"spacer\"></div>\r\n </span>\r\n <span class=\"align-items-sm-center col-4 d-inline-flex justify-content-center\">\r\n <div *ngIf=\"imgSvgPath\" class=\"img-container\" [class.bg-transparent]=\"isImgSvgTransparent\">\r\n <img [src]=\"imgSvgPath\" alt=\"\" />\r\n </div>\r\n </span>\r\n <span class=\"col-4 d-inline-flex justify-content-end right-icon\">\r\n <button (click)=\"onRightIconClicked(item.icon)\" *ngFor=\"let item of rightIcons\" class=\"menu-item-icon\"\r\n mat-button>\r\n <mat-icon *ngIf=\"item.icon == 'notifications_none'\" matBadge=\"{{notifications}}\"\r\n matBadgeColor=\"warn\">\r\n {{item.icon}}\r\n </mat-icon>\r\n <mat-icon *ngIf=\"item.icon != 'notifications_none'\"\r\n class=\"material-icons-outlined mat-icon-rtl-mirror\">\r\n {{item.icon}}\r\n </mat-icon>\r\n <span class=\"mg-l-3\">{{item.tooltip}}</span>\r\n </button>\r\n </span>\r\n </span>\r\n </mat-toolbar>\r\n <mat-toolbar class=\"bar-prv-container\" *ngIf=\"isNomalType\">\r\n <button class=\"icon-title\" #menu qms-btn-text (click)=\"onClickLeftFirstIcon()\">\r\n <mat-icon class=\"cusor-pointer\">\r\n {{leftFirstIcon}}\r\n </mat-icon>\r\n </button>\r\n <span class=\"content-title\">{{title}}</span>\r\n <div class=\"spacer\"></div>\r\n <div class=\"right-content\">\r\n <button qms-btn-text (click)=\"onCancel()\" class=\"cusor-pointer mr-10\" *ngIf=\"cancelTitle\">\r\n {{cancelTitle}}\r\n </button>\r\n <button qms-btn [disabled]=\"disabledConfirmAction\" class=\"cusor-pointer\" (click)=\"onConfirm()\" *ngIf=\"confirmTitle\">\r\n {{confirmTitle}}\r\n </button>\r\n </div>\r\n </mat-toolbar>\r\n</div>",
|
38
|
-
styles: [".qms-app-bar-container{height:56px}.qms-app-bar-container .spacer{flex:1 1 auto}.qms-app-bar-container .mat-toolbar{background:#00324e;color:#fff;height:56px}.qms-app-bar-container .bar-prv-container{background:#e4e4e4}.qms-app-bar-container .bar-prv-container .close-icon,.qms-app-bar-container .bar-prv-container .title-icon{color:#323232}.qms-app-bar-container .bar-prv-container .right-content button{line-height:16px!important}.qms-app-bar-container .bar-prv-container .right-content .mr-10{margin-right:10px}.qms-app-bar-container .bar-prv-container button:first-child:hover{background-color:rgba(0,0,0,.08)}.qms-app-bar-container .bar-prv-container .icon-title{color:#666;padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%;margin-right:11px}.qms-app-bar-container .bar-prv-container .content-title{font-family:Raleway;font-size:18px;font-style:normal;font-weight:600;line-height:21px;letter-spacing:0;text-align:left;color:#323232}.qms-app-bar-container .bar-container{padding:0!important}.qms-app-bar-container .bar-container .logo-container{background:#fff;padding:12px;height:56px}.qms-app-bar-container .bar-container .img-container{height:40px;background:#fff;padding:2px}.qms-app-bar-container .bar-container .bg-transparent{background:transparent;height:40px;padding:2px}.qms-app-bar-container .bar-container .right-icon button:last-child{min-width:unset!important}.qms-app-bar-container .bar-container ::ng-deep .mat-badge-warn .mat-badge-content{background-color:#9e360f!important}.qms-app-bar-container .pr-8{padding-right:8px}"]
|
38
|
+
styles: [".qms-app-bar-container{height:56px}.qms-app-bar-container .spacer{flex:1 1 auto}.qms-app-bar-container .mat-toolbar{background:#00324e;color:#fff;height:56px}.qms-app-bar-container .bar-prv-container{background:#e4e4e4}.qms-app-bar-container .bar-prv-container .close-icon,.qms-app-bar-container .bar-prv-container .title-icon{color:#323232}.qms-app-bar-container .bar-prv-container .right-content button{line-height:16px!important}.qms-app-bar-container .bar-prv-container .right-content .mr-10{margin-right:10px}.qms-app-bar-container .bar-prv-container button:first-child:hover{background-color:rgba(0,0,0,.08)}.qms-app-bar-container .bar-prv-container .icon-title{color:#666;padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%;margin-right:11px}.qms-app-bar-container .bar-prv-container .content-title{font-family:Raleway;font-size:18px;font-style:normal;font-weight:600;line-height:21px;letter-spacing:0;text-align:left;color:#323232}.qms-app-bar-container .bar-container{padding:0!important}.qms-app-bar-container .bar-container .logo-container{background:#fff;padding:12px;height:56px}.qms-app-bar-container .bar-container .img-container{height:40px;background:#fff;padding:2px}.qms-app-bar-container .bar-container .bg-transparent{background:transparent;height:40px;padding:2px}.qms-app-bar-container .bar-container .right-icon button:last-child{min-width:unset!important}.qms-app-bar-container .bar-container ::ng-deep .mat-badge-warn .mat-badge-content{background-color:#9e360f!important}.qms-app-bar-container .bar-container .content-title{font-family:Raleway;font-size:18px;font-style:normal;font-weight:600;line-height:21px;letter-spacing:0;text-align:left;color:#fff}.qms-app-bar-container .pr-8{padding-right:8px}"]
|
39
39
|
},] }
|
40
40
|
];
|
41
41
|
QmsAppBarComponent.ctorParameters = () => [];
|
@@ -59,4 +59,4 @@ QmsAppBarComponent.propDecorators = {
|
|
59
59
|
onMenuClickedEvent: [{ type: Output }],
|
60
60
|
onRightIconClickedEvent: [{ type: Output }]
|
61
61
|
};
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWFwcC1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3Ftcy1hcHAtYmFyL3Ftcy1hcHAtYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTL0UsTUFBTSxPQUFPLGtCQUFrQjtJQXdCN0I7UUFyQkEsY0FBYztRQUNMLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsb0JBQW9CLENBQUM7UUFLcEMsOEJBQXlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEUsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBT3hELGVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLHVCQUFrQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNELDRCQUF1QixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTFELENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVk7UUFDN0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDOzs7WUFwREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLHltR0FBMkM7O2FBRTVDOzs7O21CQUVFLFNBQVMsU0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzBCQUdsQyxLQUFLOzRCQUNMLEtBQUs7b0JBQ0wsS0FBSzswQkFDTCxLQUFLOzJCQUNMLEtBQUs7b0NBQ0wsS0FBSzt3Q0FDTCxNQUFNOzRCQUNOLE1BQU07NkJBQ04sTUFBTTsrQkFHTixLQUFLOzBCQUNMLEtBQUs7eUJBQ0wsS0FBSztrQ0FDTCxLQUFLO3lCQUNMLEtBQUs7NEJBQ0wsS0FBSztpQ0FDTCxNQUFNO3NDQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBJY29uTW9kZWwgfSBmcm9tICcuL21vZGVscy9xbXMtYXBwLWJhci5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1xbXMtYXBwLWJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1hcHAtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtYXBwLWJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRbXNBcHBCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZW51OiBNYXRCdXR0b247XHJcblxyXG4gIC8vIG5vbWFsIHN0eWxlXHJcbiAgQElucHV0KCkgaXNOb21hbFR5cGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBsZWZ0Rmlyc3RJY29uID0gJ2tleWJvYXJkX2JhY2tzcGFjZSc7XHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcclxuICBASW5wdXQoKSBjYW5jZWxUaXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNvbmZpcm1UaXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkQ29uZmlybUFjdGlvbjogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgb25DbGlja0xlZnRGaXJzdEljb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ2FuY2VsRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbmZpcm1FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8vIG1vZGVybiBzdHlsZVxyXG4gIEBJbnB1dCgpIGhpZGVNZW51RHJvcGRvd246IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbG9nb1N2Z1BhdGg6IHN0cmluZztcclxuICBASW5wdXQoKSBpbWdTdmdQYXRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaXNJbWdTdmdUcmFuc3BhcmVudDogYm9vbGVhbjtcclxuICBASW5wdXQoKSByaWdodEljb25zOiBJY29uTW9kZWxbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnMgPSAwO1xyXG4gIEBPdXRwdXQoKSBvbk1lbnVDbGlja2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJpZ2h0SWNvbkNsaWNrZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiAgXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpIHtcclxuICAgIHRoaXMub25DYW5jZWxFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrTGVmdEZpcnN0SWNvbigpIHtcclxuICAgIHRoaXMub25DbGlja0xlZnRGaXJzdEljb25FdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbmZpcm0oKSB7XHJcbiAgICB0aGlzLm9uQ29uZmlybUV2ZW50LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uTWVudUNsaWNrZWQoKSB7XHJcbiAgICB0aGlzLm9uTWVudUNsaWNrZWRFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblJpZ2h0SWNvbkNsaWNrZWQoaWNvbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm9uUmlnaHRJY29uQ2xpY2tlZEV2ZW50LmVtaXQoaWNvbik7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export * from "./public_api";
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcW1zLW5hdmlnYXRpb24tZHJhd2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcHVibGljX2FwaVwiOyJdfQ==
|
@@ -0,0 +1,3 @@
|
|
1
|
+
export class FlatNode {
|
2
|
+
}
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLW5hdmlnYXRpb24tZHJhd2VyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3Ftcy1uYXZpZ2F0aW9uLWRyYXdlci9tb2RlbHMvcW1zLW5hdmlnYXRpb24tZHJhd2VyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxRQUFRO0NBTWxCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEZsYXROb2RlIHtcclxuICAgIGV4cGFuZGFibGU6IGJvb2xlYW47XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBsZXZlbDogbnVtYmVyO1xyXG4gICAgaWQ6IG51bWJlcjtcclxuICAgIGlzUmVhZE9ubHk/OiBib29sZWFuO1xyXG4gIH1cclxuICBcclxuICBleHBvcnQgaW50ZXJmYWNlIFRyZWVOb2RlIHtcclxuICAgIGlkOiBhbnk7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBjaGlsZHJlbj86IFRyZWVOb2RlW107XHJcbiAgICBpc0FjdGl2ZT86IGJvb2xlYW47XHJcbiAgICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcclxuICAgIGlzRG9jdW1lbnQ/OiBib29sZWFuO1xyXG4gICAgY2hlY2tlZD86IGJvb2xlYW47XHJcbiAgICBmYXZvcml0ZT86IGJvb2xlYW47XHJcbiAgICBwYXJlbnRJZDogYW55O1xyXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgfVxyXG4gICJdfQ==
|
@@ -0,0 +1,3 @@
|
|
1
|
+
export * from "./qms-navigation-drawer.module";
|
2
|
+
export * from "./qms-navigation-drawer.component";
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3Ftcy1uYXZpZ2F0aW9uLWRyYXdlci5jb21wb25lbnRcIjsiXX0=
|
@@ -0,0 +1,348 @@
|
|
1
|
+
import { FlatTreeControl } from '@angular/cdk/tree';
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
3
|
+
import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
|
4
|
+
import guidHelper from '../../qms-ckeditor-components/common/helper/guidHelper';
|
5
|
+
export class QMSNavigationDrawerComponent {
|
6
|
+
constructor() {
|
7
|
+
this.treeData = [];
|
8
|
+
this.addNodeEvent = new EventEmitter();
|
9
|
+
this.addFavoriteEvent = new EventEmitter();
|
10
|
+
this.drogLocationEvent = new EventEmitter();
|
11
|
+
this.showAddIcon = true;
|
12
|
+
this.openNodes = [];
|
13
|
+
this.dragDropListDisabled = false;
|
14
|
+
this.nodesExpand = new EventEmitter();
|
15
|
+
this.onClickNodeEvent = new EventEmitter();
|
16
|
+
this.addFavoriteTooltip = 'Legg til favoritt';
|
17
|
+
this.deleteFavoriteTooltip = 'Slett favoritt';
|
18
|
+
this.addNodeTooltip = 'Legg til lokasjon';
|
19
|
+
this.expandedNodeSet = new Set();
|
20
|
+
this.dragging = false;
|
21
|
+
this.expandDelay = 1000;
|
22
|
+
this.isHover = false;
|
23
|
+
this.treeControl = new FlatTreeControl(node => node.level, node => node.expandable);
|
24
|
+
this.treeFlattener = new MatTreeFlattener(this._transformer, node => node.level, node => node.expandable, node => node.children);
|
25
|
+
this.dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);
|
26
|
+
this.hoverNode = {};
|
27
|
+
this.expandingNodes = [];
|
28
|
+
this.hasChild = (_, node) => node.expandable;
|
29
|
+
this.dataSource.data = this.treeData;
|
30
|
+
}
|
31
|
+
_transformer(node, level) {
|
32
|
+
return {
|
33
|
+
expandable: !!node.children && node.children.length > 0,
|
34
|
+
name: node.name,
|
35
|
+
level,
|
36
|
+
id: node.id,
|
37
|
+
isReadOnly: node.isReadOnly,
|
38
|
+
favorite: node.favorite,
|
39
|
+
disabled: node.disabled
|
40
|
+
};
|
41
|
+
}
|
42
|
+
ngOnInit() {
|
43
|
+
this.openNodes.forEach(item => {
|
44
|
+
this.treeControl.expand(this.treeControl.dataNodes.find(p => p.id.toString() === item));
|
45
|
+
});
|
46
|
+
}
|
47
|
+
ngOnChanges(changes) {
|
48
|
+
this.dataSource.data = this.treeData;
|
49
|
+
if (this.filterText) {
|
50
|
+
this.expandNodeSearched(this.treeData, this.filterText);
|
51
|
+
}
|
52
|
+
if (changes.openNodes) {
|
53
|
+
this.openNodes.forEach(item => {
|
54
|
+
this.treeControl.expand(this.treeControl.dataNodes.find(p => p.id.toString() === item));
|
55
|
+
});
|
56
|
+
}
|
57
|
+
}
|
58
|
+
expandNodeSearched(nodesOrigin, txtSearch) {
|
59
|
+
nodesOrigin.forEach(item => {
|
60
|
+
if (!item.name.toLocaleLowerCase().includes(txtSearch.toLocaleLowerCase())) {
|
61
|
+
this.treeControl.expand(this.treeControl.dataNodes.find(p => p.id.toString() === item.id));
|
62
|
+
if (item.children.length > 0) {
|
63
|
+
this.expandNodeSearched(item.children, txtSearch);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
});
|
67
|
+
}
|
68
|
+
onClickNode(nodeId) {
|
69
|
+
this.onClickNodeEvent.emit(nodeId);
|
70
|
+
}
|
71
|
+
onOver(node) {
|
72
|
+
this.hoverNode = node;
|
73
|
+
}
|
74
|
+
addNewNode(nodeId, event) {
|
75
|
+
event.stopPropagation();
|
76
|
+
event.preventDefault();
|
77
|
+
this.addNodeEvent.emit(nodeId);
|
78
|
+
}
|
79
|
+
addFavoriteNode(nodeId, event) {
|
80
|
+
event.stopPropagation();
|
81
|
+
event.preventDefault();
|
82
|
+
this.addFavoriteEvent.emit(nodeId);
|
83
|
+
}
|
84
|
+
ngOnDestroy() {
|
85
|
+
if (this.activeNodeLocation) {
|
86
|
+
this.activeNodeLocation.unsubscribe();
|
87
|
+
}
|
88
|
+
}
|
89
|
+
/**
|
90
|
+
* This constructs an array of nodes that matches the DOM,
|
91
|
+
* and calls rememberExpandedTreeNodes to persist expand state
|
92
|
+
*/
|
93
|
+
visibleNodes() {
|
94
|
+
this.rememberExpandedTreeNodes(this.treeControl, this.expandedNodeSet);
|
95
|
+
const result = [];
|
96
|
+
function addExpandedChildren(node, expanded) {
|
97
|
+
result.push(node);
|
98
|
+
if (expanded.has(node.id)) {
|
99
|
+
node.children.map(child => addExpandedChildren(child, expanded));
|
100
|
+
}
|
101
|
+
}
|
102
|
+
this.dataSource.data.forEach(node => {
|
103
|
+
addExpandedChildren(node, this.expandedNodeSet);
|
104
|
+
});
|
105
|
+
return result;
|
106
|
+
}
|
107
|
+
/**
|
108
|
+
* Handle the drop - here we rearrange the data based on the drop event,
|
109
|
+
* then rebuild the tree.
|
110
|
+
* */
|
111
|
+
drop(event) {
|
112
|
+
// Save data for backup
|
113
|
+
const node = event.item.data;
|
114
|
+
const backupChangedNode = JSON.parse(JSON.stringify(node));
|
115
|
+
const backupData = JSON.parse(JSON.stringify(this.dataSource.data));
|
116
|
+
// ignore drops outside of the tree
|
117
|
+
if (!event.isPointerOverContainer) {
|
118
|
+
return;
|
119
|
+
}
|
120
|
+
// construct a list of visible nodes, this will match the DOM.
|
121
|
+
// the cdkDragDrop event.currentIndex jives with visible nodes.
|
122
|
+
// it calls rememberExpandedTreeNodes to persist expand state
|
123
|
+
const visibleNodes = this.visibleNodes();
|
124
|
+
// deep clone the data source so we can mutate it
|
125
|
+
const changedData = JSON.parse(JSON.stringify(this.dataSource.data));
|
126
|
+
// recursive find function to find siblings of node
|
127
|
+
function findNodeSiblings(arr, id) {
|
128
|
+
let result, subResult;
|
129
|
+
arr.forEach(item => {
|
130
|
+
if (item.id === id) {
|
131
|
+
result = arr;
|
132
|
+
}
|
133
|
+
else if (item.children) {
|
134
|
+
subResult = findNodeSiblings(item.children, id);
|
135
|
+
if (subResult) {
|
136
|
+
result = subResult;
|
137
|
+
}
|
138
|
+
}
|
139
|
+
});
|
140
|
+
return result;
|
141
|
+
}
|
142
|
+
// remove the node from its old place
|
143
|
+
const siblings = findNodeSiblings(changedData, node.id);
|
144
|
+
const siblingIndex = siblings.findIndex(n => n.id === node.id);
|
145
|
+
// const nodeToInsert: TreeNode = siblings.splice(siblingIndex, 1)[0];
|
146
|
+
const nodeToInsert = siblings.splice(siblingIndex, 1)[0];
|
147
|
+
// determine where to insert the node
|
148
|
+
const nodeAtDest = visibleNodes[event.currentIndex];
|
149
|
+
if (nodeAtDest.id === nodeToInsert.id) {
|
150
|
+
return;
|
151
|
+
}
|
152
|
+
// determine drop index relative to destination array
|
153
|
+
let relativeIndex = event.currentIndex; // default if no parent
|
154
|
+
const nodeAtDestFlatNode = this.treeControl.dataNodes.find(n => nodeAtDest.id === n.id);
|
155
|
+
const parent = this.getParentNode(nodeAtDestFlatNode);
|
156
|
+
if (parent) {
|
157
|
+
const parentIndex = visibleNodes.findIndex(n => n.id === parent.id) + 1;
|
158
|
+
relativeIndex = event.currentIndex - parentIndex;
|
159
|
+
// update parentId for nodeToInsert
|
160
|
+
nodeToInsert.parentId = parent.id;
|
161
|
+
}
|
162
|
+
else {
|
163
|
+
nodeToInsert.parentId = guidHelper.empty;
|
164
|
+
}
|
165
|
+
// update new order for nodeToInsert
|
166
|
+
nodeToInsert.order = relativeIndex;
|
167
|
+
// insert node
|
168
|
+
const newSiblings = findNodeSiblings(changedData, nodeAtDest.id);
|
169
|
+
if (!newSiblings) {
|
170
|
+
return;
|
171
|
+
}
|
172
|
+
newSiblings.splice(relativeIndex, 0, nodeToInsert);
|
173
|
+
// rebuild tree with mutated data
|
174
|
+
this.rebuildTreeForData(changedData);
|
175
|
+
// update New Location Order for new insert node
|
176
|
+
this.updateNewOrderForNodeSiblings(newSiblings);
|
177
|
+
this.drogLocationEvent.emit({
|
178
|
+
newSiblings: newSiblings,
|
179
|
+
changedNode: backupChangedNode,
|
180
|
+
oldDataSource: backupData
|
181
|
+
});
|
182
|
+
}
|
183
|
+
updateNewOrderForNodeSiblings(newSiblings) {
|
184
|
+
let newOrder = 0;
|
185
|
+
newSiblings.forEach(item => {
|
186
|
+
item.order = newOrder;
|
187
|
+
newOrder = newOrder + 1;
|
188
|
+
});
|
189
|
+
}
|
190
|
+
/**
|
191
|
+
* Experimental - opening tree nodes as you drag over them
|
192
|
+
*/
|
193
|
+
dragStart() {
|
194
|
+
this.dragging = true;
|
195
|
+
}
|
196
|
+
dragEnd() {
|
197
|
+
this.dragging = false;
|
198
|
+
}
|
199
|
+
dragHover(node) {
|
200
|
+
this.isHover = true;
|
201
|
+
if (this.dragging) {
|
202
|
+
clearTimeout(this.expandTimeout);
|
203
|
+
this.expandTimeout = setTimeout(() => {
|
204
|
+
this.treeControl.expand(node);
|
205
|
+
}, this.expandDelay);
|
206
|
+
}
|
207
|
+
}
|
208
|
+
dragHoverEnd() {
|
209
|
+
this.isHover = false;
|
210
|
+
if (this.dragging) {
|
211
|
+
clearTimeout(this.expandTimeout);
|
212
|
+
}
|
213
|
+
}
|
214
|
+
/**
|
215
|
+
* The following methods are for persisting the tree expand state
|
216
|
+
* after being rebuilt
|
217
|
+
*/
|
218
|
+
rebuildTreeForData(data) {
|
219
|
+
this.rememberExpandedTreeNodes(this.treeControl, this.expandedNodeSet);
|
220
|
+
this.treeData = data;
|
221
|
+
this.dataSource.data = data;
|
222
|
+
this.forgetMissingExpandedNodes(this.treeControl, this.expandedNodeSet);
|
223
|
+
this.expandNodesById(this.treeControl.dataNodes, Array.from(this.expandedNodeSet));
|
224
|
+
}
|
225
|
+
rememberExpandedTreeNodes(treeControl, expandedNodeSet) {
|
226
|
+
if (treeControl.dataNodes) {
|
227
|
+
treeControl.dataNodes.forEach((node) => {
|
228
|
+
if (treeControl.isExpandable(node) && treeControl.isExpanded(node)) {
|
229
|
+
// capture latest expanded state
|
230
|
+
expandedNodeSet.add(node.id.toString());
|
231
|
+
}
|
232
|
+
});
|
233
|
+
}
|
234
|
+
}
|
235
|
+
forgetMissingExpandedNodes(treeControl, expandedNodeSet) {
|
236
|
+
if (treeControl.dataNodes) {
|
237
|
+
expandedNodeSet.forEach((nodeId) => {
|
238
|
+
// maintain expanded node state
|
239
|
+
if (!treeControl.dataNodes.find((n) => n.id.toString() === nodeId)) {
|
240
|
+
// if the tree doesn't have the previous node, remove it from the expanded list
|
241
|
+
expandedNodeSet.delete(nodeId);
|
242
|
+
}
|
243
|
+
});
|
244
|
+
}
|
245
|
+
}
|
246
|
+
expandNodesById(flatNodes, ids) {
|
247
|
+
if (!flatNodes || flatNodes.length === 0) {
|
248
|
+
return;
|
249
|
+
}
|
250
|
+
const idSet = new Set(ids);
|
251
|
+
return flatNodes.forEach((node) => {
|
252
|
+
if (idSet.has(node.id.toString())) {
|
253
|
+
this.treeControl.expand(node);
|
254
|
+
this.expandingNodes.push(node);
|
255
|
+
let parent = this.getParentNode(node);
|
256
|
+
while (parent) {
|
257
|
+
this.treeControl.expand(parent);
|
258
|
+
this.expandingNodes.push(parent);
|
259
|
+
parent = this.getParentNode(parent);
|
260
|
+
}
|
261
|
+
}
|
262
|
+
});
|
263
|
+
}
|
264
|
+
getParentNode(node) {
|
265
|
+
const currentLevel = node.level;
|
266
|
+
if (currentLevel < 1) {
|
267
|
+
return null;
|
268
|
+
}
|
269
|
+
const startIndex = this.treeControl.dataNodes.indexOf(node) - 1;
|
270
|
+
for (let i = startIndex; i >= 0; i--) {
|
271
|
+
const currentNode = this.treeControl.dataNodes[i];
|
272
|
+
if (currentNode.level < currentLevel) {
|
273
|
+
return currentNode;
|
274
|
+
}
|
275
|
+
}
|
276
|
+
return null;
|
277
|
+
}
|
278
|
+
onKeyDownNode(event, node) {
|
279
|
+
if (event.key == 'Enter') {
|
280
|
+
this.onClickToggleNode(node);
|
281
|
+
}
|
282
|
+
}
|
283
|
+
onClickToggleNode(node) {
|
284
|
+
if (this.treeControl.isExpanded(node)) {
|
285
|
+
this.treeControl.expand(node);
|
286
|
+
this._addExpandingNode(node);
|
287
|
+
}
|
288
|
+
else {
|
289
|
+
this.treeControl.collapse(node);
|
290
|
+
this._removeExpandingNodes(node.id);
|
291
|
+
}
|
292
|
+
this.nodesExpand.emit({ node, isExpand: this.treeControl.isExpanded(node) });
|
293
|
+
}
|
294
|
+
setHoverFavorite(id) {
|
295
|
+
this.hoverFavoriteNodeId = id;
|
296
|
+
}
|
297
|
+
expandNodes() {
|
298
|
+
this._expandNodesLoop(this.treeData);
|
299
|
+
}
|
300
|
+
_expandNodesLoop(data) {
|
301
|
+
data.forEach(node => {
|
302
|
+
const expandingNode = this.expandingNodes.some(x => x.id === node.id);
|
303
|
+
if (expandingNode) {
|
304
|
+
this.onClickToggleNode(expandingNode);
|
305
|
+
}
|
306
|
+
data.forEach(item => {
|
307
|
+
if (Array.isArray(item.children)) {
|
308
|
+
this._expandNodesLoop(item.children);
|
309
|
+
}
|
310
|
+
});
|
311
|
+
});
|
312
|
+
}
|
313
|
+
_addExpandingNode(node) {
|
314
|
+
if (!this.expandingNodes.some(x => x.id === node.id)) {
|
315
|
+
this.expandingNodes.push(node);
|
316
|
+
}
|
317
|
+
}
|
318
|
+
_removeExpandingNodes(nodeId) {
|
319
|
+
this.expandingNodes = this.expandingNodes.filter(x => x.id !== nodeId);
|
320
|
+
}
|
321
|
+
}
|
322
|
+
QMSNavigationDrawerComponent.decorators = [
|
323
|
+
{ type: Component, args: [{
|
324
|
+
selector: 'app-qms-navigation-drawer',
|
325
|
+
template: "<mat-tree class=\"qms-navigation-drawer-container\" [dataSource]=\"dataSource\" [treeControl]=\"treeControl\" cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\" [cdkDropListDisabled]=\"dragDropListDisabled\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node\" routerLinkActive=\"active\" (mouseover)=\"onOver(node)\" matTreeNodePadding\r\n matTreeNodePaddingIndent=\"34\" cdkDrag [cdkDragData]=\"node\" (mouseenter)=\"dragHover(node)\"\r\n (mouseleave)=\"dragHoverEnd()\" (cdkDragStarted)=\"dragStart()\" (cdkDragReleased)=\"dragEnd()\"\r\n [ngClass]=\"{'expand-node' : treeControl.isExpanded(node), 'collapse-node': !treeControl.isExpanded(node)}\">\r\n <div *ngIf=\"!node.isReadOnly\" (click)=\"onClickNode(node.id)\"\r\n class=\"tree-content\">\r\n <div class=\"span-text\" mode=\"dark\" position=\"below\">{{ node.name }}</div>\r\n <button tabindex=\"-1\" class=\"button-icon collapse-expand-icon space-icon\" mat-icon-button>\r\n <img class=\"img-icon\" [src]=\"faIconPath\" alt=\"\" />\r\n </button>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\"\r\n *ngIf=\"showFavoriteIcon && (node.id === hoverNode.id || node.favorite)\"\r\n (click)=\"addFavoriteNode(node.id, $event)\" (mouseenter)=\"setHoverFavorite(node.id)\"\r\n (mouseleave)=\"setHoverFavorite(null)\" [ngClass]=\"{'btn-favorite': (node.id === hoverNode.id && showAddIcon)}\"\r\n matTooltip=\"{{!node.favorite ? addFavoriteTooltip : deleteFavoriteTooltip}}\" mode=\"dark\" position=\"below\"\r\n mat-icon-button>\r\n <mat-icon class=\"mat-icon-rtl-mirror blur-icon\" [class.favorite]=\"true\">\r\n {{node.favorite && node.id !== hoverFavoriteNodeId && !favoriteMode\r\n ? 'star_rate_outline' :\r\n (hoverFavoriteNodeId !== null || (isHover && node.id === hoverNode.id)) && !favoriteMode ? 'star_border' : ''\r\n }}\r\n {{node.id === hoverNode.id && favoriteMode && isHover ? 'close' : ''}}\r\n </mat-icon>\r\n </button>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\" *ngIf=\"node.id === hoverNode.id && showAddIcon\"\r\n matTooltip=\"{{addNodeTooltip}}\" (click)=\"addNewNode(node.id, $event)\" mode=\"dark\" position=\"below\"\r\n mat-icon-button>\r\n <mat-icon class=\"mat-icon-rtl-mirror add-icon\">\r\n add\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </mat-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" routerLinkActive=\"active\" (mouseover)=\"onOver(node)\"\r\n matTreeNodePadding matTreeNodePaddingIndent=\"34\" cdkDrag [cdkDragData]=\"node\" (mouseenter)=\"dragHover(node)\"\r\n (mouseleave)=\"dragHoverEnd()\" (cdkDragStarted)=\"dragStart()\" (cdkDragReleased)=\"dragEnd()\" [ngClass]=\"\r\n {'expand-node' : treeControl.isExpanded(node), 'collapse-node': !treeControl.isExpanded(node)}\">\r\n <div *ngIf=\"!node.isReadOnly\" (click)=\"onClickNode(node.id)\"\r\n class=\"tree-content\" (keydown)=\"onKeyDownNode($event, node)\">\r\n <span class=\"span-text\" mode=\"dark\" position=\"below\">{{ node.name }}</span>\r\n <button tabindex=\"-1\" class=\"button-icon space-icon collapse-expand-icon\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'toggle ' + node.name\" (click)=\"onClickToggleNode(node)\">\r\n <mat-icon class=\"mat-icon-rtl-mirror arrow-icon left-icon\">\r\n {{treeControl.isExpanded(node) ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n </button>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\"\r\n matTooltip=\"{{!node.favorite ? addFavoriteTooltip : deleteFavoriteTooltip}}\"\r\n *ngIf=\"showFavoriteIcon && (node.id === hoverNode.id || node.favorite)\"\r\n (click)=\"addFavoriteNode(node.id, $event)\"\r\n [ngClass]=\"{'btn-favorite': (node.id === hoverNode.id && showAddIcon)}\" (mouseenter)=\"setHoverFavorite(node.id)\"\r\n (mouseleave)=\"setHoverFavorite(null)\" mode=\"dark\" position=\"below\" mat-icon-button>\r\n <mat-icon class=\"mat-icon-rtl-mirror blur-icon\" [class.favorite]=\"true\">\r\n {{node.favorite && node.id !== hoverFavoriteNodeId && !favoriteMode\r\n ? 'star_rate_outline' :\r\n (hoverFavoriteNodeId !== null || (isHover && node.id === hoverNode.id)) && !favoriteMode ? 'star_border' : ''\r\n }}\r\n {{node.id === hoverNode.id && favoriteMode && isHover ? 'close' : ''}}\r\n </mat-icon>\r\n </button>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\" *ngIf=\"node.id === hoverNode.id && showAddIcon\"\r\n matTooltip=\"{{addNodeTooltip}}\" (click)=\"addNewNode(node.id, $event)\" mat-icon-button>\r\n <mat-icon class=\"mat-icon-rtl-mirror add-icon\">\r\n add\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </mat-tree-node>\r\n</mat-tree>",
|
326
|
+
styles: ["::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node{width:272px!important;height:48px!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node{min-height:34px;margin:16px 0;padding-right:34px}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content{width:100%;position:relative;cursor:pointer}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .arrow-icon{color:#00324e}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .collapse-expand-icon{color:#3e57b7}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .collapse-expand-icon:hover{background:rgba(0,0,0,.08)}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .add-icon{color:#3e57b7}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .add-icon:hover{background:rgba(0,0,0,.08)}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .left-icon{color:#919191}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.expand-node{padding-left:0;position:static;height:32px;left:calc(50% - 216px/2);top:0;font-family:Open Sans;font-style:normal;font-weight:400;font-size:14px;line-height:19px;display:flex;align-items:center;color:#1954a9;flex:none;order:0;align-self:stretch;flex-grow:1}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.expand-node ::ng-deep mat-icon{color:#1954a9!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.collapse-node{position:static;height:32px;left:calc(50% - 176px/2);top:0;font-family:Open Sans;font-style:normal;font-weight:400;font-size:14px;line-height:19px;display:flex;align-items:center;color:#323232;flex:none;order:0;align-self:stretch;flex-grow:1}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .button-icon{width:30px;height:30px;line-height:30px!important;border-radius:50%}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .button-icon:hover{border-radius:50%}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .img-icon{max-height:25px;max-width:25px}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .add-icon{position:absolute;top:-2px;right:-34px}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .add-icon mat-icon{top:3px;right:3px;border-radius:50%}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .favorite{color:#b13514}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .btn-favorite{right:-5px;color:unset}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .space-icon{position:absolute;top:-5px;left:0}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .span-text{position:relative;overflow:hidden;text-overflow:ellipsis;padding-left:42px;max-width:calc(100% - 56px);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .span-text:after{content:\"\";display:block;clear:both}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node:first-child{margin:0}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.collapse-node:hover{background:#00000014}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.collapse-node:active{background:#0000001f}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.expand-node:active{background:#f2f7fd}"]
|
327
|
+
},] }
|
328
|
+
];
|
329
|
+
QMSNavigationDrawerComponent.ctorParameters = () => [];
|
330
|
+
QMSNavigationDrawerComponent.propDecorators = {
|
331
|
+
treeData: [{ type: Input }],
|
332
|
+
showFavoriteIcon: [{ type: Input }],
|
333
|
+
favoriteMode: [{ type: Input }],
|
334
|
+
addNodeEvent: [{ type: Output }],
|
335
|
+
addFavoriteEvent: [{ type: Output }],
|
336
|
+
drogLocationEvent: [{ type: Output }],
|
337
|
+
showAddIcon: [{ type: Input }],
|
338
|
+
openNodes: [{ type: Input }],
|
339
|
+
dragDropListDisabled: [{ type: Input }],
|
340
|
+
nodesExpand: [{ type: Output }],
|
341
|
+
filterText: [{ type: Input }],
|
342
|
+
faIconPath: [{ type: Input }],
|
343
|
+
onClickNodeEvent: [{ type: Output }],
|
344
|
+
addFavoriteTooltip: [{ type: Input }],
|
345
|
+
deleteFavoriteTooltip: [{ type: Input }],
|
346
|
+
addNodeTooltip: [{ type: Input }]
|
347
|
+
};
|
348
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIvcW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpGLE9BQU8sVUFBVSxNQUFNLHdEQUF3RCxDQUFDO0FBUWhGLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkM7UUFHUyxhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUc5QixpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNELGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHcEQscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsdUJBQWtCLEdBQVcsbUJBQW1CLENBQUM7UUFDakQsMEJBQXFCLEdBQVcsZ0JBQWdCLENBQUM7UUFDakQsbUJBQWMsR0FBVyxtQkFBbUIsQ0FBQztRQUd0RCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDcEMsYUFBUSxHQUFH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LEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OztZQTdXRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsODlKQUFxRDs7YUFFdEQ7Ozs7dUJBTUUsS0FBSzsrQkFDTCxLQUFLOzJCQUNMLEtBQUs7MkJBQ0wsTUFBTTsrQkFDTixNQUFNO2dDQUNOLE1BQU07MEJBQ04sS0FBSzt3QkFDTCxLQUFLO21DQUNMLEtBQUs7MEJBQ0wsTUFBTTt5QkFDTixLQUFLO3lCQUNMLEtBQUs7K0JBQ0wsTUFBTTtpQ0FDTixLQUFLO29DQUNMLEtBQUs7NkJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgZ3VpZEhlbHBlciBmcm9tICcuLi8uLi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21tb24vaGVscGVyL2d1aWRIZWxwZXInO1xyXG5pbXBvcnQgeyBGbGF0Tm9kZSwgVHJlZU5vZGUgfSBmcm9tICcuL21vZGVscy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIubW9kZWwnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1xbXMtbmF2aWdhdGlvbi1kcmF3ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Ftcy1uYXZpZ2F0aW9uLWRyYXdlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgUU1TTmF2aWdhdGlvbkRyYXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRyZWVEYXRhO1xyXG4gIH1cclxuICBASW5wdXQoKSB0cmVlRGF0YTogQXJyYXk8VHJlZU5vZGU+ID0gW107XHJcbiAgQElucHV0KCkgc2hvd0Zhdm9yaXRlSWNvbjogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmYXZvcml0ZU1vZGU6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIGFkZE5vZGVFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFkZEZhdm9yaXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkcm9nTG9jYXRpb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgc2hvd0FkZEljb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG9wZW5Ob2Rlczogc3RyaW5nW10gPSBbXTtcclxuICBASW5wdXQoKSBkcmFnRHJvcExpc3REaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBub2Rlc0V4cGFuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgZmlsdGVyVGV4dDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZhSWNvblBhdGg6IHN0cmluZztcclxuICBAT3V0cHV0KCkgb25DbGlja05vZGVFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgYWRkRmF2b3JpdGVUb29sdGlwOiBzdHJpbmcgPSAnTGVnZyB0aWwgZmF2b3JpdHQnO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZUZhdm9yaXRlVG9vbHRpcDogc3RyaW5nID0gJ1NsZXR0IGZhdm9yaXR0JztcclxuICBASW5wdXQoKSBhZGROb2RlVG9vbHRpcDogc3RyaW5nID0gJ0xlZ2cgdGlsIGxva2Fzam9uJztcclxuXHJcbiAgYWN0aXZlTm9kZUxvY2F0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgZXhwYW5kZWROb2RlU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgZHJhZ2dpbmcgPSBmYWxzZTtcclxuICBleHBhbmRUaW1lb3V0OiBhbnk7XHJcbiAgZXhwYW5kRGVsYXkgPSAxMDAwO1xyXG4gIGhvdmVyRmF2b3JpdGVOb2RlSWQ6IHN0cmluZztcclxuICBpc0hvdmVyID0gZmFsc2U7XHJcbiAgdHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPihub2RlID0+IG5vZGUubGV2ZWwsIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlKTtcclxuICB0cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIodGhpcy5fdHJhbnNmb3JtZXIsIG5vZGUgPT4gbm9kZS5sZXZlbCwgbm9kZSA9PiBub2RlLmV4cGFuZGFibGUsIG5vZGUgPT4gbm9kZS5jaGlsZHJlbik7XHJcbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgdGhpcy50cmVlRmxhdHRlbmVyKTtcclxuICBob3Zlck5vZGU6IGFueSA9IHt9O1xyXG4gIGV4cGFuZGluZ05vZGVzOiBGbGF0Tm9kZVtdID0gW107XHJcbiAgX3RyYW5zZm9ybWVyKG5vZGU6IFRyZWVOb2RlLCBsZXZlbDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBleHBhbmRhYmxlOiAhIW5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwLFxyXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgIGxldmVsLFxyXG4gICAgICBpZDogbm9kZS5pZCxcclxuICAgICAgaXNSZWFkT25seTogbm9kZS5pc1JlYWRPbmx5LFxyXG4gICAgICBmYXZvcml0ZTogbm9kZS5mYXZvcml0ZSxcclxuICAgICAgZGlzYWJsZWQ6IG5vZGUuZGlzYWJsZWRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMub3Blbk5vZGVzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQocCA9PiBwLmlkLnRvU3RyaW5nKCkgPT09IGl0ZW0pKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBub2RlOiBGbGF0Tm9kZSkgPT4gbm9kZS5leHBhbmRhYmxlO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMudHJlZURhdGE7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJUZXh0KSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kTm9kZVNlYXJjaGVkKHRoaXMudHJlZURhdGEsIHRoaXMuZmlsdGVyVGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXMub3Blbk5vZGVzKSB7XHJcbiAgICAgIHRoaXMub3Blbk5vZGVzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChwID0+IHAuaWQudG9TdHJpbmcoKSA9PT0gaXRlbSkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cGFuZE5vZGVTZWFyY2hlZChub2Rlc09yaWdpbjogVHJlZU5vZGVbXSwgdHh0U2VhcmNoOiBzdHJpbmcpIHtcclxuICAgIG5vZGVzT3JpZ2luLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmICghaXRlbS5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModHh0U2VhcmNoLnRvTG9jYWxlTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChwID0+IHAuaWQudG9TdHJpbmcoKSA9PT0gaXRlbS5pZCkpO1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuZXhwYW5kTm9kZVNlYXJjaGVkKGl0ZW0uY2hpbGRyZW4sIHR4dFNlYXJjaCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tOb2RlKG5vZGVJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm9uQ2xpY2tOb2RlRXZlbnQuZW1pdChub2RlSWQpO1xyXG4gIH1cclxuXHJcbiAgb25PdmVyKG5vZGU6IGFueSkge1xyXG4gICAgdGhpcy5ob3Zlck5vZGUgPSBub2RlO1xyXG4gIH1cclxuXHJcbiAgYWRkTmV3Tm9kZShub2RlSWQ6IGFueSwgZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5hZGROb2RlRXZlbnQuZW1pdChub2RlSWQpO1xyXG4gIH1cclxuXHJcbiAgYWRkRmF2b3JpdGVOb2RlKG5vZGVJZDogYW55LCBldmVudDogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmFkZEZhdm9yaXRlRXZlbnQuZW1pdChub2RlSWQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVOb2RlTG9jYXRpb24pIHtcclxuICAgICAgdGhpcy5hY3RpdmVOb2RlTG9jYXRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgY29uc3RydWN0cyBhbiBhcnJheSBvZiBub2RlcyB0aGF0IG1hdGNoZXMgdGhlIERPTSxcclxuICAgKiBhbmQgY2FsbHMgcmVtZW1iZXJFeHBhbmRlZFRyZWVOb2RlcyB0byBwZXJzaXN0IGV4cGFuZCBzdGF0ZVxyXG4gICAqL1xyXG4gIHZpc2libGVOb2RlcygpOiBUcmVlTm9kZVtdIHtcclxuICAgIHRoaXMucmVtZW1iZXJFeHBhbmRlZFRyZWVOb2Rlcyh0aGlzLnRyZWVDb250cm9sLCB0aGlzLmV4cGFuZGVkTm9kZVNldCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcclxuXHJcbiAgICBmdW5jdGlvbiBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGU6IFRyZWVOb2RlLCBleHBhbmRlZDogU2V0PHN0cmluZz4pIHtcclxuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XHJcbiAgICAgIGlmIChleHBhbmRlZC5oYXMobm9kZS5pZCkpIHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBhZGRFeHBhbmRlZENoaWxkcmVuKGNoaWxkLCBleHBhbmRlZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5mb3JFYWNoKG5vZGUgPT4ge1xyXG4gICAgICBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGUsIHRoaXMuZXhwYW5kZWROb2RlU2V0KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSB0aGUgZHJvcCAtIGhlcmUgd2UgcmVhcnJhbmdlIHRoZSBkYXRhIGJhc2VkIG9uIHRoZSBkcm9wIGV2ZW50LFxyXG4gICAqIHRoZW4gcmVidWlsZCB0aGUgdHJlZS5cclxuICAgKiAqL1xyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xyXG4gICAgLy8gU2F2ZSBkYXRhIGZvciBiYWNrdXBcclxuICAgIGNvbnN0IG5vZGUgPSBldmVudC5pdGVtLmRhdGE7XHJcbiAgICBjb25zdCBiYWNrdXBDaGFuZ2VkTm9kZTogVHJlZU5vZGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5vZGUpKTtcclxuICAgIGNvbnN0IGJhY2t1cERhdGE6IFRyZWVOb2RlW10gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YVNvdXJjZS5kYXRhKSk7XHJcblxyXG4gICAgLy8gaWdub3JlIGRyb3BzIG91dHNpZGUgb2YgdGhlIHRyZWVcclxuICAgIGlmICghZXZlbnQuaXNQb2ludGVyT3ZlckNvbnRhaW5lcikgeyByZXR1cm47IH1cclxuXHJcbiAgICAvLyBjb25zdHJ1Y3QgYSBsaXN0IG9mIHZpc2libGUgbm9kZXMsIHRoaXMgd2lsbCBtYXRjaCB0aGUgRE9NLlxyXG4gICAgLy8gdGhlIGNka0RyYWdEcm9wIGV2ZW50LmN1cnJlbnRJbmRleCBqaXZlcyB3aXRoIHZpc2libGUgbm9kZXMuXHJcbiAgICAvLyBpdCBjYWxscyByZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzIHRvIHBlcnNpc3QgZXhwYW5kIHN0YXRlXHJcbiAgICBjb25zdCB2aXNpYmxlTm9kZXMgPSB0aGlzLnZpc2libGVOb2RlcygpO1xyXG5cclxuICAgIC8vIGRlZXAgY2xvbmUgdGhlIGRhdGEgc291cmNlIHNvIHdlIGNhbiBtdXRhdGUgaXRcclxuICAgIGNvbnN0IGNoYW5nZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGFTb3VyY2UuZGF0YSkpO1xyXG5cclxuICAgIC8vIHJlY3Vyc2l2ZSBmaW5kIGZ1bmN0aW9uIHRvIGZpbmQgc2libGluZ3Mgb2Ygbm9kZVxyXG4gICAgZnVuY3Rpb24gZmluZE5vZGVTaWJsaW5ncyhhcnI6IEFycmF5PGFueT4sIGlkOiBzdHJpbmcpOiBBcnJheTxhbnk+IHtcclxuICAgICAgbGV0IHJlc3VsdCwgc3ViUmVzdWx0O1xyXG4gICAgICBhcnIuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IGFycjtcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIHN1YlJlc3VsdCA9IGZpbmROb2RlU2libGluZ3MoaXRlbS5jaGlsZHJlbiwgaWQpO1xyXG4gICAgICAgICAgaWYgKHN1YlJlc3VsdCkgeyByZXN1bHQgPSBzdWJSZXN1bHQ7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHJlbW92ZSB0aGUgbm9kZSBmcm9tIGl0cyBvbGQgcGxhY2VcclxuICAgIGNvbnN0IHNpYmxpbmdzID0gZmluZE5vZGVTaWJsaW5ncyhjaGFuZ2VkRGF0YSwgbm9kZS5pZCk7XHJcbiAgICBjb25zdCBzaWJsaW5nSW5kZXggPSBzaWJsaW5ncy5maW5kSW5kZXgobiA9PiBuLmlkID09PSBub2RlLmlkKTtcclxuICAgIC8vIGNvbnN0IG5vZGVUb0luc2VydDogVHJlZU5vZGUgPSBzaWJsaW5ncy5zcGxpY2Uoc2libGluZ0luZGV4LCAxKVswXTtcclxuICAgIGNvbnN0IG5vZGVUb0luc2VydCA9IHNpYmxpbmdzLnNwbGljZShzaWJsaW5nSW5kZXgsIDEpWzBdO1xyXG4gICAgLy8gZGV0ZXJtaW5lIHdoZXJlIHRvIGluc2VydCB0aGUgbm9kZVxyXG4gICAgY29uc3Qgbm9kZUF0RGVzdCA9IHZpc2libGVOb2Rlc1tldmVudC5jdXJyZW50SW5kZXhdO1xyXG4gICAgaWYgKG5vZGVBdERlc3QuaWQgPT09IG5vZGVUb0luc2VydC5pZCkgeyByZXR1cm47IH1cclxuXHJcbiAgICAvLyBkZXRlcm1pbmUgZHJvcCBpbmRleCByZWxhdGl2ZSB0byBkZXN0aW5hdGlvbiBhcnJheVxyXG4gICAgbGV0IHJlbGF0aXZlSW5kZXggPSBldmVudC5jdXJyZW50SW5kZXg7IC8vIGRlZmF1bHQgaWYgbm8gcGFyZW50XHJcbiAgICBjb25zdCBub2RlQXREZXN0RmxhdE5vZGUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG4gPT4gbm9kZUF0RGVzdC5pZCA9PT0gbi5pZCk7XHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudE5vZGUobm9kZUF0RGVzdEZsYXROb2RlKTtcclxuXHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIGNvbnN0IHBhcmVudEluZGV4ID0gdmlzaWJsZU5vZGVzLmZpbmRJbmRleChuID0+IG4uaWQgPT09IHBhcmVudC5pZCkgKyAxO1xyXG4gICAgICByZWxhdGl2ZUluZGV4ID0gZXZlbnQuY3VycmVudEluZGV4IC0gcGFyZW50SW5kZXg7XHJcbiAgICAgIC8vIHVwZGF0ZSBwYXJlbnRJZCBmb3Igbm9kZVRvSW5zZXJ0XHJcbiAgICAgIG5vZGVUb0luc2VydC5wYXJlbnRJZCA9IHBhcmVudC5pZDtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBub2RlVG9JbnNlcnQucGFyZW50SWQgPSBndWlkSGVscGVyLmVtcHR5O1xyXG4gICAgfVxyXG4gICAgLy8gdXBkYXRlIG5ldyBvcmRlciBmb3Igbm9kZVRvSW5zZXJ0XHJcbiAgICBub2RlVG9JbnNlcnQub3JkZXIgPSByZWxhdGl2ZUluZGV4O1xyXG4gICAgLy8gaW5zZXJ0IG5vZGVcclxuICAgIGNvbnN0IG5ld1NpYmxpbmdzID0gZmluZE5vZGVTaWJsaW5ncyhjaGFuZ2VkRGF0YSwgbm9kZUF0RGVzdC5pZCk7XHJcbiAgICBpZiAoIW5ld1NpYmxpbmdzKSB7IHJldHVybjsgfVxyXG4gICAgbmV3U2libGluZ3Muc3BsaWNlKHJlbGF0aXZlSW5kZXgsIDAsIG5vZGVUb0luc2VydCk7XHJcblxyXG4gICAgLy8gcmVidWlsZCB0cmVlIHdpdGggbXV0YXRlZCBkYXRhXHJcbiAgICB0aGlzLnJlYnVpbGRUcmVlRm9yRGF0YShjaGFuZ2VkRGF0YSk7XHJcblxyXG4gICAgLy8gdXBkYXRlIE5ldyBMb2NhdGlvbiBPcmRlciBmb3IgbmV3IGluc2VydCBub2RlXHJcbiAgICB0aGlzLnVwZGF0ZU5ld09yZGVyRm9yTm9kZVNpYmxpbmdzKG5ld1NpYmxpbmdzKTtcclxuXHJcbiAgICB0aGlzLmRyb2dMb2NhdGlvbkV2ZW50LmVtaXQoe1xyXG4gICAgICBuZXdTaWJsaW5nczogbmV3U2libGluZ3MsXHJcbiAgICAgIGNoYW5nZWROb2RlOiBiYWNrdXBDaGFuZ2VkTm9kZSxcclxuICAgICAgb2xkRGF0YVNvdXJjZTogYmFja3VwRGF0YVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZU5ld09yZGVyRm9yTm9kZVNpYmxpbmdzKG5ld1NpYmxpbmdzOiBhbnlbXSkge1xyXG4gICAgbGV0IG5ld09yZGVyID0gMDtcclxuICAgIG5ld1NpYmxpbmdzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGl0ZW0ub3JkZXIgPSBuZXdPcmRlcjtcclxuICAgICAgbmV3T3JkZXIgPSBuZXdPcmRlciArIDE7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRXhwZXJpbWVudGFsIC0gb3BlbmluZyB0cmVlIG5vZGVzIGFzIHlvdSBkcmFnIG92ZXIgdGhlbVxyXG4gICovXHJcbiAgZHJhZ1N0YXJ0KCkge1xyXG4gICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XHJcbiAgfVxyXG4gIGRyYWdFbmQoKSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIGRyYWdIb3Zlcihub2RlOiBGbGF0Tm9kZSkge1xyXG4gICAgdGhpcy5pc0hvdmVyID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4cGFuZFRpbWVvdXQpO1xyXG4gICAgICB0aGlzLmV4cGFuZFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcclxuICAgICAgfSwgdGhpcy5leHBhbmREZWxheSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRyYWdIb3ZlckVuZCgpIHtcclxuICAgIHRoaXMuaXNIb3ZlciA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhwYW5kVGltZW91dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGZvciBwZXJzaXN0aW5nIHRoZSB0cmVlIGV4cGFuZCBzdGF0ZVxyXG4gICAqIGFmdGVyIGJlaW5nIHJlYnVpbHRcclxuICAgKi9cclxuXHJcbiAgcmVidWlsZFRyZWVGb3JEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5yZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMuZXhwYW5kZWROb2RlU2V0KTtcclxuICAgIHRoaXMudHJlZURhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5mb3JnZXRNaXNzaW5nRXhwYW5kZWROb2Rlcyh0aGlzLnRyZWVDb250cm9sLCB0aGlzLmV4cGFuZGVkTm9kZVNldCk7XHJcbiAgICB0aGlzLmV4cGFuZE5vZGVzQnlJZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2RlcywgQXJyYXkuZnJvbSh0aGlzLmV4cGFuZGVkTm9kZVNldCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzKFxyXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4sXHJcbiAgICBleHBhbmRlZE5vZGVTZXQ6IFNldDxzdHJpbmc+XHJcbiAgKSB7XHJcbiAgICBpZiAodHJlZUNvbnRyb2wuZGF0YU5vZGVzKSB7XHJcbiAgICAgIHRyZWVDb250cm9sLmRhdGFOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRyZWVDb250cm9sLmlzRXhwYW5kYWJsZShub2RlKSAmJiB0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpKSB7XHJcbiAgICAgICAgICAvLyBjYXB0dXJlIGxhdGVzdCBleHBhbmRlZCBzdGF0ZVxyXG4gICAgICAgICAgZXhwYW5kZWROb2RlU2V0LmFkZChub2RlLmlkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcmdldE1pc3NpbmdFeHBhbmRlZE5vZGVzKFxyXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4sXHJcbiAgICBleHBhbmRlZE5vZGVTZXQ6IFNldDxzdHJpbmc+XHJcbiAgKSB7XHJcbiAgICBpZiAodHJlZUNvbnRyb2wuZGF0YU5vZGVzKSB7XHJcbiAgICAgIGV4cGFuZGVkTm9kZVNldC5mb3JFYWNoKChub2RlSWQpID0+IHtcclxuICAgICAgICAvLyBtYWludGFpbiBleHBhbmRlZCBub2RlIHN0YXRlXHJcbiAgICAgICAgaWYgKCF0cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCgobikgPT4gbi5pZC50b1N0cmluZygpID09PSBub2RlSWQpKSB7XHJcbiAgICAgICAgICAvLyBpZiB0aGUgdHJlZSBkb2Vzbid0IGhhdmUgdGhlIHByZXZpb3VzIG5vZGUsIHJlbW92ZSBpdCBmcm9tIHRoZSBleHBhbmRlZCBsaXN0XHJcbiAgICAgICAgICBleHBhbmRlZE5vZGVTZXQuZGVsZXRlKG5vZGVJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwYW5kTm9kZXNCeUlkKGZsYXROb2RlczogRmxhdE5vZGVbXSwgaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKCFmbGF0Tm9kZXMgfHwgZmxhdE5vZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cclxuICAgIGNvbnN0IGlkU2V0ID0gbmV3IFNldChpZHMpO1xyXG4gICAgcmV0dXJuIGZsYXROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGlmIChpZFNldC5oYXMobm9kZS5pZC50b1N0cmluZygpKSkge1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG5cclxuICAgICAgICB0aGlzLmV4cGFuZGluZ05vZGVzLnB1c2gobm9kZSk7XHJcblxyXG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgd2hpbGUgKHBhcmVudCkge1xyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQocGFyZW50KTtcclxuXHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGluZ05vZGVzLnB1c2gocGFyZW50KTtcclxuXHJcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzLmdldFBhcmVudE5vZGUocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnROb2RlKG5vZGU6IEZsYXROb2RlKTogRmxhdE5vZGUgfCBudWxsIHtcclxuICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IG5vZGUubGV2ZWw7XHJcbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5pbmRleE9mKG5vZGUpIC0gMTtcclxuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldO1xyXG4gICAgICBpZiAoY3VycmVudE5vZGUubGV2ZWwgPCBjdXJyZW50TGV2ZWwpIHtcclxuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duTm9kZShldmVudDogYW55LCBub2RlKSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5vbkNsaWNrVG9nZ2xlTm9kZShub2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2tUb2dnbGVOb2RlKG5vZGUpIHtcclxuICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkpIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XHJcbiAgICAgIHRoaXMuX2FkZEV4cGFuZGluZ05vZGUobm9kZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlKG5vZGUpO1xyXG4gICAgICB0aGlzLl9yZW1vdmVFeHBhbmRpbmdOb2Rlcyhub2RlLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMubm9kZXNFeHBhbmQuZW1pdCh7IG5vZGUsIGlzRXhwYW5kOiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRIb3ZlckZhdm9yaXRlKGlkKSB7XHJcbiAgICB0aGlzLmhvdmVyRmF2b3JpdGVOb2RlSWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGV4cGFuZE5vZGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZXhwYW5kTm9kZXNMb29wKHRoaXMudHJlZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZXhwYW5kTm9kZXNMb29wKGRhdGE6IFRyZWVOb2RlW10pOiB2b2lkIHtcclxuICAgIGRhdGEuZm9yRWFjaChub2RlID0+IHtcclxuICAgICAgY29uc3QgZXhwYW5kaW5nTm9kZSA9IHRoaXMuZXhwYW5kaW5nTm9kZXMuc29tZSh4ID0+IHguaWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICBpZiAoZXhwYW5kaW5nTm9kZSkge1xyXG4gICAgICAgIHRoaXMub25DbGlja1RvZ2dsZU5vZGUoZXhwYW5kaW5nTm9kZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgdGhpcy5fZXhwYW5kTm9kZXNMb29wKGl0ZW0uY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FkZEV4cGFuZGluZ05vZGUobm9kZTogRmxhdE5vZGUpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5leHBhbmRpbmdOb2Rlcy5zb21lKHggPT4geC5pZCA9PT0gbm9kZS5pZCkpIHtcclxuICAgICAgdGhpcy5leHBhbmRpbmdOb2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlRXhwYW5kaW5nTm9kZXMobm9kZUlkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kaW5nTm9kZXMgPSB0aGlzLmV4cGFuZGluZ05vZGVzLmZpbHRlcih4ID0+IHguaWQgIT09IG5vZGVJZCk7XHJcbiAgfVxyXG59Il19
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
2
|
+
import { CommonModule } from '@angular/common';
|
3
|
+
import { NgModule } from '@angular/core';
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
5
|
+
import { MatIconModule } from '@angular/material/icon';
|
6
|
+
import { MatToolbarModule } from '@angular/material/toolbar';
|
7
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
8
|
+
import { MatTreeModule } from '@angular/material/tree';
|
9
|
+
import { QMSButtonModule } from '../button/button.module';
|
10
|
+
import { QMSNavigationDrawerComponent } from './qms-navigation-drawer.component';
|
11
|
+
export class QMSNavigationDrawerModule {
|
12
|
+
}
|
13
|
+
QMSNavigationDrawerModule.decorators = [
|
14
|
+
{ type: NgModule, args: [{
|
15
|
+
declarations: [
|
16
|
+
QMSNavigationDrawerComponent
|
17
|
+
],
|
18
|
+
imports: [
|
19
|
+
CommonModule,
|
20
|
+
MatIconModule,
|
21
|
+
MatToolbarModule,
|
22
|
+
MatButtonModule,
|
23
|
+
QMSButtonModule,
|
24
|
+
MatTooltipModule,
|
25
|
+
DragDropModule,
|
26
|
+
MatTreeModule
|
27
|
+
],
|
28
|
+
exports: [
|
29
|
+
QMSNavigationDrawerComponent
|
30
|
+
]
|
31
|
+
},] }
|
32
|
+
];
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLW5hdmlnYXRpb24tZHJhd2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIvcW1zLW5hdmlnYXRpb24tZHJhd2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBc0JqRixNQUFNLE9BQU8seUJBQXlCOzs7WUFyQnJDLFFBQVEsU0FDUDtnQkFDRSxZQUFZLEVBQUU7b0JBQ1osNEJBQTRCO2lCQUM3QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixhQUFhO29CQUNiLGdCQUFnQjtvQkFDaEIsZUFBZTtvQkFDZixlQUFlO29CQUNmLGdCQUFnQjtvQkFDaEIsY0FBYztvQkFDZCxhQUFhO2lCQUNkO2dCQUNELE9BQU8sRUFBRTtvQkFDUCw0QkFBNEI7aUJBQzdCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFFNU0J1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24ubW9kdWxlJztcclxuaW1wb3J0IHsgUU1TTmF2aWdhdGlvbkRyYXdlckNvbXBvbmVudCB9IGZyb20gJy4vcW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudCc7XHJcbkBOZ01vZHVsZShcclxuICB7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtcclxuICAgICAgUU1TTmF2aWdhdGlvbkRyYXdlckNvbXBvbmVudFxyXG4gICAgXSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgICBNYXRUb29sYmFyTW9kdWxlLFxyXG4gICAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICAgIFFNU0J1dHRvbk1vZHVsZSxcclxuICAgICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgICAgRHJhZ0Ryb3BNb2R1bGUsXHJcbiAgICAgIE1hdFRyZWVNb2R1bGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgIFFNU05hdmlnYXRpb25EcmF3ZXJDb21wb25lbnRcclxuICAgIF1cclxuICB9XHJcbilcclxuXHJcbmV4cG9ydCBjbGFzcyBRTVNOYXZpZ2F0aW9uRHJhd2VyTW9kdWxlIHtcclxufVxyXG4iXX0=
|