tango-app-ui-shared 3.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.
Files changed (114) hide show
  1. package/.eslintrc.json +37 -0
  2. package/README.md +24 -0
  3. package/ng-package.json +7 -0
  4. package/package.json +12 -0
  5. package/src/lib/guards/auth.guard.ts +20 -0
  6. package/src/lib/i18n/index.ts +2 -0
  7. package/src/lib/i18n/translation.module.ts +9 -0
  8. package/src/lib/i18n/translation.service.ts +61 -0
  9. package/src/lib/i18n/vocabs/ch.ts +105 -0
  10. package/src/lib/i18n/vocabs/de.ts +105 -0
  11. package/src/lib/i18n/vocabs/en.ts +105 -0
  12. package/src/lib/i18n/vocabs/es.ts +105 -0
  13. package/src/lib/i18n/vocabs/fr.ts +105 -0
  14. package/src/lib/i18n/vocabs/jp.ts +105 -0
  15. package/src/lib/interceptors/http-auth-interceptor.ts +21 -0
  16. package/src/lib/interfaces/global-state.ts +6 -0
  17. package/src/lib/modules/errors/error404/error404.component.html +24 -0
  18. package/src/lib/modules/errors/error404/error404.component.scss +0 -0
  19. package/src/lib/modules/errors/error404/error404.component.spec.ts +25 -0
  20. package/src/lib/modules/errors/error404/error404.component.ts +50 -0
  21. package/src/lib/modules/errors/error500/error500.component.html +24 -0
  22. package/src/lib/modules/errors/error500/error500.component.scss +0 -0
  23. package/src/lib/modules/errors/error500/error500.component.spec.ts +25 -0
  24. package/src/lib/modules/errors/error500/error500.component.ts +50 -0
  25. package/src/lib/modules/errors/errors-routing.module.ts +30 -0
  26. package/src/lib/modules/errors/errors.component.html +15 -0
  27. package/src/lib/modules/errors/errors.component.scss +4 -0
  28. package/src/lib/modules/errors/errors.component.spec.ts +25 -0
  29. package/src/lib/modules/errors/errors.component.ts +42 -0
  30. package/src/lib/modules/errors/errors.module.ts +21 -0
  31. package/src/lib/modules/layout/content/content.component.html +12 -0
  32. package/src/lib/modules/layout/content/content.component.scss +0 -0
  33. package/src/lib/modules/layout/content/content.component.ts +35 -0
  34. package/src/lib/modules/layout/footer/footer.component.html +32 -0
  35. package/src/lib/modules/layout/footer/footer.component.scss +0 -0
  36. package/src/lib/modules/layout/footer/footer.component.spec.ts +25 -0
  37. package/src/lib/modules/layout/footer/footer.component.ts +13 -0
  38. package/src/lib/modules/layout/header/header-menu/header-menu.component.html +27 -0
  39. package/src/lib/modules/layout/header/header-menu/header-menu.component.scss +4 -0
  40. package/src/lib/modules/layout/header/header-menu/header-menu.component.spec.ts +25 -0
  41. package/src/lib/modules/layout/header/header-menu/header-menu.component.ts +38 -0
  42. package/src/lib/modules/layout/header/header.component.html +90 -0
  43. package/src/lib/modules/layout/header/header.component.scss +0 -0
  44. package/src/lib/modules/layout/header/header.component.spec.ts +25 -0
  45. package/src/lib/modules/layout/header/header.component.ts +139 -0
  46. package/src/lib/modules/layout/header/navbar/navbar.component.html +92 -0
  47. package/src/lib/modules/layout/header/navbar/navbar.component.scss +0 -0
  48. package/src/lib/modules/layout/header/navbar/navbar.component.spec.ts +23 -0
  49. package/src/lib/modules/layout/header/navbar/navbar.component.ts +20 -0
  50. package/src/lib/modules/layout/header/page-title/page-title.component.html +32 -0
  51. package/src/lib/modules/layout/header/page-title/page-title.component.ts +40 -0
  52. package/src/lib/modules/layout/keenicon/icons.json +1 -0
  53. package/src/lib/modules/layout/keenicon/keenicon.component.html +4 -0
  54. package/src/lib/modules/layout/keenicon/keenicon.component.scss +0 -0
  55. package/src/lib/modules/layout/keenicon/keenicon.component.spec.ts +23 -0
  56. package/src/lib/modules/layout/keenicon/keenicon.component.ts +30 -0
  57. package/src/lib/modules/layout/layout/layout.component.html +70 -0
  58. package/src/lib/modules/layout/layout/layout.component.scss +15 -0
  59. package/src/lib/modules/layout/layout/layout.component.ts +399 -0
  60. package/src/lib/modules/layout/layout.module.ts +93 -0
  61. package/src/lib/modules/layout/scripts-init/scripts-init.component.html +0 -0
  62. package/src/lib/modules/layout/scripts-init/scripts-init.component.ts +81 -0
  63. package/src/lib/modules/layout/scroll-top/scroll-top.component.html +1 -0
  64. package/src/lib/modules/layout/scroll-top/scroll-top.component.ts +75 -0
  65. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.html +9 -0
  66. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.scss +0 -0
  67. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.spec.ts +23 -0
  68. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.ts +13 -0
  69. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.html +26 -0
  70. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.scss +0 -0
  71. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.spec.ts +23 -0
  72. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.ts +36 -0
  73. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.html +276 -0
  74. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.scss +0 -0
  75. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.spec.ts +23 -0
  76. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.ts +15 -0
  77. package/src/lib/modules/layout/sidebar/sidebar.component.html +16 -0
  78. package/src/lib/modules/layout/sidebar/sidebar.component.scss +0 -0
  79. package/src/lib/modules/layout/sidebar/sidebar.component.spec.ts +23 -0
  80. package/src/lib/modules/layout/sidebar/sidebar.component.ts +203 -0
  81. package/src/lib/modules/layout/toolbar/accounting/accounting.component.html +84 -0
  82. package/src/lib/modules/layout/toolbar/accounting/accounting.component.scss +0 -0
  83. package/src/lib/modules/layout/toolbar/accounting/accounting.component.spec.ts +23 -0
  84. package/src/lib/modules/layout/toolbar/accounting/accounting.component.ts +14 -0
  85. package/src/lib/modules/layout/toolbar/classic/classic.component.html +37 -0
  86. package/src/lib/modules/layout/toolbar/classic/classic.component.scss +0 -0
  87. package/src/lib/modules/layout/toolbar/classic/classic.component.spec.ts +23 -0
  88. package/src/lib/modules/layout/toolbar/classic/classic.component.ts +88 -0
  89. package/src/lib/modules/layout/toolbar/extended/extended.component.html +100 -0
  90. package/src/lib/modules/layout/toolbar/extended/extended.component.scss +0 -0
  91. package/src/lib/modules/layout/toolbar/extended/extended.component.spec.ts +23 -0
  92. package/src/lib/modules/layout/toolbar/extended/extended.component.ts +12 -0
  93. package/src/lib/modules/layout/toolbar/reports/reports.component.html +62 -0
  94. package/src/lib/modules/layout/toolbar/reports/reports.component.scss +0 -0
  95. package/src/lib/modules/layout/toolbar/reports/reports.component.spec.ts +23 -0
  96. package/src/lib/modules/layout/toolbar/reports/reports.component.ts +14 -0
  97. package/src/lib/modules/layout/toolbar/saas/saas.component.html +77 -0
  98. package/src/lib/modules/layout/toolbar/saas/saas.component.scss +0 -0
  99. package/src/lib/modules/layout/toolbar/saas/saas.component.spec.ts +23 -0
  100. package/src/lib/modules/layout/toolbar/saas/saas.component.ts +14 -0
  101. package/src/lib/modules/layout/toolbar/toolbar.component.html +27 -0
  102. package/src/lib/modules/layout/toolbar/toolbar.component.scss +0 -0
  103. package/src/lib/modules/layout/toolbar/toolbar.component.spec.ts +25 -0
  104. package/src/lib/modules/layout/toolbar/toolbar.component.ts +125 -0
  105. package/src/lib/routes/route-wraper-modules/manage-wrapper.module.ts +12 -0
  106. package/src/lib/routes/route-wraper-modules/profile-wrapper.module.ts +12 -0
  107. package/src/lib/routes/route-wraper-modules/store-wrapper.module.ts +12 -0
  108. package/src/lib/routes/routing.ts +72 -0
  109. package/src/lib/services/auth.service.ts +16 -0
  110. package/src/lib/services/global-state.service.ts +11 -0
  111. package/src/public-api.ts +64 -0
  112. package/tsconfig.lib.json +14 -0
  113. package/tsconfig.lib.prod.json +10 -0
  114. package/tsconfig.spec.json +14 -0
