@sd-angular/core 0.0.902 → 0.0.906
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/sd-angular-core-grid-material.umd.js +200 -27
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-tab-router.umd.js +11 -8
- package/bundles/sd-angular-core-tab-router.umd.js.map +1 -1
- package/bundles/sd-angular-core-tab-router.umd.min.js +1 -1
- package/bundles/sd-angular-core-tab-router.umd.min.js.map +1 -1
- package/esm2015/grid-material/sd-angular-core-grid-material.js +20 -18
- package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +2 -2
- package/esm2015/grid-material/src/lib/components/dynamic-column/dynamic-column.component.js +98 -0
- package/esm2015/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.js +23 -5
- package/esm2015/grid-material/src/lib/grid-material.component.js +1 -2
- package/esm2015/grid-material/src/lib/grid-material.module.js +8 -2
- package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-config.model.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-badge.pipe.js +4 -1
- package/esm2015/grid-material/src/lib/pipes/column-transform.pipe.js +5 -1
- package/esm2015/grid-material/src/lib/services/generated-column/generated-column.model.js +2 -0
- package/esm2015/grid-material/src/lib/services/generated-column/generated-column.service.js +57 -0
- package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +21 -18
- package/fesm2015/sd-angular-core-grid-material.js +176 -8
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-tab-router.js +11 -8
- package/fesm2015/sd-angular-core-tab-router.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.d.ts +19 -17
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/grid-material/src/lib/components/dynamic-column/dynamic-column.component.d.ts +32 -0
- package/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.d.ts +9 -0
- package/grid-material/src/lib/models/grid-column.model.d.ts +2 -0
- package/grid-material/src/lib/models/grid-config.model.d.ts +11 -0
- package/grid-material/src/lib/services/generated-column/generated-column.model.d.ts +8 -0
- package/grid-material/src/lib/services/generated-column/generated-column.service.d.ts +10 -0
- package/package.json +1 -1
- package/{sd-angular-core-0.0.902.tgz → sd-angular-core-0.0.906.tgz} +0 -0
- package/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.d.ts +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/tab-router/src/lib/events/tab-router.event.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-router.service.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-decorator.service.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-item/tab-router-item.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.ts","../../../../projects/sd-core/tab-router/src/lib/pipes/tab-info.pipe.ts","../../../../projects/sd-core/tab-router/src/lib/tab-router.module.ts","../../../../projects/sd-core/tab-router/src/lib/decorators/tab.decorator.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","length","push","__read","o","m","r","i","ar","error","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","SdTabBase","tab","_tab","defineProperty","SdTabActivated","_super","SdTabDeactivated","SdTabRouterService","notifyService","_this","events","BehaviorSubject","actions","builders","_currentTab","_componentBuilders","addBuilder","builder","some","component","setCurrentTab","pushEvent","Event","setOptions","close","type","_a","key","Injectable","args","providedIn","SdNotifyService","SdTabDecoratorService","tabRouterService","undefined","event","preventDefault","stopPropagation","Component","selector","template","Input","SdTabRouterNavComponent","mode","checkUI","nameWidth","tabRouterNav","nativeElement","clientWidth","tabs","onResize","ViewChild","HostListener","SdTabRouterOutletComponent","router","activatedRoute","cd","injector","compiler","tabDecoratorService","sdNotifyService","_rootRoute","_subscription","Subscription","_firstLoad","_closeTab","filter","_h","isActive","lastTab","navigateByUrl","url","state","switchTab","markForCheck","_activeRoute","fullUrl","route","queryParams","assign","params","hash","split","existedIndex","forEach","index","currentNavigation","getCurrentNavigation","_b","extras","existedTab","_d","_c","parent","routeConfig","loadChildren","module","_j","compileModuleAsync","factory","injector_1","activatedRoute_1","_getActivatedRoute","SdOutletInjector","name","_f","_e","_g","notify","warning","splice","_getActivatedRouteSnapshot","activatedRouteSnapshot","firstChild","add","pipe","RoutesRecognized","NavigationEnd","subscribe","snapshot","routerState","root","urlAfterRedirects","ngOnDestroy","unsubscribe","Router","ActivatedRoute","ChangeDetectorRef","Injector","Compiler","token","notFoundValue","SdTabInfoPipe","transform","map","find","tabInfo","initialName","tooltip","color","Pipe","NgModule","declarations","SdTabRouterItemComponent","imports","RouterModule","CommonModule","MatIconModule","MatTooltipModule","exports","providers","service","take"],"mappings":"+tCAgBIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,MAC3EN,EAAGC;;;;;;;;;;;;;;6FAGZS,EAAUV,EAAGC,GAEzB,SAASU,IAAOC,KAAKC,YAAcb,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOY,OAAOb,IAAMU,EAAGJ,UAAYN,EAAEM,UAAW,IAAII,YAyCnEI,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,oBAItDO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOpC,OAAU0B,EACvJ,SAASM,EAAKK,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIhB,EAAG,MAAM,IAAIiB,UAAU,mCAC3B,KAAOb,OACH,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARc,EAAG,GAASf,EAAU,OAAIe,EAAG,GAAKf,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAE5B,KAAK2B,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAE5B,KAAK2B,EAAGe,EAAG,KAAKrB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGc,EAAK,CAAS,EAARA,EAAG,GAAQd,EAAEb,QACzB2B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGd,EAAIc,EAAI,MACxB,KAAK,EAAc,OAAXZ,EAAEC,QAAgB,CAAEhB,MAAO2B,EAAG,GAAIrB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIe,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKZ,EAAEI,IAAIU,MAAOd,EAAEG,KAAKW,MAAO,SACxC,QACI,KAAMhB,EAAIE,EAAEG,MAAML,EAAIA,EAAEiB,OAAS,GAAKjB,EAAEA,EAAEiB,OAAS,KAAkB,IAAVH,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEZ,EAAI,EAAG,SACjG,GAAc,IAAVY,EAAG,MAAcd,GAAMc,EAAG,GAAKd,EAAE,IAAMc,EAAG,GAAKd,EAAE,IAAM,CAAEE,EAAEC,MAAQW,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYZ,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIc,EAAI,MAC7D,GAAId,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIY,KAAKJ,GAAK,MACvDd,EAAE,IAAIE,EAAEI,IAAIU,MAChBd,EAAEG,KAAKW,MAAO,SAEtBF,EAAKjB,EAAKzB,KAAKO,EAASuB,GAC1B,MAAOZ,GAAKwB,EAAK,CAAC,EAAGxB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARc,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE3B,MAAO2B,EAAG,GAAKA,EAAG,QAAK,EAAQrB,MAAM,GArB9BL,CAAK,CAACwB,EAAGC,MAyBhChD,OAAOY,gBAwBpB0C,EAAOC,EAAGR,GACtB,IAAIS,EAAsB,mBAAXX,QAAyBU,EAAEV,OAAOC,UACjD,IAAKU,EAAG,OAAOD,EACf,IAAmBE,EAAYhC,EAA3BiC,EAAIF,EAAEjD,KAAKgD,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANZ,GAAgBA,KAAM,MAAQU,EAAIC,EAAElC,QAAQI,MAAM+B,EAAGN,KAAKI,EAAEnC,OAExE,MAAOsC,GAASnC,EAAI,CAAEmC,MAAOA,WAEzB,IACQH,IAAMA,EAAE7B,OAAS4B,EAAIE,EAAU,SAAIF,EAAEjD,KAAKmD,WAExC,GAAIjC,EAAG,MAAMA,EAAEmC,OAE7B,OAAOD,EAoDX,MAAyB3D,OAAOY,gBAkBhBiD,EAAuBC,EAAUC,GAC7C,IAAKA,EAAWC,IAAIF,GAChB,MAAM,IAAIZ,UAAU,kDAExB,OAAOa,EAAWE,IAAIH,YAGVI,EAAuBJ,EAAUC,EAAYzC,GACzD,IAAKyC,EAAWC,IAAIF,GAChB,MAAM,IAAIZ,UAAU,kDAGxB,OADAa,EAAWI,IAAIL,EAAUxC,GAClBA,mBC5NT,SAAA8C,EAAYC,GAFZC,EAAAH,IAAAzD,UAAA,GAGEwD,EAAAxD,KAAI4D,EAAQD,UAGdrE,OAAAuE,eAAIH,EAAA/D,UAAA,MAAG,KAAP,WACE,OAAAwD,EAAAnD,KAAA4D,6EAIJ,SAAAE,0DAAoChE,EAAAgE,EAAAC,MAAAL,iBAEpC,SAAAM,0DAAsClE,EAAAkE,EAAAD,MAAAL,gBCEpC,SAAAO,EAAoBC,GAApB,IAAAC,EAAAnE,KAAoBA,KAAAkE,cAAAA,EANpBlE,KAAAoE,OAAS,IAAIC,EAAAA,gBAA4B,IAAIX,EAAU,OACvD1D,KAAAsE,QAAU,IAAID,EAAAA,gBAAoC,MAClDrE,KAAAuE,SAAW,IAAIF,EAAAA,gBAAyC,IAExDG,EAAAf,IAAAzD,KAA4B,MAC5ByE,EAAAhB,IAAAzD,KAA8C,IAI9CA,KAAA0E,WAAa,SAACC,GACPxB,EAAAgB,EAAAM,GAAwBG,MAAK,SAAA7D,GAAK,OAAAA,EAAE8D,YAAcF,EAAQE,eAC7D1B,EAAAgB,EAAAM,GAAwB9B,KAAKgC,GAC7BR,EAAKI,SAASzD,KAAIqC,EAAAgB,EAAAM,MAiDtBzE,KAAA8E,cAAgB,SAACnB,GACfH,EAAAW,EAAIK,EAAeb,IAGrB3D,KAAA+E,UAAY,SAACpB,EAAYqB,GACvBb,EAAKC,OAAOtD,KAAK,IAAIkE,EAAMrB,KAG7B3D,KAAAiF,WAAa,aAEbjF,KAAAkF,MAAQ,SAACvB,GACHA,EACFQ,EAAKG,QAAQxD,KAAK,CAChBqE,KAAM,QACNxB,IAAGA,IAEAR,EAAAgB,EAAAK,IACLL,EAAKG,QAAQxD,KAAK,CAChBqE,KAAM,QACNxB,IAAGR,EAAAgB,EAAAK,aAhETlF,OAAAuE,eAAII,EAAAtE,UAAA,aAAU,KAAd,WACE,OAAAwD,EAAAnD,KAAAwE,oCAGFlF,OAAAuE,eAAII,EAAAtE,UAAA,MAAG,KAAP,iBACE,OAAO,QAAAyF,EAAAjC,EAAAnD,KAAAwE,UAAA,IAAAY,OAAA,EAAAA,EAAkBC,MAAO,qNAzBnCC,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,oDAJLC,EAAAA,yBCGP,SAAAC,EAAYC,GACVD,EAAsBC,iBAAiB7E,KAAK6E,IAFvCD,EAAAC,iBAAmB,IAAItB,EAAAA,qBAAoCuB,iIAJnEN,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,oDAFLvB,WCWP,SAAoB0B,GAApB,IAAAxB,EAAAnE,KAAoBA,KAAA2F,iBAAAA,EAEpB3F,KAAAkF,MAAQ,SAACW,GACPA,EAAMC,iBACND,EAAME,kBACN5B,EAAKwB,iBAAiBT,MAAMf,EAAKR,2BAbpCqC,EAAAA,UAAST,KAAA,CAAC,CACTU,SAAU,qBACVC,SAAA,ikEAJOjC,kCAQNkC,EAAAA,wCCUD,SAAAC,IAAA,IAAAjC,EAAAnE,KAFAA,KAAAqG,KAA8B,UAS9BrG,KAAAsG,QAAU,WACR,IACMC,GADQpC,EAAKqC,aAAaC,cAAcC,YACA,GAAnBvC,EAAKwC,KAAKjE,QAAeyB,EAAKwC,KAAKjE,OAE5DyB,EAAKkC,KADHE,GAAa,GACH,UAEA,kBAVhBH,EAAAzG,UAAAiH,SAAA,SAASf,GACP7F,KAAKsG,oCAfRN,EAAAA,UAAST,KAAA,CAAC,CACTU,SAAU,oBACVC,SAAA,myBAICW,EAAAA,UAAStB,KAAA,CAAC,8BAEVY,EAAAA,wBAKAW,EAAAA,aAAYvB,KAAA,CAAC,gBAAiB,CAAC,+BC4BhC,SAAAwB,EACUC,EACAC,EACAC,EACAC,EACAC,EACAC,EACA1B,EACA2B,GARV,IAAAnD,EAAAnE,KACUA,KAAAgH,OAAAA,EACAhH,KAAAiH,eAAAA,EACAjH,KAAAkH,GAAAA,EACAlH,KAAAmH,SAAAA,EACAnH,KAAAoH,SAAAA,EACApH,KAAAqH,oBAAAA,EACArH,KAAA2F,iBAAAA,EACA3F,KAAAsH,gBAAAA,EAbVtH,KAAA2G,KAAgB,GAEhBY,EAAA9D,IAAAzD,UAAA,GACAwH,EAAA/D,IAAAzD,KAAgB,IAAIyH,EAAAA,cACpBC,EAAAjE,IAAAzD,MAAa,GAuCb2H,EAAAlE,IAAAzD,MAAY,SAAC2D,SAEX,GADAQ,EAAKwC,KAAOxC,EAAKwC,KAAKiB,QAAO,SAACC,GAAY,OAAPA,EAAAxC,MAAe1B,EAAI0B,OAClD1B,EAAImE,SAAU,CAChB,IAAMC,EAAU5D,EAAKwC,KAAKxC,EAAKwC,KAAKjE,OAAS,GACzCqF,EACF5D,EAAK6C,OAAOgB,cAAcD,EAAQE,IAAK,CACrCC,MAAO,CACLC,WAAW,KAIfhE,EAAK6C,OAAOgB,cAAc,IAAK,CAC7BE,MAAO,CACLC,WAAW,UAKA,QAAjB/C,EAAAjB,EAAKqC,oBAAY,IAAApB,GAAAA,EAAEkB,UACnBnC,EAAK+C,GAAGkB,kBAIZC,EAAA5E,IAAAzD,MAAe,SAAOsI,EAAiBC,GAAoC,OAAApI,EAAAgE,OAAA,OAAA,GAAA,kHACzE,OAAKoE,MAAAA,OAAK,EAALA,EAAO1D,YAGNA,EAAY0D,EAAM1D,UAClB2D,EAAWlJ,OAAAmJ,OAAA,GACXF,EAAMC,aAAe,IAErBE,EAAMpJ,OAAAmJ,OAAA,GACNF,EAAMG,QAAU,IAEhBrD,EAAMsD,EAAK,CAAEV,IAAKK,IAClBT,EAAAjF,EAAQ0F,EAAQM,MAAM,KAAI,GAAzBX,EAAGJ,EAAA,GAENgB,GAAgB,EACpB7I,KAAK2G,KAAKmC,SAAQ,SAACnF,EAAYoF,GACzBpF,EAAI0B,MAAQA,GACd1B,EAAImE,UAAW,EACfe,EAAeE,IAEXpF,EAAImE,UACN3D,EAAKwB,iBAAiBZ,UAAUpB,EAAKK,GAEvCL,EAAImE,UAAW,MAIbkB,EAAoBhJ,KAAKgH,OAAOiC,uBAClCJ,GAAgB,IAAqC,QAApCK,EAA6B,QAA7B9D,EAAI4D,MAAAA,OAAiB,EAAjBA,EAAmBG,cAAM,IAAA/D,OAAA,EAAAA,EAAE8C,aAAK,IAAAgB,OAAA,EAAAA,EAAEf,YACnDiB,EAAapJ,KAAK2G,KAAKkC,GAC7B7I,KAAK2F,iBAAiBb,cAAcsE,GACpCpJ,KAAK2F,iBAAiBZ,UAAUqE,EAAYtF,UAH1C,CAAA,EAAA,IA1BF,CAAA,gBA+BwD,mBAAnB,QAAjCuF,EAAoB,QAApBC,EAAOf,MAAAA,OAAK,EAALA,EAAOgB,cAAM,IAAAD,OAAA,EAAAA,EAAEE,mBAAW,IAAAH,OAAA,EAAAA,EAAEI,cAAnC,CAAA,EAAA,GACa,CAAA,EAAMlB,EAAMgB,OAAOC,YAAYC,uBAC9B,OADVC,EAASC,EAAA9H,OACC,CAAA,EAAM7B,KAAKoH,SAASwC,mBAAmBF,WAAjDG,EAAUF,EAAA9H,OACViI,EAAWD,EAAQ3J,OAAOF,KAAKmH,UAC/B4C,EAAiB5G,EAAAnD,KAAAgK,GAAAnK,KAAAG,KAAImD,EAAAnD,KAAAuH,GAEzB1C,GAGIlB,EAAM,CACV0B,IAAGA,EACHR,UAASA,EACTsC,SAAU,IAAI8C,EAAiBF,EAAgBD,GAC/ChC,UAAU,EACVoC,KAAMjC,EACNA,IAAGA,EACHS,OAAMA,EACNF,YAAWA,GAGbxI,KAAK2F,iBAAiBb,cAAcnB,GAChCkF,GAAgB,KAAsC,QAAjCsB,EAA0B,QAA1BC,EAACpB,MAAAA,OAAiB,EAAjBA,EAAmBG,cAAM,IAAAiB,OAAA,EAAAA,EAAElC,aAAK,IAAAiC,OAAA,EAAAA,EAAEhC,WAC1DnI,KAAK2G,KAAKkC,GAAgBlF,EAE1B3D,KAAK2G,KAAKhE,KAAKgB,oBAIF,QAAjB0G,EAAArK,KAAKwG,oBAAY,IAAA6D,GAAAA,EAAE/D,UACftG,KAAK2G,KAAKjE,OAAS,IACrB1C,KAAKsH,gBAAgBgD,OAAOC,QAC1B,2FAGAvK,KAAK2G,KAAKjE,OAAS,IACrB1C,KAAK2G,KAAK6D,OAAO,EAAGxK,KAAK2G,KAAKjE,OAAS,4BAG3C1C,KAAKkH,GAAGkB,6BAGVqC,EAAAhH,IAAAzD,MAA6B,SAC3B0K,GAEA,IAAKA,EACH,OAAO,KAET,KAAOA,EAAuBC,YAC5BD,EAAyBA,EAAuBC,WAElD,OAAOD,KAGTV,EAAAvG,IAAAzD,MAAqB,SACnBiH,EACApC,GAEA,IAAKoC,EACH,OAAO,KAGT,GAAIA,EAAepC,WAAaoC,EAAepC,YAAcA,EAC3D,OAAOoC,EAET,KAAOA,EAAe0D,YAEpB,IADA1D,EAAiBA,EAAe0D,YACb9F,WAAaoC,EAAepC,YAAcA,EAC3D,OAAOoC,EAGX,OAAO,QA1JP9D,EAAAnD,KAAAwH,GAAmBoD,IAAI5D,EAAO5C,OAAOyG,KAAKjD,EAAAA,QAAO,SAAA/B,GAAS,OAAAA,aAAiBiF,EAAAA,kBAAoBjF,aAAiBkF,EAAAA,kBAC7GC,WAAU,SAAOnF,GAAuC,OAAA1F,EAAAgE,OAAA,OAAA,GAAA,0EACnDhB,EAAAnD,KAAA0H,IAAmB7B,aAAiBkF,EAAAA,eACtCvH,EAAAxD,KAAI0H,GAAc,GACZa,EAAQpF,EAAAnD,KAAAyK,GAAA5K,KAAAG,KAAgCA,KAAKiH,eAAegE,UAClEzH,EAAAxD,KAAIuH,EAAcvH,KAAKgH,OAAOkE,YAAYC,MAC1C,CAAA,EAAMhI,EAAAnD,KAAAqI,GAAAxI,KAAAG,KAAkB6F,EAAMuF,mBAAqBvF,EAAMoC,IAAKM,KAJ5D,CAAA,EAAA,UAKF,OADAV,EAAAhG,OACA,CAAA,iBAEEsB,EAAAnD,KAAA0H,IAAoB7B,aAAiBiF,EAAAA,kBACjCvC,EAAQpF,EAAAnD,KAAAyK,GAAA5K,KAAAG,KAAgC6F,EAAMqC,MAAMiD,MAC1D3H,EAAAxD,KAAIuH,EAAcvH,KAAKgH,OAAOkE,YAAYC,MAC1C,CAAA,EAAMhI,EAAAnD,KAAAqI,GAAAxI,KAAAG,KAAkB6F,EAAMuF,mBAAqBvF,EAAMoC,IAAKM,KAH5D,CAAA,EAAA,UAGFV,EAAAhG,6CAKNsB,EAAAnD,KAAAwH,GAAmBoD,IAAIjF,EAAiBrB,QAAQ0G,WAAU,SAACnF,GACrDA,GAAwB,UAAfA,EAAMV,MACjBhC,EAAAgB,EAAAwD,GAAA9H,KAAAsE,EAAe0B,EAAMlC,gBAK3BoD,EAAApH,UAAA0L,YAAA,WACElI,EAAAnD,KAAAwH,GAAmB8D,0IAhDtBtF,EAAAA,UAAST,KAAA,CAAC,CACTU,SAAU,uBACVC,SAAA,03BApBAqF,EAAAA,cAPAC,EAAAA,sBAXAC,EAAAA,yBAGAC,EAAAA,gBAFAC,EAAAA,gBA+BOjG,SAHAzB,SARAwB,EAAAA,yDAsBNoB,EAAAA,UAAStB,KAAA,CAAC,mBA8Kb,IAAA0E,EAAA,WACE,SAAAA,EACU1B,EAEAgB,GAFAvJ,KAAAuI,MAAAA,EAEAvI,KAAAuJ,OAAAA,SAGVU,EAAAtK,UAAA4D,IAAA,SAAIqI,EAAYC,GACd,OAAID,IAAUJ,EAAAA,gBAAkBxL,KAAKuI,MAC5BvI,KAAKuI,MAOPvI,KAAKuJ,OAAOhG,IAAIqI,EAAOC,MAhBlC,gBClNE,SAAAC,EAAoBnG,GAAA3F,KAAA2F,iBAAAA,SACpBmG,EAAAnM,UAAAoM,UAAA,SAAUpI,GACR,OAAO3D,KAAK2F,iBAAiBpB,SAASsG,KAAKmB,EAAAA,KAAI,SAAAzH,GAC7C,IAAMI,EAAUJ,EAAS0H,MAAK,SAAAlL,GAAK,OAAAA,EAAE8D,YAAclB,EAAIkB,aACvD,GAAIF,EAAS,CACH,IAAAsD,EAA6BtE,EAAGsE,IAA3BS,EAAwB/E,EAAG+E,OAAnBF,EAAgB7E,EAAG6E,YAWxC,OAVA7E,EAAIuI,QAAU,CACZhC,KAAgC,mBAAlBvF,EAAY,KACxBA,EAAQuF,KAAK,CAAEjC,IAAGA,EAAES,OAAMA,EAAEF,YAAWA,IAAM7D,EAAQuF,KACvDiC,YAA8C,mBAAzBxH,EAAmB,YACtCA,EAAQwH,YAAY,CAAElE,IAAGA,EAAES,OAAMA,EAAEF,YAAWA,IAAM7D,EAAQwH,YAC9DC,QAAsC,mBAArBzH,EAAe,QAC9BA,EAAQyH,QAAQ,CAAEnE,IAAGA,EAAES,OAAMA,EAAEF,YAAWA,IAAM7D,EAAQyH,QAC1DC,MAAkC,mBAAnB1H,EAAa,MAC1BA,EAAQ0H,MAAM,CAAEpE,IAAGA,EAAES,OAAMA,EAAEF,YAAWA,IAAM7D,EAAQ0H,OAEnD1I,EAAIuI,QAMb,OAJAvI,EAAIuI,QAAU,CACZhC,KAAMvG,EAAIsE,IACVkE,YAAa,MAERxI,EAAIuI,sCA1BhBI,EAAAA,KAAI/G,KAAA,CAAC,CACJ2E,KAAM,yDAFCjG,WCsBT,iCAfCsI,EAAAA,SAAQhH,KAAA,CAAC,CACRiH,aAAc,CACZC,EACArG,EACAW,EACA+E,GAEFY,QAAS,CAACC,EAAAA,aAAcC,EAAAA,aAAcC,EAAAA,cAAeC,EAAAA,kBACrDC,QAAS,CACPN,EACArG,EACAW,GAEFiG,UAAW,kECXqBrI,GAChC,OAAO,SAAC1E,GACNyF,EAAsBC,iBAAiBkF,KACrCjD,EAAAA,QAAO,SAAAqF,GAAW,OAAAA,MAAAA,KAClBC,EAAAA,KAAK,IAAIlC,WAAU,SAAAiC,GACjBA,EAAQvI,WAAWC","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { SdTab } from '../models/tab-router.model';\r\n\r\nexport class SdTabBase {\r\n #tab: SdTab | null;\r\n\r\n constructor(tab: SdTab | null) {\r\n this.#tab = tab;\r\n }\r\n\r\n get tab(): SdTab | null {\r\n return this.#tab;\r\n }\r\n}\r\n\r\nexport class SdTabActivated extends SdTabBase {}\r\n\r\nexport class SdTabDeactivated extends SdTabBase {}\r\n\r\nexport declare type SdTabEvent = SdTabActivated | SdTabDeactivated;\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTab } from '../models/tab-router.model';\r\nimport { SdTabAction } from '../actions/tab-router.action';\r\nimport { SdTabEvent, SdTabBase } from '../events/tab-router.event';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTabComponentBuilder } from '../decorators/tab.decorator';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdTabRouterService {\r\n events = new BehaviorSubject<SdTabEvent>(new SdTabBase(null));\r\n actions = new BehaviorSubject<SdTabAction | null>(null);\r\n builders = new BehaviorSubject<SdTabComponentBuilder[]>([]);\r\n\r\n #currentTab: SdTab | null = null;\r\n #componentBuilders: SdTabComponentBuilder[] = [];\r\n constructor(private notifyService: SdNotifyService) {\r\n }\r\n\r\n addBuilder = (builder: SdTabComponentBuilder) => {\r\n if (!this.#componentBuilders.some(e => e.component === builder.component)) {\r\n this.#componentBuilders.push(builder);\r\n this.builders.next(this.#componentBuilders);\r\n }\r\n }\r\n\r\n get currentTab() {\r\n return this.#currentTab;\r\n }\r\n\r\n get key() {\r\n return this.#currentTab?.key || null;\r\n }\r\n\r\n // select = (tabOrKey: string | SdTab): void => {\r\n // const tab = this.#tabs.find(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key === tabOrKey;\r\n // }\r\n // return e.key === tabOrKey?.key;\r\n // });\r\n // if (tab) {\r\n // this.#currentTab = tab;\r\n // }\r\n // }\r\n\r\n // add = (tab: SdTab): void => {\r\n // if (!tab.key) {\r\n // this.notifyService.notify.warning('Tab key is required');\r\n // }\r\n // if (!tab.component) {\r\n // this.notifyService.notify.warning('Tab component is required');\r\n // }\r\n // const existedTab = this.#tabs.find(e => e.key === tab.key);\r\n // if (!existedTab) {\r\n // this.#tabs.push(tab);\r\n // this.select(tab);\r\n // } else {\r\n // this.select(existedTab);\r\n // }\r\n // }\r\n\r\n // remove = (tabOrKey: string | SdTab): void => {\r\n // this.#tabs = this.#tabs.filter(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key !== tabOrKey;\r\n // }\r\n // return e.key !== tabOrKey?.key;\r\n // });\r\n // }\r\n\r\n setCurrentTab = (tab: SdTab): void => {\r\n this.#currentTab = tab;\r\n }\r\n\r\n pushEvent = (tab: SdTab, Event: Type<SdTabEvent>) => {\r\n this.events.next(new Event(tab));\r\n }\r\n\r\n setOptions = () => { };\r\n\r\n close = (tab?: SdTab) => {\r\n if (tab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab,\r\n });\r\n } else if (this.#currentTab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab: this.#currentTab,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTabRouterService } from './tab-router.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTabDecoratorService {\r\n static tabRouterService = new BehaviorSubject<SdTabRouterService>(undefined);\r\n constructor(tabRouterService: SdTabRouterService) {\r\n SdTabDecoratorService.tabRouterService.next(tabRouterService);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\nimport { SdTabRouterService } from '../../services/tab-router.service';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-item',\r\n templateUrl: './tab-router-item.component.html',\r\n styleUrls: ['./tab-router-item.component.scss'],\r\n})\r\nexport class SdTabRouterItemComponent {\r\n @Input() tab: SdTab;\r\n\r\n constructor(private tabRouterService: SdTabRouterService) {}\r\n\r\n close = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.tabRouterService.close(this.tab);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-nav',\r\n templateUrl: './tab-router-nav.component.html',\r\n styleUrls: ['./tab-router-nav.component.scss'],\r\n})\r\nexport class SdTabRouterNavComponent {\r\n @ViewChild('tabRouterNav') tabRouterNav: ElementRef;\r\n\r\n @Input() tabs: SdTab[];\r\n mode: 'default' | 'compact' = 'default';\r\n\r\n constructor() {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event): void {\r\n this.checkUI();\r\n }\r\n\r\n checkUI = () => {\r\n const width = this.tabRouterNav.nativeElement.clientWidth;\r\n const nameWidth = (width - this.tabs.length * 64) / this.tabs.length;\r\n if (nameWidth <= 20) {\r\n this.mode = 'compact';\r\n } else {\r\n this.mode = 'default';\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Compiler,\r\n Component,\r\n Injector,\r\n NgModuleRef,\r\n OnDestroy,\r\n OnInit,\r\n Type,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n ChildrenOutletContexts,\r\n // ChildrenOutletContexts,\r\n Event,\r\n NavigationEnd,\r\n PRIMARY_OUTLET,\r\n Router,\r\n RoutesRecognized,\r\n} from '@angular/router';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport {\r\n SdTabActivated,\r\n SdTabDeactivated,\r\n} from '../../events/tab-router.event';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\nimport { SdTabAction } from '../../actions/tab-router.action';\r\nimport { SdTabRouterService } from '../../services/tab-router.service';\r\nimport { SdTabRouterNavComponent } from '../tab-router-nav/tab-router-nav.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdTabDecoratorService } from '../../services/tab-decorator.service';\r\nimport { filter } from 'rxjs/operators';\r\nimport * as hash from 'object-hash';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-outlet',\r\n templateUrl: './tab-router-outlet.component.html',\r\n styleUrls: ['./tab-router-outlet.component.scss'],\r\n // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTabRouterOutletComponent implements OnDestroy {\r\n @ViewChild('tabRouterNav') tabRouterNav: SdTabRouterNavComponent;\r\n tabs: SdTab[] = [];\r\n\r\n #rootRoute: ActivatedRoute;\r\n #subscription = new Subscription();\r\n #firstLoad = true;\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private cd: ChangeDetectorRef,\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n private tabDecoratorService: SdTabDecoratorService,\r\n private tabRouterService: SdTabRouterService,\r\n private sdNotifyService: SdNotifyService\r\n ) {\r\n this.#subscription.add(router.events.pipe(filter(event => event instanceof RoutesRecognized || event instanceof NavigationEnd))\r\n .subscribe(async (event: RoutesRecognized | NavigationEnd) => {\r\n if (this.#firstLoad && event instanceof NavigationEnd) {\r\n this.#firstLoad = false;\r\n const route = this.#getActivatedRouteSnapshot(this.activatedRoute.snapshot);\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(event.urlAfterRedirects || event.url, route);\r\n return;\r\n }\r\n if (!this.#firstLoad && event instanceof RoutesRecognized) {\r\n const route = this.#getActivatedRouteSnapshot(event.state.root);\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(event.urlAfterRedirects || event.url, route);\r\n }\r\n })\r\n );\r\n\r\n this.#subscription.add(tabRouterService.actions.subscribe((event: SdTabAction | null) => {\r\n if (event && event.type === 'close') {\r\n this.#closeTab(event.tab);\r\n }\r\n }));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #closeTab = (tab: SdTab) => {\r\n this.tabs = this.tabs.filter(({ key }) => key !== tab.key);\r\n if (tab.isActive) {\r\n const lastTab = this.tabs[this.tabs.length - 1];\r\n if (lastTab) {\r\n this.router.navigateByUrl(lastTab.url, {\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n } else {\r\n this.router.navigateByUrl('/', {\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n }\r\n } else {\r\n this.tabRouterNav?.checkUI();\r\n this.cd.markForCheck();\r\n }\r\n }\r\n\r\n #activeRoute = async (fullUrl: string, route: ActivatedRouteSnapshot | null) => {\r\n if (!route?.component) {\r\n return;\r\n }\r\n const component = route.component as Type<any>;\r\n const queryParams = {\r\n ...(route.queryParams || {}),\r\n };\r\n const params = {\r\n ...(route.params || {}),\r\n };\r\n const key = hash({ url: fullUrl });\r\n const [url] = fullUrl.split('?');\r\n\r\n let existedIndex = -1;\r\n this.tabs.forEach((tab: SdTab, index: number) => {\r\n if (tab.key === key) {\r\n tab.isActive = true;\r\n existedIndex = index;\r\n } else {\r\n if (tab.isActive) {\r\n this.tabRouterService.pushEvent(tab, SdTabDeactivated);\r\n }\r\n tab.isActive = false;\r\n }\r\n });\r\n\r\n const currentNavigation = this.router.getCurrentNavigation();\r\n if (existedIndex >= 0 && currentNavigation?.extras?.state?.switchTab) {\r\n const existedTab = this.tabs[existedIndex];\r\n this.tabRouterService.setCurrentTab(existedTab);\r\n this.tabRouterService.pushEvent(existedTab, SdTabActivated);\r\n } else {\r\n if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\r\n const module = await route.parent.routeConfig.loadChildren();\r\n const factory = await this.compiler.compileModuleAsync(module);\r\n const injector = factory.create(this.injector);\r\n const activatedRoute = this.#getActivatedRoute(\r\n this.#rootRoute,\r\n component\r\n );\r\n\r\n const tab = {\r\n key,\r\n component,\r\n injector: new SdOutletInjector(activatedRoute, injector),\r\n isActive: true,\r\n name: url,\r\n url,\r\n params,\r\n queryParams,\r\n };\r\n\r\n this.tabRouterService.setCurrentTab(tab);\r\n if (existedIndex >= 0 && !currentNavigation?.extras?.state?.switchTab) {\r\n this.tabs[existedIndex] = tab;\r\n } else {\r\n this.tabs.push(tab);\r\n }\r\n }\r\n\r\n this.tabRouterNav?.checkUI();\r\n if (this.tabs.length > 10) {\r\n this.sdNotifyService.notify.warning(\r\n 'Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.'\r\n );\r\n }\r\n if (this.tabs.length > 12) {\r\n this.tabs.splice(0, this.tabs.length - 10);\r\n }\r\n }\r\n this.cd.markForCheck();\r\n }\r\n\r\n #getActivatedRouteSnapshot = (\r\n activatedRouteSnapshot: ActivatedRouteSnapshot\r\n ): ActivatedRouteSnapshot | null => {\r\n if (!activatedRouteSnapshot) {\r\n return null;\r\n }\r\n while (activatedRouteSnapshot.firstChild) {\r\n activatedRouteSnapshot = activatedRouteSnapshot.firstChild;\r\n }\r\n return activatedRouteSnapshot;\r\n }\r\n\r\n #getActivatedRoute = (\r\n activatedRoute: ActivatedRoute,\r\n component: any\r\n ): ActivatedRoute | null => {\r\n if (!activatedRoute) {\r\n return null;\r\n }\r\n\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n while (activatedRoute.firstChild) {\r\n activatedRoute = activatedRoute.firstChild;\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nclass SdOutletInjector implements Injector {\r\n constructor(\r\n private route: ActivatedRoute | null,\r\n // private childContexts: ChildrenOutletContexts,\r\n private parent: any\r\n ) { }\r\n\r\n get(token: any, notFoundValue?: any): any {\r\n if (token === ActivatedRoute && this.route) {\r\n return this.route;\r\n }\r\n\r\n // if (token === ChildrenOutletContexts) {\r\n // return this.childContexts;\r\n // }\r\n\r\n return this.parent.get(token, notFoundValue);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\r\nimport { SdTabRouterService } from '../services/tab-router.service';\r\n@Pipe({\r\n name: 'sdTabInfo'\r\n})\r\nexport class SdTabInfoPipe implements PipeTransform {\r\n constructor(private tabRouterService: SdTabRouterService) { }\r\n transform(tab: SdTab): Observable<SdTabInfo> {\r\n return this.tabRouterService.builders.pipe(map(builders => {\r\n const builder = builders.find(e => e.component === tab.component);\r\n if (builder) {\r\n const { url, params, queryParams } = tab;\r\n tab.tabInfo = {\r\n name: typeof (builder.name) === 'function' ?\r\n builder.name({ url, params, queryParams }) : builder.name,\r\n initialName: typeof (builder.initialName) === 'function' ?\r\n builder.initialName({ url, params, queryParams }) : builder.initialName,\r\n tooltip: typeof (builder.tooltip) === 'function' ?\r\n builder.tooltip({ url, params, queryParams }) : builder.tooltip,\r\n color: typeof (builder.color) === 'function' ?\r\n builder.color({ url, params, queryParams }) : builder.color\r\n };\r\n return tab.tabInfo;\r\n }\r\n tab.tabInfo = {\r\n name: tab.url,\r\n initialName: null,\r\n };\r\n return tab.tabInfo;\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { SdTabRouterItemComponent } from './components/tab-router-item/tab-router-item.component';\r\nimport { SdTabRouterNavComponent } from './components/tab-router-nav/tab-router-nav.component';\r\nimport { SdTabRouterOutletComponent } from './components/tab-router-outlet/tab-router-outlet.component';\r\nimport { SdTabInfoPipe } from './pipes/tab-info.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n SdTabInfoPipe,\r\n ],\r\n imports: [RouterModule, CommonModule, MatIconModule, MatTooltipModule],\r\n exports: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n ],\r\n providers: [],\r\n})\r\nexport class SdTabRouterModule {}\r\n","import { Type } from '@angular/core';\r\nimport { filter, take, takeWhile } from 'rxjs/operators';\r\nimport { SdTabDecoratorService } from '../services/tab-decorator.service';\r\n\r\nexport declare interface SdTabComponentBuilder {\r\n component: Type<any>;\r\n name: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n initialName: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n tooltip?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n color?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n isDetail?: boolean;\r\n}\r\n\r\nexport function SdTabComponent<T>(builder: SdTabComponentBuilder) {\r\n return (constructor: T) => {\r\n SdTabDecoratorService.tabRouterService.pipe(\r\n filter(service => service !== undefined && service !== null),\r\n take(1)).subscribe(service => {\r\n service.addBuilder(builder);\r\n });\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/tab-router/src/lib/events/tab-router.event.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-router.service.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-decorator.service.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-item/tab-router-item.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.ts","../../../../projects/sd-core/tab-router/src/lib/pipes/tab-info.pipe.ts","../../../../projects/sd-core/tab-router/src/lib/tab-router.module.ts","../../../../projects/sd-core/tab-router/src/lib/decorators/tab.decorator.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","length","push","__read","o","m","r","i","ar","error","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","SdTabBase","tab","_tab","defineProperty","SdTabActivated","_super","SdTabDeactivated","SdTabRouterService","notifyService","_this","events","BehaviorSubject","actions","builders","_currentTab","_componentBuilders","addBuilder","builder","some","component","setCurrentTab","pushEvent","Event","setOptions","close","type","_a","key","Injectable","args","providedIn","SdNotifyService","SdTabDecoratorService","tabRouterService","undefined","event","preventDefault","stopPropagation","Component","selector","template","Input","SdTabRouterNavComponent","mode","checkUI","nameWidth","tabRouterNav","nativeElement","clientWidth","tabs","onResize","ViewChild","HostListener","SdTabRouterOutletComponent","router","activatedRoute","cd","injector","compiler","tabDecoratorService","sdNotifyService","_rootRoute","_subscription","Subscription","_firstLoad","_closeTab","filter","_h","isActive","lastTab","navigateByUrl","url","queryParams","state","switchTab","markForCheck","_activeRoute","fullUrl","route","assign","params","hash","split","existedIndex","forEach","index","currentNavigation","getCurrentNavigation","_b","extras","existedTab","_d","_c","parent","routeConfig","loadChildren","module","_j","compileModuleAsync","factory","injector_1","activatedRoute_1","_getActivatedRoute","SdOutletInjector","name","_f","_e","_g","notify","warning","splice","_getActivatedRouteSnapshot","activatedRouteSnapshot","firstChild","add","pipe","RoutesRecognized","NavigationEnd","subscribe","snapshot","routerState","root","urlAfterRedirects","ngOnDestroy","unsubscribe","Router","ActivatedRoute","ChangeDetectorRef","Injector","Compiler","token","notFoundValue","SdTabInfoPipe","transform","map","find","tabInfo","initialName","tooltip","color","Pipe","NgModule","declarations","SdTabRouterItemComponent","imports","RouterModule","CommonModule","MatIconModule","MatTooltipModule","exports","providers","service","take"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { SdTab } from '../models/tab-router.model';\r\n\r\nexport class SdTabBase {\r\n #tab: SdTab | null;\r\n\r\n constructor(tab: SdTab | null) {\r\n this.#tab = tab;\r\n }\r\n\r\n get tab(): SdTab | null {\r\n return this.#tab;\r\n }\r\n}\r\n\r\nexport class SdTabActivated extends SdTabBase {}\r\n\r\nexport class SdTabDeactivated extends SdTabBase {}\r\n\r\nexport declare type SdTabEvent = SdTabActivated | SdTabDeactivated;\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTab } from '../models/tab-router.model';\r\nimport { SdTabAction } from '../actions/tab-router.action';\r\nimport { SdTabEvent, SdTabBase } from '../events/tab-router.event';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTabComponentBuilder } from '../decorators/tab.decorator';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdTabRouterService {\r\n events = new BehaviorSubject<SdTabEvent>(new SdTabBase(null));\r\n actions = new BehaviorSubject<SdTabAction | null>(null);\r\n builders = new BehaviorSubject<SdTabComponentBuilder[]>([]);\r\n\r\n #currentTab: SdTab | null = null;\r\n #componentBuilders: SdTabComponentBuilder[] = [];\r\n constructor(private notifyService: SdNotifyService) {\r\n }\r\n\r\n addBuilder = (builder: SdTabComponentBuilder) => {\r\n if (!this.#componentBuilders.some(e => e.component === builder.component)) {\r\n this.#componentBuilders.push(builder);\r\n this.builders.next(this.#componentBuilders);\r\n }\r\n }\r\n\r\n get currentTab() {\r\n return this.#currentTab;\r\n }\r\n\r\n get key() {\r\n return this.#currentTab?.key || null;\r\n }\r\n\r\n // select = (tabOrKey: string | SdTab): void => {\r\n // const tab = this.#tabs.find(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key === tabOrKey;\r\n // }\r\n // return e.key === tabOrKey?.key;\r\n // });\r\n // if (tab) {\r\n // this.#currentTab = tab;\r\n // }\r\n // }\r\n\r\n // add = (tab: SdTab): void => {\r\n // if (!tab.key) {\r\n // this.notifyService.notify.warning('Tab key is required');\r\n // }\r\n // if (!tab.component) {\r\n // this.notifyService.notify.warning('Tab component is required');\r\n // }\r\n // const existedTab = this.#tabs.find(e => e.key === tab.key);\r\n // if (!existedTab) {\r\n // this.#tabs.push(tab);\r\n // this.select(tab);\r\n // } else {\r\n // this.select(existedTab);\r\n // }\r\n // }\r\n\r\n // remove = (tabOrKey: string | SdTab): void => {\r\n // this.#tabs = this.#tabs.filter(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key !== tabOrKey;\r\n // }\r\n // return e.key !== tabOrKey?.key;\r\n // });\r\n // }\r\n\r\n setCurrentTab = (tab: SdTab): void => {\r\n this.#currentTab = tab;\r\n }\r\n\r\n pushEvent = (tab: SdTab, Event: Type<SdTabEvent>) => {\r\n this.events.next(new Event(tab));\r\n }\r\n\r\n setOptions = () => { };\r\n\r\n close = (tab?: SdTab) => {\r\n if (tab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab,\r\n });\r\n } else if (this.#currentTab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab: this.#currentTab,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTabRouterService } from './tab-router.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTabDecoratorService {\r\n static tabRouterService = new BehaviorSubject<SdTabRouterService>(undefined);\r\n constructor(tabRouterService: SdTabRouterService) {\r\n SdTabDecoratorService.tabRouterService.next(tabRouterService);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\nimport { SdTabRouterService } from '../../services/tab-router.service';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-item',\r\n templateUrl: './tab-router-item.component.html',\r\n styleUrls: ['./tab-router-item.component.scss'],\r\n})\r\nexport class SdTabRouterItemComponent {\r\n @Input() tab: SdTab;\r\n\r\n constructor(private tabRouterService: SdTabRouterService) {}\r\n\r\n close = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.tabRouterService.close(this.tab);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-nav',\r\n templateUrl: './tab-router-nav.component.html',\r\n styleUrls: ['./tab-router-nav.component.scss'],\r\n})\r\nexport class SdTabRouterNavComponent {\r\n @ViewChild('tabRouterNav') tabRouterNav: ElementRef;\r\n\r\n @Input() tabs: SdTab[];\r\n mode: 'default' | 'compact' = 'default';\r\n\r\n constructor() {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event): void {\r\n this.checkUI();\r\n }\r\n\r\n checkUI = () => {\r\n const width = this.tabRouterNav.nativeElement.clientWidth;\r\n const nameWidth = (width - this.tabs.length * 64) / this.tabs.length;\r\n if (nameWidth <= 20) {\r\n this.mode = 'compact';\r\n } else {\r\n this.mode = 'default';\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Compiler,\r\n Component,\r\n Injector,\r\n NgModuleRef,\r\n OnDestroy,\r\n OnInit,\r\n Type,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n ChildrenOutletContexts,\r\n // ChildrenOutletContexts,\r\n Event,\r\n NavigationEnd,\r\n PRIMARY_OUTLET,\r\n Router,\r\n RoutesRecognized,\r\n} from \"@angular/router\";\r\nimport { SdNotifyService } from \"@sd-angular/core/notify\";\r\nimport {\r\n SdTabActivated,\r\n SdTabDeactivated,\r\n} from \"../../events/tab-router.event\";\r\n\r\nimport { SdTab } from \"../../models/tab-router.model\";\r\nimport { SdTabAction } from \"../../actions/tab-router.action\";\r\nimport { SdTabRouterService } from \"../../services/tab-router.service\";\r\nimport { SdTabRouterNavComponent } from \"../tab-router-nav/tab-router-nav.component\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { SdTabDecoratorService } from \"../../services/tab-decorator.service\";\r\nimport { filter } from \"rxjs/operators\";\r\nimport * as hash from \"object-hash\";\r\n\r\n@Component({\r\n selector: \"sd-tab-router-outlet\",\r\n templateUrl: \"./tab-router-outlet.component.html\",\r\n styleUrls: [\"./tab-router-outlet.component.scss\"],\r\n // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTabRouterOutletComponent implements OnDestroy {\r\n @ViewChild(\"tabRouterNav\") tabRouterNav: SdTabRouterNavComponent;\r\n tabs: SdTab[] = [];\r\n\r\n #rootRoute: ActivatedRoute;\r\n #subscription = new Subscription();\r\n #firstLoad = true;\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private cd: ChangeDetectorRef,\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n private tabDecoratorService: SdTabDecoratorService,\r\n private tabRouterService: SdTabRouterService,\r\n private sdNotifyService: SdNotifyService\r\n ) {\r\n this.#subscription.add(\r\n router.events\r\n .pipe(\r\n filter(\r\n (event) =>\r\n event instanceof RoutesRecognized ||\r\n event instanceof NavigationEnd\r\n )\r\n )\r\n .subscribe(async (event: RoutesRecognized | NavigationEnd) => {\r\n if (this.#firstLoad && event instanceof NavigationEnd) {\r\n this.#firstLoad = false;\r\n const route = this.#getActivatedRouteSnapshot(\r\n this.activatedRoute.snapshot\r\n );\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n return;\r\n }\r\n if (!this.#firstLoad && event instanceof RoutesRecognized) {\r\n const route = this.#getActivatedRouteSnapshot(event.state.root);\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n }\r\n })\r\n );\r\n\r\n this.#subscription.add(\r\n tabRouterService.actions.subscribe((event: SdTabAction | null) => {\r\n if (event && event.type === \"close\") {\r\n this.#closeTab(event.tab);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #closeTab = (tab: SdTab) => {\r\n this.tabs = this.tabs.filter(({ key }) => key !== tab.key);\r\n if (tab.isActive) {\r\n const lastTab = this.tabs[this.tabs.length - 1];\r\n if (lastTab) {\r\n this.router.navigateByUrl(lastTab.url, {\r\n queryParams: lastTab.queryParams || {},\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n } else {\r\n this.router.navigateByUrl(\"/\", {\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n }\r\n } else {\r\n this.tabRouterNav?.checkUI();\r\n this.cd.markForCheck();\r\n }\r\n };\r\n\r\n #activeRoute = async (\r\n fullUrl: string,\r\n route: ActivatedRouteSnapshot | null\r\n ) => {\r\n if (!route?.component) {\r\n return;\r\n }\r\n const component = route.component as Type<any>;\r\n const queryParams = {\r\n ...(route.queryParams || {}),\r\n };\r\n const params = {\r\n ...(route.params || {}),\r\n };\r\n const key = hash({ url: fullUrl });\r\n const [url] = fullUrl.split(\"?\");\r\n\r\n let existedIndex = -1;\r\n this.tabs.forEach((tab: SdTab, index: number) => {\r\n if (tab.key === key) {\r\n tab.isActive = true;\r\n existedIndex = index;\r\n } else {\r\n if (tab.isActive) {\r\n this.tabRouterService.pushEvent(tab, SdTabDeactivated);\r\n }\r\n tab.isActive = false;\r\n }\r\n });\r\n\r\n const currentNavigation = this.router.getCurrentNavigation();\r\n if (existedIndex >= 0 && currentNavigation?.extras?.state?.switchTab) {\r\n const existedTab = this.tabs[existedIndex];\r\n this.tabRouterService.setCurrentTab(existedTab);\r\n this.tabRouterService.pushEvent(existedTab, SdTabActivated);\r\n } else {\r\n if (typeof route?.parent?.routeConfig?.loadChildren === \"function\") {\r\n const module = await route.parent.routeConfig.loadChildren();\r\n const factory = await this.compiler.compileModuleAsync(module);\r\n const injector = factory.create(this.injector);\r\n const activatedRoute = this.#getActivatedRoute(\r\n this.#rootRoute,\r\n component\r\n );\r\n\r\n const tab = {\r\n key,\r\n component,\r\n injector: new SdOutletInjector(activatedRoute, injector),\r\n isActive: true,\r\n name: url,\r\n url,\r\n params,\r\n queryParams,\r\n };\r\n\r\n this.tabRouterService.setCurrentTab(tab);\r\n if (existedIndex >= 0 && !currentNavigation?.extras?.state?.switchTab) {\r\n this.tabs[existedIndex] = tab;\r\n } else {\r\n this.tabs.push(tab);\r\n }\r\n }\r\n\r\n this.tabRouterNav?.checkUI();\r\n if (this.tabs.length > 10) {\r\n this.sdNotifyService.notify.warning(\r\n \"Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.\"\r\n );\r\n }\r\n if (this.tabs.length > 12) {\r\n this.tabs.splice(0, this.tabs.length - 10);\r\n }\r\n }\r\n this.cd.markForCheck();\r\n };\r\n\r\n #getActivatedRouteSnapshot = (\r\n activatedRouteSnapshot: ActivatedRouteSnapshot\r\n ): ActivatedRouteSnapshot | null => {\r\n if (!activatedRouteSnapshot) {\r\n return null;\r\n }\r\n while (activatedRouteSnapshot.firstChild) {\r\n activatedRouteSnapshot = activatedRouteSnapshot.firstChild;\r\n }\r\n return activatedRouteSnapshot;\r\n };\r\n\r\n #getActivatedRoute = (\r\n activatedRoute: ActivatedRoute,\r\n component: any\r\n ): ActivatedRoute | null => {\r\n if (!activatedRoute) {\r\n return null;\r\n }\r\n\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n while (activatedRoute.firstChild) {\r\n activatedRoute = activatedRoute.firstChild;\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nclass SdOutletInjector implements Injector {\r\n constructor(\r\n private route: ActivatedRoute | null,\r\n // private childContexts: ChildrenOutletContexts,\r\n private parent: any\r\n ) {}\r\n\r\n get(token: any, notFoundValue?: any): any {\r\n if (token === ActivatedRoute && this.route) {\r\n return this.route;\r\n }\r\n\r\n // if (token === ChildrenOutletContexts) {\r\n // return this.childContexts;\r\n // }\r\n\r\n return this.parent.get(token, notFoundValue);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\r\nimport { SdTabRouterService } from '../services/tab-router.service';\r\n@Pipe({\r\n name: 'sdTabInfo'\r\n})\r\nexport class SdTabInfoPipe implements PipeTransform {\r\n constructor(private tabRouterService: SdTabRouterService) { }\r\n transform(tab: SdTab): Observable<SdTabInfo> {\r\n return this.tabRouterService.builders.pipe(map(builders => {\r\n const builder = builders.find(e => e.component === tab.component);\r\n if (builder) {\r\n const { url, params, queryParams } = tab;\r\n tab.tabInfo = {\r\n name: typeof (builder.name) === 'function' ?\r\n builder.name({ url, params, queryParams }) : builder.name,\r\n initialName: typeof (builder.initialName) === 'function' ?\r\n builder.initialName({ url, params, queryParams }) : builder.initialName,\r\n tooltip: typeof (builder.tooltip) === 'function' ?\r\n builder.tooltip({ url, params, queryParams }) : builder.tooltip,\r\n color: typeof (builder.color) === 'function' ?\r\n builder.color({ url, params, queryParams }) : builder.color\r\n };\r\n return tab.tabInfo;\r\n }\r\n tab.tabInfo = {\r\n name: tab.url,\r\n initialName: null,\r\n };\r\n return tab.tabInfo;\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { SdTabRouterItemComponent } from './components/tab-router-item/tab-router-item.component';\r\nimport { SdTabRouterNavComponent } from './components/tab-router-nav/tab-router-nav.component';\r\nimport { SdTabRouterOutletComponent } from './components/tab-router-outlet/tab-router-outlet.component';\r\nimport { SdTabInfoPipe } from './pipes/tab-info.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n SdTabInfoPipe,\r\n ],\r\n imports: [RouterModule, CommonModule, MatIconModule, MatTooltipModule],\r\n exports: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n ],\r\n providers: [],\r\n})\r\nexport class SdTabRouterModule {}\r\n","import { Type } from '@angular/core';\r\nimport { filter, take, takeWhile } from 'rxjs/operators';\r\nimport { SdTabDecoratorService } from '../services/tab-decorator.service';\r\n\r\nexport declare interface SdTabComponentBuilder {\r\n component: Type<any>;\r\n name: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n initialName: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n tooltip?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n color?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n isDetail?: boolean;\r\n}\r\n\r\nexport function SdTabComponent<T>(builder: SdTabComponentBuilder) {\r\n return (constructor: T) => {\r\n SdTabDecoratorService.tabRouterService.pipe(\r\n filter(service => service !== undefined && service !== null),\r\n take(1)).subscribe(service => {\r\n service.addBuilder(builder);\r\n });\r\n };\r\n}\r\n"]}
|
|
@@ -5,6 +5,7 @@ export * from './index';
|
|
|
5
5
|
export { SdDesktopCellChildrenView as ɵk } from './src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component';
|
|
6
6
|
export { SdDesktopCellView as ɵj } from './src/lib/components/desktop-cell-view/desktop-cell-view.component';
|
|
7
7
|
export { SdDesktopCommand as ɵl } from './src/lib/components/desktop-command/desktop-command.component';
|
|
8
|
+
export { SdDynamicColumn as ɵo } from './src/lib/components/dynamic-column/dynamic-column.component';
|
|
8
9
|
export { SdGridFilter as ɵb } from './src/lib/components/grid-filter/grid-filter.component';
|
|
9
10
|
export { SdPopupExport as ɵe } from './src/lib/components/popup-export/popup-export.component';
|
|
10
11
|
export { SdPopupFilter as ɵc } from './src/lib/components/popup-filter/popup-filter.component';
|
|
@@ -12,24 +13,25 @@ export { SdPopupGridConfiguration as ɵn } from './src/lib/components/popup-grid
|
|
|
12
13
|
export { SdLetDirective as ɵm } from './src/lib/directives/sd-let.directive';
|
|
13
14
|
export { MatPaginatorIntlCro as ɵa } from './src/lib/grid-material.module';
|
|
14
15
|
export { GRID_MATERIAL_CONFIG as ɵg } from './src/lib/models/grid-configuration.model';
|
|
15
|
-
export { SdColumnBadgePipe as
|
|
16
|
-
export { SdColumnChildrenFilterPipe as
|
|
17
|
-
export { SdColumnHtmlTemplatePipe as
|
|
18
|
-
export { SdColumnTitlePipe as
|
|
19
|
-
export { SdColumnTooltipPipe as
|
|
20
|
-
export { SdColumnTransformPipe as
|
|
21
|
-
export { SdColumnValuesPipe as
|
|
22
|
-
export { SdCommandDisablePipe as
|
|
23
|
-
export { SdCommandFilterPipe as
|
|
24
|
-
export { SdCommandIconPipe as
|
|
25
|
-
export { SdCommandTitlePipe as
|
|
26
|
-
export { SdFilterColumnPipe as
|
|
27
|
-
export { SdFilterExternalPipe as
|
|
28
|
-
export { SdGridConfigurationResultPipe as
|
|
29
|
-
export { SdSelectionActionFilterPipe as
|
|
30
|
-
export { SdSelectionDisableSelectAllPipe as
|
|
31
|
-
export { SdSelectionDisablePipe as
|
|
16
|
+
export { SdColumnBadgePipe as ɵbb } from './src/lib/pipes/column-badge.pipe';
|
|
17
|
+
export { SdColumnChildrenFilterPipe as ɵr } from './src/lib/pipes/column-children-filter.pipe';
|
|
18
|
+
export { SdColumnHtmlTemplatePipe as ɵy } from './src/lib/pipes/column-html-template.pipe';
|
|
19
|
+
export { SdColumnTitlePipe as ɵs } from './src/lib/pipes/column-title.pipe';
|
|
20
|
+
export { SdColumnTooltipPipe as ɵba } from './src/lib/pipes/column-tooltip.pipe';
|
|
21
|
+
export { SdColumnTransformPipe as ɵz } from './src/lib/pipes/column-transform.pipe';
|
|
22
|
+
export { SdColumnValuesPipe as ɵx } from './src/lib/pipes/column-values.pipe';
|
|
23
|
+
export { SdCommandDisablePipe as ɵu } from './src/lib/pipes/command-disable.pipe';
|
|
24
|
+
export { SdCommandFilterPipe as ɵt } from './src/lib/pipes/command-filter.pipe';
|
|
25
|
+
export { SdCommandIconPipe as ɵv } from './src/lib/pipes/command-icon.pipe';
|
|
26
|
+
export { SdCommandTitlePipe as ɵw } from './src/lib/pipes/command-title.pipe';
|
|
27
|
+
export { SdFilterColumnPipe as ɵbc } from './src/lib/pipes/filter-column.pipe';
|
|
28
|
+
export { SdFilterExternalPipe as ɵbd } from './src/lib/pipes/filter-external.pipe';
|
|
29
|
+
export { SdGridConfigurationResultPipe as ɵq } from './src/lib/pipes/grid-configuration-result.pipe';
|
|
30
|
+
export { SdSelectionActionFilterPipe as ɵbe } from './src/lib/pipes/selection-action-filter.pipe';
|
|
31
|
+
export { SdSelectionDisableSelectAllPipe as ɵbg } from './src/lib/pipes/selection-disable-select-all.pipe';
|
|
32
|
+
export { SdSelectionDisablePipe as ɵbf } from './src/lib/pipes/selection-disable.pipe';
|
|
33
|
+
export { SdGeneratedColumnService as ɵp } from './src/lib/services/generated-column/generated-column.service';
|
|
32
34
|
export { SdGridConfigurationService as ɵh } from './src/lib/services/grid-configuration.service';
|
|
33
35
|
export { SdGridFilterService as ɵd } from './src/lib/services/grid-filter.service';
|
|
34
36
|
export { SdGridService as ɵi } from './src/lib/services/grid.service';
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QtYW5ndWxhci1jb3JlLWdyaWQtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvdXNlci9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic2QtYW5ndWxhci1jb3JlLWdyaWQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQztBQUV4QixPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLE1BQU0sc0ZBQXNGLENBQUM7QUFDckksT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLG9FQUFvRSxDQUFDO0FBQzNHLE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUN0RyxPQUFPLEVBQUMsZUFBZSxJQUFJLEVBQUUsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ25HLE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDMUYsT0FBTyxFQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUM3RixPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxrRkFBa0YsQ0FBQztBQUNoSSxPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFvQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hILE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxHQUFHLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDN0YsT0FBTyxFQUFDLHdCQUF3QixJQUFJLEVBQUUsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsbUJBQW1CLElBQUksR0FBRyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDaEYsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFDLGtCQUFrQixJQUFJLEdBQUcsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxHQUFHLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUMsNkJBQTZCLElBQUksRUFBRSxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDbkcsT0FBTyxFQUFDLDJCQUEyQixJQUFJLEdBQUcsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hHLE9BQU8sRUFBQywrQkFBK0IsSUFBSSxHQUFHLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUN6RyxPQUFPLEVBQUMsc0JBQXNCLElBQUksR0FBRyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDckYsT0FBTyxFQUFDLHdCQUF3QixJQUFJLEVBQUUsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQzVHLE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRixPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCB7U2REZXNrdG9wQ2VsbENoaWxkcmVuVmlldyBhcyDJtWt9IGZyb20gJy4vc3JjL2xpYi9jb21wb25lbnRzL2Rlc2t0b3AtY2VsbC1jaGlsZHJlbi12aWV3L2Rlc2t0b3AtY2VsbC1jaGlsZHJlbi12aWV3LmNvbXBvbmVudCc7XG5leHBvcnQge1NkRGVza3RvcENlbGxWaWV3IGFzIMm1an0gZnJvbSAnLi9zcmMvbGliL2NvbXBvbmVudHMvZGVza3RvcC1jZWxsLXZpZXcvZGVza3RvcC1jZWxsLXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCB7U2REZXNrdG9wQ29tbWFuZCBhcyDJtWx9IGZyb20gJy4vc3JjL2xpYi9jb21wb25lbnRzL2Rlc2t0b3AtY29tbWFuZC9kZXNrdG9wLWNvbW1hbmQuY29tcG9uZW50JztcbmV4cG9ydCB7U2REeW5hbWljQ29sdW1uIGFzIMm1b30gZnJvbSAnLi9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1jb2x1bW4vZHluYW1pYy1jb2x1bW4uY29tcG9uZW50JztcbmV4cG9ydCB7U2RHcmlkRmlsdGVyIGFzIMm1Yn0gZnJvbSAnLi9zcmMvbGliL2NvbXBvbmVudHMvZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7U2RQb3B1cEV4cG9ydCBhcyDJtWV9IGZyb20gJy4vc3JjL2xpYi9jb21wb25lbnRzL3BvcHVwLWV4cG9ydC9wb3B1cC1leHBvcnQuY29tcG9uZW50JztcbmV4cG9ydCB7U2RQb3B1cEZpbHRlciBhcyDJtWN9IGZyb20gJy4vc3JjL2xpYi9jb21wb25lbnRzL3BvcHVwLWZpbHRlci9wb3B1cC1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7U2RQb3B1cEdyaWRDb25maWd1cmF0aW9uIGFzIMm1bn0gZnJvbSAnLi9zcmMvbGliL2NvbXBvbmVudHMvcG9wdXAtZ3JpZC1jb25maWd1cmF0aW9uL3BvcHVwLWdyaWQtY29uZmlndXJhdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtTZExldERpcmVjdGl2ZSBhcyDJtW19IGZyb20gJy4vc3JjL2xpYi9kaXJlY3RpdmVzL3NkLWxldC5kaXJlY3RpdmUnO1xuZXhwb3J0IHtNYXRQYWdpbmF0b3JJbnRsQ3JvIGFzIMm1YX0gZnJvbSAnLi9zcmMvbGliL2dyaWQtbWF0ZXJpYWwubW9kdWxlJztcbmV4cG9ydCB7R1JJRF9NQVRFUklBTF9DT05GSUcgYXMgybVnLElTZEdyaWRNYXRlcmlhbENvbmZpZ3VyYXRpb24gYXMgybVmfSBmcm9tICcuL3NyYy9saWIvbW9kZWxzL2dyaWQtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5leHBvcnQge1NkQ29sdW1uQmFkZ2VQaXBlIGFzIMm1YmJ9IGZyb20gJy4vc3JjL2xpYi9waXBlcy9jb2x1bW4tYmFkZ2UucGlwZSc7XG5leHBvcnQge1NkQ29sdW1uQ2hpbGRyZW5GaWx0ZXJQaXBlIGFzIMm1cn0gZnJvbSAnLi9zcmMvbGliL3BpcGVzL2NvbHVtbi1jaGlsZHJlbi1maWx0ZXIucGlwZSc7XG5leHBvcnQge1NkQ29sdW1uSHRtbFRlbXBsYXRlUGlwZSBhcyDJtXl9IGZyb20gJy4vc3JjL2xpYi9waXBlcy9jb2x1bW4taHRtbC10ZW1wbGF0ZS5waXBlJztcbmV4cG9ydCB7U2RDb2x1bW5UaXRsZVBpcGUgYXMgybVzfSBmcm9tICcuL3NyYy9saWIvcGlwZXMvY29sdW1uLXRpdGxlLnBpcGUnO1xuZXhwb3J0IHtTZENvbHVtblRvb2x0aXBQaXBlIGFzIMm1YmF9IGZyb20gJy4vc3JjL2xpYi9waXBlcy9jb2x1bW4tdG9vbHRpcC5waXBlJztcbmV4cG9ydCB7U2RDb2x1bW5UcmFuc2Zvcm1QaXBlIGFzIMm1en0gZnJvbSAnLi9zcmMvbGliL3BpcGVzL2NvbHVtbi10cmFuc2Zvcm0ucGlwZSc7XG5leHBvcnQge1NkQ29sdW1uVmFsdWVzUGlwZSBhcyDJtXh9IGZyb20gJy4vc3JjL2xpYi9waXBlcy9jb2x1bW4tdmFsdWVzLnBpcGUnO1xuZXhwb3J0IHtTZENvbW1hbmREaXNhYmxlUGlwZSBhcyDJtXV9IGZyb20gJy4vc3JjL2xpYi9waXBlcy9jb21tYW5kLWRpc2FibGUucGlwZSc7XG5leHBvcnQge1NkQ29tbWFuZEZpbHRlclBpcGUgYXMgybV0fSBmcm9tICcuL3NyYy9saWIvcGlwZXMvY29tbWFuZC1maWx0ZXIucGlwZSc7XG5leHBvcnQge1NkQ29tbWFuZEljb25QaXBlIGFzIMm1dn0gZnJvbSAnLi9zcmMvbGliL3BpcGVzL2NvbW1hbmQtaWNvbi5waXBlJztcbmV4cG9ydCB7U2RDb21tYW5kVGl0bGVQaXBlIGFzIMm1d30gZnJvbSAnLi9zcmMvbGliL3BpcGVzL2NvbW1hbmQtdGl0bGUucGlwZSc7XG5leHBvcnQge1NkRmlsdGVyQ29sdW1uUGlwZSBhcyDJtWJjfSBmcm9tICcuL3NyYy9saWIvcGlwZXMvZmlsdGVyLWNvbHVtbi5waXBlJztcbmV4cG9ydCB7U2RGaWx0ZXJFeHRlcm5hbFBpcGUgYXMgybViZH0gZnJvbSAnLi9zcmMvbGliL3BpcGVzL2ZpbHRlci1leHRlcm5hbC5waXBlJztcbmV4cG9ydCB7U2RHcmlkQ29uZmlndXJhdGlvblJlc3VsdFBpcGUgYXMgybVxfSBmcm9tICcuL3NyYy9saWIvcGlwZXMvZ3JpZC1jb25maWd1cmF0aW9uLXJlc3VsdC5waXBlJztcbmV4cG9ydCB7U2RTZWxlY3Rpb25BY3Rpb25GaWx0ZXJQaXBlIGFzIMm1YmV9IGZyb20gJy4vc3JjL2xpYi9waXBlcy9zZWxlY3Rpb24tYWN0aW9uLWZpbHRlci5waXBlJztcbmV4cG9ydCB7U2RTZWxlY3Rpb25EaXNhYmxlU2VsZWN0QWxsUGlwZSBhcyDJtWJnfSBmcm9tICcuL3NyYy9saWIvcGlwZXMvc2VsZWN0aW9uLWRpc2FibGUtc2VsZWN0LWFsbC5waXBlJztcbmV4cG9ydCB7U2RTZWxlY3Rpb25EaXNhYmxlUGlwZSBhcyDJtWJmfSBmcm9tICcuL3NyYy9saWIvcGlwZXMvc2VsZWN0aW9uLWRpc2FibGUucGlwZSc7XG5leHBvcnQge1NkR2VuZXJhdGVkQ29sdW1uU2VydmljZSBhcyDJtXB9IGZyb20gJy4vc3JjL2xpYi9zZXJ2aWNlcy9nZW5lcmF0ZWQtY29sdW1uL2dlbmVyYXRlZC1jb2x1bW4uc2VydmljZSc7XG5leHBvcnQge1NkR3JpZENvbmZpZ3VyYXRpb25TZXJ2aWNlIGFzIMm1aH0gZnJvbSAnLi9zcmMvbGliL3NlcnZpY2VzL2dyaWQtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCB7U2RHcmlkRmlsdGVyU2VydmljZSBhcyDJtWR9IGZyb20gJy4vc3JjL2xpYi9zZXJ2aWNlcy9ncmlkLWZpbHRlci5zZXJ2aWNlJztcbmV4cG9ydCB7U2RHcmlkU2VydmljZSBhcyDJtWl9IGZyb20gJy4vc3JjL2xpYi9zZXJ2aWNlcy9ncmlkLnNlcnZpY2UnOyJdfQ==
|
package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js
CHANGED
|
@@ -5,7 +5,7 @@ export class SdDesktopCellView {
|
|
|
5
5
|
SdDesktopCellView.decorators = [
|
|
6
6
|
{ type: Component, args: [{
|
|
7
7
|
selector: 'sd-desktop-cell-view',
|
|
8
|
-
template: "<ng-container *ngIf=\"column && item\">\r\n <ng-container *ngIf=\"column.htmlTemplate;else useDefaultView\">\r\n <div (click)=\"column.click && column.click(item[column.field], item)\" style=\"overflow-wrap: break-word;\"\r\n [ngClass]=\"{'cursor-pointer':column.click}\"\r\n [innerHTML]=\"(item[column.field] | columnHtmlTemplate:item:column) | safeHtml\">\r\n </div>\r\n </ng-container>\r\n <ng-template #useDefaultView>\r\n <ng-container *sdLet=\"item[column.field] | columnBadge:item:column as badge\">\r\n <ng-container *ngIf=\"column.type === 'string'\">\r\n <ng-container *ngIf=\"!!badge\">\r\n <div *ngIf=\"!column.badgeType\" class=\"c-badge\" style=\"overflow-wrap: break-word;\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[column.field] | columnTooltip:item:column\"\r\n [class]=\"{'c-secondary': badge === 'normal', 'c-info': badge === 'info', 'c-success': badge === 'success', 'c-danger': badge === 'danger', 'c-warning': badge === 'warning'}\">\r\n <span *ngIf=\"column.click\" class=\"pointer\"\r\n (click)=\"column.click(item[column.field], item)\">{{item[column.field] |\r\n columnTransform:item:column}}</span>\r\n <ng-container *ngIf=\"!column.click\">{{item[column.field] | columnTransform:item:column}}</ng-container>\r\n </div>\r\n <div *ngIf=\"column.badgeType === 'circle'\" style=\"min-width: 150px\"\r\n class=\"c-badge-circle d-flex align-items-center\"\r\n [class]=\"{'c-unknown': !badge, 'c-secondary': badge === 'normal', 'c-info': badge === 'info', 'c-success': badge === 'success', 'c-danger': badge === 'danger', 'c-warning': badge === 'warning'}\">\r\n <span *ngIf=\"badge\" class=\"material-icons-round c-material-icon mr-4\">\r\n fiber_manual_record\r\n </span>\r\n <span *ngIf=\"!badge\" class=\"material-icons-outlined c-material-icon mr-4\">\r\n fiber_manual_record\r\n </span>\r\n {{item[column.field] | columnTransform:item:column}}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!badge\">\r\n <div style=\"overflow-wrap: break-word;\" [matTooltip]=\"item[column.field] | columnTooltip:item:column\">\r\n <a *ngIf=\"column.click\" href=\"javascript:;\"\r\n (click)=\"column.click(item[column.field], item)\">{{item[column.field] | columnTransform:item:column}}</a>\r\n <ng-container *ngIf=\"!column.click\">{{item[column.field] | columnTransform:item:column}}</ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n
|
|
8
|
+
template: "<ng-container *ngIf=\"column && item\">\r\n <ng-container *ngIf=\"column.htmlTemplate;else useDefaultView\">\r\n <div (click)=\"column.click && column.click(item[column.field], item)\" style=\"overflow-wrap: break-word;\"\r\n [ngClass]=\"{'cursor-pointer':column.click}\"\r\n [innerHTML]=\"(item[column.field] | columnHtmlTemplate:item:column) | safeHtml\">\r\n </div>\r\n </ng-container>\r\n <ng-template #useDefaultView>\r\n <ng-container *sdLet=\"item[column.field] | columnBadge:item:column as badge\">\r\n <ng-container *ngIf=\"column.type === 'string'\">\r\n <ng-container *ngIf=\"!!badge\">\r\n <div *ngIf=\"!column.badgeType\" class=\"c-badge\" style=\"overflow-wrap: break-word;\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[column.field] | columnTooltip:item:column\"\r\n [class]=\"{'c-secondary': badge === 'normal', 'c-info': badge === 'info', 'c-success': badge === 'success', 'c-danger': badge === 'danger', 'c-warning': badge === 'warning'}\">\r\n <span *ngIf=\"column.click\" class=\"pointer\"\r\n (click)=\"column.click(item[column.field], item)\">{{item[column.field] |\r\n columnTransform:item:column}}</span>\r\n <ng-container *ngIf=\"!column.click\">{{item[column.field] | columnTransform:item:column}}</ng-container>\r\n </div>\r\n <div *ngIf=\"column.badgeType === 'circle'\" style=\"min-width: 150px\"\r\n class=\"c-badge-circle d-flex align-items-center\"\r\n [class]=\"{'c-unknown': !badge, 'c-secondary': badge === 'normal', 'c-info': badge === 'info', 'c-success': badge === 'success', 'c-danger': badge === 'danger', 'c-warning': badge === 'warning'}\">\r\n <span *ngIf=\"badge\" class=\"material-icons-round c-material-icon mr-4\">\r\n fiber_manual_record\r\n </span>\r\n <span *ngIf=\"!badge\" class=\"material-icons-outlined c-material-icon mr-4\">\r\n fiber_manual_record\r\n </span>\r\n {{item[column.field] | columnTransform:item:column}}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!badge\">\r\n <div style=\"overflow-wrap: break-word;\" [matTooltip]=\"item[column.field] | columnTooltip:item:column\">\r\n <a *ngIf=\"column.click\" href=\"javascript:;\"\r\n (click)=\"column.click(item[column.field], item)\">{{item[column.field] | columnTransform:item:column}}</a>\r\n <ng-container *ngIf=\"!column.click\">{{item[column.field] | columnTransform:item:column}}</ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div *ngIf=\"column.type === 'number'\">\r\n <a *ngIf=\"column.click\" href=\"javascript:;\"\r\n (click)=\"column.click(item[column.field], item)\">{{item[column.field] | columnTransform:item:column}}</a>\r\n <ng-container *ngIf=\"!column.click\">\r\n {{item[column.field] | columnTransform:item:column}}</ng-container>\r\n </div>\r\n <div *ngIf=\"column.type === 'date'\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[column.field] | date:'dd/MM/yyyy'\">\r\n {{item[column.field] | sdTimeDifferent:'dd/MM/yyyy':column.option?.timeDifferent | async}}\r\n </div>\r\n <div *ngIf=\"column.type === 'datetime'\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[column.field] | date:'dd/MM/yyyy HH:mm'\">\r\n {{item[column.field] | sdTimeDifferent:'dd/MM/yyyy HH:mm':column.option?.timeDifferent | async}}\r\n </div>\r\n <div *ngIf=\"column.type === 'time'\">\r\n {{item[column.field] | date:'HH:mm'}}\r\n </div>\r\n <div *ngIf=\"column.type === 'bool'\" class=\"align-middle text-center\">\r\n <ng-container *ngIf=\"!!badge\">\r\n <div *ngIf=\"!column.badgeType\" class=\"c-badge\" style=\"overflow-wrap: break-word;\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[column.field] | columnTooltip:item:column\"\r\n [class]=\"{'c-secondary': badge === 'normal', 'c-info': badge === 'info', 'c-success': badge === 'success', 'c-danger': badge === 'danger', 'c-warning': badge === 'warning'}\">\r\n <span *ngIf=\"column.click\" class=\"pointer\"\r\n (click)=\"column.click(item[column.field], item)\">{{item[column.field] | columnTransform:item:column}}</span>\r\n <ng-container *ngIf=\"!column.click\">{{item[column.field] | columnTransform:item:column}}</ng-container>\r\n </div>\r\n <div *ngIf=\"column.badgeType === 'circle'\" style=\"min-width: 150px\"\r\n class=\"c-badge-circle d-flex align-items-center\"\r\n [class]=\"{'c-unknown': !badge, 'c-secondary': badge === 'normal', 'c-info': badge === 'info', 'c-success': badge === 'success', 'c-danger': badge === 'danger', 'c-warning': badge === 'warning'}\">\r\n <span *ngIf=\"badge\" class=\"material-icons-round c-material-icon mr-4\">\r\n fiber_manual_record\r\n </span>\r\n <span *ngIf=\"!badge\" class=\"material-icons-outlined c-material-icon mr-4\">\r\n fiber_manual_record\r\n </span>\r\n {{item[column.field] | columnTransform:item:column}}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!badge\">\r\n <span *ngIf=\"item[column.field]\" class=\"font-weight-bold c-color-success\">{{item[column.field] | columnTransform:item:column}}</span>\r\n <span *ngIf=\"!item[column.field]\" class=\"font-weight-bold c-color-danger\">{{item[column.field] | columnTransform:item:column}}</span>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"column.type === 'values'\">\r\n <ng-container *ngIf=\"item[column.field] | columnValues:column:key | async; $implicit as valueData\">\r\n <div\r\n *ngIf=\"valueData[column.option?.colorField] || valueData[column.option?.backgroundColorField]; else elseNoStatus\"\r\n class=\"c-badge\"\r\n [ngStyle]=\"{'color':valueData[column.option?.colorField], 'background-color': valueData[column.option?.backgroundColorField]}\">\r\n {{valueData[column.option?.displayField]}}\r\n </div>\r\n <ng-template #elseNoStatus>\r\n <div class=\"text-left\">\r\n {{valueData[column.option?.displayField]}}\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"column.type === 'image'\" class=\"align-middle text-center\">\r\n <img *ngIf=\"item[column.field]\" [src]=\"item[column.field] | columnTransform:item:column\"\r\n [width]=\"column.option?.width\" [height]=\"column.option?.height\" style=\"margin: 5px 0;object-fit: contain;\"\r\n (click)=\"column.click && column.click(item[column.field], item)\" [ngClass]=\"{'pointer':column.click}\">\r\n <mat-icon *ngIf=\"!item[column.field]\" class=\"c-img\" [ngClass]=\"{'pointer':column.click}\"\r\n (click)=\"column.click && column.click(item[column.field], item)\">image</mat-icon>\r\n </div>\r\n </ng-container>\r\n <sd-desktop-cell-children-view *ngIf=\"column.type === 'children'\" [key]=\"key\" [item]=\"item\" [column]=\"column\">\r\n </sd-desktop-cell-children-view>\r\n </ng-template>\r\n</ng-container>",
|
|
9
9
|
styles: [".c-color-success{color:#4caf50}.c-color-danger{color:#f82c13}.c-img{font-size:30px;opacity:.5}.c-img.pointer:hover{opacity:.9}.c-badge{border-radius:20px;display:inline-block;margin-bottom:4px;padding:2px 12px;text-align:center}.c-badge.c-warning{background:#fff3e0;color:#ff9600}.c-badge.c-info{background:#e7e9ff;color:#2962ff}.c-badge.c-success{background:#e8f5e9;color:#4caf50}.c-badge.c-danger{background:#fee8e7;color:#f82c13}.c-badge.c-normal{background:rgba(0,0,0,.12);color:#000}.wes-status .c-material-icon{font-size:12px;height:12px;width:12px}.wes-status.text-secondary .c-material-icon{color:rgba(0,0,0,.5)}.c-badge-circle .c-material-icon{font-size:12px;height:12px;width:12px}.c-badge-circle.c-unknown{color:#212121}.c-badge-circle.c-unknown .c-material-icon{color:rgba(0,0,0,.5)}.c-badge-circle.c-secondary{color:#212121}.c-badge-circle.c-info{color:#2962ff}.c-badge-circle.c-success{color:#4caf50}.c-badge-circle.c-danger{color:#f82c13}.c-badge-circle.c-warning{color:#ff9600}"]
|
|
10
10
|
},] }
|
|
11
11
|
];
|
|
@@ -15,4 +15,4 @@ SdDesktopCellView.propDecorators = {
|
|
|
15
15
|
column: [{ type: Input }],
|
|
16
16
|
item: [{ type: Input }]
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVza3RvcC1jZWxsLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wLWNlbGwtdmlldy9kZXNrdG9wLWNlbGwtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFRNUQsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixnQkFDSSxDQUFDOzs7WUFWTixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsdXlPQUFpRDs7YUFFbEQ7Ozs7a0JBRUUsS0FBSztxQkFDTCxLQUFLO21CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1kZXNrdG9wLWNlbGwtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Rlc2t0b3AtY2VsbC12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kZXNrdG9wLWNlbGwtdmlldy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZERlc2t0b3BDZWxsVmlldyB7XHJcbiAgQElucHV0KCkga2V5OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY29sdW1uOiBTZEdyaWRNYXRlcmlhbENvbHVtbjtcclxuICBASW5wdXQoKSBpdGVtOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgKSB7IH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
var _subscription;
|
|
2
|
+
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
+
import { Component, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy } from '@angular/core';
|
|
4
|
+
import { SdNotifyService } from '@sd-angular/core/notify';
|
|
5
|
+
import { SdTranslateService } from '@sd-angular/core/translate';
|
|
6
|
+
import { SdGridConfigurationService } from '../../services/grid-configuration.service';
|
|
7
|
+
import * as uuid from 'uuid';
|
|
8
|
+
import { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';
|
|
9
|
+
import { Subscription } from 'rxjs';
|
|
10
|
+
import { FormGroup } from '@angular/forms';
|
|
11
|
+
import { SdSideDrawer } from '@sd-angular/core/side-drawer';
|
|
12
|
+
export class SdDynamicColumn {
|
|
13
|
+
constructor(ref, generatedColumnService, notifyService, translateService, gridConfigurationService) {
|
|
14
|
+
this.ref = ref;
|
|
15
|
+
this.generatedColumnService = generatedColumnService;
|
|
16
|
+
this.notifyService = notifyService;
|
|
17
|
+
this.translateService = translateService;
|
|
18
|
+
this.gridConfigurationService = gridConfigurationService;
|
|
19
|
+
_subscription.set(this, new Subscription());
|
|
20
|
+
this.columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];
|
|
21
|
+
this.form = new FormGroup({});
|
|
22
|
+
this.isDetail = false;
|
|
23
|
+
this.originColumns = [];
|
|
24
|
+
this.onDetail = (column) => {
|
|
25
|
+
this.detail = column || {
|
|
26
|
+
field: uuid.v4(),
|
|
27
|
+
title: '',
|
|
28
|
+
type: 'string',
|
|
29
|
+
isSystem: false,
|
|
30
|
+
useTemplate: false
|
|
31
|
+
};
|
|
32
|
+
this.form.markAsUntouched();
|
|
33
|
+
this.form.markAsPristine();
|
|
34
|
+
this.isDetail = true;
|
|
35
|
+
};
|
|
36
|
+
this.onSave = () => {
|
|
37
|
+
var _a;
|
|
38
|
+
const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);
|
|
39
|
+
const setting = this.generatedColumnService.load((_a = this.gridOption) === null || _a === void 0 ? void 0 : _a.config);
|
|
40
|
+
if (this.detail.isSystem) {
|
|
41
|
+
if (!this.detail.id) {
|
|
42
|
+
systemSetting.set([...this.systemColumns, Object.assign(Object.assign({}, this.detail), { id: uuid.v4() })]);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
systemSetting.set([...this.systemColumns]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
if (!this.detail.id) {
|
|
50
|
+
setting.set([...this.columns, Object.assign(Object.assign({}, this.detail), { id: uuid.v4() })]);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
setting.set([...this.columns]);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
ngOnInit() {
|
|
59
|
+
var _a, _b, _c;
|
|
60
|
+
const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);
|
|
61
|
+
const setting = this.generatedColumnService.load((_a = this.gridOption) === null || _a === void 0 ? void 0 : _a.config);
|
|
62
|
+
if (systemSetting) {
|
|
63
|
+
(_b = __classPrivateFieldGet(this, _subscription)) === null || _b === void 0 ? void 0 : _b.add(systemSetting.observer.subscribe(columns => {
|
|
64
|
+
this.systemColumns = columns;
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
if (setting) {
|
|
68
|
+
(_c = __classPrivateFieldGet(this, _subscription)) === null || _c === void 0 ? void 0 : _c.add(setting.observer.subscribe(columns => {
|
|
69
|
+
this.columns = columns;
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');
|
|
73
|
+
}
|
|
74
|
+
ngOnDestroy() {
|
|
75
|
+
__classPrivateFieldGet(this, _subscription).unsubscribe();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
_subscription = new WeakMap();
|
|
79
|
+
SdDynamicColumn.decorators = [
|
|
80
|
+
{ type: Component, args: [{
|
|
81
|
+
selector: 'sd-dynamic-column',
|
|
82
|
+
template: "<sd-side-drawer width=\"400px\">\r\n <div sdTitle>{{'Manage dynamic column' | sdTranslate}}</div>\r\n <ng-container sdBody>\r\n <ng-container *ngIf=\"!isDetail\">\r\n <ng-container *ngIf=\"systemColumns\">\r\n <div *ngFor=\"let column of systemColumns\" (click)=\"onDetail(column)\">\r\n {{column.title}}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"columns\">\r\n <div *ngFor=\"let column of columns\" (click)=\"onDetail(column)\">\r\n {{column.title}}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"isDetail\">\r\n <sd-select [form]=\"form\" [label]=\"'Apply for' | sdTranslate\" [(model)]=\"detail.isSystem\"\r\n [items]=\"[{code: true, name: 'All users'},{code: false, name: 'Only me'}]\" [disabled]=\"!!detail.id\" required></sd-select>\r\n <sd-input [form]=\"form\" [label]=\"'Column field' | sdTranslate\" [(model)]=\"detail.field\" [disabled]=\"!!detail.id\"\r\n required></sd-input>\r\n <sd-input [form]=\"form\" [label]=\"'Column title' | sdTranslate\" [(model)]=\"detail.title\" required></sd-input>\r\n <sd-input [form]=\"form\" [label]=\"'Column width' | sdTranslate\" [(model)]=\"detail.width\" type=\"number\" required>\r\n <ng-template sdInputSuffix>px</ng-template>\r\n </sd-input>\r\n <sd-select [form]=\"form\" [label]=\"'Column type' | sdTranslate\" [(model)]=\"detail.type\" [items]=\"columnTypes\"\r\n [disabled]=\"!!detail.id\" required></sd-select>\r\n <sd-select *ngIf=\"detail.type === 'children' || detail.type === 'children-col'\" [form]=\"form\"\r\n [label]=\"'Column fields' | sdTranslate\" [(model)]=\"detail.fields\" [items]=\"originColumns\" valueField=\"field\"\r\n displayField=\"title\" multiple></sd-select>\r\n <sd-select [form]=\"form\" [label]=\"'Use template' | sdTranslate\" [(model)]=\"detail.useTemplate\"\r\n [items]=\"[{code: true, name: 'Yes'},{code: false, name: 'No'}]\" required></sd-select>\r\n <sd-editor *ngIf=\"detail.useTemplate\" [form]=\"form\" [label]=\"'Html template' | sdTranslate\" [(model)]=\"detail.template\">\r\n </sd-editor>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"d-flex align-items-center justify-content-end\" sdFooter>\r\n <sd-button [title]=\"'Close' | sdTranslate\" (action)=\"sideDrawer.close()\"> </sd-button>\r\n <sd-button *ngIf=\"!isDetail\" [title]=\"'Create column' | sdTranslate\" color=\"primary\" class=\"mx-8\"\r\n (action)=\"onDetail()\">\r\n </sd-button>\r\n <sd-button *ngIf=\"isDetail\" [title]=\"'Save' | sdTranslate\" color=\"success\" class=\"mx-8\" (action)=\"onSave()\">\r\n </sd-button>\r\n </div>\r\n</sd-side-drawer>",
|
|
83
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
84
|
+
styles: [".c-table{overflow:auto;position:relative}.c-table table{width:100%}.c-table .c-th{color:#000;font-size:14px;font-weight:500;line-height:20px}.c-container{min-height:200px;position:relative}.c-handle{color:#ccc;cursor:move}"]
|
|
85
|
+
},] }
|
|
86
|
+
];
|
|
87
|
+
SdDynamicColumn.ctorParameters = () => [
|
|
88
|
+
{ type: ChangeDetectorRef },
|
|
89
|
+
{ type: SdGeneratedColumnService },
|
|
90
|
+
{ type: SdNotifyService },
|
|
91
|
+
{ type: SdTranslateService },
|
|
92
|
+
{ type: SdGridConfigurationService }
|
|
93
|
+
];
|
|
94
|
+
SdDynamicColumn.propDecorators = {
|
|
95
|
+
sideDrawer: [{ type: ViewChild, args: [SdSideDrawer,] }],
|
|
96
|
+
gridOption: [{ type: Input }]
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWNvbHVtbi9keW5hbWljLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVM1RCxNQUFNLE9BQU8sZUFBZTtJQVcxQixZQUNVLEdBQXNCLEVBQ3RCLHNCQUFnRCxFQUNoRCxhQUE4QixFQUM5QixnQkFBb0MsRUFDcEMsd0JBQW9EO1FBSnBELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBMEI7UUFDaEQsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDcEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUE0QjtR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LENBQUMsRUFBRTtnQkFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDekIsQ0FBQyxDQUFDLEVBQUU7U0FDTDtRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsV0FBVztRQUNULDRDQUFtQixXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs7O1lBM0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixpdUZBQThDO2dCQUU5QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQWxCc0MsaUJBQWlCO1lBTS9DLHdCQUF3QjtZQUx4QixlQUFlO1lBQ2Ysa0JBQWtCO1lBRWxCLDBCQUEwQjs7O3lCQWdCaEMsU0FBUyxTQUFDLFlBQVk7eUJBQ3RCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQgeyBTZFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncmlkLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IFNkR2VuZXJhdGVkQ29sdW1uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dlbmVyYXRlZC1jb2x1bW4vZ2VuZXJhdGVkLWNvbHVtbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNkR2VuZXJhdGVkQ29sdW1uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ2VuZXJhdGVkLWNvbHVtbi9nZW5lcmF0ZWQtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTZFNpZGVEcmF3ZXIgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3NpZGUtZHJhd2VyJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1keW5hbWljLWNvbHVtbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtY29sdW1uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWNvbHVtbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZER5bmFtaWNDb2x1bW4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChTZFNpZGVEcmF3ZXIpIHNpZGVEcmF3ZXI6IFNkU2lkZURyYXdlcjtcclxuICBASW5wdXQoKSBncmlkT3B0aW9uOiBTZEdyaWRNYXRlcmlhbE9wdGlvbjtcclxuICBzeXN0ZW1Db2x1bW5zOiBTZEdlbmVyYXRlZENvbHVtbltdO1xyXG4gIGNvbHVtbnM6IFNkR2VuZXJhdGVkQ29sdW1uW107XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBjb2x1bW5UeXBlcyA9IFsnc3RyaW5nJywgJ251bWJlcicsICdib29sJywgJ2RhdGUnLCAnZGF0ZXRpbWUnLCAndGltZScsICd2YWx1ZXMnLCAnY2hpbGRyZW4nLCAnY2hpbGRyZW4tY29sJ107XHJcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGlzRGV0YWlsID0gZmFsc2U7XHJcbiAgZGV0YWlsOiBTZEdlbmVyYXRlZENvbHVtbjtcclxuICBvcmlnaW5Db2x1bW5zOiBTZEdyaWRNYXRlcmlhbENvbHVtbltdID0gW107XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlZENvbHVtblNlcnZpY2U6IFNkR2VuZXJhdGVkQ29sdW1uU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdyaWRDb25maWd1cmF0aW9uU2VydmljZTogU2RHcmlkQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3Qgc3lzdGVtU2V0dGluZyA9IHRoaXMuZ2VuZXJhdGVkQ29sdW1uU2VydmljZS5sb2FkU3lzdGVtKHRoaXMuZ3JpZE9wdGlvbi5jb25maWcpO1xyXG4gICAgY29uc3Qgc2V0dGluZyA9IHRoaXMuZ2VuZXJhdGVkQ29sdW1uU2VydmljZS5sb2FkKHRoaXMuZ3JpZE9wdGlvbj8uY29uZmlnKTtcclxuICAgIGlmIChzeXN0ZW1TZXR0aW5nKSB7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbj8uYWRkKHN5c3RlbVNldHRpbmcub2JzZXJ2ZXIuc3Vic2NyaWJlKGNvbHVtbnMgPT4ge1xyXG4gICAgICAgIHRoaXMuc3lzdGVtQ29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIGlmIChzZXR0aW5nKSB7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbj8uYWRkKHNldHRpbmcub2JzZXJ2ZXIuc3Vic2NyaWJlKGNvbHVtbnMgPT4ge1xyXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIHRoaXMub3JpZ2luQ29sdW1ucyA9IHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2NoaWxkcmVuJyAmJiBlLnR5cGUgIT09ICdjaGlsZHJlbi1jb2wnKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvbkRldGFpbCA9IChjb2x1bW4/OiBTZEdlbmVyYXRlZENvbHVtbikgPT4ge1xyXG4gICAgdGhpcy5kZXRhaWwgPSBjb2x1bW4gfHwge1xyXG4gICAgICBmaWVsZDogdXVpZC52NCgpLFxyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBpc1N5c3RlbTogZmFsc2UsXHJcbiAgICAgIHVzZVRlbXBsYXRlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgdGhpcy5pc0RldGFpbCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvblNhdmUgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBzeXN0ZW1TZXR0aW5nID0gdGhpcy5nZW5lcmF0ZWRDb2x1bW5TZXJ2aWNlLmxvYWRTeXN0ZW0odGhpcy5ncmlkT3B0aW9uLmNvbmZpZyk7XHJcbiAgICBjb25zdCBzZXR0aW5nID0gdGhpcy5nZW5lcmF0ZWRDb2x1bW5TZXJ2aWNlLmxvYWQodGhpcy5ncmlkT3B0aW9uPy5jb25maWcpO1xyXG4gICAgaWYgKHRoaXMuZGV0YWlsLmlzU3lzdGVtKSB7XHJcbiAgICAgIGlmICghdGhpcy5kZXRhaWwuaWQpIHtcclxuICAgICAgICBzeXN0ZW1TZXR0aW5nLnNldChbLi4udGhpcy5zeXN0ZW1Db2x1bW5zLCB7XHJcbiAgICAgICAgICAuLi50aGlzLmRldGFpbCxcclxuICAgICAgICAgIGlkOiB1dWlkLnY0KClcclxuICAgICAgICB9XSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3lzdGVtU2V0dGluZy5zZXQoWy4uLnRoaXMuc3lzdGVtQ29sdW1uc10pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuZGV0YWlsLmlkKSB7XHJcbiAgICAgICAgc2V0dGluZy5zZXQoWy4uLnRoaXMuY29sdW1ucywge1xyXG4gICAgICAgICAgLi4udGhpcy5kZXRhaWwsXHJcbiAgICAgICAgICBpZDogdXVpZC52NCgpXHJcbiAgICAgICAgfV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNldHRpbmcuc2V0KFsuLi50aGlzLmNvbHVtbnNdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|