@@ -0,0 +1 @@
1
+ {"free-version-categories":["general","abstract","devices","location","users","it-newtwork","design","archive","typography","technologies","social-media","weather"],"categories":{"abstract":["abstract-33","abstract-27","abstract-26","abstract-32","abstract-18","abstract-24","abstract-30","abstract-8","abstract-9","abstract-31","abstract-25","abstract-19","abstract-21","abstract-35","abstract-34","abstract-20","abstract-36","abstract-22","abstract-23","abstract-37","abstract-44","abstract","abstract-45","abstract-47","abstract-46","abstract-42","abstract-43","abstract-41","abstract-40","abstract-48","abstract-49","abstract-12","abstract-2","abstract-3","abstract-13","abstract-39","abstract-11","abstract-1","abstract-10","abstract-38","abstract-14","abstract-28","abstract-4","abstract-5","abstract-29","abstract-15","abstract-17","abstract-7","abstract-6","abstract-16"],"settings":["toggle-on","toggle-on-circle","toggle-off","category","setting","toggle-off-circle","more-2","setting-4","setting-2","setting-3"],"design":["eraser","paintbucket","add-item","design-2","brush","size","design","copy","text","design-frame","bucket","glass","feather","pencil","colors-square","design-mask","bucket-square","copy-success","color-swatch"],"social-media":["instagram","snapchat","classmates","facebook","whatsapp","social-media","youtube","dribbble","twitter","tiktok","behance"],"it-network":["underlining","disconnect","code","gear","loading","scroll","wrench","square-brackets","frame","message-programming","data","fasten","click"],"technologies":["tech-wifi","joystick","faceid","technology-3","technology-2","electricity","fingerprint-scanning","technology-4","artificial-intelligence","technology"],"ecommerce":["basket-ok","cheque","handcart","shop","tag","purchase","discount","package","percentage","barcode","lots-shopping","basket"],"archive":["book-square","receipt-square","save-2","archive-tick"],"security":["shield-search","password-check","shield-tick","lock","key","shield","shield-cross","key-square","eye-slash","security-check","lock-3","scan-barcode","lock-2","eye","shield-slash","security-user"],"general":["triangle","subtitle","ghost","information","milk","home","happy-emoji","mouse-square","filter-tick","filter-search","wifi-home","trash-square","paper-clip","archive","pin","wifi-square","auto-brightness","coffee","icon","emoji-happy","general-mouse","ranking","slider","crown-2","rescue","flash-circle","safe-home","cloud-change","crown","filter-edit","picture","verify","send","tag-cross","cloud-add","home-3","disk","trash","star","cd","home-2","mouse-circle","home-1","call","gift","share","sort","magnifier","filter-square","tree","filter","switch","cloud","cup","diamonds","status","rocket","cloud-download","menu","chrome"],"location":["geolocation-home","map","telephone-geolocation","satellite","flag","focus","pointers","compass","route","geolocation"],"education":["brifecase-timer","briefcase","clipboard","bookmark-2","note","note-2","book-open","book","teacher","award","brifecase-tick","brifecase-cros","bookmark"],"business":["chart-line","chart","graph-3","chart-pie-3","graph-2","chart-line-down","chart-pie-too","chart-pie-4","chart-line-down-2","graph-4","chart-line-up-2","badge","chart-line-up","chart-simple-3","chart-pie-simple","chart-simple-2","graph-up","chart-line-star","graph","chart-simple"],"files-folders":["tablet-delete","file-added","file-up","minus-folder","file","delete-files","add-folder","file-left","file-deleted","some-files","file-right","notepad","notepad-bookmark","document","like-folder","folder-up","folder-added","file-down","filter-tablet","tablet-book","update-file","add-notepad","questionnaire-tablet","tablet-up","tablet-ok","update-folder","files-tablet","folder-down","notepad-edit","tablet-text-up","search-list","tablet-text-down","add-files","tablet-down","delete-folder","folder","file-sheet"],"software":["bootstrap","figma","dropbox","xaomi","microsoft","android","vue","js","spring-framework","github","dj","google-play","angular","soft-3","python","soft-2","ts","xd","spotify","js-2","laravel","css","google","photoshop","twitch","illustrator","pails","react","html","slack","soft","yii","apple","vuesax"],"time":["calendar-add","calendar-search","calendar-2","calendar-tick","time","watch","calendar-edit","calendar","calendar-8","timer","calendar-remove"],"support":["heart-circle","like","information-4","information-5","information-2","information-3","question","dislike","message-question","medal-star","like-tag","like-2","support-24","question-2","lovely","like-shapes","heart"],"users":["user","user-square","user-tick","people","user-edit","profile-user","profile-circle"],"medicine":["capsule","virus","bandage","thermometer","flask","test-tubes","syringe","mask","pill","pulse"],"burger-menu":["burger-menu","burger-menu-6","burger-menu-5","burger-menu-4","burger-menu-1","burger-menu-3","burger-menu-2"],"typography":["text-align-center","text-italic","text-bold","text-strikethrough","text-underline","text-number","text-align-left","text-align-right","text-circle","text-align-justify-center"],"finance":["theta","dollar","binance","nexo","euro","avalanche","bitcoin","wallet","price-tag","finance-calculator","dash","lts","vibe","credit-cart","paypal","bill","ocean","celsius","educare","enjin-coin","two-credit-cart","bank","binance-usd","wanchain","trello","save-deposit","xmr","financial-schedule","office-bag"],"weather":["night-day","sun","drop","moon"],"arrows":["exit-right-corner","dots-circle-vertical","check-square","right-left","arrow-down","dots-horizontal","arrow-right-left","up-down","double-check","arrow-up-left","down","exit-up","up-square","down-square","plus-square","dots-circle","arrow-down-left","double-check-circle","up","entrance-right","arrow-right","arrow-two-diagonals","minus-square","arrow-diagonal","black-left","arrow-down-refraction","black-right","double-left","arrow-circle-left","arrow-zigzag","plus","check","exit-left","arrow-circle-right","cross-square","entrance-left","left-square","arrows-loop","black-left-line","double-left-arrow","check-circle","right","dots-square-vertical","arrow-up-right","exit-down","dots-square","to-left","double-down","plus-circle","black-down","double-up","black-up","double-right-arrow","arrow-up","black-right-line","arrow-up-refraction","arrow-left","cross","minus-circle","arrow-down-right","exit-right","to-right","double-right","arrow-mix","right-square","arrows-circle","cross-circle","left","minus","dots-vertical","arrow-up-down"],"communication":["message-text-2","message-notif","message-add","sms","directbox-default","message-text","messages","address-book","message-edit","message-minus"],"notifications":["notification-circle","notification-favorite","notification-2","notification","notification-bing","notification-status","notification-on"],"delivery-and-logistics":["scooter-2","parcel","delivery-time","delivery","delivery-24","ship","courier","logistic","trailer","car-2","car-3","airplane-square","scooter","truck","cube-3","bus","cube-2","delivery-door","delivery-3","delivery-2","car","courier-express","airplane","delivery-geolocation","parcel-tracking"],"devices":["monitor-mobile","devices","keyboard","devices-2","bluetooth","wifi","airpod","simcard-2","speaker","printer","simcard","router","phone","electronic-clock","external-drive","laptop","tablet","screen","calculator","mouse"],"grid":["grid","slider-vertical-2","maximize","slider-vertical","row-horizontal","kanban","row-vertical","fat-rows","grid-2","element-8","element-9","element-12","element-4","element-5","grid-frame","element-11","element-7","element-6","element-10","element-2","element-3","element-equal","element-1","slider-horizontal-2","slider-horizontal","element-plus"]},"duotone-paths":{"abstract-33":2,"abstract-27":2,"abstract-26":2,"abstract-32":2,"abstract-18":2,"abstract-24":2,"abstract-30":2,"abstract-8":2,"abstract-9":2,"abstract-31":2,"abstract-25":2,"abstract-19":2,"abstract-21":2,"abstract-35":2,"abstract-34":2,"abstract-20":2,"abstract-36":2,"abstract-22":2,"abstract-23":2,"abstract-37":2,"abstract-44":2,"abstract":2,"abstract-45":2,"abstract-47":2,"abstract-46":2,"abstract-42":2,"abstract-43":2,"abstract-41":2,"abstract-40":2,"abstract-48":3,"abstract-49":3,"abstract-12":2,"abstract-2":2,"abstract-3":2,"abstract-13":2,"abstract-39":2,"abstract-11":2,"abstract-1":2,"abstract-10":2,"abstract-38":2,"abstract-14":2,"abstract-28":2,"abstract-4":2,"abstract-5":2,"abstract-29":2,"abstract-15":2,"abstract-17":2,"abstract-7":2,"abstract-6":0,"abstract-16":2,"toggle-on":2,"toggle-on-circle":2,"toggle-off":2,"category":4,"setting":2,"toggle-off-circle":2,"more-2":4,"setting-4":0,"setting-2":2,"setting-3":5,"eraser":3,"paintbucket":3,"add-item":3,"design-2":2,"brush":2,"size":2,"design":2,"copy":0,"text":0,"design-frame":2,"bucket":4,"glass":3,"feather":2,"pencil":2,"colors-square":4,"design-mask":2,"bucket-square":3,"copy-success":2,"color-swatch":21,"instagram":2,"snapchat":2,"classmates":2,"facebook":2,"whatsapp":2,"social-media":2,"youtube":2,"dribbble":6,"twitter":2,"tiktok":2,"behance":2,"underlining":3,"disconnect":5,"code":4,"gear":2,"loading":2,"scroll":3,"wrench":2,"square-brackets":4,"frame":4,"message-programming":4,"data":5,"fasten":2,"click":5,"tech-wifi":2,"joystick":4,"faceid":6,"technology-3":4,"technology-2":2,"electricity":10,"fingerprint-scanning":5,"technology-4":7,"artificial-intelligence":8,"technology":9,"basket-ok":4,"cheque":7,"handcart":0,"shop":5,"tag":3,"purchase":2,"discount":2,"package":3,"percentage":2,"barcode":8,"lots-shopping":8,"basket":4,"book-square":3,"receipt-square":2,"save-2":2,"archive-tick":2,"shield-search":3,"password-check":5,"shield-tick":2,"lock":3,"key":2,"shield":2,"shield-cross":3,"key-square":2,"eye-slash":4,"security-check":4,"lock-3":3,"scan-barcode":8,"lock-2":5,"eye":3,"shield-slash":3,"security-user":2,"triangle":3,"subtitle":5,"ghost":3,"information":3,"milk":3,"home":0,"happy-emoji":2,"mouse-square":2,"filter-tick":2,"filter-search":3,"wifi-home":4,"trash-square":4,"paper-clip":0,"archive":3,"pin":2,"wifi-square":4,"auto-brightness":3,"coffee":6,"icon":3,"emoji-happy":4,"general-mouse":2,"ranking":4,"slider":4,"crown-2":3,"rescue":2,"flash-circle":2,"safe-home":2,"cloud-change":3,"crown":2,"filter-edit":2,"picture":2,"verify":2,"send":2,"tag-cross":3,"cloud-add":2,"home-3":2,"disk":2,"trash":5,"star":0,"cd":2,"home-2":2,"mouse-circle":2,"home-1":2,"call":8,"gift":4,"share":6,"sort":4,"magnifier":2,"filter-square":2,"tree":3,"filter":2,"switch":2,"cloud":0,"cup":2,"diamonds":2,"status":3,"rocket":2,"cloud-download":2,"menu":4,"chrome":2,"geolocation-home":2,"map":3,"telephone-geolocation":3,"satellite":6,"flag":2,"focus":2,"pointers":3,"compass":2,"route":4,"geolocation":2,"brifecase-timer":3,"briefcase":2,"clipboard":3,"bookmark-2":2,"note":2,"note-2":4,"book-open":4,"book":4,"teacher":2,"award":3,"brifecase-tick":3,"brifecase-cros":3,"bookmark":2,"chart-line":2,"chart":2,"graph-3":2,"chart-pie-3":3,"graph-2":3,"chart-line-down":2,"chart-pie-too":2,"chart-pie-4":3,"chart-line-down-2":3,"graph-4":2,"chart-line-up-2":2,"badge":5,"chart-line-up":2,"chart-simple-3":4,"chart-pie-simple":2,"chart-simple-2":4,"graph-up":6,"chart-line-star":3,"graph":4,"chart-simple":4,"tablet-delete":3,"file-added":2,"file-up":2,"minus-folder":2,"file":2,"delete-files":2,"add-folder":2,"file-left":2,"file-deleted":2,"some-files":2,"file-right":2,"notepad":5,"notepad-bookmark":6,"document":2,"like-folder":2,"folder-up":2,"folder-added":2,"file-down":2,"filter-tablet":2,"tablet-book":2,"update-file":4,"add-notepad":4,"questionnaire-tablet":2,"tablet-up":3,"tablet-ok":3,"update-folder":2,"files-tablet":2,"folder-down":2,"notepad-edit":2,"tablet-text-up":2,"search-list":3,"tablet-text-down":4,"add-files":3,"tablet-down":3,"delete-folder":2,"folder":2,"file-sheet":2,"bootstrap":3,"figma":5,"dropbox":5,"xaomi":2,"microsoft":4,"android":6,"vue":2,"js":2,"spring-framework":0,"github":2,"dj":0,"google-play":2,"angular":3,"soft-3":2,"python":2,"soft-2":2,"ts":3,"xd":3,"spotify":2,"js-2":2,"laravel":7,"css":2,"google":2,"photoshop":2,"twitch":3,"illustrator":4,"pails":9,"react":2,"html":2,"slack":8,"soft":6,"yii":3,"apple":2,"vuesax":3,"calendar-add":6,"calendar-search":4,"calendar-2":5,"calendar-tick":6,"time":2,"watch":2,"calendar-edit":3,"calendar":2,"calendar-8":6,"timer":3,"calendar-remove":6,"heart-circle":2,"like":2,"information-4":3,"information-5":3,"information-2":3,"information-3":3,"question":3,"dislike":2,"message-question":3,"medal-star":4,"like-tag":2,"like-2":2,"support-24":3,"question-2":3,"lovely":2,"like-shapes":2,"heart":2,"user":2,"user-square":3,"user-tick":3,"people":5,"user-edit":3,"profile-user":4,"profile-circle":3,"capsule":2,"virus":3,"bandage":2,"thermometer":2,"flask":2,"test-tubes":2,"syringe":3,"mask":3,"pill":0,"pulse":2,"burger-menu":4,"burger-menu-6":0,"burger-menu-5":0,"burger-menu-4":0,"burger-menu-1":4,"burger-menu-3":9,"burger-menu-2":10,"text-align-center":4,"text-italic":4,"text-bold":3,"text-strikethrough":3,"text-underline":3,"text-number":6,"text-align-left":4,"text-align-right":4,"text-circle":6,"text-align-justify-center":4,"theta":2,"dollar":3,"binance":5,"nexo":2,"euro":3,"avalanche":2,"bitcoin":2,"wallet":4,"price-tag":3,"finance-calculator":7,"dash":2,"lts":2,"vibe":2,"credit-cart":2,"paypal":2,"bill":6,"ocean":19,"celsius":2,"educare":4,"enjin-coin":2,"two-credit-cart":5,"bank":2,"binance-usd":4,"wanchain":2,"trello":3,"save-deposit":4,"xmr":2,"financial-schedule":4,"office-bag":4,"night-day":10,"sun":9,"drop":2,"moon":2,"exit-right-corner":2,"dots-circle-vertical":4,"check-square":2,"right-left":3,"arrow-down":2,"dots-horizontal":3,"arrow-right-left":2,"up-down":3,"double-check":2,"arrow-up-left":2,"down":0,"exit-up":2,"up-square":2,"down-square":2,"plus-square":3,"dots-circle":4,"arrow-down-left":2,"double-check-circle":3,"up":0,"entrance-right":2,"arrow-right":2,"arrow-two-diagonals":5,"minus-square":2,"arrow-diagonal":3,"black-left":0,"arrow-down-refraction":2,"black-right":0,"double-left":2,"arrow-circle-left":2,"arrow-zigzag":2,"plus":0,"check":0,"exit-left":2,"arrow-circle-right":2,"cross-square":2,"entrance-left":2,"left-square":2,"arrows-loop":2,"black-left-line":2,"double-left-arrow":2,"check-circle":2,"right":0,"dots-square-vertical":4,"arrow-up-right":2,"exit-down":2,"dots-square":4,"to-left":0,"double-down":3,"plus-circle":2,"black-down":0,"double-up":3,"black-up":0,"double-right-arrow":2,"arrow-up":2,"black-right-line":2,"arrow-up-refraction":2,"arrow-left":2,"cross":2,"minus-circle":2,"arrow-down-right":2,"exit-right":2,"to-right":0,"double-right":2,"arrow-mix":2,"right-square":2,"arrows-circle":2,"cross-circle":2,"left":0,"minus":0,"dots-vertical":3,"arrow-up-down":2,"message-text-2":3,"message-notif":5,"message-add":3,"sms":2,"directbox-default":4,"message-text":3,"messages":5,"address-book":3,"message-edit":2,"message-minus":2,"notification-circle":2,"notification-favorite":3,"notification-2":2,"notification":3,"notification-bing":3,"notification-status":4,"notification-on":5,"scooter-2":0,"parcel":5,"delivery-time":5,"delivery":5,"delivery-24":4,"ship":3,"courier":3,"logistic":7,"trailer":5,"car-2":6,"car-3":3,"airplane-square":2,"scooter":7,"truck":5,"cube-3":2,"bus":5,"cube-2":3,"delivery-door":4,"delivery-3":3,"delivery-2":9,"car":5,"courier-express":7,"airplane":2,"delivery-geolocation":5,"parcel-tracking":3,"monitor-mobile":2,"devices":5,"keyboard":2,"devices-2":3,"bluetooth":2,"wifi":4,"airpod":3,"simcard-2":2,"speaker":3,"printer":5,"simcard":5,"router":2,"phone":2,"electronic-clock":4,"external-drive":5,"laptop":2,"tablet":3,"screen":4,"calculator":6,"mouse":2,"grid":2,"slider-vertical-2":3,"maximize":5,"slider-vertical":3,"row-horizontal":2,"kanban":2,"row-vertical":2,"fat-rows":2,"grid-2":2,"element-8":2,"element-9":2,"element-12":3,"element-4":2,"element-5":2,"grid-frame":3,"element-11":4,"element-7":2,"element-6":2,"element-10":3,"element-2":2,"element-3":2,"element-equal":5,"element-1":4,"slider-horizontal-2":3,"slider-horizontal":3,"element-plus":5},"number":573}
@@ -0,0 +1,4 @@
1
+ <span *ngIf="type === 'duotone'" class="ki-{{ type }} ki-{{ name }}{{ class ? ' ' + class : '' }}">
2
+ <span *ngFor="let i of [].constructor(pathsNumber); let idx = index" class="path{{ idx + 1 }}"></span>
3
+ </span>
4
+ <span *ngIf="type !== 'duotone'" class="ki-{{ type }} ki-{{ name }}{{ class ? ' ' + class : '' }}"></span>
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { KeeniconComponent } from './keenicon.component';
4
+
5
+ describe('KeeniconComponent', () => {
6
+ let component: KeeniconComponent;
7
+ let fixture: ComponentFixture<KeeniconComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ declarations: [ KeeniconComponent ]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(KeeniconComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,30 @@
1
+ import {Component, HostBinding, Input, OnInit} from '@angular/core';
2
+ import icons from './icons.json';
3
+
4
+ @Component({
5
+ selector: 'lib-keenicon',
6
+ templateUrl: './keenicon.component.html',
7
+ styleUrls: ['./keenicon.component.scss']
8
+ })
9
+ export class KeeniconComponent implements OnInit {
10
+ @Input() name: string;
11
+ @Input() class: string;
12
+ @Input() type: string = 'duotone';
13
+
14
+ pathsNumber: number = 0;
15
+
16
+ constructor() {
17
+ }
18
+
19
+ ngOnInit() {
20
+ if (this.type === 'duotone') {
21
+ // @ts-ignore
22
+ this.pathsNumber = icons[this.type + '-paths'][this.name] ?? 0;
23
+ }
24
+ }
25
+
26
+ @HostBinding('style.display')
27
+ get styleDisplay() {
28
+ return 'contents';
29
+ }
30
+ }
@@ -0,0 +1,70 @@
1
+ <!--begin::App-->
2
+ <div class="d-flex flex-column flex-root app-root" id="kt_app_root">
3
+ <!--begin::Page-->
4
+ <div class="app-page flex-column flex-column-fluid" id="kt_app_page">
5
+ <ng-container *ngIf="appHeaderDisplay">
6
+ <!--begin::Header-->
7
+ <lib-header [ngClass]="appHeaderDefaultClass" id="kt_app_header" class="app-header" data-kt-sticky="true" data-kt-sticky-activate="{default: true, lg: true}" data-kt-sticky-name="app-header-minimize" data-kt-sticky-offset="{default: '200px', lg: '0'}" data-kt-sticky-animation="false">
8
+ </lib-header>
9
+ <!--end::Header-->
10
+ </ng-container>
11
+
12
+ <!--begin::Wrapper-->
13
+ <div class="app-wrapper flex-column flex-row-fluid" id="kt_app_wrapper">
14
+
15
+ <ng-container *ngIf="appSidebarDisplay">
16
+ <!--begin::sidebar-->
17
+ <lib-sidebar #ktSidebar id="kt_app_sidebar" class="app-sidebar flex-column" [ngClass]="appSidebarDefaultClass">
18
+ </lib-sidebar>
19
+ <!--end::sidebar-->
20
+ </ng-container>
21
+
22
+ <ng-container *ngIf="appSidebarPanelDisplay">
23
+ <!-- TODO: app sidebar panel -->
24
+ </ng-container>
25
+ <!--begin::Main-->
26
+ <div class="app-main flex-column flex-row-fluid" id="kt_app_main">
27
+ <!--begin::Content wrapper-->
28
+ <div class="d-flex flex-column flex-column-fluid">
29
+ <ng-container *ngIf="appToolbarDisplay">
30
+ <lib-toolbar class="app-toolbar" [ngClass]="appToolbarCSSClass" id="kt_app_toolbar"
31
+ [appToolbarLayout]="appToolbarLayout"></lib-toolbar>
32
+ </ng-container>
33
+ <lib-content id=" kt_app_content" class="app-content" [ngClass]="contentCSSClasses"
34
+ [contentContainerCSSClass]="contentContainerCSSClass" [appContentContiner]="appContentContiner"
35
+ [appContentContainerClass]="appContentContainerClass">
36
+ </lib-content>
37
+ </div>
38
+ <!--end::Content wrapper-->
39
+ <ng-container *ngIf="appFooterDisplay">
40
+ <lib-footer class="app-footer" [ngClass]="appFooterCSSClass" id="kt_app_footer"
41
+ [appFooterContainerCSSClass]="appFooterContainerCSSClass"></lib-footer>
42
+ </ng-container>
43
+ </div>
44
+ <!--end:::Main-->
45
+ </div>
46
+ <!--end::Wrapper-->
47
+
48
+ </div>
49
+ <!--end::Page-->
50
+ </div>
51
+ <!--end::App-->
52
+
53
+ <lib-scripts-init></lib-scripts-init>
54
+ <ng-container>
55
+ <lib-scroll-top id="kt_scrolltop" class="scrolltop" data-kt-scrolltop="true"></lib-scroll-top>
56
+ </ng-container>
57
+ <!-- begin:: Drawers -->
58
+ <!-- <lib-activity-drawer></lib-activity-drawer> -->
59
+ <!-- <lib-messenger-drawer></lib-messenger-drawer> -->
60
+ <!-- end:: Drawers -->
61
+
62
+ <!-- end:: Engage -->
63
+ <!-- <lib-engages></lib-engages> -->
64
+ <!-- end:: Engage -->
65
+
66
+ <!-- begin:: Modals -->
67
+ <!-- <lib-main-modal></lib-main-modal> -->
68
+ <!-- <lib-invite-users-modal></lib-invite-users-modal> -->
69
+ <!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->
70
+ <!-- end:: Modals -->
@@ -0,0 +1,15 @@
1
+ :host {
2
+ height: 100%;
3
+ margin: 0;
4
+
5
+ .flex-root {
6
+ height: 100%;
7
+ }
8
+ }
9
+
10
+ .page-loaded {
11
+ app-layout {
12
+ opacity: 1;
13
+ transition: opacity 1s ease-in-out;
14
+ }
15
+ }
@@ -0,0 +1,399 @@
1
+ import {
2
+ Component,
3
+ OnInit,
4
+ ViewChild,
5
+ ElementRef,
6
+ OnDestroy,
7
+ } from '@angular/core';
8
+ import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
9
+ import { Subscription } from 'rxjs';
10
+ import { ILayout, LayoutType } from 'tango-app-metronics';
11
+ import { LayoutInitService, LayoutService } from 'tango-app-metronics';
12
+
13
+ @Component({
14
+ selector: 'lib-layout',
15
+ templateUrl: './layout.component.html',
16
+ styleUrls: ['./layout.component.scss'],
17
+ })
18
+ export class LayoutComponent implements OnInit, OnDestroy {
19
+ private unsubscribe: Subscription[] = [];
20
+
21
+ // Public variables
22
+ // page
23
+ pageContainerCSSClasses: string;
24
+ // header
25
+ appHeaderDefaultClass: string = '';
26
+ appHeaderDisplay: boolean;
27
+ appHeaderDefaultStickyEnabled: boolean;
28
+ appHeaderDefaultStickyAttributes: { [attrName: string]: string } = {};
29
+ appHeaderDefaultMinimizeEnabled: boolean;
30
+ appHeaderDefaultMinimizeAttributes: { [attrName: string]: string } = {};
31
+ // toolbar
32
+ appToolbarDisplay: boolean;
33
+ appToolbarLayout: 'classic' | 'accounting' | 'extended' | 'reports' | 'saas';
34
+ appToolbarCSSClass: string = '';
35
+ appToolbarSwapEnabled: boolean;
36
+ appToolbarSwapAttributes: { [attrName: string]: string } = {};
37
+ appToolbarStickyEnabled: boolean;
38
+ appToolbarStickyAttributes: { [attrName: string]: string } = {};
39
+ appToolbarMinimizeEnabled: boolean;
40
+ appToolbarMinimizeAttributes: { [attrName: string]: string } = {};
41
+
42
+ // content
43
+ appContentContiner?: 'fixed' | 'fluid';
44
+ appContentContainerClass: string;
45
+ contentCSSClasses: string;
46
+ contentContainerCSSClass: string;
47
+ // sidebar
48
+ appSidebarDefaultClass: string;
49
+ appSidebarDefaultDrawerEnabled: boolean;
50
+ appSidebarDefaultDrawerAttributes: { [attrName: string]: string } = {};
51
+ appSidebarDisplay: boolean;
52
+ appSidebarDefaultStickyEnabled: boolean;
53
+ appSidebarDefaultStickyAttributes: { [attrName: string]: string } = {};
54
+ @ViewChild('ktSidebar', { static: true }) ktSidebar: ElementRef;
55
+ /// sidebar panel
56
+ appSidebarPanelDisplay: boolean;
57
+ // footer
58
+ appFooterDisplay: boolean;
59
+ appFooterCSSClass: string = '';
60
+ appFooterContainer: string = '';
61
+ appFooterContainerCSSClass: string = '';
62
+ appFooterFixedDesktop: boolean;
63
+ appFooterFixedMobile: boolean;
64
+
65
+ // scrolltop
66
+ scrolltopDisplay: boolean;
67
+
68
+ @ViewChild('ktAside', { static: true }) ktAside: ElementRef;
69
+ @ViewChild('ktHeaderMobile', { static: true }) ktHeaderMobile: ElementRef;
70
+ @ViewChild('ktHeader', { static: true }) ktHeader: ElementRef;
71
+
72
+ constructor(
73
+ private initService: LayoutInitService,
74
+ private layout: LayoutService,
75
+ private router: Router,
76
+ private activatedRoute: ActivatedRoute
77
+ ) {
78
+ // define layout type and load layout
79
+ this.router.events.subscribe((event) => {
80
+ if (event instanceof NavigationEnd) {
81
+ const currentLayoutType = this.layout.currentLayoutTypeSubject.value;
82
+
83
+ const nextLayoutType: LayoutType =
84
+ this.activatedRoute?.firstChild?.snapshot.data.layout ||
85
+ this.layout.getBaseLayoutTypeFromLocalStorage();
86
+
87
+ if (currentLayoutType !== nextLayoutType || !currentLayoutType) {
88
+ this.layout.currentLayoutTypeSubject.next(nextLayoutType);
89
+ this.initService.reInitProps(nextLayoutType);
90
+ }
91
+ }
92
+ });
93
+ }
94
+
95
+ ngOnInit() {
96
+ const subscr = this.layout.layoutConfigSubject
97
+ .asObservable()
98
+ .subscribe((config) => {
99
+ this.updateProps(config);
100
+ });
101
+ this.unsubscribe.push(subscr);
102
+ }
103
+
104
+ updateProps(config: ILayout) {
105
+ this.scrolltopDisplay = this.layout.getProp(
106
+ 'scrolltop.display',
107
+ config
108
+ ) as boolean;
109
+ this.pageContainerCSSClasses =
110
+ this.layout.getStringCSSClasses('pageContainer');
111
+ this.appHeaderDefaultClass = this.layout.getProp(
112
+ 'app.header.default.class',
113
+ config
114
+ ) as string;
115
+ this.appHeaderDisplay = this.layout.getProp(
116
+ 'app.header.display',
117
+ config
118
+ ) as boolean;
119
+ this.appFooterDisplay = this.layout.getProp(
120
+ 'app.footer.display',
121
+ config
122
+ ) as boolean;
123
+ this.appSidebarDisplay = this.layout.getProp(
124
+ 'app.sidebar.display',
125
+ config
126
+ ) as boolean;
127
+ this.appSidebarPanelDisplay = this.layout.getProp(
128
+ 'app.sidebar-panel.display',
129
+ config
130
+ ) as boolean;
131
+ this.appToolbarDisplay = this.layout.getProp(
132
+ 'app.toolbar.display',
133
+ config
134
+ ) as boolean;
135
+ this.contentCSSClasses = this.layout.getStringCSSClasses('content');
136
+ this.contentContainerCSSClass =
137
+ this.layout.getStringCSSClasses('contentContainer');
138
+ this.appContentContiner = this.layout.getProp(
139
+ 'app.content.container',
140
+ config
141
+ ) as 'fixed' | 'fluid';
142
+ this.appContentContainerClass = this.layout.getProp(
143
+ 'app.content.containerClass',
144
+ config
145
+ ) as string;
146
+ // footer
147
+ if (this.appFooterDisplay) {
148
+ this.updateFooter(config);
149
+ }
150
+ // sidebar
151
+ if (this.appSidebarDisplay) {
152
+ this.updateSidebar(config);
153
+ }
154
+ // header
155
+ if (this.appHeaderDisplay) {
156
+ this.updateHeader(config);
157
+ }
158
+ // toolbar
159
+ if (this.appToolbarDisplay) {
160
+ this.updateToolbar(config);
161
+ }
162
+ }
163
+
164
+ updateSidebar(config: ILayout) {
165
+ this.appSidebarDefaultClass = this.layout.getProp(
166
+ 'app.sidebar.default.class',
167
+ config
168
+ ) as string;
169
+
170
+ this.appSidebarDefaultDrawerEnabled = this.layout.getProp(
171
+ 'app.sidebar.default.drawer.enabled',
172
+ config
173
+ ) as boolean;
174
+ if (this.appSidebarDefaultDrawerEnabled) {
175
+ this.appSidebarDefaultDrawerAttributes = this.layout.getProp(
176
+ 'app.sidebar.default.drawer.attributes',
177
+ config
178
+ ) as { [attrName: string]: string };
179
+ }
180
+
181
+ this.appSidebarDefaultStickyEnabled = this.layout.getProp(
182
+ 'app.sidebar.default.sticky.enabled',
183
+ config
184
+ ) as boolean;
185
+ if (this.appSidebarDefaultStickyEnabled) {
186
+ this.appSidebarDefaultStickyAttributes = this.layout.getProp(
187
+ 'app.sidebar.default.sticky.attributes',
188
+ config
189
+ ) as { [attrName: string]: string };
190
+ }
191
+
192
+ setTimeout(() => {
193
+ const sidebarElement = document.getElementById('kt_app_sidebar');
194
+ // sidebar
195
+ if (this.appSidebarDisplay && sidebarElement) {
196
+ const sidebarAttributes = sidebarElement
197
+ .getAttributeNames()
198
+ .filter((t) => t.indexOf('data-') > -1);
199
+ sidebarAttributes.forEach((attr) =>
200
+ sidebarElement.removeAttribute(attr)
201
+ );
202
+
203
+ if (this.appSidebarDefaultDrawerEnabled) {
204
+ for (const key in this.appSidebarDefaultDrawerAttributes) {
205
+ if (this.appSidebarDefaultDrawerAttributes.hasOwnProperty(key)) {
206
+ sidebarElement.setAttribute(
207
+ key,
208
+ this.appSidebarDefaultDrawerAttributes[key]
209
+ );
210
+ }
211
+ }
212
+ }
213
+
214
+ if (this.appSidebarDefaultStickyEnabled) {
215
+ for (const key in this.appSidebarDefaultStickyAttributes) {
216
+ if (this.appSidebarDefaultStickyAttributes.hasOwnProperty(key)) {
217
+ sidebarElement.setAttribute(
218
+ key,
219
+ this.appSidebarDefaultStickyAttributes[key]
220
+ );
221
+ }
222
+ }
223
+ }
224
+ }
225
+ }, 0);
226
+ }
227
+
228
+ updateHeader(config: ILayout) {
229
+ this.appHeaderDefaultStickyEnabled = this.layout.getProp(
230
+ 'app.header.default.sticky.enabled',
231
+ config
232
+ ) as boolean;
233
+ if (this.appHeaderDefaultStickyEnabled) {
234
+ this.appHeaderDefaultStickyAttributes = this.layout.getProp(
235
+ 'app.header.default.sticky.attributes',
236
+ config
237
+ ) as { [attrName: string]: string };
238
+ }
239
+
240
+ this.appHeaderDefaultMinimizeEnabled = this.layout.getProp(
241
+ 'app.header.default.minimize.enabled',
242
+ config
243
+ ) as boolean;
244
+ if (this.appHeaderDefaultMinimizeEnabled) {
245
+ this.appHeaderDefaultMinimizeAttributes = this.layout.getProp(
246
+ 'app.header.default.minimize.attributes',
247
+ config
248
+ ) as { [attrName: string]: string };
249
+ }
250
+
251
+ setTimeout(() => {
252
+ const headerElement = document.getElementById('kt_app_header');
253
+ // header
254
+ if (this.appHeaderDisplay && headerElement) {
255
+ const headerAttributes = headerElement
256
+ .getAttributeNames()
257
+ .filter((t) => t.indexOf('data-') > -1);
258
+ headerAttributes.forEach((attr) => headerElement.removeAttribute(attr));
259
+
260
+ if (this.appHeaderDefaultStickyEnabled) {
261
+ for (const key in this.appHeaderDefaultStickyAttributes) {
262
+ if (this.appHeaderDefaultStickyAttributes.hasOwnProperty(key)) {
263
+ headerElement.setAttribute(
264
+ key,
265
+ this.appHeaderDefaultStickyAttributes[key]
266
+ );
267
+ }
268
+ }
269
+ }
270
+
271
+ if (this.appHeaderDefaultMinimizeEnabled) {
272
+ for (const key in this.appHeaderDefaultMinimizeAttributes) {
273
+ if (this.appHeaderDefaultMinimizeAttributes.hasOwnProperty(key)) {
274
+ headerElement.setAttribute(
275
+ key,
276
+ this.appHeaderDefaultMinimizeAttributes[key]
277
+ );
278
+ }
279
+ }
280
+ }
281
+ }
282
+ }, 0);
283
+ }
284
+
285
+ updateFooter(config: ILayout) {
286
+ this.appFooterCSSClass = this.layout.getProp('app.footer.class', config) as string;
287
+ this.appFooterContainer = this.layout.getProp('app.footer.container', config) as string;
288
+ this.appFooterContainerCSSClass = this.layout.getProp('app.footer.containerClass', config) as string;
289
+ if (this.appFooterContainer === 'fixed') {
290
+ this.appFooterContainerCSSClass += ' container-xxl';
291
+ } else {
292
+ if (this.appFooterContainer === 'fluid') {
293
+ this.appFooterContainerCSSClass += ' container-fluid';
294
+ }
295
+ }
296
+
297
+ this.appFooterFixedDesktop = this.layout.getProp('app.footer.fixed.desktop', config) as boolean;
298
+ if (this.appFooterFixedDesktop) {
299
+ document.body.setAttribute('data-kt-app-footer-fixed', 'true')
300
+ }
301
+
302
+ this.appFooterFixedMobile = this.layout.getProp('app.footer.fixed.mobile') as boolean;
303
+ if (this.appFooterFixedMobile) {
304
+ document.body.setAttribute('data-kt-app-footer-fixed-mobile', 'true')
305
+ }
306
+ }
307
+
308
+ updateToolbar(config: ILayout) {
309
+ this.appToolbarLayout = this.layout.getProp(
310
+ 'app.toolbar.layout',
311
+ config
312
+ ) as 'classic' | 'accounting' | 'extended' | 'reports' | 'saas';
313
+ this.appToolbarSwapEnabled = this.layout.getProp(
314
+ 'app.toolbar.swap.enabled',
315
+ config
316
+ ) as boolean;
317
+ if (this.appToolbarSwapEnabled) {
318
+ this.appToolbarSwapAttributes = this.layout.getProp(
319
+ 'app.toolbar.swap.attributes',
320
+ config
321
+ ) as { [attrName: string]: string };
322
+ }
323
+
324
+ this.appToolbarStickyEnabled = this.layout.getProp(
325
+ 'app.toolbar.sticky.enabled',
326
+ config
327
+ ) as boolean;
328
+ if (this.appToolbarStickyEnabled) {
329
+ this.appToolbarStickyAttributes = this.layout.getProp(
330
+ 'app.toolbar.sticky.attributes',
331
+ config
332
+ ) as { [attrName: string]: string };
333
+ }
334
+
335
+ this.appToolbarCSSClass =
336
+ (this.layout.getProp('app.toolbar.class', config) as string) || '';
337
+ this.appToolbarMinimizeEnabled = this.layout.getProp(
338
+ 'app.toolbar.minimize.enabled',
339
+ config
340
+ ) as boolean;
341
+ if (this.appToolbarMinimizeEnabled) {
342
+ this.appToolbarMinimizeAttributes = this.layout.getProp(
343
+ 'app.toolbar.minimize.attributes',
344
+ config
345
+ ) as { [attrName: string]: string };
346
+ this.appToolbarCSSClass += ' app-toolbar-minimize';
347
+ }
348
+
349
+ setTimeout(() => {
350
+ const toolbarElement = document.getElementById('kt_app_toolbar');
351
+ // toolbar
352
+ if (this.appToolbarDisplay && toolbarElement) {
353
+ const toolbarAttributes = toolbarElement
354
+ .getAttributeNames()
355
+ .filter((t) => t.indexOf('data-') > -1);
356
+ toolbarAttributes.forEach((attr) =>
357
+ toolbarElement.removeAttribute(attr)
358
+ );
359
+
360
+ if (this.appToolbarSwapEnabled) {
361
+ for (const key in this.appToolbarSwapAttributes) {
362
+ if (this.appToolbarSwapAttributes.hasOwnProperty(key)) {
363
+ toolbarElement.setAttribute(
364
+ key,
365
+ this.appToolbarSwapAttributes[key]
366
+ );
367
+ }
368
+ }
369
+ }
370
+
371
+ if (this.appToolbarStickyEnabled) {
372
+ for (const key in this.appToolbarStickyAttributes) {
373
+ if (this.appToolbarStickyAttributes.hasOwnProperty(key)) {
374
+ toolbarElement.setAttribute(
375
+ key,
376
+ this.appToolbarStickyAttributes[key]
377
+ );
378
+ }
379
+ }
380
+ }
381
+
382
+ if (this.appToolbarMinimizeEnabled) {
383
+ for (const key in this.appToolbarMinimizeAttributes) {
384
+ if (this.appToolbarMinimizeAttributes.hasOwnProperty(key)) {
385
+ toolbarElement.setAttribute(
386
+ key,
387
+ this.appToolbarMinimizeAttributes[key]
388
+ );
389
+ }
390
+ }
391
+ }
392
+ }
393
+ }, 0);
394
+ }
395
+
396
+ ngOnDestroy() {
397
+ this.unsubscribe.forEach((sb) => sb.unsubscribe());
398
+ }
399
+ }