@digital-realty/ui-service-management 15.0.0 → 15.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/sw.js CHANGED
@@ -1,2 +1,2 @@
1
- if(!self.define){let e,i={};const a=(a,c)=>(a=new URL(a+".js",c).href,i[a]||new Promise(i=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=i,document.head.appendChild(e)}else e=a,importScripts(a),i()}).then(()=>{let e=i[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e}));self.define=(c,n)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(i[r])return;let s={};const d=e=>a(e,r),u={module:{uri:r},exports:s,require:d};i[r]=Promise.all(c.map(e=>u[e]||d(e))).then(e=>(n(...e),s))}}define(["./workbox-b865b753"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"index.html",revision:"33598f536a26a9f2ab0de37f455190f0"},{url:"ui-service-management.js",revision:"39e38a2e6cd0ca34d51bb15d39d30316"},{url:"ui-service-management10.js",revision:"81d67f3f259601632ca4340031a69fce"},{url:"ui-service-management11.js",revision:"bdb272eb21c1ba32658f367dad7c00cc"},{url:"ui-service-management12.js",revision:"3bf4c6643fac5b7d6ebaafc807e0726c"},{url:"ui-service-management13.js",revision:"e68fe1534ea992dc313b8d655babf8a4"},{url:"ui-service-management14.js",revision:"3a38d90bf3f2943a0481e9ccac1261a1"},{url:"ui-service-management15.js",revision:"0595d0fc21cfb37a7c3f2a2d609f291c"},{url:"ui-service-management16.js",revision:"93a5a1c6c14bc7376c6a7cf3178cd186"},{url:"ui-service-management17.js",revision:"ccee297c68000cf3facd49db81b59b00"},{url:"ui-service-management18.js",revision:"eba0ac899ae9a77efc777382cae03998"},{url:"ui-service-management19.js",revision:"43568a09e2e4e841a09050aa58a11468"},{url:"ui-service-management2.js",revision:"7fd79e51f9167550800b7d9bdc07bf0d"},{url:"ui-service-management20.js",revision:"ea4e8842ec8cd5365c6772bedb12cbd2"},{url:"ui-service-management21.js",revision:"af63dc6adde4cfbc7e4eac7114bf1c6f"},{url:"ui-service-management22.js",revision:"80c4b98a49417e4397a93d4372738fba"},{url:"ui-service-management23.js",revision:"db0e06cdc4e49117b848d75f6c9a18bd"},{url:"ui-service-management24.js",revision:"53dd8be26efb8aa6eede4751812f9f2f"},{url:"ui-service-management25.js",revision:"51b54a5005366880c170d19440277ee4"},{url:"ui-service-management26.js",revision:"525ca74c6cafd85344481e577152f8e6"},{url:"ui-service-management27.js",revision:"9b3b7c8ec3a0c9440d77eacd23b49d08"},{url:"ui-service-management28.js",revision:"529e7954ffbda79da59109455085529f"},{url:"ui-service-management29.js",revision:"53bc645bdd886c5de83f416890112b54"},{url:"ui-service-management3.js",revision:"01b75975f4df5681eecd70fb20aa7f31"},{url:"ui-service-management30.js",revision:"1839187b2af6dcb61db0dab0d16d8340"},{url:"ui-service-management31.js",revision:"a609cad2cc6d4e89b15d03a09de611a5"},{url:"ui-service-management4.js",revision:"dae73540425c9381cadbc23b5bbd4151"},{url:"ui-service-management5.js",revision:"ebc07b47746dc1e81272b49ee904f622"},{url:"ui-service-management6.js",revision:"462810f58f460b23085cc3ebea6f9afb"},{url:"ui-service-management7.js",revision:"c10a2d0f2c483a383f51d3ff2c4ecf14"},{url:"ui-service-management8.js",revision:"823f52666d557b0b0bde4a27ca63bc7a"},{url:"ui-service-management9.js",revision:"b372344d84d4186d4e018e6a5aa09187"}],{}),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"))),e.registerRoute("polyfills/*.js",new e.CacheFirst,"GET")});
1
+ if(!self.define){let e,i={};const a=(a,n)=>(a=new URL(a+".js",n).href,i[a]||new Promise(i=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=i,document.head.appendChild(e)}else e=a,importScripts(a),i()}).then(()=>{let e=i[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e}));self.define=(n,c)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(i[r])return;let s={};const d=e=>a(e,r),u={module:{uri:r},exports:s,require:d};i[r]=Promise.all(n.map(e=>u[e]||d(e))).then(e=>(c(...e),s))}}define(["./workbox-b865b753"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"index.html",revision:"33598f536a26a9f2ab0de37f455190f0"},{url:"ui-service-management.js",revision:"39e38a2e6cd0ca34d51bb15d39d30316"},{url:"ui-service-management10.js",revision:"81d67f3f259601632ca4340031a69fce"},{url:"ui-service-management11.js",revision:"bdb272eb21c1ba32658f367dad7c00cc"},{url:"ui-service-management12.js",revision:"3bf4c6643fac5b7d6ebaafc807e0726c"},{url:"ui-service-management13.js",revision:"e68fe1534ea992dc313b8d655babf8a4"},{url:"ui-service-management14.js",revision:"3a38d90bf3f2943a0481e9ccac1261a1"},{url:"ui-service-management15.js",revision:"0595d0fc21cfb37a7c3f2a2d609f291c"},{url:"ui-service-management16.js",revision:"93a5a1c6c14bc7376c6a7cf3178cd186"},{url:"ui-service-management17.js",revision:"ccee297c68000cf3facd49db81b59b00"},{url:"ui-service-management18.js",revision:"eba0ac899ae9a77efc777382cae03998"},{url:"ui-service-management19.js",revision:"43568a09e2e4e841a09050aa58a11468"},{url:"ui-service-management2.js",revision:"60e80b37576cf5503ed1ddb088199eef"},{url:"ui-service-management20.js",revision:"ea4e8842ec8cd5365c6772bedb12cbd2"},{url:"ui-service-management21.js",revision:"af63dc6adde4cfbc7e4eac7114bf1c6f"},{url:"ui-service-management22.js",revision:"80c4b98a49417e4397a93d4372738fba"},{url:"ui-service-management23.js",revision:"db0e06cdc4e49117b848d75f6c9a18bd"},{url:"ui-service-management24.js",revision:"53dd8be26efb8aa6eede4751812f9f2f"},{url:"ui-service-management25.js",revision:"51b54a5005366880c170d19440277ee4"},{url:"ui-service-management26.js",revision:"525ca74c6cafd85344481e577152f8e6"},{url:"ui-service-management27.js",revision:"898a8a9201705d7e301b0e3c412dd7d2"},{url:"ui-service-management28.js",revision:"529e7954ffbda79da59109455085529f"},{url:"ui-service-management29.js",revision:"53bc645bdd886c5de83f416890112b54"},{url:"ui-service-management3.js",revision:"01b75975f4df5681eecd70fb20aa7f31"},{url:"ui-service-management30.js",revision:"1839187b2af6dcb61db0dab0d16d8340"},{url:"ui-service-management31.js",revision:"cb383490b9d8c447433fbd944bfb2169"},{url:"ui-service-management4.js",revision:"dae73540425c9381cadbc23b5bbd4151"},{url:"ui-service-management5.js",revision:"ebc07b47746dc1e81272b49ee904f622"},{url:"ui-service-management6.js",revision:"462810f58f460b23085cc3ebea6f9afb"},{url:"ui-service-management7.js",revision:"c10a2d0f2c483a383f51d3ff2c4ecf14"},{url:"ui-service-management8.js",revision:"823f52666d557b0b0bde4a27ca63bc7a"},{url:"ui-service-management9.js",revision:"b372344d84d4186d4e018e6a5aa09187"}],{}),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"))),e.registerRoute("polyfills/*.js",new e.CacheFirst,"GET")});
2
2
  //# sourceMappingURL=sw.js.map
package/dist/sw.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sw.js","sources":["../../../../../../tmp/78b1b19295cec6e99e5ed4eddfbb4abc/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-routing@6.6.0/node_modules/workbox-routing/registerRoute.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-strategies@6.6.0/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-core@6.6.0/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-precaching@6.6.0/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-routing@6.6.0/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-precaching@6.6.0/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"index.html\",\n \"revision\": \"33598f536a26a9f2ab0de37f455190f0\"\n },\n {\n \"url\": \"ui-service-management.js\",\n \"revision\": \"39e38a2e6cd0ca34d51bb15d39d30316\"\n },\n {\n \"url\": \"ui-service-management10.js\",\n \"revision\": \"81d67f3f259601632ca4340031a69fce\"\n },\n {\n \"url\": \"ui-service-management11.js\",\n \"revision\": \"bdb272eb21c1ba32658f367dad7c00cc\"\n },\n {\n \"url\": \"ui-service-management12.js\",\n \"revision\": \"3bf4c6643fac5b7d6ebaafc807e0726c\"\n },\n {\n \"url\": \"ui-service-management13.js\",\n \"revision\": \"e68fe1534ea992dc313b8d655babf8a4\"\n },\n {\n \"url\": \"ui-service-management14.js\",\n \"revision\": \"3a38d90bf3f2943a0481e9ccac1261a1\"\n },\n {\n \"url\": \"ui-service-management15.js\",\n \"revision\": \"0595d0fc21cfb37a7c3f2a2d609f291c\"\n },\n {\n \"url\": \"ui-service-management16.js\",\n \"revision\": \"93a5a1c6c14bc7376c6a7cf3178cd186\"\n },\n {\n \"url\": \"ui-service-management17.js\",\n \"revision\": \"ccee297c68000cf3facd49db81b59b00\"\n },\n {\n \"url\": \"ui-service-management18.js\",\n \"revision\": \"eba0ac899ae9a77efc777382cae03998\"\n },\n {\n \"url\": \"ui-service-management19.js\",\n \"revision\": \"43568a09e2e4e841a09050aa58a11468\"\n },\n {\n \"url\": \"ui-service-management2.js\",\n \"revision\": \"7fd79e51f9167550800b7d9bdc07bf0d\"\n },\n {\n \"url\": \"ui-service-management20.js\",\n \"revision\": \"ea4e8842ec8cd5365c6772bedb12cbd2\"\n },\n {\n \"url\": \"ui-service-management21.js\",\n \"revision\": \"af63dc6adde4cfbc7e4eac7114bf1c6f\"\n },\n {\n \"url\": \"ui-service-management22.js\",\n \"revision\": \"80c4b98a49417e4397a93d4372738fba\"\n },\n {\n \"url\": \"ui-service-management23.js\",\n \"revision\": \"db0e06cdc4e49117b848d75f6c9a18bd\"\n },\n {\n \"url\": \"ui-service-management24.js\",\n \"revision\": \"53dd8be26efb8aa6eede4751812f9f2f\"\n },\n {\n \"url\": \"ui-service-management25.js\",\n \"revision\": \"51b54a5005366880c170d19440277ee4\"\n },\n {\n \"url\": \"ui-service-management26.js\",\n \"revision\": \"525ca74c6cafd85344481e577152f8e6\"\n },\n {\n \"url\": \"ui-service-management27.js\",\n \"revision\": \"9b3b7c8ec3a0c9440d77eacd23b49d08\"\n },\n {\n \"url\": \"ui-service-management28.js\",\n \"revision\": \"529e7954ffbda79da59109455085529f\"\n },\n {\n \"url\": \"ui-service-management29.js\",\n \"revision\": \"53bc645bdd886c5de83f416890112b54\"\n },\n {\n \"url\": \"ui-service-management3.js\",\n \"revision\": \"01b75975f4df5681eecd70fb20aa7f31\"\n },\n {\n \"url\": \"ui-service-management30.js\",\n \"revision\": \"1839187b2af6dcb61db0dab0d16d8340\"\n },\n {\n \"url\": \"ui-service-management31.js\",\n \"revision\": \"a609cad2cc6d4e89b15d03a09de611a5\"\n },\n {\n \"url\": \"ui-service-management4.js\",\n \"revision\": \"dae73540425c9381cadbc23b5bbd4151\"\n },\n {\n \"url\": \"ui-service-management5.js\",\n \"revision\": \"ebc07b47746dc1e81272b49ee904f622\"\n },\n {\n \"url\": \"ui-service-management6.js\",\n \"revision\": \"462810f58f460b23085cc3ebea6f9afb\"\n },\n {\n \"url\": \"ui-service-management7.js\",\n \"revision\": \"c10a2d0f2c483a383f51d3ff2c4ecf14\"\n },\n {\n \"url\": \"ui-service-management8.js\",\n \"revision\": \"823f52666d557b0b0bde4a27ca63bc7a\"\n },\n {\n \"url\": \"ui-service-management9.js\",\n \"revision\": \"b372344d84d4186d4e018e6a5aa09187\"\n }\n], {});\n\nworkbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"/index.html\")));\n\n\nworkbox_routing_registerRoute(\"polyfills/*.js\", new workbox_strategies_CacheFirst(), 'GET');\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox","registerRoute","workbox_routing_NavigationRoute","workbox_precaching_createHandlerBoundToURL","workbox_strategies_CacheFirst"],"mappings":"inBAwBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,qCAEb,CAAE,GAEwBC,EAAAC,cAAC,IAAIC,EAAAA,gBAAgCC,EAAAA,wBAA2C,iBAGhFH,EAAAC,cAAC,iBAAkB,IAAIG,aAAiC"}
1
+ {"version":3,"file":"sw.js","sources":["../../../../../../tmp/9f6f8c7453aac72149749a56b72121c3/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-routing@6.6.0/node_modules/workbox-routing/registerRoute.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-strategies@6.6.0/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-core@6.6.0/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-precaching@6.6.0/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-routing@6.6.0/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/vsts/work/1/s/ui-service-management/node_modules/.pnpm/workbox-precaching@6.6.0/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"index.html\",\n \"revision\": \"33598f536a26a9f2ab0de37f455190f0\"\n },\n {\n \"url\": \"ui-service-management.js\",\n \"revision\": \"39e38a2e6cd0ca34d51bb15d39d30316\"\n },\n {\n \"url\": \"ui-service-management10.js\",\n \"revision\": \"81d67f3f259601632ca4340031a69fce\"\n },\n {\n \"url\": \"ui-service-management11.js\",\n \"revision\": \"bdb272eb21c1ba32658f367dad7c00cc\"\n },\n {\n \"url\": \"ui-service-management12.js\",\n \"revision\": \"3bf4c6643fac5b7d6ebaafc807e0726c\"\n },\n {\n \"url\": \"ui-service-management13.js\",\n \"revision\": \"e68fe1534ea992dc313b8d655babf8a4\"\n },\n {\n \"url\": \"ui-service-management14.js\",\n \"revision\": \"3a38d90bf3f2943a0481e9ccac1261a1\"\n },\n {\n \"url\": \"ui-service-management15.js\",\n \"revision\": \"0595d0fc21cfb37a7c3f2a2d609f291c\"\n },\n {\n \"url\": \"ui-service-management16.js\",\n \"revision\": \"93a5a1c6c14bc7376c6a7cf3178cd186\"\n },\n {\n \"url\": \"ui-service-management17.js\",\n \"revision\": \"ccee297c68000cf3facd49db81b59b00\"\n },\n {\n \"url\": \"ui-service-management18.js\",\n \"revision\": \"eba0ac899ae9a77efc777382cae03998\"\n },\n {\n \"url\": \"ui-service-management19.js\",\n \"revision\": \"43568a09e2e4e841a09050aa58a11468\"\n },\n {\n \"url\": \"ui-service-management2.js\",\n \"revision\": \"60e80b37576cf5503ed1ddb088199eef\"\n },\n {\n \"url\": \"ui-service-management20.js\",\n \"revision\": \"ea4e8842ec8cd5365c6772bedb12cbd2\"\n },\n {\n \"url\": \"ui-service-management21.js\",\n \"revision\": \"af63dc6adde4cfbc7e4eac7114bf1c6f\"\n },\n {\n \"url\": \"ui-service-management22.js\",\n \"revision\": \"80c4b98a49417e4397a93d4372738fba\"\n },\n {\n \"url\": \"ui-service-management23.js\",\n \"revision\": \"db0e06cdc4e49117b848d75f6c9a18bd\"\n },\n {\n \"url\": \"ui-service-management24.js\",\n \"revision\": \"53dd8be26efb8aa6eede4751812f9f2f\"\n },\n {\n \"url\": \"ui-service-management25.js\",\n \"revision\": \"51b54a5005366880c170d19440277ee4\"\n },\n {\n \"url\": \"ui-service-management26.js\",\n \"revision\": \"525ca74c6cafd85344481e577152f8e6\"\n },\n {\n \"url\": \"ui-service-management27.js\",\n \"revision\": \"898a8a9201705d7e301b0e3c412dd7d2\"\n },\n {\n \"url\": \"ui-service-management28.js\",\n \"revision\": \"529e7954ffbda79da59109455085529f\"\n },\n {\n \"url\": \"ui-service-management29.js\",\n \"revision\": \"53bc645bdd886c5de83f416890112b54\"\n },\n {\n \"url\": \"ui-service-management3.js\",\n \"revision\": \"01b75975f4df5681eecd70fb20aa7f31\"\n },\n {\n \"url\": \"ui-service-management30.js\",\n \"revision\": \"1839187b2af6dcb61db0dab0d16d8340\"\n },\n {\n \"url\": \"ui-service-management31.js\",\n \"revision\": \"cb383490b9d8c447433fbd944bfb2169\"\n },\n {\n \"url\": \"ui-service-management4.js\",\n \"revision\": \"dae73540425c9381cadbc23b5bbd4151\"\n },\n {\n \"url\": \"ui-service-management5.js\",\n \"revision\": \"ebc07b47746dc1e81272b49ee904f622\"\n },\n {\n \"url\": \"ui-service-management6.js\",\n \"revision\": \"462810f58f460b23085cc3ebea6f9afb\"\n },\n {\n \"url\": \"ui-service-management7.js\",\n \"revision\": \"c10a2d0f2c483a383f51d3ff2c4ecf14\"\n },\n {\n \"url\": \"ui-service-management8.js\",\n \"revision\": \"823f52666d557b0b0bde4a27ca63bc7a\"\n },\n {\n \"url\": \"ui-service-management9.js\",\n \"revision\": \"b372344d84d4186d4e018e6a5aa09187\"\n }\n], {});\n\nworkbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"/index.html\")));\n\n\nworkbox_routing_registerRoute(\"polyfills/*.js\", new workbox_strategies_CacheFirst(), 'GET');\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox","registerRoute","workbox_routing_NavigationRoute","workbox_precaching_createHandlerBoundToURL","workbox_strategies_CacheFirst"],"mappings":"inBAwBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,qCAEb,CAAE,GAEwBC,EAAAC,cAAC,IAAIC,EAAAA,gBAAgCC,EAAAA,wBAA2C,iBAGhFH,EAAAC,cAAC,iBAAkB,IAAIG,aAAiC"}
@@ -1 +1 @@
1
- import{__decorate as r}from"tslib";import{ifDefined as te}from"lit/directives/if-defined.js";import{MobxLitElement as q}from"@adobe/lit-mobx";import"@digital-realty/ix-button/ix-button.js";import"@digital-realty/ix-dialog/ix-dialog.js";import"@digital-realty/ix-drawer/ix-drawer.js";import"@digital-realty/ix-progress/ix-progress.js";import{css as ie,html as s,nothing as T,LitElement as E}from"lit";import{property as h,state as p,customElement as f}from"lit/decorators.js";import"./ui-service-management3.js";import{T as x,S as N,s as W,d as P,a as l,r as B,b as I,A as $,D as se,c as w,e as a,R as S,f as re,g as oe,h as ae,P as M,i as G,o as ne,n as le,j as ce,k as de,l as R,m as pe,p as he,q as ue,t as ve,u as Q,L as Z,G as ge,v as F,w as me,x as ke}from"./ui-service-management.js";import{S as L,a as _,C as ye}from"./ui-service-management9.js";import"./ui-service-management4.js";import"./ui-service-management5.js";import"./ui-service-management6.js";import"./ui-service-management7.js";import"./ui-service-management8.js";import"@digital-realty/ix-chip/ix-chip.js";import"@digital-realty/ix-date/ix-date.js";import"@digital-realty/ix-date-next/ix-date-next.js";import"@digital-realty/ix-grid/ix-grid-nav.js";import"@digital-realty/ix-grid/ix-grid-no-rows.js";import"@digital-realty/ix-tooltip/ix-tooltip.js";import{Router as Y}from"@vaadin/router";import{A as Te,F as v,O as y,b as j}from"./ui-service-management11.js";import{d as we}from"./ui-service-management12.js";import{g as Se,T as J}from"./ui-service-management13.js";import"@digital-realty/ix-select/ix-select.js";import"@digital-realty/ix-select/ix-select-option.js";import"@digital-realty/ix-wizard/ix-wizard-step.js";import"@digital-realty/ix-wizard/ix-wizard.js";import"@digital-realty/ix-email-list/ix-email-list.js";import"@digital-realty/ix-file-uploader/ix-file-uploader.js";import"@digital-realty/ix-textbox/ix-textbox.js";import"lit/directives/class-map.js";import"lit-html/directives/if-defined.js";import"lit-html/directives/unsafe-html.js";import"moment";import"@digital-realty/theme";import"moment-timezone";import"date-fns/format.js";import"mobx";import"mobx-persist-store";import"@digital-realty/ix-account-switcher";import"oidc-client-ts";import"@digital-realty/ix-icon-button/ix-icon-button.js";import"lit-html/directives/until.js";import"libphonenumber-js";import"@digital-realty/ix-toast/ix-toasters.js";import"./ui-service-management10.js";import"@digital-realty/ix-divider/ix-divider.js";import"@digital-realty/ix-checkbox/ix-checkbox.js";import"@digital-realty/ix-radio/ix-radio.js";import"@digital-realty/ix-grid/ix-grid.js";import"./ui-service-management14.js";import"@digital-realty/ix-timer/ix-timer.js";import"@digital-realty/ix-toast/ix-message-toast.js";import"@digital-realty/ix-time/ix-time.js";import"@digital-realty/ix-filter-select/ix-filter-select.js";import"intl-tel-input/utils";import"@digital-realty/ix-phone-input/ix-phone-input.js";import"@digital-realty/ix-accordion/ix-accordion.js";import"@digital-realty/ix-multi-select/ix-multi-select.js";import"@material/web/icon/icon.js";const X={Read:"Read",Approve:"Approve"},U=ie`.ticket-card-list{display:flex;flex-direction:column;align-items:flex-start;gap:12px;cursor:pointer}.ticket-card{position:relative;display:grid;grid-template-columns:auto auto;grid-template-rows:min-content auto;grid-column-gap:24px;grid-row-gap:8px;border-radius:8px;padding-right:21px;background:#fff;box-shadow:0 0 0 1px #e1e4e8 inset}.ticket-card__icon{grid-column-start:1;grid-row-start:1;grid-row-end:span 2;display:flex;width:180px;min-height:160px;justify-content:center;align-items:center;flex-shrink:0;border-radius:8px 0 0 8px;background:var(--brand-gradient-corner-to-corner,linear-gradient(90deg,#1456e0 0,#0d2497 99.23%))}.ticket-card__title{grid-column-start:2;grid-row-start:1;color:var(--Text-Dark,#092241);font-family:var(--root-secondary-font);font-size:20px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.15px;margin:16px 0 0 0}.ticket-card__info{grid-column-start:2;grid-row-start:2;color:var(--Text-Dark-2nd,rgba(9,34,65,.6));font-family:var(--root-primary-font);font-size:14px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.25px;margin-bottom:38px}.ticket-card__button{grid-column-start:2;grid-row-start:2;display:flex;justify-content:center;align-items:center;color:var(--Primary-Main,#1456e0);text-align:center;font-family:var(--root-secondary-font);font-size:14px;font-style:normal;font-weight:700;line-height:normal;letter-spacing:1.25px;text-transform:uppercase;background:0 0;border:none;cursor:pointer;position:absolute;bottom:14px;right:16px;white-space:nowrap;padding:0}.dr-ticket-card-list{display:flex;flex-direction:column;gap:12px;margin:0 1rem}.dr-ticket-card{display:flex;gap:12px;flex-direction:column;padding:18px;border-radius:8px;background:#fff;box-shadow:0 0 0 1px #e1e4e8 inset;align-items:flex-start}.dr-ticket-card md-icon{--_disabled-icon-color:#fff}.dr-ticket-card-title{font-size:13pt;padding-bottom:15px}.dr-ticket-card-blocked-message{font-size:.75rem;line-height:1.33em}.ticket-card-container{width:100%}@media screen and (max-width:600px){.ticket-card{grid-template-columns:auto min-content;grid-template-rows:auto auto auto;grid-column-gap:0;padding:16px}.ticket-card__title{grid-column-start:1;grid-row-start:1;margin:0;line-height:32px}.ticket-card__icon{grid-column-start:2;grid-row-start:1;grid-row-end:unset;width:32px;height:32px;min-height:unset;border-radius:16px}.ticket-card__info{grid-column-start:1;grid-column-end:span 2;grid-row-start:2;margin-bottom:0}.ticket-card__button{grid-column-start:1;grid-column-end:span 2;grid-row-start:3;position:unset;justify-self:end}}`;let A=class extends q{constructor(){super(...arguments),this.selectedSite=void 0,this.removalsServiceBackend=void 0,this.deliveryBlocked=void 0}get deliveryDisabled(){return this.deliveryBlocked!==!1&&(this.removalsServiceBackend===N.ServiceNow||this.removalsServiceBackend===void 0)}async firstUpdated(){var e,t,i,o;this.removalsServiceBackend=await W.getServiceBackend((e=this.selectedSite)===null||e===void 0?void 0:e.accountNumber,(t=this.selectedSite)===null||t===void 0?void 0:t.id,"Removals"),this.removalsServiceBackend===N.ServiceNow&&(this.deliveryBlocked=await P.isDeliveryBlocked((i=this.selectedSite)===null||i===void 0?void 0:i.id,(o=this.selectedSite)===null||o===void 0?void 0:o.accountNumber))}handleOnCreateTicket(e){e===l.Deliveries?P.updateSite(this.selectedSite):B.updateSite(this.selectedSite),I(this,$.CreateTicket,{ticketType:e})}renderLoadingProgress(){return P.loadings.isDeliveryBlocked?s`<div> <ix-progress .indeterminate="${!0}"></ix-progress> </div>`:T}renderTicketTypeSelectCard(e,t,i,o=!1){return s`<div class="dr-ticket-card"> <div> <div class="dr-ticket-card-title">${e}</div> <div> <ix-button name="${i}" @click="${()=>{this.handleOnCreateTicket(t)}}" has-icon trailing-icon .disabled="${o}"> <md-icon slot="icon">east</md-icon> <span class="create-service-ticket-btn"> START </span> </ix-button> </div> </div> ${t===l.Deliveries&&this.deliveryBlocked?s`<span name="delivery-blocked" class="dr-ticket-card-blocked-message"> ${se} </span>`:T} </div>`}render(){return s`<ix-wizard slot="content" .enableHideCloseButton="${!0}" .onCloseClick="${()=>this.onCloseClick()}" .onMinimiseClick="${()=>this.onMinimiseClick()}"> <div class="wizard-content"> <div class="form-margin"> <h1 class="dlr-text-page-title"> Create Delivery or Removal Service Ticket </h1> <div class="sub-header dlr-text-heading"> <h4>Choose a request Type</h4> </div> </div> <div class="form-wrapper pt-8"> <div class="dr-ticket-card-list form-margin"> ${this.renderLoadingProgress()} ${this.renderTicketTypeSelectCard("Delivery Ticket",l.Deliveries,"create-delivery-service-btn",this.deliveryDisabled)} ${this.removalsServiceBackend!==N.ServiceNow?T:this.renderTicketTypeSelectCard("Removal Ticket",l.Removals,"create-edit-removals-service-btn")} </div> </div> </div> </ix-wizard>`}};A.styles=[U,L,x],r([h({type:Object})],A.prototype,"selectedSite",void 0),r([p()],A.prototype,"removalsServiceBackend",void 0),r([p()],A.prototype,"deliveryBlocked",void 0),r([h({type:Function})],A.prototype,"onCloseClick",void 0),r([h({type:Function})],A.prototype,"onMinimiseClick",void 0),A=r([f("deliveries-removals-ticket-type-selector")],A);let D=class extends E{constructor(){super(...arguments),this.cardTitle="",this.info="",this.ticketType="",this.launchEvent={actionEvent:"",ticketType:"",triggerFn:e=>{}}}connectedCallback(){if(super.connectedCallback(),this.ticketType){const e=this.ticketType,t=`launch-${this.ticketType}`;this.launchEvent={actionEvent:t,ticketType:e,triggerFn:i=>{var o,n;this.handleOnCreateTicket(this.ticketType,(n=(o=i.detail)===null||o===void 0?void 0:o.fromLaunchpad)!==null&&n!==void 0?n:!1)}},document.addEventListener(t,i=>{this.launchEvent.triggerFn(i)})}}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(this.launchEvent.actionEvent,this.launchEvent.triggerFn)}handleOnCreateTicket(e,t=!1){I(this,$.CreateTicket,{ticketType:e,fromLaunchpad:t})}renderTicketTypeSvg(){switch(this.serviceType){case w.CustomerSupport:return _.CustomerSupport;case w.FacilityAccess:return _.FacilityAccess;case w.RemoteHands:return _.RemoteHands;case w.TroubleTicket:return _.TroubleTickets;case w.DeliveriesAndRemovals:default:return _.DeliveriesAndRemovals}}renderCreateTicketButton(){return s`<button type="button" target="" appearance="text" class="ticket-card__button"> Create Ticket <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"> <path d="M12 4L10.59 5.41L16.17 11H4V13H16.17L10.59 18.59L12 20L20 12L12 4Z" fill="#1456E0"/> </svg> </button>`}render(){return s`<div class="ticket-card" .onclick="${()=>this.handleOnCreateTicket(this.ticketType)}"> <div class="ticket-card__icon"> <svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg"> ${this.renderTicketTypeSvg()} </svg> </div> <h4 class="ticket-card__title">${this.cardTitle}</h4> <span class="ticket-card__info">${this.info}</span> ${this.renderCreateTicketButton()} </div>`}};D.styles=[U],r([h({type:String})],D.prototype,"cardTitle",void 0),r([h({type:String})],D.prototype,"info",void 0),r([h({type:String})],D.prototype,"ticketType",void 0),r([h({type:String})],D.prototype,"serviceType",void 0),r([p()],D.prototype,"launchEvent",void 0),D=r([f("ticket-type-card")],D);let V=class extends q{async firstUpdated(){await a.checkPermissions()}renderLoadingProgress(){return a.loadings.ticketCreatePermissionChecks?s`<div class="w-full"> <ix-progress .indeterminate="${!0}"></ix-progress> </div>`:T}renderCustomerSupportCard(){return a.permissions.hasCustomerCareCreatePermission?s`<ticket-type-card class="ticket-card-container" .serviceType="${w.CustomerSupport}" cardTitle="Customer Care" info="Having a billing, contract, or inventory question? Contact Customer Support for non-emergency needs and general questions." .ticketType="${l.CustomerSupport}"> </ticket-type-card>`:s``}renderFacilityAccessCard(){return a.permissions.hasFacilityAccessCreatePermission?s`<ticket-type-card class="ticket-card-container" serviceType="${w.FacilityAccess}" cardTitle="Facility Access" info="Need to request, modify or terminate physical access to select few or all of your locations? Submit a Facility Access Ticket to let our Data Center Security Team know and assist you with that." .ticketType="${l.FacilityAccess}"> </ticket-type-card>`:s``}renderRemoteHandsCard(){return a.permissions.hasRemoteHandsCreatePermission?s`<ticket-type-card class="ticket-card-container" .serviceType="${w.RemoteHands}" cardTitle="Remote Hands" info="Need to reboot, install a panel, or remove a gear? Let Digital Realty Technicians do the work for you. Remote Hands Fees apply (24/7/365)." .ticketType="${l.RemoteHands}"> </ticket-type-card>`:s``}renderDeliveriesAndRemovalsCard(){return a.permissions.hasDeliveriesAndRemovalsCreatePermission?s`<ticket-type-card class="ticket-card-container" .serviceType="${w.DeliveriesAndRemovals}" cardTitle="Deliveries &#38; Removals" info="Sending Equipment to a Digital Realty facility or having it removed? Let us know how to handle the shipment or removal." .ticketType="${l.DeliveriesAndRemovals}"> </ticket-type-card>`:T}renderTroubleTicketsCard(){return a.permissions.hasTroubleTicketsCreatePermission?s`<ticket-type-card class="ticket-card-container" .serviceType="${w.TroubleTicket}" cardTitle="Trouble Tickets" info="Trouble Tickets are for physical on-site issues and maintenance. Remote Hands fees will apply." .ticketType="${l.TroubleTickets}"> </ticket-type-card>`:T}render(){return s` <div class="ticket-card-list"> ${this.renderLoadingProgress()} ${this.renderCustomerSupportCard()} ${this.renderFacilityAccessCard()} ${this.renderRemoteHandsCard()} ${this.renderDeliveriesAndRemovalsCard()} ${this.renderTroubleTicketsCard()} </div>`}};V.styles=[U,x],V=r([f("ticket-type-card-list")],V);let K=class extends E{render(){return s` <div class="create-service-ticket-container wizard-content form-margin"> <div> <h1 class="dlr-text-page-title">Create Service Ticket</h1> <div class="create-service-ticket-container-subheader"> <h3 class="dlr-text-heading">Select a Ticket Type</h3> </div> </div> <ticket-type-card-list></ticket-type-card-list> </div>`}};K.styles=[x,L],K=r([f("create-service-ticket")],K);function Ce(e,t){let i="";switch(e){case"Delivery":i=S.DeliveriesTicketDetails;break;case"Removal":i=S.RemovalsTicketDetails;break;case"Remote Hands":i=S.RemoteHandsTicketDetails;break;case"Customer Care":i=S.CustomerCareTicketDetails;break;case"Facility Access":switch(t){case"Visitor Access":i=S.VisitorAccessTicketDetails;break;case"Permanent Badge":i=S.PermanentBadgeTicketDetails;break;case"OSP Access":i=S.OspAccessTicketDetails;break;case"PoP/POE Access":i=S.PopAccessTicketDetails;break}break;case"Trouble Ticket":i=S.TroubleTicketDetails;break}return i}function ee(){const{isStandalone:e}=re,{pathname:t}=Se;return!!(e||t.includes(Te))}const be=[R.Delivery,R.Removal];let C=class extends q{get vaadinGrid(){var e,t,i;const o=(e=this.shadowRoot)===null||e===void 0?void 0:e.querySelector("ix-grid");return(i=(t=o==null?void 0:o.shadowRoot)===null||t===void 0?void 0:t.querySelector("vaadin-grid"))!==null&&i!==void 0?i:null}constructor(){super(),this.items=void 0,this.isOpenTicketsFilterApplied=!0,this.hasDeliveryAndRemovalsCreatePrivilege=!1,this.fetchTicketsController=new AbortController,this.listSort="updated_at desc",this.listSkip=0,this.listPageSize=20,this.locationsHeaderLabel="Location",this.sitesHeaderLabel="Site",this.useNewDatePickerComponent=!1,this.isGridInitialized=!1,this.handlePopState=()=>{this.updateIsOpenTicketsFilterApplied()},this.useNewDatePickerComponent=oe.showNewDatePickerComponent()}async connectedCallback(){this.isGridInitialized=!0,window.addEventListener("popstate",this.handlePopState),this.updateIsOpenTicketsFilterApplied(),this.parsePermissionPrivilege();const e=await ae.getHashedRootAccountNumberAndUserEmail();e&&(this.hashedLocalStorageID=`service-tickets-${e}`),super.connectedCallback(),this.debouncedHandleTableChange=we(this.handleTableChange.bind(this),300),this.fetchUserCreatePermission()}parsePermissionPrivilege(){var e;const t=new URLSearchParams(window.location.search);this.permissionPrivilege=(e=t.get(M))!==null&&e!==void 0?e:void 0}clearPermissionPrivilege(){if(!this.permissionPrivilege)return;const e=new URL(window.location.href);e.searchParams.delete(M),this.permissionPrivilege=void 0,a.setPendingApprovalDialogShown(!1),window.history.replaceState(null,"",e.toString())}updateIsOpenTicketsFilterApplied(){const e=new URL(document.location.href).searchParams.get(G);this.isOpenTicketsFilterApplied=e!=="closed"}disconnectedCallback(){var e;this.loadingChangedListener&&((e=this.vaadinGrid)===null||e===void 0||e.removeEventListener("loading-changed",this.loadingChangedListener)),window.removeEventListener("popstate",this.handlePopState),super.disconnectedCallback(),this.isGridInitialized=!1}addEventListeners(){const{vaadinGrid:e}=this;e&&(this.loadingChangedListener=t=>{const i=t.target;i.loading||setTimeout(()=>{i.recalculateColumnWidths(),i.requestContentUpdate()},0)},e.addEventListener("loading-changed",this.loadingChangedListener))}handleKeyPress(e,t){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.handleRowClick(t))}getColumns(){return[{name:"ticketId",header:"Ticket #",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.ticketId} </div>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"],width:"160px"},{name:"ticketType",header:"Ticket Type",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.ticketType} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"200px"},{name:"requestType",header:"Request Type",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.requestType?e.requestType:s`&nbsp;`} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"200px"},{name:"category",header:"Category",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.category?e.category:s`&nbsp;`} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"240px"},{name:"subject",header:"Subject",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.subject?e.subject:s`&nbsp;`} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"372px"},{name:"sites",header:this.sitesHeaderLabel,bodyRenderer:e=>{var t;const i=(t=e.sites)===null||t===void 0?void 0:t.map(o=>{var n;return(n=o.name)===null||n===void 0?void 0:n.trim()}).filter(o=>!!o);return!i||i.length===0?s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${o=>this.handleKeyPress(o,e)}"> &nbsp; </div>`:s` <site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${o=>this.handleKeyPress(o,e)}" .items="${i}"> </site-location-cell>`},sortable:!0,filterable:!0,filterOperators:["contains","equals"],width:"224px"},{name:"locations",header:this.locationsHeaderLabel,bodyRenderer:e=>{var t;return s` <site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${i=>this.handleKeyPress(i,e)}" .items="${!((t=e.locations)===null||t===void 0)&&t.length?e.locations:[s`&nbsp;`]}"></site-location-cell>`},filterable:!0,filterOperators:["contains","equals"],sortable:!0,width:"224px"},{name:"createdBy",header:"Requester",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.createdBy} </div>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"],width:"160px"},{name:"accessRequestedFor",header:"Access Requested For",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.accessRequestedFor?e.accessRequestedFor:s`&nbsp;`} </div>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"],width:"180px"},{name:"createdAt",header:"Created Date",bodyRenderer:e=>s` <div> ${e.createdAt?this.useNewDatePickerComponent?s`<ix-date-next type="static" variant="date-time" .value="${e.createdAt}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"></ix-date-next>`:s`<ix-date type="static" variant="date-time" .value="${e.createdAt}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> </ix-date>`:""} </div>`,sortable:!0,filterable:!0,filterOperators:["contains"],dataType:"dateTime",width:"160px"},{name:"updatedAt",header:"Updated On",bodyRenderer:e=>s` <div> ${e.updatedAt?this.useNewDatePickerComponent?s`<ix-date-next type="static" variant="date-time" .value="${e.updatedAt}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"></ix-date-next>`:s`<ix-date type="static" variant="date-time" .value="${e.updatedAt}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> </ix-date>`:""} </div>`,sortable:!0,filterable:!0,filterOperators:["contains"],dataType:"dateTime",width:"160px"},{name:"status",header:"Status",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.status} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"140px"},{name:"actions",header:"Actions",width:"94px",bodyRenderer:e=>s` <div style="max-height:1.5REM;min-height:1.5REM"> ${this.renderActionButtons(e)} </div>`,frozenToEnd:!0,flexGrow:1,filterable:!1}]}async handleTableChange(e){this.lastDetail=e.detail;const{columnName:t,page:i,pageSize:o,sortOrder:n,filters:d,filtersOperators:c}=e.detail;this.listSort="updated_at desc",this.listPageSize=o;const m={status:this.tryGetStatusFilter(d,c,"status",v.Single,!0),ticket_id:this.tryGetFilter(d,c,"ticketId",v.Single,!0),ticket_type:this.tryGetFilter(d,c,"ticketType",v.Single,!0),request_type:this.tryGetFilter(d,c,"requestType",v.Single,!0),category:this.tryGetFilter(d,c,"category",v.Single,!0),subject:this.tryGetFilter(d,c,"subject",v.Single,!0),sites:this.tryGetFilter(d,c,"sites",v.ObjectCollection,!0,"name"),locations:this.tryGetFilter(d,c,"locations",v.StringCollection,!0),created_by:this.tryGetFilter(d,c,"createdBy",v.Single,!0),access_requested_for:this.tryGetFilter(d,c,"accessRequestedFor",v.Single,!0),created_at:this.tryGetFilter(d,c,"createdAt",v.Single,!1),updated_at:this.tryGetFilter(d,c,"updatedAt",v.Single,!1,void 0)};if(this.isGridInitialized&&!c.some(k=>d[k.columnField]!=null)&&this.permissionPrivilege&&this.clearPermissionPrivilege(),m.status.length===0&&(m.status=this.getTicketStatusFilter()),this.currentFilters=m,t&&n){const k=this.camelToSnakeCase(t);this.listSort=`${k} ${n}`}this.listSkip=(i-1)*this.listPageSize,this.fetchTicketsController.abort(),this.fetchTicketsController=new AbortController,this.fetchTickets({signal:this.fetchTicketsController.signal})}rewriteUrlForTicketsView(e){const t=new URLSearchParams(window.location.search);t.set(G,e),t.set("page","1"),Y.go(`${window.location.pathname}?${t.toString()}`)}filterOpenTickets(){this.isOpenTicketsFilterApplied=!0,this.updatePaginationToPageOne(),this.rewriteUrlForTicketsView("open")}filterClosedTickets(){this.isOpenTicketsFilterApplied=!1,this.updatePaginationToPageOne(),this.rewriteUrlForTicketsView("closed")}updatePaginationToPageOne(){var e,t,i;this.lastDetail.page=1;const o=(i=(t=(e=this.shadowRoot)===null||e===void 0?void 0:e.querySelector("ix-grid"))===null||t===void 0?void 0:t.shadowRoot)===null||i===void 0?void 0:i.querySelector("ix-pagination");o?o.updatePagination(this.lastDetail.page,this.lastDetail.pageSize):this.handleTableChange({detail:this.lastDetail})}camelToSnakeCase(e){return e.replace(/[A-Z]/g,(t,i)=>(i?"_":"")+t.toLowerCase())}getTicketStatusFilter(){let e;return this.isOpenTicketsFilterApplied?e=ne.map(t=>({matchValue:t,equalityOperator:y.Equals,concatenationOperator:y.Or,fieldType:v.Single,objectProperty:void 0})):e=le.map(t=>({matchValue:t,equalityOperator:y.Equals,concatenationOperator:y.Or,fieldType:v.Single,objectProperty:void 0})),e}async fetchTickets(e){var t,i;if(!ee())return;const o=this.listPageSize||20,n={...this.currentFilters};n!=null&&n.created_at&&(n.created_at=this.adjustDateFilterForTimeZone(n.created_at)),n!=null&&n.updated_at&&(n.updated_at=this.adjustDateFilterForTimeZone(n.updated_at));const d=j(n,{orderBy:this.listSort?[this.listSort]:["updated_at desc"],top:o,skip:this.listSkip}),c=new URLSearchParams(d);await a.GetServiceTicketList(c.get("$filter")||void 0,c.get("$orderby")||void 0,this.listSkip,o,this.permissionPrivilege,e),((t=a.serviceTickets)===null||t===void 0?void 0:t.items)!==void 0?this.items=(i=a.serviceTickets)===null||i===void 0?void 0:i.items:this.items=void 0,setTimeout(()=>{this.addEventListeners()},0)}adjustDateFilterForTimeZone(e){return e.flatMap(t=>{const{startOfDayLocal:i,endOfDayLocal:o}=ce(t.matchValue);return[{...t,matchValue:i.toISOString(),equalityOperator:y.GreaterThanOrEqualTo,concatenationOperator:y.And},{...t,matchValue:o.toISOString(),equalityOperator:y.LessThanOrEqualTo,concatenationOperator:y.And}]})}renderActionButtons(e){const t=e.ticketType;return!be.includes(t)||!this.hasUserCreatePrivilege(t)?s``:s` <ix-progress id="progress-${e.ticketId}" .linear="${!1}" indeterminate="false" style="--md-circular-progress-size:1.375REM;display:none;padding:.0625REM"></ix-progress> <ix-icon id="clone-icon-${e.ticketId}" style="--ix-icon-font-size:1.375REM;color:#1456e0;display:inline-block;padding:.0625REM;transform:scaleY(-1)" @click="${async i=>this.handleCloneClick(i,t,e.ticketId)}">content_copy </ix-icon> `}async fetchUserCreatePermission(){this.hasDeliveryAndRemovalsCreatePrivilege=await de()}hasUserCreatePrivilege(e){switch(e){case R.Delivery:case R.Removal:return this.hasDeliveryAndRemovalsCreatePrivilege;default:return!1}}async handleCloneClick(e,t,i){const o=e.currentTarget,{parentElement:n}=o;switch(this.hideCloneIcon(n,o,i),t){case R.Delivery:await P.getDeliveriesServiceTicket(i),I(this,$.CreateTicket,{ticketType:l.Deliveries,isCloned:!0,site:P.newTicket.site});break;case R.Removal:await B.getRemovalsServiceTicket(i),I(this,$.CreateTicket,{ticketType:l.Removals,isCloned:!0,site:B.newTicket.site});break;default:console.warn("Incorrect ticket type")}this.resetActionIconsToDefault(n,o,i)}hideCloneIcon(e,t,i){this.toggleVisibility(e,t,i,!0)}resetActionIconsToDefault(e,t,i){this.toggleVisibility(e,t,i,!1)}toggleVisibility(e,t,i,o){if(e){const n=e.querySelector(`#progress-${i}`);n&&(t.style.display=o?"none":"inline-block",n.style.display=o?"inline-block":"none")}}tryGetFilter(e,t,i,o,n,d=void 0,c=y.Or){const m=t.find(b=>b.columnField===i);if(m===void 0)return[];const k=e[i];if(k===void 0)return[];const O=m.operator==="contains"?y.Contains:y.Equals;return(Array.isArray(k)?k:[k]).map(b=>({matchValue:b.value||b,equalityOperator:O,concatenationOperator:c,fieldType:o,ignoreCase:n,objectProperty:d}))}tryGetStatusFilter(e,t,i,o,n,d=void 0){const c=this.getTicketStatusFilter(),m=this.tryGetFilter(e,t,i,o,n,d,y.And);return c.concat(m)}get downloadMenuItems(){const e=[{label:"All Tickets",name:"download-all-tickets",onClick:t=>{this.handleDownloadCsv(t)}},{label:"Current Filter",name:"download-current-filter",onClick:t=>{this.handleDownloadCsv(t)}}];return this.isOpenTicketsFilterApplied?e.push({label:"Open Tickets",name:"download-open-tickets",onClick:t=>{this.handleDownloadCsv(t)}}):e.push({label:"Closed Tickets",name:"download-closed-tickets",onClick:t=>{this.handleDownloadCsv(t)}}),e}generateQuery(e=void 0){if(e!==void 0)return j(e);const t=this.getTicketStatusFilter();return j({status:t})}async handleDownloadCsv(e){let t;switch(e){case"download-all-tickets":await a.downloadServiceTickets();break;case"download-current-filter":t=new URLSearchParams(this.generateQuery(this.currentFilters)),await a.downloadServiceTickets(t.get("$filter")||void 0,this.permissionPrivilege);break;case"download-closed-tickets":this.isOpenTicketsFilterApplied=!1,t=new URLSearchParams(this.generateQuery()),await a.downloadServiceTickets(t.get("$filter")||void 0);break;default:this.isOpenTicketsFilterApplied=!0,t=new URLSearchParams(this.generateQuery()),await a.downloadServiceTickets(t.get("$filter")||void 0);break}}handleRowClick(e){if(e.ticketId){const t=Ce(e==null?void 0:e.ticketType,e==null?void 0:e.requestType);t&&Y.go(pe(t,{ticketId:e.ticketId}))}}renderGridNoRows(){const e=a.error.serviceTicketsGrid?"Sorry, an error has occurred":this.items!==void 0?"No data to display":null;return e?s` <ix-grid-no-rows slot="no-rows" message="${e}"></ix-grid-no-rows>`:T}render(){var e,t;return s` <div class="maintenance-grid"> <ix-grid session-storage-key="sm-service-tickets" column-reordering-allowed .columns="${this.getColumns()}" .rows="${(e=this.items)!==null&&e!==void 0?e:[]}" .recordCount="${(t=a===null||a===void 0?void 0:a.serviceTickets)===null||t===void 0?void 0:t.totalCount}" .addParamsToURL="${ee()}" .readParamsFromURL="${!0}" .downloadMenuItems="${this.downloadMenuItems}" .pageSizes="${[10,20,50,100]}" .pageSize="${this.listPageSize}" @change="${this.debouncedHandleTableChange}" .localStorageID="${this.hashedLocalStorageID}" .refreshDataOnColumnVisibilityChange="${!1}" .filterValueChangeDebounceTime="${he().ServiceTicketListFilterValueChangeDebounceTime}" .isLoading="${a.loadings.serviceTicketList}" .isDownloading="${a.loadings.downloadServiceTicketList}" .preservedQueryParamKeys="${[G,M]}" .filterMaxDate="${ue()}" .useNewDatePicker="${this.useNewDatePickerComponent}"> <div slot="header"> ${this.permissionPrivilege===X.Approve?s`<div class="sub-header ml-[8px] font-bold"> <h3>Showing tickets only pending approval</h3> </div>`:s`<ix-grid-nav class="reports-grid-nav" .buttons="${[{text:"Open Tickets",selected:this.isOpenTicketsFilterApplied,onClick:()=>this.filterOpenTickets()},{text:"Closed Tickets",selected:!this.isOpenTicketsFilterApplied,onClick:()=>this.filterClosedTickets()}]}"></ix-grid-nav>`} </div> ${this.renderGridNoRows()} </ix-grid> <ix-tooltip></ix-tooltip> </div>`}};C.styles=[x,L],r([p()],C.prototype,"currentFilters",void 0),r([p()],C.prototype,"hashedLocalStorageID",void 0),r([p()],C.prototype,"permissionPrivilege",void 0),r([h({type:Array})],C.prototype,"items",void 0),r([h({type:Boolean})],C.prototype,"isOpenTicketsFilterApplied",void 0),r([h({type:Boolean})],C.prototype,"hasDeliveryAndRemovalsCreatePrivilege",void 0),C=r([f("service-ticket-list")],C);let g=class extends E{constructor(){super(...arguments),this.isDialogOpen=!0,this.modalTitle="",this.accountNumber="",this.sites=[],this.isLoading=!0,this.isAssignableSite=!0,this.isTicketSupported=!0,this.assignableSites=[],this.ticketNotSupportedMessage=ve,this.backendService=void 0}async firstUpdated(){if(this.permissionType){const[e,t]=await Promise.all([Q(Z.Create,this.permissionType,this.assignableProcess,this.accountNumber),Q(Z.Create,this.permissionType,void 0,this.accountNumber)]);this.assignableSites=e,this.sites=t,this.assignableSites.length===1&&await this.isTicketSupportedForSite(this.assignableSites[0])&&(this.onSiteSelected(this.assignableSites[0]),this.onAccept()),this.isLoading=!1,this.requestUpdate()}}isStartButtonDisabled(){return!this.selectedSite||!this.isTicketSupported||!this.isAssignableSite}async onSiteSelectionChanged(e){this.isAssignableSite=this.assignableSites.some(t=>t.siteId===e.siteId),this.isTicketSupported=await this.isTicketSupportedForSite(e),this.onSiteSelected(e)}async isTicketSupportedForSite(e){return a.ticketType===l.TroubleTickets?(this.backendService=await W.getServiceBackend(this.accountNumber,e.siteId,"Trouble_tickets"),this.backendService!==N.Insite):!0}render(){return s` <ix-dialog id="site-selection-dialog" ?open="${this.isDialogOpen}" @keydown="${e=>{e.key==="Escape"&&this.onReject()}}" @closed="${()=>this.onReject()}"> <div slot="content" class="form-wrapper"> ${this.isLoading?s` <div class="w-full flex justify-center mt-6 pb-16"> <ix-progress .indeterminate="${!0}" .linear="${!1}"></ix-progress> </div>`:s` <h3 class="dialog__title dlr-text-heading"> ${this.modalTitle} <span role="button" tabindex="0" @click="${()=>{this.onReject()}}" @keydown="${e=>{(e.key==="Enter"||e.key==="Space")&&this.onReject()}}"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> ${ye} </svg></span> </h3> <div class="site-dialog__short-desc"> Which site are you submitting a ticket for? </div> <div class="form-wrapper__fields site-selection-dialog"> ${this.renderSiteSelect()} </div> <div slot="actions" class="site-selection-dialog__button-container"> <ix-button .disabled="${this.isStartButtonDisabled()}" appearance="text" @click="${()=>{this.onAccept()}}"> <span class="button-label site-selection-dialog__button-text">START</span> </ix-button> </div>`} </div> </ix-dialog>`}renderSiteSelect(){return!this.sites||this.sites.length<1?s` <div>Loading sites...</div>`:s` <input class="blank-focus-input-styles"> <ix-select class="dialog-input" label="Site" menu-positioning="fixed" .wideMenu="${!0}" required @input="${e=>{this.onSiteSelectionChanged(e.target.value)}}" @blur="${e=>{var t;((t=e.relatedTarget)===null||t===void 0?void 0:t.id)==="site-selection-dialog"&&this.onReject()}}"> ${this.sites.map(e=>s` <ix-select-option .value="${e}" .selected="${this.selectedSite===e}"> <div slot="headline">${e.displayName}</div> </ix-select-option>`)} </ix-select> ${this.renderWarning()} `}renderWarning(){let e="";return this.isTicketSupported?this.isAssignableSite||(e=ge):e=this.ticketNotSupportedMessage,e?s`<div> <span id="ticketNotSupportedMessage" class="supporting-text error">*${e}</span> </div>`:s`<div class="required-text">*Required</div>`}};g.styles=[x,L,J],r([h({type:Function})],g.prototype,"onAccept",void 0),r([h({type:Function})],g.prototype,"onReject",void 0),r([h({type:String})],g.prototype,"selectedSite",void 0),r([h({type:Function})],g.prototype,"onSiteSelected",void 0),r([h({type:Boolean})],g.prototype,"isDialogOpen",void 0),r([h({type:String})],g.prototype,"modalTitle",void 0),r([h({type:String})],g.prototype,"permissionType",void 0),r([h({type:String})],g.prototype,"accountNumber",void 0),r([h({type:String})],g.prototype,"assignableProcess",void 0),r([p()],g.prototype,"sites",void 0),r([p()],g.prototype,"isLoading",void 0),g=r([f("site-selection-dialog")],g);let z=class extends E{constructor(){super(...arguments),this.onAccept=()=>{}}render(){return s` <ix-dialog id="pending-approval-info-dialog" class="selection-dialog" ?open="${!0}" @keydown="${e=>{e.key==="Escape"&&this.onAccept()}}" @closed="${()=>this.onAccept()}"> <div slot="content" class="py-[24px]"> <div class="pending-approval-dialog__title"> <div> <h3 class="dlr-text-heading">Pending Approval Shown</h3> </div> </div> <div class="pending-approval-dialog__short-desc"> This page is filtered to show only items awaiting your approval. You can adjust or clear the filter at any time. </div> </div> <div slot="actions" class="pending-approval-dialog__button-container"> <ix-button appearance="text" @click="${()=>{this.onAccept()}}"> <span class="button-label">Continue</span> </ix-button> </div> </ix-dialog> `}};z.styles=[x,L,J],r([h({type:Function})],z.prototype,"onAccept",void 0),z=r([f("pending-approval-info-dialog")],z);function fe(e){switch(e){case l.DeliveriesAndRemovals:return F.DeliveriesRemovals;case l.RemoteHands:return F.RemoteHands;case l.CustomerSupport:return F.CustomerCare;case l.TroubleTickets:return F.TroubleTickets;case l.VisitorAccess:return F.VisitorAccess;case l.PermanentBadge:return F.PermanentBadge;default:return"default"}}function $e(e){switch(e){case l.DeliveriesAndRemovals:return"Deliveries";case l.RemoteHands:return"Remote_hands";case l.CustomerSupport:return"Customer_care";case l.TroubleTickets:return"Trouble_tickets";case l.FacilityAccess:return"Facilities_access";default:return}}let u=class extends q{constructor(){super(...arguments),this.showDrawer=!1,this.showSiteSelectionDialog=!1,this.showAccountSelectionDialog=!1,this.siteAccepted=!1,this.accountAccepted=!1,this.selectedSite=void 0,this.selectedAccount=void 0,this.modalTitle="",this.permissionType="",this.fromLaunchpad=!0,this.renderDrawer=!1,this.showPendingApprovalDialog=!1,this.drawerHandler=()=>this.toggleDrawer(),this.navigationHandler=()=>this.handleNavigation(),this.onCreateHandler=e=>{var t,i,o,n,d,c,m,k,O,b,H;this.isCloned=(t=e.detail)===null||t===void 0?void 0:t.isCloned,this.showDrawer||this.toggleDrawer(),!((i=e.detail)===null||i===void 0)&&i.ticketType&&(this.permissionType=fe((o=e.detail)===null||o===void 0?void 0:o.ticketType),this.assignableProcess=$e((n=e.detail)===null||n===void 0?void 0:n.ticketType),this.isCloned&&(this.selectedSite=(d=e.detail)===null||d===void 0?void 0:d.site,this.selectedAccount=(m=(c=e.detail)===null||c===void 0?void 0:c.site)===null||m===void 0?void 0:m.accountNumber,this.siteAccepted=!0,this.accountAccepted=!0)),this.fromLaunchpad=(O=(k=e.detail)===null||k===void 0?void 0:k.fromLaunchpad)!==null&&O!==void 0?O:!1,a.updateTicketType((b=e.detail)===null||b===void 0?void 0:b.ticketType),!((H=e.detail)===null||H===void 0)&&H.ticketType||this.resetComponent()}}toggleDrawer(){this.showDrawer=!this.showDrawer,!this.showDrawer&&(this.resetComponent(),a.clear())}async firstUpdated(){window.addEventListener($.DrawerClose,this.drawerHandler),window.addEventListener($.CreateTicket,this.onCreateHandler),window.addEventListener("popstate",this.navigationHandler)}updated(e){(e.has("showAccountSelectionDialog")||e.has("showSiteSelectionDialog"))&&(this.renderDrawer=!(this.showAccountSelectionDialog||this.showSiteSelectionDialog))}get hideAside(){var e;return a.ticketType===l.FacilityAccess||!((e=this.selectedSite)===null||e===void 0)&&e.siteId&&this.siteAccepted?!1:this.fromLaunchpad}async handleAccountSelection(e){this.selectedAccount=e}async handleSiteSelection(e){this.selectedSite=e}connectedCallback(){super.connectedCallback(),a.clear(),this.parsePermissionPrivilege(),this.checkAndShowPendingApprovalDialog()}parsePermissionPrivilege(){var e;const t=new URLSearchParams(window.location.search);this.permissionPrivilege=(e=t.get(M))!==null&&e!==void 0?e:void 0}checkAndShowPendingApprovalDialog(){this.permissionPrivilege===X.Approve&&!a.hasPendingApprovalDialogBeenShown&&(this.showPendingApprovalDialog=!0)}handlePendingApprovalDialogClose(){this.showPendingApprovalDialog=!1,a.setPendingApprovalDialogShown(!0)}handleNavigation(){window.location.pathname.startsWith("/service-management/")||a.setPendingApprovalDialogShown(!1)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener($.DrawerClose,this.drawerHandler),window.removeEventListener($.CreateTicket,this.onCreateHandler),window.removeEventListener("popstate",this.navigationHandler),setTimeout(()=>{window.location.pathname.startsWith("/service-management/")||a.setPendingApprovalDialogShown(!1)},0)}resetComponent(){this.selectedSite=void 0,this.selectedAccount=void 0,this.siteAccepted=!1,this.accountAccepted=!1,this.showSiteSelectionDialog=!1,this.showAccountSelectionDialog=!1,a.ticketType=void 0}handleSiteSelectionDialogClosed(e){this.siteAccepted=e,this.showSiteSelectionDialog=!1,e||(this.fromLaunchpad&&this.toggleDrawer(),this.resetComponent())}handleAccountSelectionDialogClosed(e){this.showAccountSelectionDialog=!1,this.accountAccepted=e,e||(this.fromLaunchpad&&this.toggleDrawer(),this.resetComponent())}handleToggleClick(){var e;const t=(e=this.shadowRoot)===null||e===void 0?void 0:e.querySelector("ix-drawer");t==null||t.handleCloseButton()}handleMinimisedClick(){var e;const t=(e=this.shadowRoot)===null||e===void 0?void 0:e.querySelector("ix-drawer");t==null||t.onMinimised()}getAccountNumber(){return this.selectedAccount}renderTicketWizard(){var e,t,i;if(a.ticketType===l.CustomerSupport){if(!((e=this.selectedSite)===null||e===void 0)&&e.siteId&&this.siteAccepted)return s`<customer-care-service-ticket-wizard .selectedSite="${this.selectedSite}" slot="content" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></customer-care-service-ticket-wizard>`;this.modalTitle="Customer Care",this.accountAccepted?this.showSiteSelectionDialog=!0:this.showAccountSelectionDialog=!0}else{if(a.ticketType===l.Deliveries)return P.newTicket.accountNumber=this.getAccountNumber(),s`<deliveries-service-ticket-wizard slot="content" .isClone="${this.isCloned}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></deliveries-service-ticket-wizard>`;if(a.ticketType===l.Removals)return B.newTicket.accountNumber=this.getAccountNumber(),s`<removals-service-ticket-wizard slot="content" .isCloned="${this.isCloned}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></removals-service-ticket-wizard>`;if(a.ticketType===l.RemoteHands){if(this.modalTitle="Remote Hands",!((t=this.selectedSite)===null||t===void 0)&&t.siteId&&this.siteAccepted)return me.updateAccountNumber(this.getAccountNumber()),s`<remote-hands-service-ticket-wizard slot="content" .selectedSite="${this.selectedSite}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></remote-hands-service-ticket-wizard>`;this.accountAccepted?this.showSiteSelectionDialog=!0:this.showAccountSelectionDialog=!0}else if(a.ticketType===l.TroubleTickets){if(!((i=this.selectedSite)===null||i===void 0)&&i.siteId&&this.siteAccepted)return s`<create-edit-trouble-ticket-wizard slot="content" .selectedSite="${this.selectedSite}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></create-edit-trouble-ticket-wizard>`;this.modalTitle="Trouble Tickets",this.accountAccepted?this.showSiteSelectionDialog=!0:this.showAccountSelectionDialog=!0}else if(a.ticketType===l.DeliveriesAndRemovals){if(this.modalTitle="Deliveries & Removals",this.selectedSite&&this.siteAccepted)return s`<deliveries-removals-ticket-type-selector slot="content" .selectedSite="${this.selectedSite}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></deliveries-removals-ticket-type-selector>`;this.accountAccepted?this.showSiteSelectionDialog=!0:this.showAccountSelectionDialog=!0}else if(a.ticketType===l.FacilityAccess)return s`<facility-access-service-ticket-wizard slot="content" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></facility-access-service-ticket-wizard>`}return s`<create-service-ticket slot="content"></create-service-ticket>`}render(){return s` ${this.showPendingApprovalDialog?s`<pending-approval-info-dialog .onAccept="${()=>this.handlePendingApprovalDialogClose()}"></pending-approval-info-dialog>`:T} ${this.renderDrawer?s` <ix-drawer ?isVisible="${this.showDrawer}" .showConfirmationDialogOnClose="${a.ticketType!==void 0&&a.ticketStep!==ke}" .onClosed="${()=>this.toggleDrawer()}" .hideAside="${this.hideAside}" .hideClose="${te(a.ticketType)}" .scrollable="${!1}"> ${this.renderTicketWizard()} </ix-drawer>`:T} ${this.showSiteSelectionDialog?s`<site-selection-dialog .isDialogOpen="${this.showSiteSelectionDialog}" .modalTitle="${this.modalTitle}" .onAccept="${()=>this.handleSiteSelectionDialogClosed(!0)}" .onReject="${()=>this.handleSiteSelectionDialogClosed(!1)}" .onSiteSelected="${e=>this.handleSiteSelection(e)}" .selectedSite="${this.selectedSite}" .permissionType="${this.permissionType}" .accountNumber="${this.selectedAccount}" .assignableProcess="${this.assignableProcess}"></site-selection-dialog>`:T} ${this.showAccountSelectionDialog?s`<account-selection-dialog .isDialogOpen="${this.showAccountSelectionDialog}" .modalTitle="${this.modalTitle}" modalText="You have access to multiple accounts, which account are you submitting this ticket for?" .onAccept="${()=>this.handleAccountSelectionDialogClosed(!0)}" .onReject="${()=>this.handleAccountSelectionDialogClosed(!1)}" .selectedAccount="${this.selectedAccount}" .permissionType="${this.permissionType}" .assignableProcess="${this.assignableProcess}" .onAccountSelected="${e=>this.handleAccountSelection(e)}" buttonText="Next"></account-selection-dialog>`:T} <service-ticket-list></service-ticket-list> `}};u.styles=[x,L],r([p()],u.prototype,"showDrawer",void 0),r([p()],u.prototype,"showSiteSelectionDialog",void 0),r([p()],u.prototype,"showAccountSelectionDialog",void 0),r([p()],u.prototype,"siteAccepted",void 0),r([p()],u.prototype,"accountAccepted",void 0),r([p()],u.prototype,"selectedSite",void 0),r([p()],u.prototype,"selectedAccount",void 0),r([p()],u.prototype,"modalTitle",void 0),r([p()],u.prototype,"permissionType",void 0),r([p()],u.prototype,"assignableProcess",void 0),r([p()],u.prototype,"fromLaunchpad",void 0),r([p()],u.prototype,"renderDrawer",void 0),r([p()],u.prototype,"showPendingApprovalDialog",void 0),r([p()],u.prototype,"permissionPrivilege",void 0),u=r([f("service-tickets-view")],u);export{u as ServiceTicketsView};
1
+ import{__decorate as r}from"tslib";import{ifDefined as te}from"lit/directives/if-defined.js";import{MobxLitElement as q}from"@adobe/lit-mobx";import"@digital-realty/ix-button/ix-button.js";import"@digital-realty/ix-dialog/ix-dialog.js";import"@digital-realty/ix-drawer/ix-drawer.js";import"@digital-realty/ix-progress/ix-progress.js";import{css as ie,html as s,nothing as T,LitElement as E}from"lit";import{property as h,state as p,customElement as f}from"lit/decorators.js";import"./ui-service-management3.js";import{T as x,S as N,s as W,d as P,a as l,r as B,b as I,A as $,D as se,c as w,e as a,R as S,f as re,g as oe,h as ae,P as M,i as G,o as ne,n as le,j as ce,k as de,l as R,m as pe,p as he,q as ue,t as ve,u as Q,L as Z,G as ge,v as F,w as me,x as ke}from"./ui-service-management.js";import{S as L,a as _,C as ye}from"./ui-service-management9.js";import"./ui-service-management4.js";import"./ui-service-management5.js";import"./ui-service-management6.js";import"./ui-service-management7.js";import"./ui-service-management8.js";import"@digital-realty/ix-chip/ix-chip.js";import"@digital-realty/ix-date/ix-date.js";import"@digital-realty/ix-date-next/ix-date-next.js";import"@digital-realty/ix-grid/ix-grid-nav.js";import"@digital-realty/ix-grid/ix-grid-no-rows.js";import{Router as Y}from"@vaadin/router";import{A as Te,F as v,O as y,b as j}from"./ui-service-management11.js";import{d as we}from"./ui-service-management12.js";import{g as Se,T as J}from"./ui-service-management13.js";import"@digital-realty/ix-select/ix-select.js";import"@digital-realty/ix-select/ix-select-option.js";import"@digital-realty/ix-wizard/ix-wizard-step.js";import"@digital-realty/ix-wizard/ix-wizard.js";import"@digital-realty/ix-email-list/ix-email-list.js";import"@digital-realty/ix-file-uploader/ix-file-uploader.js";import"@digital-realty/ix-textbox/ix-textbox.js";import"lit/directives/class-map.js";import"lit-html/directives/if-defined.js";import"lit-html/directives/unsafe-html.js";import"moment";import"@digital-realty/theme";import"moment-timezone";import"date-fns/format.js";import"mobx";import"mobx-persist-store";import"@digital-realty/ix-account-switcher";import"oidc-client-ts";import"@digital-realty/ix-icon-button/ix-icon-button.js";import"lit-html/directives/until.js";import"libphonenumber-js";import"@digital-realty/ix-toast/ix-toasters.js";import"./ui-service-management10.js";import"@digital-realty/ix-divider/ix-divider.js";import"@digital-realty/ix-checkbox/ix-checkbox.js";import"@digital-realty/ix-radio/ix-radio.js";import"@digital-realty/ix-grid/ix-grid.js";import"./ui-service-management14.js";import"@digital-realty/ix-timer/ix-timer.js";import"@digital-realty/ix-toast/ix-message-toast.js";import"@digital-realty/ix-time/ix-time.js";import"@digital-realty/ix-filter-select/ix-filter-select.js";import"intl-tel-input/utils";import"@digital-realty/ix-phone-input/ix-phone-input.js";import"@digital-realty/ix-accordion/ix-accordion.js";import"@digital-realty/ix-multi-select/ix-multi-select.js";import"@material/web/icon/icon.js";const X={Read:"Read",Approve:"Approve"},U=ie`.ticket-card-list{display:flex;flex-direction:column;align-items:flex-start;gap:12px;cursor:pointer}.ticket-card{position:relative;display:grid;grid-template-columns:auto auto;grid-template-rows:min-content auto;grid-column-gap:24px;grid-row-gap:8px;border-radius:8px;padding-right:21px;background:#fff;box-shadow:0 0 0 1px #e1e4e8 inset}.ticket-card__icon{grid-column-start:1;grid-row-start:1;grid-row-end:span 2;display:flex;width:180px;min-height:160px;justify-content:center;align-items:center;flex-shrink:0;border-radius:8px 0 0 8px;background:var(--brand-gradient-corner-to-corner,linear-gradient(90deg,#1456e0 0,#0d2497 99.23%))}.ticket-card__title{grid-column-start:2;grid-row-start:1;color:var(--Text-Dark,#092241);font-family:var(--root-secondary-font);font-size:20px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.15px;margin:16px 0 0 0}.ticket-card__info{grid-column-start:2;grid-row-start:2;color:var(--Text-Dark-2nd,rgba(9,34,65,.6));font-family:var(--root-primary-font);font-size:14px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.25px;margin-bottom:38px}.ticket-card__button{grid-column-start:2;grid-row-start:2;display:flex;justify-content:center;align-items:center;color:var(--Primary-Main,#1456e0);text-align:center;font-family:var(--root-secondary-font);font-size:14px;font-style:normal;font-weight:700;line-height:normal;letter-spacing:1.25px;text-transform:uppercase;background:0 0;border:none;cursor:pointer;position:absolute;bottom:14px;right:16px;white-space:nowrap;padding:0}.dr-ticket-card-list{display:flex;flex-direction:column;gap:12px;margin:0 1rem}.dr-ticket-card{display:flex;gap:12px;flex-direction:column;padding:18px;border-radius:8px;background:#fff;box-shadow:0 0 0 1px #e1e4e8 inset;align-items:flex-start}.dr-ticket-card md-icon{--_disabled-icon-color:#fff}.dr-ticket-card-title{font-size:13pt;padding-bottom:15px}.dr-ticket-card-blocked-message{font-size:.75rem;line-height:1.33em}.ticket-card-container{width:100%}@media screen and (max-width:600px){.ticket-card{grid-template-columns:auto min-content;grid-template-rows:auto auto auto;grid-column-gap:0;padding:16px}.ticket-card__title{grid-column-start:1;grid-row-start:1;margin:0;line-height:32px}.ticket-card__icon{grid-column-start:2;grid-row-start:1;grid-row-end:unset;width:32px;height:32px;min-height:unset;border-radius:16px}.ticket-card__info{grid-column-start:1;grid-column-end:span 2;grid-row-start:2;margin-bottom:0}.ticket-card__button{grid-column-start:1;grid-column-end:span 2;grid-row-start:3;position:unset;justify-self:end}}`;let A=class extends q{constructor(){super(...arguments),this.selectedSite=void 0,this.removalsServiceBackend=void 0,this.deliveryBlocked=void 0}get deliveryDisabled(){return this.deliveryBlocked!==!1&&(this.removalsServiceBackend===N.ServiceNow||this.removalsServiceBackend===void 0)}async firstUpdated(){var e,t,i,o;this.removalsServiceBackend=await W.getServiceBackend((e=this.selectedSite)===null||e===void 0?void 0:e.accountNumber,(t=this.selectedSite)===null||t===void 0?void 0:t.id,"Removals"),this.removalsServiceBackend===N.ServiceNow&&(this.deliveryBlocked=await P.isDeliveryBlocked((i=this.selectedSite)===null||i===void 0?void 0:i.id,(o=this.selectedSite)===null||o===void 0?void 0:o.accountNumber))}handleOnCreateTicket(e){e===l.Deliveries?P.updateSite(this.selectedSite):B.updateSite(this.selectedSite),I(this,$.CreateTicket,{ticketType:e})}renderLoadingProgress(){return P.loadings.isDeliveryBlocked?s`<div> <ix-progress .indeterminate="${!0}"></ix-progress> </div>`:T}renderTicketTypeSelectCard(e,t,i,o=!1){return s`<div class="dr-ticket-card"> <div> <div class="dr-ticket-card-title">${e}</div> <div> <ix-button name="${i}" @click="${()=>{this.handleOnCreateTicket(t)}}" has-icon trailing-icon .disabled="${o}"> <md-icon slot="icon">east</md-icon> <span class="create-service-ticket-btn"> START </span> </ix-button> </div> </div> ${t===l.Deliveries&&this.deliveryBlocked?s`<span name="delivery-blocked" class="dr-ticket-card-blocked-message"> ${se} </span>`:T} </div>`}render(){return s`<ix-wizard slot="content" .enableHideCloseButton="${!0}" .onCloseClick="${()=>this.onCloseClick()}" .onMinimiseClick="${()=>this.onMinimiseClick()}"> <div class="wizard-content"> <div class="form-margin"> <h1 class="dlr-text-page-title"> Create Delivery or Removal Service Ticket </h1> <div class="sub-header dlr-text-heading"> <h4>Choose a request Type</h4> </div> </div> <div class="form-wrapper pt-8"> <div class="dr-ticket-card-list form-margin"> ${this.renderLoadingProgress()} ${this.renderTicketTypeSelectCard("Delivery Ticket",l.Deliveries,"create-delivery-service-btn",this.deliveryDisabled)} ${this.removalsServiceBackend!==N.ServiceNow?T:this.renderTicketTypeSelectCard("Removal Ticket",l.Removals,"create-edit-removals-service-btn")} </div> </div> </div> </ix-wizard>`}};A.styles=[U,L,x],r([h({type:Object})],A.prototype,"selectedSite",void 0),r([p()],A.prototype,"removalsServiceBackend",void 0),r([p()],A.prototype,"deliveryBlocked",void 0),r([h({type:Function})],A.prototype,"onCloseClick",void 0),r([h({type:Function})],A.prototype,"onMinimiseClick",void 0),A=r([f("deliveries-removals-ticket-type-selector")],A);let D=class extends E{constructor(){super(...arguments),this.cardTitle="",this.info="",this.ticketType="",this.launchEvent={actionEvent:"",ticketType:"",triggerFn:e=>{}}}connectedCallback(){if(super.connectedCallback(),this.ticketType){const e=this.ticketType,t=`launch-${this.ticketType}`;this.launchEvent={actionEvent:t,ticketType:e,triggerFn:i=>{var o,n;this.handleOnCreateTicket(this.ticketType,(n=(o=i.detail)===null||o===void 0?void 0:o.fromLaunchpad)!==null&&n!==void 0?n:!1)}},document.addEventListener(t,i=>{this.launchEvent.triggerFn(i)})}}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(this.launchEvent.actionEvent,this.launchEvent.triggerFn)}handleOnCreateTicket(e,t=!1){I(this,$.CreateTicket,{ticketType:e,fromLaunchpad:t})}renderTicketTypeSvg(){switch(this.serviceType){case w.CustomerSupport:return _.CustomerSupport;case w.FacilityAccess:return _.FacilityAccess;case w.RemoteHands:return _.RemoteHands;case w.TroubleTicket:return _.TroubleTickets;case w.DeliveriesAndRemovals:default:return _.DeliveriesAndRemovals}}renderCreateTicketButton(){return s`<button type="button" target="" appearance="text" class="ticket-card__button"> Create Ticket <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"> <path d="M12 4L10.59 5.41L16.17 11H4V13H16.17L10.59 18.59L12 20L20 12L12 4Z" fill="#1456E0"/> </svg> </button>`}render(){return s`<div class="ticket-card" .onclick="${()=>this.handleOnCreateTicket(this.ticketType)}"> <div class="ticket-card__icon"> <svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg"> ${this.renderTicketTypeSvg()} </svg> </div> <h4 class="ticket-card__title">${this.cardTitle}</h4> <span class="ticket-card__info">${this.info}</span> ${this.renderCreateTicketButton()} </div>`}};D.styles=[U],r([h({type:String})],D.prototype,"cardTitle",void 0),r([h({type:String})],D.prototype,"info",void 0),r([h({type:String})],D.prototype,"ticketType",void 0),r([h({type:String})],D.prototype,"serviceType",void 0),r([p()],D.prototype,"launchEvent",void 0),D=r([f("ticket-type-card")],D);let V=class extends q{async firstUpdated(){await a.checkPermissions()}renderLoadingProgress(){return a.loadings.ticketCreatePermissionChecks?s`<div class="w-full"> <ix-progress .indeterminate="${!0}"></ix-progress> </div>`:T}renderCustomerSupportCard(){return a.permissions.hasCustomerCareCreatePermission?s`<ticket-type-card class="ticket-card-container" .serviceType="${w.CustomerSupport}" cardTitle="Customer Care" info="Having a billing, contract, or inventory question? Contact Customer Support for non-emergency needs and general questions." .ticketType="${l.CustomerSupport}"> </ticket-type-card>`:s``}renderFacilityAccessCard(){return a.permissions.hasFacilityAccessCreatePermission?s`<ticket-type-card class="ticket-card-container" serviceType="${w.FacilityAccess}" cardTitle="Facility Access" info="Need to request, modify or terminate physical access to select few or all of your locations? Submit a Facility Access Ticket to let our Data Center Security Team know and assist you with that." .ticketType="${l.FacilityAccess}"> </ticket-type-card>`:s``}renderRemoteHandsCard(){return a.permissions.hasRemoteHandsCreatePermission?s`<ticket-type-card class="ticket-card-container" .serviceType="${w.RemoteHands}" cardTitle="Remote Hands" info="Need to reboot, install a panel, or remove a gear? Let Digital Realty Technicians do the work for you. Remote Hands Fees apply (24/7/365)." .ticketType="${l.RemoteHands}"> </ticket-type-card>`:s``}renderDeliveriesAndRemovalsCard(){return a.permissions.hasDeliveriesAndRemovalsCreatePermission?s`<ticket-type-card class="ticket-card-container" .serviceType="${w.DeliveriesAndRemovals}" cardTitle="Deliveries &#38; Removals" info="Sending Equipment to a Digital Realty facility or having it removed? Let us know how to handle the shipment or removal." .ticketType="${l.DeliveriesAndRemovals}"> </ticket-type-card>`:T}renderTroubleTicketsCard(){return a.permissions.hasTroubleTicketsCreatePermission?s`<ticket-type-card class="ticket-card-container" .serviceType="${w.TroubleTicket}" cardTitle="Trouble Tickets" info="Trouble Tickets are for physical on-site issues and maintenance. Remote Hands fees will apply." .ticketType="${l.TroubleTickets}"> </ticket-type-card>`:T}render(){return s` <div class="ticket-card-list"> ${this.renderLoadingProgress()} ${this.renderCustomerSupportCard()} ${this.renderFacilityAccessCard()} ${this.renderRemoteHandsCard()} ${this.renderDeliveriesAndRemovalsCard()} ${this.renderTroubleTicketsCard()} </div>`}};V.styles=[U,x],V=r([f("ticket-type-card-list")],V);let K=class extends E{render(){return s` <div class="create-service-ticket-container wizard-content form-margin"> <div> <h1 class="dlr-text-page-title">Create Service Ticket</h1> <div class="create-service-ticket-container-subheader"> <h3 class="dlr-text-heading">Select a Ticket Type</h3> </div> </div> <ticket-type-card-list></ticket-type-card-list> </div>`}};K.styles=[x,L],K=r([f("create-service-ticket")],K);function Ce(e,t){let i="";switch(e){case"Delivery":i=S.DeliveriesTicketDetails;break;case"Removal":i=S.RemovalsTicketDetails;break;case"Remote Hands":i=S.RemoteHandsTicketDetails;break;case"Customer Care":i=S.CustomerCareTicketDetails;break;case"Facility Access":switch(t){case"Visitor Access":i=S.VisitorAccessTicketDetails;break;case"Permanent Badge":i=S.PermanentBadgeTicketDetails;break;case"OSP Access":i=S.OspAccessTicketDetails;break;case"PoP/POE Access":i=S.PopAccessTicketDetails;break}break;case"Trouble Ticket":i=S.TroubleTicketDetails;break}return i}function ee(){const{isStandalone:e}=re,{pathname:t}=Se;return!!(e||t.includes(Te))}const be=[R.Delivery,R.Removal];let C=class extends q{get vaadinGrid(){var e,t,i;const o=(e=this.shadowRoot)===null||e===void 0?void 0:e.querySelector("ix-grid");return(i=(t=o==null?void 0:o.shadowRoot)===null||t===void 0?void 0:t.querySelector("vaadin-grid"))!==null&&i!==void 0?i:null}constructor(){super(),this.items=void 0,this.isOpenTicketsFilterApplied=!0,this.hasDeliveryAndRemovalsCreatePrivilege=!1,this.fetchTicketsController=new AbortController,this.listSort="updated_at desc",this.listSkip=0,this.listPageSize=20,this.locationsHeaderLabel="Location",this.sitesHeaderLabel="Site",this.useNewDatePickerComponent=!1,this.isGridInitialized=!1,this.handlePopState=()=>{this.updateIsOpenTicketsFilterApplied()},this.useNewDatePickerComponent=oe.showNewDatePickerComponent()}async connectedCallback(){this.isGridInitialized=!0,window.addEventListener("popstate",this.handlePopState),this.updateIsOpenTicketsFilterApplied(),this.parsePermissionPrivilege();const e=await ae.getHashedRootAccountNumberAndUserEmail();e&&(this.hashedLocalStorageID=`service-tickets-${e}`),super.connectedCallback(),this.debouncedHandleTableChange=we(this.handleTableChange.bind(this),300),this.fetchUserCreatePermission()}parsePermissionPrivilege(){var e;const t=new URLSearchParams(window.location.search);this.permissionPrivilege=(e=t.get(M))!==null&&e!==void 0?e:void 0}clearPermissionPrivilege(){if(!this.permissionPrivilege)return;const e=new URL(window.location.href);e.searchParams.delete(M),this.permissionPrivilege=void 0,a.setPendingApprovalDialogShown(!1),window.history.replaceState(null,"",e.toString())}updateIsOpenTicketsFilterApplied(){const e=new URL(document.location.href).searchParams.get(G);this.isOpenTicketsFilterApplied=e!=="closed"}disconnectedCallback(){var e;this.loadingChangedListener&&((e=this.vaadinGrid)===null||e===void 0||e.removeEventListener("loading-changed",this.loadingChangedListener)),window.removeEventListener("popstate",this.handlePopState),super.disconnectedCallback(),this.isGridInitialized=!1}addEventListeners(){const{vaadinGrid:e}=this;e&&(this.loadingChangedListener=t=>{const i=t.target;i.loading||setTimeout(()=>{i.recalculateColumnWidths(),i.requestContentUpdate()},0)},e.addEventListener("loading-changed",this.loadingChangedListener))}handleKeyPress(e,t){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.handleRowClick(t))}getColumns(){return[{name:"ticketId",header:"Ticket #",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.ticketId} </div>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"],width:"160px"},{name:"ticketType",header:"Ticket Type",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.ticketType} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"200px"},{name:"requestType",header:"Request Type",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.requestType?e.requestType:s`&nbsp;`} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"200px"},{name:"category",header:"Category",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.category?e.category:s`&nbsp;`} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"240px"},{name:"subject",header:"Subject",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.subject?e.subject:s`&nbsp;`} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"372px"},{name:"sites",header:this.sitesHeaderLabel,bodyRenderer:e=>{var t;const i=(t=e.sites)===null||t===void 0?void 0:t.map(o=>{var n;return(n=o.name)===null||n===void 0?void 0:n.trim()}).filter(o=>!!o);return!i||i.length===0?s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${o=>this.handleKeyPress(o,e)}"> &nbsp; </div>`:s` <site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${o=>this.handleKeyPress(o,e)}" .items="${i}"> </site-location-cell>`},sortable:!0,filterable:!0,filterOperators:["contains","equals"],width:"224px"},{name:"locations",header:this.locationsHeaderLabel,bodyRenderer:e=>{var t;return s` <site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${i=>this.handleKeyPress(i,e)}" .items="${!((t=e.locations)===null||t===void 0)&&t.length?e.locations:[s`&nbsp;`]}"></site-location-cell>`},filterable:!0,filterOperators:["contains","equals"],sortable:!0,width:"224px"},{name:"createdBy",header:"Requester",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.createdBy} </div>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"],width:"160px"},{name:"accessRequestedFor",header:"Access Requested For",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.accessRequestedFor?e.accessRequestedFor:s`&nbsp;`} </div>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"],width:"180px"},{name:"createdAt",header:"Created Date",bodyRenderer:e=>s` <div> ${e.createdAt?this.useNewDatePickerComponent?s`<ix-date-next type="static" variant="date-time" .value="${e.createdAt}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"></ix-date-next>`:s`<ix-date type="static" variant="date-time" .value="${e.createdAt}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> </ix-date>`:""} </div>`,sortable:!0,filterable:!0,filterOperators:["contains"],dataType:"dateTime",width:"160px"},{name:"updatedAt",header:"Updated On",bodyRenderer:e=>s` <div> ${e.updatedAt?this.useNewDatePickerComponent?s`<ix-date-next type="static" variant="date-time" .value="${e.updatedAt}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"></ix-date-next>`:s`<ix-date type="static" variant="date-time" .value="${e.updatedAt}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> </ix-date>`:""} </div>`,sortable:!0,filterable:!0,filterOperators:["contains"],dataType:"dateTime",width:"160px"},{name:"status",header:"Status",bodyRenderer:e=>s` <div @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}"> ${e.status} </div>`,filterable:!0,filterOperators:["contains","equals"],width:"140px"},{name:"actions",header:"Actions",width:"94px",bodyRenderer:e=>s` <div style="max-height:1.5REM;min-height:1.5REM"> ${this.renderActionButtons(e)} </div>`,frozenToEnd:!0,flexGrow:1,filterable:!1}]}async handleTableChange(e){this.lastDetail=e.detail;const{columnName:t,page:i,pageSize:o,sortOrder:n,filters:d,filtersOperators:c}=e.detail;this.listSort="updated_at desc",this.listPageSize=o;const m={status:this.tryGetStatusFilter(d,c,"status",v.Single,!0),ticket_id:this.tryGetFilter(d,c,"ticketId",v.Single,!0),ticket_type:this.tryGetFilter(d,c,"ticketType",v.Single,!0),request_type:this.tryGetFilter(d,c,"requestType",v.Single,!0),category:this.tryGetFilter(d,c,"category",v.Single,!0),subject:this.tryGetFilter(d,c,"subject",v.Single,!0),sites:this.tryGetFilter(d,c,"sites",v.ObjectCollection,!0,"name"),locations:this.tryGetFilter(d,c,"locations",v.StringCollection,!0),created_by:this.tryGetFilter(d,c,"createdBy",v.Single,!0),access_requested_for:this.tryGetFilter(d,c,"accessRequestedFor",v.Single,!0),created_at:this.tryGetFilter(d,c,"createdAt",v.Single,!1),updated_at:this.tryGetFilter(d,c,"updatedAt",v.Single,!1,void 0)};if(this.isGridInitialized&&!c.some(k=>d[k.columnField]!=null)&&this.permissionPrivilege&&this.clearPermissionPrivilege(),m.status.length===0&&(m.status=this.getTicketStatusFilter()),this.currentFilters=m,t&&n){const k=this.camelToSnakeCase(t);this.listSort=`${k} ${n}`}this.listSkip=(i-1)*this.listPageSize,this.fetchTicketsController.abort(),this.fetchTicketsController=new AbortController,this.fetchTickets({signal:this.fetchTicketsController.signal})}rewriteUrlForTicketsView(e){const t=new URLSearchParams(window.location.search);t.set(G,e),t.set("page","1"),Y.go(`${window.location.pathname}?${t.toString()}`)}filterOpenTickets(){this.isOpenTicketsFilterApplied=!0,this.updatePaginationToPageOne(),this.rewriteUrlForTicketsView("open")}filterClosedTickets(){this.isOpenTicketsFilterApplied=!1,this.updatePaginationToPageOne(),this.rewriteUrlForTicketsView("closed")}updatePaginationToPageOne(){var e,t,i;this.lastDetail.page=1;const o=(i=(t=(e=this.shadowRoot)===null||e===void 0?void 0:e.querySelector("ix-grid"))===null||t===void 0?void 0:t.shadowRoot)===null||i===void 0?void 0:i.querySelector("ix-pagination");o?o.updatePagination(this.lastDetail.page,this.lastDetail.pageSize):this.handleTableChange({detail:this.lastDetail})}camelToSnakeCase(e){return e.replace(/[A-Z]/g,(t,i)=>(i?"_":"")+t.toLowerCase())}getTicketStatusFilter(){let e;return this.isOpenTicketsFilterApplied?e=ne.map(t=>({matchValue:t,equalityOperator:y.Equals,concatenationOperator:y.Or,fieldType:v.Single,objectProperty:void 0})):e=le.map(t=>({matchValue:t,equalityOperator:y.Equals,concatenationOperator:y.Or,fieldType:v.Single,objectProperty:void 0})),e}async fetchTickets(e){var t,i;if(!ee())return;const o=this.listPageSize||20,n={...this.currentFilters};n!=null&&n.created_at&&(n.created_at=this.adjustDateFilterForTimeZone(n.created_at)),n!=null&&n.updated_at&&(n.updated_at=this.adjustDateFilterForTimeZone(n.updated_at));const d=j(n,{orderBy:this.listSort?[this.listSort]:["updated_at desc"],top:o,skip:this.listSkip}),c=new URLSearchParams(d);await a.GetServiceTicketList(c.get("$filter")||void 0,c.get("$orderby")||void 0,this.listSkip,o,this.permissionPrivilege,e),((t=a.serviceTickets)===null||t===void 0?void 0:t.items)!==void 0?this.items=(i=a.serviceTickets)===null||i===void 0?void 0:i.items:this.items=void 0,setTimeout(()=>{this.addEventListeners()},0)}adjustDateFilterForTimeZone(e){return e.flatMap(t=>{const{startOfDayLocal:i,endOfDayLocal:o}=ce(t.matchValue);return[{...t,matchValue:i.toISOString(),equalityOperator:y.GreaterThanOrEqualTo,concatenationOperator:y.And},{...t,matchValue:o.toISOString(),equalityOperator:y.LessThanOrEqualTo,concatenationOperator:y.And}]})}renderActionButtons(e){const t=e.ticketType;return!be.includes(t)||!this.hasUserCreatePrivilege(t)?s``:s` <ix-progress id="progress-${e.ticketId}" .linear="${!1}" indeterminate="false" style="--md-circular-progress-size:1.375REM;display:none;padding:.0625REM"></ix-progress> <ix-icon id="clone-icon-${e.ticketId}" style="--ix-icon-font-size:1.375REM;color:#1456e0;display:inline-block;padding:.0625REM;transform:scaleY(-1)" @click="${async i=>this.handleCloneClick(i,t,e.ticketId)}">content_copy </ix-icon> `}async fetchUserCreatePermission(){this.hasDeliveryAndRemovalsCreatePrivilege=await de()}hasUserCreatePrivilege(e){switch(e){case R.Delivery:case R.Removal:return this.hasDeliveryAndRemovalsCreatePrivilege;default:return!1}}async handleCloneClick(e,t,i){const o=e.currentTarget,{parentElement:n}=o;switch(this.hideCloneIcon(n,o,i),t){case R.Delivery:await P.getDeliveriesServiceTicket(i),I(this,$.CreateTicket,{ticketType:l.Deliveries,isCloned:!0,site:P.newTicket.site});break;case R.Removal:await B.getRemovalsServiceTicket(i),I(this,$.CreateTicket,{ticketType:l.Removals,isCloned:!0,site:B.newTicket.site});break;default:console.warn("Incorrect ticket type")}this.resetActionIconsToDefault(n,o,i)}hideCloneIcon(e,t,i){this.toggleVisibility(e,t,i,!0)}resetActionIconsToDefault(e,t,i){this.toggleVisibility(e,t,i,!1)}toggleVisibility(e,t,i,o){if(e){const n=e.querySelector(`#progress-${i}`);n&&(t.style.display=o?"none":"inline-block",n.style.display=o?"inline-block":"none")}}tryGetFilter(e,t,i,o,n,d=void 0,c=y.Or){const m=t.find(b=>b.columnField===i);if(m===void 0)return[];const k=e[i];if(k===void 0)return[];const O=m.operator==="contains"?y.Contains:y.Equals;return(Array.isArray(k)?k:[k]).map(b=>({matchValue:b.value||b,equalityOperator:O,concatenationOperator:c,fieldType:o,ignoreCase:n,objectProperty:d}))}tryGetStatusFilter(e,t,i,o,n,d=void 0){const c=this.getTicketStatusFilter(),m=this.tryGetFilter(e,t,i,o,n,d,y.And);return c.concat(m)}get downloadMenuItems(){const e=[{label:"All Tickets",name:"download-all-tickets",onClick:t=>{this.handleDownloadCsv(t)}},{label:"Current Filter",name:"download-current-filter",onClick:t=>{this.handleDownloadCsv(t)}}];return this.isOpenTicketsFilterApplied?e.push({label:"Open Tickets",name:"download-open-tickets",onClick:t=>{this.handleDownloadCsv(t)}}):e.push({label:"Closed Tickets",name:"download-closed-tickets",onClick:t=>{this.handleDownloadCsv(t)}}),e}generateQuery(e=void 0){if(e!==void 0)return j(e);const t=this.getTicketStatusFilter();return j({status:t})}async handleDownloadCsv(e){let t;switch(e){case"download-all-tickets":await a.downloadServiceTickets();break;case"download-current-filter":t=new URLSearchParams(this.generateQuery(this.currentFilters)),await a.downloadServiceTickets(t.get("$filter")||void 0,this.permissionPrivilege);break;case"download-closed-tickets":this.isOpenTicketsFilterApplied=!1,t=new URLSearchParams(this.generateQuery()),await a.downloadServiceTickets(t.get("$filter")||void 0);break;default:this.isOpenTicketsFilterApplied=!0,t=new URLSearchParams(this.generateQuery()),await a.downloadServiceTickets(t.get("$filter")||void 0);break}}handleRowClick(e){if(e.ticketId){const t=Ce(e==null?void 0:e.ticketType,e==null?void 0:e.requestType);t&&Y.go(pe(t,{ticketId:e.ticketId}))}}renderGridNoRows(){const e=a.error.serviceTicketsGrid?"Sorry, an error has occurred":this.items!==void 0?"No data to display":null;return e?s` <ix-grid-no-rows slot="no-rows" message="${e}"></ix-grid-no-rows>`:T}render(){var e,t;return s` <div class="maintenance-grid"> <ix-grid session-storage-key="sm-service-tickets" column-reordering-allowed .columns="${this.getColumns()}" .rows="${(e=this.items)!==null&&e!==void 0?e:[]}" .recordCount="${(t=a===null||a===void 0?void 0:a.serviceTickets)===null||t===void 0?void 0:t.totalCount}" .addParamsToURL="${ee()}" .readParamsFromURL="${!0}" .downloadMenuItems="${this.downloadMenuItems}" .pageSizes="${[10,20,50,100]}" .pageSize="${this.listPageSize}" @change="${this.debouncedHandleTableChange}" .localStorageID="${this.hashedLocalStorageID}" .refreshDataOnColumnVisibilityChange="${!1}" .filterValueChangeDebounceTime="${he().ServiceTicketListFilterValueChangeDebounceTime}" .isLoading="${a.loadings.serviceTicketList}" .isDownloading="${a.loadings.downloadServiceTicketList}" .preservedQueryParamKeys="${[G,M]}" .filterMaxDate="${ue()}" .useNewDatePicker="${this.useNewDatePickerComponent}"> <div slot="header"> ${this.permissionPrivilege===X.Approve?s`<div class="sub-header ml-[8px] font-bold"> <h3>Showing tickets only pending approval</h3> </div>`:s`<ix-grid-nav class="reports-grid-nav" .buttons="${[{text:"Open Tickets",selected:this.isOpenTicketsFilterApplied,onClick:()=>this.filterOpenTickets()},{text:"Closed Tickets",selected:!this.isOpenTicketsFilterApplied,onClick:()=>this.filterClosedTickets()}]}"></ix-grid-nav>`} </div> ${this.renderGridNoRows()} </ix-grid> </div>`}};C.styles=[x,L],r([p()],C.prototype,"currentFilters",void 0),r([p()],C.prototype,"hashedLocalStorageID",void 0),r([p()],C.prototype,"permissionPrivilege",void 0),r([h({type:Array})],C.prototype,"items",void 0),r([h({type:Boolean})],C.prototype,"isOpenTicketsFilterApplied",void 0),r([h({type:Boolean})],C.prototype,"hasDeliveryAndRemovalsCreatePrivilege",void 0),C=r([f("service-ticket-list")],C);let g=class extends E{constructor(){super(...arguments),this.isDialogOpen=!0,this.modalTitle="",this.accountNumber="",this.sites=[],this.isLoading=!0,this.isAssignableSite=!0,this.isTicketSupported=!0,this.assignableSites=[],this.ticketNotSupportedMessage=ve,this.backendService=void 0}async firstUpdated(){if(this.permissionType){const[e,t]=await Promise.all([Q(Z.Create,this.permissionType,this.assignableProcess,this.accountNumber),Q(Z.Create,this.permissionType,void 0,this.accountNumber)]);this.assignableSites=e,this.sites=t,this.assignableSites.length===1&&await this.isTicketSupportedForSite(this.assignableSites[0])&&(this.onSiteSelected(this.assignableSites[0]),this.onAccept()),this.isLoading=!1,this.requestUpdate()}}isStartButtonDisabled(){return!this.selectedSite||!this.isTicketSupported||!this.isAssignableSite}async onSiteSelectionChanged(e){this.isAssignableSite=this.assignableSites.some(t=>t.siteId===e.siteId),this.isTicketSupported=await this.isTicketSupportedForSite(e),this.onSiteSelected(e)}async isTicketSupportedForSite(e){return a.ticketType===l.TroubleTickets?(this.backendService=await W.getServiceBackend(this.accountNumber,e.siteId,"Trouble_tickets"),this.backendService!==N.Insite):!0}render(){return s` <ix-dialog id="site-selection-dialog" ?open="${this.isDialogOpen}" @keydown="${e=>{e.key==="Escape"&&this.onReject()}}" @closed="${()=>this.onReject()}"> <div slot="content" class="form-wrapper"> ${this.isLoading?s` <div class="w-full flex justify-center mt-6 pb-16"> <ix-progress .indeterminate="${!0}" .linear="${!1}"></ix-progress> </div>`:s` <h3 class="dialog__title dlr-text-heading"> ${this.modalTitle} <span role="button" tabindex="0" @click="${()=>{this.onReject()}}" @keydown="${e=>{(e.key==="Enter"||e.key==="Space")&&this.onReject()}}"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> ${ye} </svg></span> </h3> <div class="site-dialog__short-desc"> Which site are you submitting a ticket for? </div> <div class="form-wrapper__fields site-selection-dialog"> ${this.renderSiteSelect()} </div> <div slot="actions" class="site-selection-dialog__button-container"> <ix-button .disabled="${this.isStartButtonDisabled()}" appearance="text" @click="${()=>{this.onAccept()}}"> <span class="button-label site-selection-dialog__button-text">START</span> </ix-button> </div>`} </div> </ix-dialog>`}renderSiteSelect(){return!this.sites||this.sites.length<1?s` <div>Loading sites...</div>`:s` <input class="blank-focus-input-styles"> <ix-select class="dialog-input" label="Site" menu-positioning="fixed" .wideMenu="${!0}" required @input="${e=>{this.onSiteSelectionChanged(e.target.value)}}" @blur="${e=>{var t;((t=e.relatedTarget)===null||t===void 0?void 0:t.id)==="site-selection-dialog"&&this.onReject()}}"> ${this.sites.map(e=>s` <ix-select-option .value="${e}" .selected="${this.selectedSite===e}"> <div slot="headline">${e.displayName}</div> </ix-select-option>`)} </ix-select> ${this.renderWarning()} `}renderWarning(){let e="";return this.isTicketSupported?this.isAssignableSite||(e=ge):e=this.ticketNotSupportedMessage,e?s`<div> <span id="ticketNotSupportedMessage" class="supporting-text error">*${e}</span> </div>`:s`<div class="required-text">*Required</div>`}};g.styles=[x,L,J],r([h({type:Function})],g.prototype,"onAccept",void 0),r([h({type:Function})],g.prototype,"onReject",void 0),r([h({type:String})],g.prototype,"selectedSite",void 0),r([h({type:Function})],g.prototype,"onSiteSelected",void 0),r([h({type:Boolean})],g.prototype,"isDialogOpen",void 0),r([h({type:String})],g.prototype,"modalTitle",void 0),r([h({type:String})],g.prototype,"permissionType",void 0),r([h({type:String})],g.prototype,"accountNumber",void 0),r([h({type:String})],g.prototype,"assignableProcess",void 0),r([p()],g.prototype,"sites",void 0),r([p()],g.prototype,"isLoading",void 0),g=r([f("site-selection-dialog")],g);let z=class extends E{constructor(){super(...arguments),this.onAccept=()=>{}}render(){return s` <ix-dialog id="pending-approval-info-dialog" class="selection-dialog" ?open="${!0}" @keydown="${e=>{e.key==="Escape"&&this.onAccept()}}" @closed="${()=>this.onAccept()}"> <div slot="content" class="py-[24px]"> <div class="pending-approval-dialog__title"> <div> <h3 class="dlr-text-heading">Pending Approval Shown</h3> </div> </div> <div class="pending-approval-dialog__short-desc"> This page is filtered to show only items awaiting your approval. You can adjust or clear the filter at any time. </div> </div> <div slot="actions" class="pending-approval-dialog__button-container"> <ix-button appearance="text" @click="${()=>{this.onAccept()}}"> <span class="button-label">Continue</span> </ix-button> </div> </ix-dialog> `}};z.styles=[x,L,J],r([h({type:Function})],z.prototype,"onAccept",void 0),z=r([f("pending-approval-info-dialog")],z);function fe(e){switch(e){case l.DeliveriesAndRemovals:return F.DeliveriesRemovals;case l.RemoteHands:return F.RemoteHands;case l.CustomerSupport:return F.CustomerCare;case l.TroubleTickets:return F.TroubleTickets;case l.VisitorAccess:return F.VisitorAccess;case l.PermanentBadge:return F.PermanentBadge;default:return"default"}}function $e(e){switch(e){case l.DeliveriesAndRemovals:return"Deliveries";case l.RemoteHands:return"Remote_hands";case l.CustomerSupport:return"Customer_care";case l.TroubleTickets:return"Trouble_tickets";case l.FacilityAccess:return"Facilities_access";default:return}}let u=class extends q{constructor(){super(...arguments),this.showDrawer=!1,this.showSiteSelectionDialog=!1,this.showAccountSelectionDialog=!1,this.siteAccepted=!1,this.accountAccepted=!1,this.selectedSite=void 0,this.selectedAccount=void 0,this.modalTitle="",this.permissionType="",this.fromLaunchpad=!0,this.renderDrawer=!1,this.showPendingApprovalDialog=!1,this.drawerHandler=()=>this.toggleDrawer(),this.navigationHandler=()=>this.handleNavigation(),this.onCreateHandler=e=>{var t,i,o,n,d,c,m,k,O,b,H;this.isCloned=(t=e.detail)===null||t===void 0?void 0:t.isCloned,this.showDrawer||this.toggleDrawer(),!((i=e.detail)===null||i===void 0)&&i.ticketType&&(this.permissionType=fe((o=e.detail)===null||o===void 0?void 0:o.ticketType),this.assignableProcess=$e((n=e.detail)===null||n===void 0?void 0:n.ticketType),this.isCloned&&(this.selectedSite=(d=e.detail)===null||d===void 0?void 0:d.site,this.selectedAccount=(m=(c=e.detail)===null||c===void 0?void 0:c.site)===null||m===void 0?void 0:m.accountNumber,this.siteAccepted=!0,this.accountAccepted=!0)),this.fromLaunchpad=(O=(k=e.detail)===null||k===void 0?void 0:k.fromLaunchpad)!==null&&O!==void 0?O:!1,a.updateTicketType((b=e.detail)===null||b===void 0?void 0:b.ticketType),!((H=e.detail)===null||H===void 0)&&H.ticketType||this.resetComponent()}}toggleDrawer(){this.showDrawer=!this.showDrawer,!this.showDrawer&&(this.resetComponent(),a.clear())}async firstUpdated(){window.addEventListener($.DrawerClose,this.drawerHandler),window.addEventListener($.CreateTicket,this.onCreateHandler),window.addEventListener("popstate",this.navigationHandler)}updated(e){(e.has("showAccountSelectionDialog")||e.has("showSiteSelectionDialog"))&&(this.renderDrawer=!(this.showAccountSelectionDialog||this.showSiteSelectionDialog))}get hideAside(){var e;return a.ticketType===l.FacilityAccess||!((e=this.selectedSite)===null||e===void 0)&&e.siteId&&this.siteAccepted?!1:this.fromLaunchpad}async handleAccountSelection(e){this.selectedAccount=e}async handleSiteSelection(e){this.selectedSite=e}connectedCallback(){super.connectedCallback(),a.clear(),this.parsePermissionPrivilege(),this.checkAndShowPendingApprovalDialog()}parsePermissionPrivilege(){var e;const t=new URLSearchParams(window.location.search);this.permissionPrivilege=(e=t.get(M))!==null&&e!==void 0?e:void 0}checkAndShowPendingApprovalDialog(){this.permissionPrivilege===X.Approve&&!a.hasPendingApprovalDialogBeenShown&&(this.showPendingApprovalDialog=!0)}handlePendingApprovalDialogClose(){this.showPendingApprovalDialog=!1,a.setPendingApprovalDialogShown(!0)}handleNavigation(){window.location.pathname.startsWith("/service-management/")||a.setPendingApprovalDialogShown(!1)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener($.DrawerClose,this.drawerHandler),window.removeEventListener($.CreateTicket,this.onCreateHandler),window.removeEventListener("popstate",this.navigationHandler),setTimeout(()=>{window.location.pathname.startsWith("/service-management/")||a.setPendingApprovalDialogShown(!1)},0)}resetComponent(){this.selectedSite=void 0,this.selectedAccount=void 0,this.siteAccepted=!1,this.accountAccepted=!1,this.showSiteSelectionDialog=!1,this.showAccountSelectionDialog=!1,a.ticketType=void 0}handleSiteSelectionDialogClosed(e){this.siteAccepted=e,this.showSiteSelectionDialog=!1,e||(this.fromLaunchpad&&this.toggleDrawer(),this.resetComponent())}handleAccountSelectionDialogClosed(e){this.showAccountSelectionDialog=!1,this.accountAccepted=e,e||(this.fromLaunchpad&&this.toggleDrawer(),this.resetComponent())}handleToggleClick(){var e;const t=(e=this.shadowRoot)===null||e===void 0?void 0:e.querySelector("ix-drawer");t==null||t.handleCloseButton()}handleMinimisedClick(){var e;const t=(e=this.shadowRoot)===null||e===void 0?void 0:e.querySelector("ix-drawer");t==null||t.onMinimised()}getAccountNumber(){return this.selectedAccount}renderTicketWizard(){var e,t,i;if(a.ticketType===l.CustomerSupport){if(!((e=this.selectedSite)===null||e===void 0)&&e.siteId&&this.siteAccepted)return s`<customer-care-service-ticket-wizard .selectedSite="${this.selectedSite}" slot="content" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></customer-care-service-ticket-wizard>`;this.modalTitle="Customer Care",this.accountAccepted?this.showSiteSelectionDialog=!0:this.showAccountSelectionDialog=!0}else{if(a.ticketType===l.Deliveries)return P.newTicket.accountNumber=this.getAccountNumber(),s`<deliveries-service-ticket-wizard slot="content" .isClone="${this.isCloned}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></deliveries-service-ticket-wizard>`;if(a.ticketType===l.Removals)return B.newTicket.accountNumber=this.getAccountNumber(),s`<removals-service-ticket-wizard slot="content" .isCloned="${this.isCloned}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></removals-service-ticket-wizard>`;if(a.ticketType===l.RemoteHands){if(this.modalTitle="Remote Hands",!((t=this.selectedSite)===null||t===void 0)&&t.siteId&&this.siteAccepted)return me.updateAccountNumber(this.getAccountNumber()),s`<remote-hands-service-ticket-wizard slot="content" .selectedSite="${this.selectedSite}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></remote-hands-service-ticket-wizard>`;this.accountAccepted?this.showSiteSelectionDialog=!0:this.showAccountSelectionDialog=!0}else if(a.ticketType===l.TroubleTickets){if(!((i=this.selectedSite)===null||i===void 0)&&i.siteId&&this.siteAccepted)return s`<create-edit-trouble-ticket-wizard slot="content" .selectedSite="${this.selectedSite}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></create-edit-trouble-ticket-wizard>`;this.modalTitle="Trouble Tickets",this.accountAccepted?this.showSiteSelectionDialog=!0:this.showAccountSelectionDialog=!0}else if(a.ticketType===l.DeliveriesAndRemovals){if(this.modalTitle="Deliveries & Removals",this.selectedSite&&this.siteAccepted)return s`<deliveries-removals-ticket-type-selector slot="content" .selectedSite="${this.selectedSite}" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></deliveries-removals-ticket-type-selector>`;this.accountAccepted?this.showSiteSelectionDialog=!0:this.showAccountSelectionDialog=!0}else if(a.ticketType===l.FacilityAccess)return s`<facility-access-service-ticket-wizard slot="content" .onCloseClick="${()=>this.handleToggleClick()}" .onMinimiseClick="${()=>this.handleMinimisedClick()}"></facility-access-service-ticket-wizard>`}return s`<create-service-ticket slot="content"></create-service-ticket>`}render(){return s` ${this.showPendingApprovalDialog?s`<pending-approval-info-dialog .onAccept="${()=>this.handlePendingApprovalDialogClose()}"></pending-approval-info-dialog>`:T} ${this.renderDrawer?s` <ix-drawer ?isVisible="${this.showDrawer}" .showConfirmationDialogOnClose="${a.ticketType!==void 0&&a.ticketStep!==ke}" .onClosed="${()=>this.toggleDrawer()}" .hideAside="${this.hideAside}" .hideClose="${te(a.ticketType)}" .scrollable="${!1}"> ${this.renderTicketWizard()} </ix-drawer>`:T} ${this.showSiteSelectionDialog?s`<site-selection-dialog .isDialogOpen="${this.showSiteSelectionDialog}" .modalTitle="${this.modalTitle}" .onAccept="${()=>this.handleSiteSelectionDialogClosed(!0)}" .onReject="${()=>this.handleSiteSelectionDialogClosed(!1)}" .onSiteSelected="${e=>this.handleSiteSelection(e)}" .selectedSite="${this.selectedSite}" .permissionType="${this.permissionType}" .accountNumber="${this.selectedAccount}" .assignableProcess="${this.assignableProcess}"></site-selection-dialog>`:T} ${this.showAccountSelectionDialog?s`<account-selection-dialog .isDialogOpen="${this.showAccountSelectionDialog}" .modalTitle="${this.modalTitle}" modalText="You have access to multiple accounts, which account are you submitting this ticket for?" .onAccept="${()=>this.handleAccountSelectionDialogClosed(!0)}" .onReject="${()=>this.handleAccountSelectionDialogClosed(!1)}" .selectedAccount="${this.selectedAccount}" .permissionType="${this.permissionType}" .assignableProcess="${this.assignableProcess}" .onAccountSelected="${e=>this.handleAccountSelection(e)}" buttonText="Next"></account-selection-dialog>`:T} <service-ticket-list></service-ticket-list> `}};u.styles=[x,L],r([p()],u.prototype,"showDrawer",void 0),r([p()],u.prototype,"showSiteSelectionDialog",void 0),r([p()],u.prototype,"showAccountSelectionDialog",void 0),r([p()],u.prototype,"siteAccepted",void 0),r([p()],u.prototype,"accountAccepted",void 0),r([p()],u.prototype,"selectedSite",void 0),r([p()],u.prototype,"selectedAccount",void 0),r([p()],u.prototype,"modalTitle",void 0),r([p()],u.prototype,"permissionType",void 0),r([p()],u.prototype,"assignableProcess",void 0),r([p()],u.prototype,"fromLaunchpad",void 0),r([p()],u.prototype,"renderDrawer",void 0),r([p()],u.prototype,"showPendingApprovalDialog",void 0),r([p()],u.prototype,"permissionPrivilege",void 0),u=r([f("service-tickets-view")],u);export{u as ServiceTicketsView};
@@ -1 +1 @@
1
- import{__decorate as p}from"tslib";import{MobxLitElement as k}from"@adobe/lit-mobx";import"@digital-realty/ix-button/ix-button.js";import"@digital-realty/ix-chip/ix-chip.js";import"@digital-realty/ix-date-next/ix-date-next.js";import"@digital-realty/ix-date/ix-date.js";import"@digital-realty/ix-drawer/ix-drawer.js";import"@digital-realty/ix-grid/ix-grid-nav.js";import"@digital-realty/ix-grid/ix-grid-no-rows.js";import"@digital-realty/ix-grid/ix-grid.js";import"@digital-realty/ix-progress/ix-progress.js";import"@digital-realty/ix-tooltip/ix-tooltip.js";import{html as r,nothing as $}from"lit";import{property as L,customElement as S,state as v}from"lit/decorators.js";import{makeAutoObservable as N,reaction as C}from"mobx";import{b9 as R,aV as w,h as D,ba as T,bb as V,b6 as u,T as E,g as _,bc as b}from"./ui-service-management.js";import{A as I,F as m,b as M,O as f}from"./ui-service-management11.js";import{d as G}from"./ui-service-management12.js";import{S as x}from"./ui-service-management9.js";import"./ui-service-management18.js";import"@digital-realty/ix-divider/ix-divider.js";import{R as F}from"./ui-service-management28.js";import"moment";import"@digital-realty/theme";import"moment-timezone";import"date-fns/format.js";import"mobx-persist-store";import"@digital-realty/ix-account-switcher";import"@vaadin/router";import"oidc-client-ts";import"lit/directives/if-defined.js";import"@digital-realty/ix-select/ix-select.js";import"@digital-realty/ix-select/ix-select-option.js";import"@digital-realty/ix-icon-button/ix-icon-button.js";import"lit-html/directives/until.js";import"libphonenumber-js";import"@digital-realty/ix-toast/ix-toasters.js";const A={loadings:{siteMaintenanceList:!0,downloadSiteMaintenanceList:!1,downloadAttachment:{},getPlannedMaintenanceTicket:!1},errorSiteMaintenanceGrid:!1};class O{constructor(){this.loadings=A.loadings,this.errorSiteMaintenanceGrid=A.errorSiteMaintenanceGrid,N(this)}async GetSiteMaintenance(t){let i;return t&&(this.loadings.getPlannedMaintenanceTicket=!0,i=await R.plannedMaintenanceApi.getPlannedMaintenanceTicketById({ticketId:t}).catch(a=>{w(a,!1)}).finally(()=>{this.loadings.getPlannedMaintenanceTicket=!1})),i}async GetSiteMaintenanceList(t,i,a,s,n){const{accountNumber:o}=D.getUserAccount();let l;return this.errorSiteMaintenanceGrid=!1,o&&(this.loadings.siteMaintenanceList=!0,l=await R.plannedMaintenanceApi.getPlannedMaintenanceTickets({$filter:t,$orderby:i,$skip:a,$top:s},n).catch(y=>{var d;!((d=n==null?void 0:n.signal)===null||d===void 0)&&d.aborted||(w(y,!1),this.errorSiteMaintenanceGrid=!0)}).finally(()=>{this.loadings.siteMaintenanceList=!1})),l}async downloadSiteMaintenanceList(t,i,a,s){this.loadings.downloadSiteMaintenanceList=!0,await T(t,i,a,s),this.loadings.downloadSiteMaintenanceList=!1}async downloadSiteMaintenanceAttachment(t,i,a){const s=`${t}_${i}`;this.loadings.downloadAttachment[s]=!0,await V(t,i,a),this.loadings.downloadAttachment[s]=!1}}const c=new O,K=e=>{switch(e==null?void 0:e.toLowerCase()){case"planned_maintenance":return u.PLANNED_MAINTENANCE;case"incidents":return u.INCIDENTS;case"dcim_alerts":return u.DCIM_ALERTS;case"service_tickets":return u.SERVICE_TICKETS;default:return e}};let g=class extends k{constructor(){super(),this.toggleVisibilityReactionDisposers=new Map,this.useNewDatePickerComponent=!1,this.useNewDatePickerComponent=_.showNewDatePickerComponent()}disconnectedCallback(){super.disconnectedCallback&&super.disconnectedCallback(),this.toggleVisibilityReactionDisposers.forEach(e=>e()),this.toggleVisibilityReactionDisposers.clear()}async handleAttachmentClick(e,t){const i=e.currentTarget,a=this.maintenance.id||"",s=i.getAttribute("attachment-id")||"";this.toggleVisability(i,s,!0);const n=`${a}_${s}`;this.toggleVisibilityReactionDisposers.has(n)&&this.deleteToggleVisibilityReactionByKey(n);const o=C(()=>c.loadings.downloadAttachment[n],l=>{this.toggleVisability(i,s,l),l||this.deleteToggleVisibilityReactionByKey(n)});this.toggleVisibilityReactionDisposers.set(n,o),await c.downloadSiteMaintenanceAttachment(a,s,t.fileName||a)}deleteToggleVisibilityReactionByKey(e){this.toggleVisibilityReactionDisposers.get(e)(),this.toggleVisibilityReactionDisposers.delete(e)}toggleVisability(e,t,i){const a=e.parentElement,s=a==null?void 0:a.querySelector(`#progress-${t}`);s.style.display=i?"inline-block":"none";const n=e;n.style.display=i?"none":"inline-block"}renderStaticDate(e){return e?this.useNewDatePickerComponent?r`<ix-date-next type="static" .value="${e}" .noTimeZoneConversion="${!0}"></ix-date-next>`:r`<ix-date type="static" .value="${e}" .noTimeZoneConversion="${!0}"></ix-date>`:r`---`}render(){var e,t,i,a,s,n,o,l,y;return r`<div class=""> <div class="summary-form"> <div class="summary-form__field" name="id"> <span>Work Order ID</span> <span>${this.maintenance.id}</span> </div> <div class="summary-form__field" name="site"> <span>Affected Site</span> <span>${this.maintenance.site}</span> </div> <div class="summary-form__field" name="locations"> <span>Affected Location(s)</span> <span>${!((e=this.maintenance.locations)===null||e===void 0)&&e.length?this.maintenance.locations.join(", "):"---"}</span> </div> <div class="summary-form__field" name="category"> <span>Category</span> <span>${this.maintenance.category}</span> </div> <div class="summary-form__field" name="activityType"> <span>Activity Type</span> <span>${(t=this.maintenance.activityType)!==null&&t!==void 0?t:"---"}</span> </div> <div class="summary-form__field" name="activitySubtype"> <span>Activity Subtype</span> <span>${(i=this.maintenance.activitySubtype)!==null&&i!==void 0?i:"---"}</span> </div> <div class="summary-form__field" name="activityCategory"> <span>Activity Category</span> <span>${(a=this.maintenance.activityCategory)!==null&&a!==void 0?a:"---"}</span> </div> <div class="summary-form__field" name="approvalStatus"> <span>Approval Status</span> <span class="first-letter:uppercase">${(s=this.maintenance.approvalStatus)!==null&&s!==void 0?s:"---"}</span> </div> <div class="summary-form__field" name="status"> <span>State</span> <span>${this.maintenance.status}</span> </div> <div class="summary-form__field" name="serviceType"> <span>Service Type</span> <span>${(n=K(this.maintenance.serviceType))!==null&&n!==void 0?n:"---"}</span> </div> <div class="summary-form__field" name="riskLevel"> <span>Risk Level</span> <span>${(o=this.maintenance.riskLevel)!==null&&o!==void 0?o:"---"}</span> </div> <div class="summary-form__field" name="startDate"> <span>Start Date</span> <span>${this.renderStaticDate(this.maintenance.startDate)}</span> </div> <div class="summary-form__field" name="endDate"> <span>End Date</span> <span>${this.renderStaticDate(this.maintenance.endDate)}</span> </div> <ix-divider></ix-divider> <div class="summary-form__field" name="subject"> <span>Short Description</span> <span>${this.maintenance.subject}</span> </div> <ix-divider></ix-divider> <div class="summary-form__field" name="highLevelSummary"> <span>High-level Summary</span> <span>${(l=this.maintenance.highLevelSummary)!==null&&l!==void 0?l:"---"}</span> </div> <ix-divider></ix-divider> <div class="summary-form__field" name="attachments"> <span>Method of Procedure (attachments)</span> <div> ${(y=this.maintenance.attachments)===null||y===void 0?void 0:y.map(d=>r` <ix-progress id="progress-${d.id}" .linear="${!1}" indeterminate="false" style="--md-circular-progress-size:2rem;display:none;padding:.0625rem"></ix-progress> <div @click="${P=>this.handleAttachmentClick(P,d)}" attachment-id="${d.id}" class="file-attachment pointer"> <span>${d.fileName}</span> </div>`)} </div> </div> </div> </div>`}};g.styles=[x,E],p([L()],g.prototype,"maintenance",void 0),g=p([S("site-maintenance-details")],g);let h=class extends k{constructor(){super(),this.showDrawer=!1,this.maintenanceRecords=void 0,this.maintenanceRecord=void 0,this.toggleVisibilityReactionDisposers=new Map,this.selectedMaintenanceRecordFromList=void 0,this.fetchTicketsController=new AbortController,this.listSort="start_date desc",this.listSkip=0,this.listPageSize=b,this.ticketId=null,this.useNewDatePickerComponent=!1,this.dateCellRenderer=e=>t=>{const i=t[e],a=this.useNewDatePickerComponent?r`<ix-date-next type="static" .value="${i}" .noTimeZoneConversion="${!0}"></ix-date-next>`:r`<ix-date type="static" .value="${i}" .noTimeZoneConversion="${!0}"></ix-date>`;return r`<span @click="${()=>this.handleRowClick(t)}" @keypress="${s=>this.handleKeyPress(s,t)}"> ${a} </span>`},this.handleTicketIdChange=async()=>{var e;try{const t=new URLSearchParams(window.location.search);if(this.ticketId=t.get("ticketId"),this.ticketId){const i=await c.GetSiteMaintenance(this.ticketId);this.maintenanceRecord=(e=i==null?void 0:i.items)===null||e===void 0?void 0:e.shift(),this.maintenanceRecord&&(this.showDrawer=!0)}}catch(t){w(t)}},this.useNewDatePickerComponent=_.showNewDatePickerComponent()}connectedCallback(){try{super.connectedCallback()}catch(e){if(!(e instanceof TypeError))throw e}this.debouncedHandleTableChange=G(this.handleTableChange.bind(this),300),window.addEventListener("vaadin-router-location-changed",this.handleTicketIdChange)}toggleDrawer(){this.showDrawer=!this.showDrawer,this.showDrawer||window.history.replaceState({},document.title,`${I}/reports`)}handleKeyPress(e,t){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.handleRowClick(t))}getColumns(){return[{name:"id",header:"ID",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.id}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"subject",header:"Short Description",width:"300px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.subject}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"start_date",header:"Start Date",width:"120px",bodyRenderer:this.dateCellRenderer("startDate"),sortable:!0},{name:"end_date",header:"End Date",width:"120px",bodyRenderer:this.dateCellRenderer("endDate"),sortable:!0},{name:"status",header:"Status",width:"100px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.status}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"activity_type",header:"Activity Type",width:"120px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.activityType}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"site",header:"Site",width:"120px",bodyRenderer:e=>r`<site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" .items="${[e.site]}"></site-location-cell>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"locations",header:"Location",width:"120px",bodyRenderer:e=>r`<site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" .items="${e.locations}"></site-location-cell>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"attachments",header:"Attachments",width:"200px",bodyRenderer:e=>{var t,i;return r` ${!((t=e.attachments)===null||t===void 0)&&t.length?r` <ix-progress id="progress-${e.id}" .linear="${!1}" indeterminate="false" style="--md-circular-progress-size:1.5rem;display:none;padding:.0625rem"></ix-progress> <div style="display:flex;flex-direction:column;flex-flow:wrap;gap:.625rem"> ${(i=e.attachments)===null||i===void 0?void 0:i.map(a=>r`<div @click="${s=>this.handleAttachmentClick(s,a)}" id="content-${a.id}" ticket-id="${e.id}" attachment-id="${a.id}" class="file-attachment" style="background:#f5f7ff;padding:.25rem .5rem"> <span>${a.fileName}</span></div> `)} </div>`:"No Attachments"} `}},{name:"notification_type",header:"Notification Type",width:"120px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.notificationType}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"risk_level",header:"Risk Level",width:"120px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.riskLevel}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]}]}get downloadMenuItems(){return[{label:"Download All Reports",name:"download-all-tickets",onClick:e=>{this.handleDownloadCsv(e)}},{label:"Download Current View",name:"download-current-filter",onClick:e=>{this.handleDownloadCsv(e)}}]}async handleTableChange(e){const{columnName:t,page:i,pageSize:a,sortOrder:s,filters:n,filtersOperators:o}=e.detail;this.listPageSize=a;const l={status:this.tryGetFilter(n,o,"status",m.Single,!0),id:this.tryGetFilter(n,o,"id",m.Single,!0),subject:this.tryGetFilter(n,o,"subject",m.Single,!0),activity_type:this.tryGetFilter(n,o,"activity_type",m.Single,!0),site:this.tryGetFilter(n,o,"site",m.Single,!0),locations:this.tryGetFilter(n,o,"locations",m.StringCollection,!0),notification_type:this.tryGetFilter(n,o,"notification_type",m.Single,!0),risk_level:this.tryGetFilter(n,o,"risk_level",m.Single,!0,void 0)};this.currentFilters=l,t&&s&&(this.listSort=`${t} ${s}`),this.listSkip=(i-1)*this.listPageSize,this.fetchTicketsController.abort(),this.fetchTicketsController=new AbortController,this.fetchTickets({signal:this.fetchTicketsController.signal})}async fetchTickets(e){const t=this.listPageSize||b,i=M(this.currentFilters,{orderBy:this.listSort?[this.listSort]:["start_date desc"],top:t,skip:this.listSkip}),a=new URLSearchParams(i);this.maintenanceRecords=await c.GetSiteMaintenanceList(a.get("$filter")||void 0,a.get("$orderby")||void 0,this.listSkip,t,e)}async firstUpdated(){const e=await D.getHashedRootAccountNumberAndUserEmail();e&&(this.hashedLocalStorageID=`site-maintenance-tickets-${e}`),this.handleTicketIdChange()}disconnectedCallback(){super.disconnectedCallback&&super.disconnectedCallback(),window.removeEventListener("vaadin-router-location-changed",this.handleTicketIdChange),this.toggleVisibilityReactionDisposers.forEach(e=>e()),this.toggleVisibilityReactionDisposers.clear()}toggleVisability(e,t,i){const a=e.closest("vaadin-grid-cell-content"),s=a==null?void 0:a.querySelector(`#progress-${t}`);s.style.display=i?"inline-block":"none";const n=e;n.style.display=i?"none":"inline-block"}async handleAttachmentClick(e,t){const i=e.currentTarget,a=i.getAttribute("ticket-id")||"",s=i.getAttribute("attachment-id")||"",n=`${a}_${s}`;this.toggleVisibilityReactionDisposers.has(n)&&this.deleteToggleVisibilityReactionByKey(n);const o=C(()=>c.loadings.downloadAttachment[n],l=>{this.toggleVisability(i,a,l),l||this.deleteToggleVisibilityReactionByKey(n)});this.toggleVisibilityReactionDisposers.set(n,o),await c.downloadSiteMaintenanceAttachment(a,s,t.fileName||a)}deleteToggleVisibilityReactionByKey(e){this.toggleVisibilityReactionDisposers.get(e)(),this.toggleVisibilityReactionDisposers.delete(e)}async handleRowClick(e){var t;if(e!=null&&e.id){this.selectedMaintenanceRecordFromList=e;const i=await c.GetSiteMaintenance(e.id);this.maintenanceRecord=(t=i==null?void 0:i.items)===null||t===void 0?void 0:t.find(a=>a.id===e.id),this.showDrawer=!0}}async handleDownloadCsv(e){switch(e){case"download-all-tickets":await c.downloadSiteMaintenanceList();break;case"download-current-filter":{const t=this.listPageSize||b,i=M(this.currentFilters,{orderBy:this.listSort?[this.listSort]:["status desc"],top:t,skip:this.listSkip}),a=new URLSearchParams(i);await T(a.get("$filter")||void 0,a.get("$orderby")||void 0,this.listSkip,t);break}}}tryGetFilter(e,t,i,a,s,n=void 0){const o=t.find(d=>d.columnField===i);if(o===void 0)return[];const l=e[i];if(l===void 0)return[];const y=o.operator==="contains"?f.Contains:f.Equals;return(Array.isArray(l)?l:[l]).map(d=>({matchValue:d.value||d,equalityOperator:y,concatenationOperator:f.Or,fieldType:a,ignoreCase:s,objectProperty:n}))}renderGridNoRows(){const e=c.errorSiteMaintenanceGrid?"Sorry, an error has occurred":this.maintenanceRecords!==void 0?"No data to display":null;return e?r`<ix-grid-no-rows slot="no-rows" message="${e}"></ix-grid-no-rows>`:$}render(){var e,t,i,a;return r`<div class="maintenance-grid"> <ix-grid session-storage-key="sm-site-maintenance" column-reordering-allowed .columns="${this.getColumns()}" .downloadMenuItems="${this.downloadMenuItems}" .rows="${(t=(e=this.maintenanceRecords)===null||e===void 0?void 0:e.items)!==null&&t!==void 0?t:[]}" .recordCount="${(a=(i=this.maintenanceRecords)===null||i===void 0?void 0:i.totalCount)!==null&&a!==void 0?a:0}" @change="${this.debouncedHandleTableChange}" .localStorageID="${this.hashedLocalStorageID}" .addParamsToURL="${!1}" .pageSize="${20}" .pageSizes="${[5,10,20,50,100]}" .isLoading="${c.loadings.siteMaintenanceList||c.loadings.getPlannedMaintenanceTicket}" .isDownloading="${c.loadings.downloadSiteMaintenanceList}"> <reports-nav-bar slot="header" .selectedTab="${F.PlannedMaintenance}"></reports-nav-bar> ${this.renderGridNoRows()} </ix-grid> </div> <ix-tooltip></ix-tooltip> <ix-drawer ?isVisible="${this.showDrawer}" .onClosed="${()=>this.toggleDrawer()}" class="site-maintenance-drawer"> ${this.renderHeader()} <div slot="content">${this.renderBody()}</div> </ix-drawer>`}renderHeader(){var e;return r`<div slot="header"> <div class="site-maintenance-details__header"> <span>PLANNED SITE MAINTENANCE</span> </div> <div class="site-maintenance-details__subheader"> <span>${(e=this.selectedMaintenanceRecordFromList)===null||e===void 0?void 0:e.subject}</span> </div> </div>`}renderBody(){return c.loadings.getPlannedMaintenanceTicket?$:this.maintenanceRecord?this.renderTicketDetails():this.renderError()}renderTicketDetails(){return r`<site-maintenance-details .maintenance="${this.maintenanceRecord}"></site-maintenance-details>`}renderError(){return r`<div class="report-drawer-error"> <sm-error> This report is currently not available. Check back later, or contact support. </sm-error> </div>`}};h.styles=[x],p([v()],h.prototype,"hashedLocalStorageID",void 0),p([v()],h.prototype,"currentFilters",void 0),p([v()],h.prototype,"showDrawer",void 0),p([v()],h.prototype,"maintenanceRecords",void 0),p([v()],h.prototype,"maintenanceRecord",void 0),h=p([S("site-maintenance-list")],h);export{h as SiteMaintenanceList};
1
+ import{__decorate as p}from"tslib";import{MobxLitElement as k}from"@adobe/lit-mobx";import"@digital-realty/ix-button/ix-button.js";import"@digital-realty/ix-chip/ix-chip.js";import"@digital-realty/ix-date-next/ix-date-next.js";import"@digital-realty/ix-date/ix-date.js";import"@digital-realty/ix-drawer/ix-drawer.js";import"@digital-realty/ix-grid/ix-grid-nav.js";import"@digital-realty/ix-grid/ix-grid-no-rows.js";import"@digital-realty/ix-grid/ix-grid.js";import"@digital-realty/ix-progress/ix-progress.js";import{html as r,nothing as $}from"lit";import{property as L,customElement as S,state as v}from"lit/decorators.js";import{makeAutoObservable as N,reaction as C}from"mobx";import{b9 as R,aV as w,h as D,ba as T,bb as V,b6 as u,T as E,g as _,bc as b}from"./ui-service-management.js";import{A as I,F as m,b as M,O as f}from"./ui-service-management11.js";import{d as G}from"./ui-service-management12.js";import{S as x}from"./ui-service-management9.js";import"./ui-service-management18.js";import"@digital-realty/ix-divider/ix-divider.js";import{R as F}from"./ui-service-management28.js";import"moment";import"@digital-realty/theme";import"moment-timezone";import"date-fns/format.js";import"mobx-persist-store";import"@digital-realty/ix-account-switcher";import"@vaadin/router";import"oidc-client-ts";import"lit/directives/if-defined.js";import"@digital-realty/ix-select/ix-select.js";import"@digital-realty/ix-select/ix-select-option.js";import"@digital-realty/ix-icon-button/ix-icon-button.js";import"lit-html/directives/until.js";import"libphonenumber-js";import"@digital-realty/ix-toast/ix-toasters.js";const A={loadings:{siteMaintenanceList:!0,downloadSiteMaintenanceList:!1,downloadAttachment:{},getPlannedMaintenanceTicket:!1},errorSiteMaintenanceGrid:!1};class O{constructor(){this.loadings=A.loadings,this.errorSiteMaintenanceGrid=A.errorSiteMaintenanceGrid,N(this)}async GetSiteMaintenance(t){let i;return t&&(this.loadings.getPlannedMaintenanceTicket=!0,i=await R.plannedMaintenanceApi.getPlannedMaintenanceTicketById({ticketId:t}).catch(a=>{w(a,!1)}).finally(()=>{this.loadings.getPlannedMaintenanceTicket=!1})),i}async GetSiteMaintenanceList(t,i,a,s,n){const{accountNumber:o}=D.getUserAccount();let l;return this.errorSiteMaintenanceGrid=!1,o&&(this.loadings.siteMaintenanceList=!0,l=await R.plannedMaintenanceApi.getPlannedMaintenanceTickets({$filter:t,$orderby:i,$skip:a,$top:s},n).catch(y=>{var d;!((d=n==null?void 0:n.signal)===null||d===void 0)&&d.aborted||(w(y,!1),this.errorSiteMaintenanceGrid=!0)}).finally(()=>{this.loadings.siteMaintenanceList=!1})),l}async downloadSiteMaintenanceList(t,i,a,s){this.loadings.downloadSiteMaintenanceList=!0,await T(t,i,a,s),this.loadings.downloadSiteMaintenanceList=!1}async downloadSiteMaintenanceAttachment(t,i,a){const s=`${t}_${i}`;this.loadings.downloadAttachment[s]=!0,await V(t,i,a),this.loadings.downloadAttachment[s]=!1}}const c=new O,K=e=>{switch(e==null?void 0:e.toLowerCase()){case"planned_maintenance":return u.PLANNED_MAINTENANCE;case"incidents":return u.INCIDENTS;case"dcim_alerts":return u.DCIM_ALERTS;case"service_tickets":return u.SERVICE_TICKETS;default:return e}};let g=class extends k{constructor(){super(),this.toggleVisibilityReactionDisposers=new Map,this.useNewDatePickerComponent=!1,this.useNewDatePickerComponent=_.showNewDatePickerComponent()}disconnectedCallback(){super.disconnectedCallback&&super.disconnectedCallback(),this.toggleVisibilityReactionDisposers.forEach(e=>e()),this.toggleVisibilityReactionDisposers.clear()}async handleAttachmentClick(e,t){const i=e.currentTarget,a=this.maintenance.id||"",s=i.getAttribute("attachment-id")||"";this.toggleVisability(i,s,!0);const n=`${a}_${s}`;this.toggleVisibilityReactionDisposers.has(n)&&this.deleteToggleVisibilityReactionByKey(n);const o=C(()=>c.loadings.downloadAttachment[n],l=>{this.toggleVisability(i,s,l),l||this.deleteToggleVisibilityReactionByKey(n)});this.toggleVisibilityReactionDisposers.set(n,o),await c.downloadSiteMaintenanceAttachment(a,s,t.fileName||a)}deleteToggleVisibilityReactionByKey(e){this.toggleVisibilityReactionDisposers.get(e)(),this.toggleVisibilityReactionDisposers.delete(e)}toggleVisability(e,t,i){const a=e.parentElement,s=a==null?void 0:a.querySelector(`#progress-${t}`);s.style.display=i?"inline-block":"none";const n=e;n.style.display=i?"none":"inline-block"}renderStaticDate(e){return e?this.useNewDatePickerComponent?r`<ix-date-next type="static" .value="${e}" .noTimeZoneConversion="${!0}"></ix-date-next>`:r`<ix-date type="static" .value="${e}" .noTimeZoneConversion="${!0}"></ix-date>`:r`---`}render(){var e,t,i,a,s,n,o,l,y;return r`<div class=""> <div class="summary-form"> <div class="summary-form__field" name="id"> <span>Work Order ID</span> <span>${this.maintenance.id}</span> </div> <div class="summary-form__field" name="site"> <span>Affected Site</span> <span>${this.maintenance.site}</span> </div> <div class="summary-form__field" name="locations"> <span>Affected Location(s)</span> <span>${!((e=this.maintenance.locations)===null||e===void 0)&&e.length?this.maintenance.locations.join(", "):"---"}</span> </div> <div class="summary-form__field" name="category"> <span>Category</span> <span>${this.maintenance.category}</span> </div> <div class="summary-form__field" name="activityType"> <span>Activity Type</span> <span>${(t=this.maintenance.activityType)!==null&&t!==void 0?t:"---"}</span> </div> <div class="summary-form__field" name="activitySubtype"> <span>Activity Subtype</span> <span>${(i=this.maintenance.activitySubtype)!==null&&i!==void 0?i:"---"}</span> </div> <div class="summary-form__field" name="activityCategory"> <span>Activity Category</span> <span>${(a=this.maintenance.activityCategory)!==null&&a!==void 0?a:"---"}</span> </div> <div class="summary-form__field" name="approvalStatus"> <span>Approval Status</span> <span class="first-letter:uppercase">${(s=this.maintenance.approvalStatus)!==null&&s!==void 0?s:"---"}</span> </div> <div class="summary-form__field" name="status"> <span>State</span> <span>${this.maintenance.status}</span> </div> <div class="summary-form__field" name="serviceType"> <span>Service Type</span> <span>${(n=K(this.maintenance.serviceType))!==null&&n!==void 0?n:"---"}</span> </div> <div class="summary-form__field" name="riskLevel"> <span>Risk Level</span> <span>${(o=this.maintenance.riskLevel)!==null&&o!==void 0?o:"---"}</span> </div> <div class="summary-form__field" name="startDate"> <span>Start Date</span> <span>${this.renderStaticDate(this.maintenance.startDate)}</span> </div> <div class="summary-form__field" name="endDate"> <span>End Date</span> <span>${this.renderStaticDate(this.maintenance.endDate)}</span> </div> <ix-divider></ix-divider> <div class="summary-form__field" name="subject"> <span>Short Description</span> <span>${this.maintenance.subject}</span> </div> <ix-divider></ix-divider> <div class="summary-form__field" name="highLevelSummary"> <span>High-level Summary</span> <span>${(l=this.maintenance.highLevelSummary)!==null&&l!==void 0?l:"---"}</span> </div> <ix-divider></ix-divider> <div class="summary-form__field" name="attachments"> <span>Method of Procedure (attachments)</span> <div> ${(y=this.maintenance.attachments)===null||y===void 0?void 0:y.map(d=>r` <ix-progress id="progress-${d.id}" .linear="${!1}" indeterminate="false" style="--md-circular-progress-size:2rem;display:none;padding:.0625rem"></ix-progress> <div @click="${P=>this.handleAttachmentClick(P,d)}" attachment-id="${d.id}" class="file-attachment pointer"> <span>${d.fileName}</span> </div>`)} </div> </div> </div> </div>`}};g.styles=[x,E],p([L()],g.prototype,"maintenance",void 0),g=p([S("site-maintenance-details")],g);let h=class extends k{constructor(){super(),this.showDrawer=!1,this.maintenanceRecords=void 0,this.maintenanceRecord=void 0,this.toggleVisibilityReactionDisposers=new Map,this.selectedMaintenanceRecordFromList=void 0,this.fetchTicketsController=new AbortController,this.listSort="start_date desc",this.listSkip=0,this.listPageSize=b,this.ticketId=null,this.useNewDatePickerComponent=!1,this.dateCellRenderer=e=>t=>{const i=t[e],a=this.useNewDatePickerComponent?r`<ix-date-next type="static" .value="${i}" .noTimeZoneConversion="${!0}"></ix-date-next>`:r`<ix-date type="static" .value="${i}" .noTimeZoneConversion="${!0}"></ix-date>`;return r`<span @click="${()=>this.handleRowClick(t)}" @keypress="${s=>this.handleKeyPress(s,t)}"> ${a} </span>`},this.handleTicketIdChange=async()=>{var e;try{const t=new URLSearchParams(window.location.search);if(this.ticketId=t.get("ticketId"),this.ticketId){const i=await c.GetSiteMaintenance(this.ticketId);this.maintenanceRecord=(e=i==null?void 0:i.items)===null||e===void 0?void 0:e.shift(),this.maintenanceRecord&&(this.showDrawer=!0)}}catch(t){w(t)}},this.useNewDatePickerComponent=_.showNewDatePickerComponent()}connectedCallback(){try{super.connectedCallback()}catch(e){if(!(e instanceof TypeError))throw e}this.debouncedHandleTableChange=G(this.handleTableChange.bind(this),300),window.addEventListener("vaadin-router-location-changed",this.handleTicketIdChange)}toggleDrawer(){this.showDrawer=!this.showDrawer,this.showDrawer||window.history.replaceState({},document.title,`${I}/reports`)}handleKeyPress(e,t){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.handleRowClick(t))}getColumns(){return[{name:"id",header:"ID",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.id}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"subject",header:"Short Description",width:"300px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.subject}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"start_date",header:"Start Date",width:"120px",bodyRenderer:this.dateCellRenderer("startDate"),sortable:!0},{name:"end_date",header:"End Date",width:"120px",bodyRenderer:this.dateCellRenderer("endDate"),sortable:!0},{name:"status",header:"Status",width:"100px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.status}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"activity_type",header:"Activity Type",width:"120px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.activityType}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"site",header:"Site",width:"120px",bodyRenderer:e=>r`<site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" .items="${[e.site]}"></site-location-cell>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"locations",header:"Location",width:"120px",bodyRenderer:e=>r`<site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" .items="${e.locations}"></site-location-cell>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"attachments",header:"Attachments",width:"200px",bodyRenderer:e=>{var t,i;return r` ${!((t=e.attachments)===null||t===void 0)&&t.length?r` <ix-progress id="progress-${e.id}" .linear="${!1}" indeterminate="false" style="--md-circular-progress-size:1.5rem;display:none;padding:.0625rem"></ix-progress> <div style="display:flex;flex-direction:column;flex-flow:wrap;gap:.625rem"> ${(i=e.attachments)===null||i===void 0?void 0:i.map(a=>r`<div @click="${s=>this.handleAttachmentClick(s,a)}" id="content-${a.id}" ticket-id="${e.id}" attachment-id="${a.id}" class="file-attachment" style="background:#f5f7ff;padding:.25rem .5rem"> <span>${a.fileName}</span></div> `)} </div>`:"No Attachments"} `}},{name:"notification_type",header:"Notification Type",width:"120px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.notificationType}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"risk_level",header:"Risk Level",width:"120px",bodyRenderer:e=>r`<span @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.riskLevel}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]}]}get downloadMenuItems(){return[{label:"Download All Reports",name:"download-all-tickets",onClick:e=>{this.handleDownloadCsv(e)}},{label:"Download Current View",name:"download-current-filter",onClick:e=>{this.handleDownloadCsv(e)}}]}async handleTableChange(e){const{columnName:t,page:i,pageSize:a,sortOrder:s,filters:n,filtersOperators:o}=e.detail;this.listPageSize=a;const l={status:this.tryGetFilter(n,o,"status",m.Single,!0),id:this.tryGetFilter(n,o,"id",m.Single,!0),subject:this.tryGetFilter(n,o,"subject",m.Single,!0),activity_type:this.tryGetFilter(n,o,"activity_type",m.Single,!0),site:this.tryGetFilter(n,o,"site",m.Single,!0),locations:this.tryGetFilter(n,o,"locations",m.StringCollection,!0),notification_type:this.tryGetFilter(n,o,"notification_type",m.Single,!0),risk_level:this.tryGetFilter(n,o,"risk_level",m.Single,!0,void 0)};this.currentFilters=l,t&&s&&(this.listSort=`${t} ${s}`),this.listSkip=(i-1)*this.listPageSize,this.fetchTicketsController.abort(),this.fetchTicketsController=new AbortController,this.fetchTickets({signal:this.fetchTicketsController.signal})}async fetchTickets(e){const t=this.listPageSize||b,i=M(this.currentFilters,{orderBy:this.listSort?[this.listSort]:["start_date desc"],top:t,skip:this.listSkip}),a=new URLSearchParams(i);this.maintenanceRecords=await c.GetSiteMaintenanceList(a.get("$filter")||void 0,a.get("$orderby")||void 0,this.listSkip,t,e)}async firstUpdated(){const e=await D.getHashedRootAccountNumberAndUserEmail();e&&(this.hashedLocalStorageID=`site-maintenance-tickets-${e}`),this.handleTicketIdChange()}disconnectedCallback(){super.disconnectedCallback&&super.disconnectedCallback(),window.removeEventListener("vaadin-router-location-changed",this.handleTicketIdChange),this.toggleVisibilityReactionDisposers.forEach(e=>e()),this.toggleVisibilityReactionDisposers.clear()}toggleVisability(e,t,i){const a=e.closest("vaadin-grid-cell-content"),s=a==null?void 0:a.querySelector(`#progress-${t}`);s.style.display=i?"inline-block":"none";const n=e;n.style.display=i?"none":"inline-block"}async handleAttachmentClick(e,t){const i=e.currentTarget,a=i.getAttribute("ticket-id")||"",s=i.getAttribute("attachment-id")||"",n=`${a}_${s}`;this.toggleVisibilityReactionDisposers.has(n)&&this.deleteToggleVisibilityReactionByKey(n);const o=C(()=>c.loadings.downloadAttachment[n],l=>{this.toggleVisability(i,a,l),l||this.deleteToggleVisibilityReactionByKey(n)});this.toggleVisibilityReactionDisposers.set(n,o),await c.downloadSiteMaintenanceAttachment(a,s,t.fileName||a)}deleteToggleVisibilityReactionByKey(e){this.toggleVisibilityReactionDisposers.get(e)(),this.toggleVisibilityReactionDisposers.delete(e)}async handleRowClick(e){var t;if(e!=null&&e.id){this.selectedMaintenanceRecordFromList=e;const i=await c.GetSiteMaintenance(e.id);this.maintenanceRecord=(t=i==null?void 0:i.items)===null||t===void 0?void 0:t.find(a=>a.id===e.id),this.showDrawer=!0}}async handleDownloadCsv(e){switch(e){case"download-all-tickets":await c.downloadSiteMaintenanceList();break;case"download-current-filter":{const t=this.listPageSize||b,i=M(this.currentFilters,{orderBy:this.listSort?[this.listSort]:["status desc"],top:t,skip:this.listSkip}),a=new URLSearchParams(i);await T(a.get("$filter")||void 0,a.get("$orderby")||void 0,this.listSkip,t);break}}}tryGetFilter(e,t,i,a,s,n=void 0){const o=t.find(d=>d.columnField===i);if(o===void 0)return[];const l=e[i];if(l===void 0)return[];const y=o.operator==="contains"?f.Contains:f.Equals;return(Array.isArray(l)?l:[l]).map(d=>({matchValue:d.value||d,equalityOperator:y,concatenationOperator:f.Or,fieldType:a,ignoreCase:s,objectProperty:n}))}renderGridNoRows(){const e=c.errorSiteMaintenanceGrid?"Sorry, an error has occurred":this.maintenanceRecords!==void 0?"No data to display":null;return e?r`<ix-grid-no-rows slot="no-rows" message="${e}"></ix-grid-no-rows>`:$}render(){var e,t,i,a;return r`<div class="maintenance-grid"> <ix-grid session-storage-key="sm-site-maintenance" column-reordering-allowed .columns="${this.getColumns()}" .downloadMenuItems="${this.downloadMenuItems}" .rows="${(t=(e=this.maintenanceRecords)===null||e===void 0?void 0:e.items)!==null&&t!==void 0?t:[]}" .recordCount="${(a=(i=this.maintenanceRecords)===null||i===void 0?void 0:i.totalCount)!==null&&a!==void 0?a:0}" @change="${this.debouncedHandleTableChange}" .localStorageID="${this.hashedLocalStorageID}" .addParamsToURL="${!1}" .pageSize="${20}" .pageSizes="${[5,10,20,50,100]}" .isLoading="${c.loadings.siteMaintenanceList||c.loadings.getPlannedMaintenanceTicket}" .isDownloading="${c.loadings.downloadSiteMaintenanceList}"> <reports-nav-bar slot="header" .selectedTab="${F.PlannedMaintenance}"></reports-nav-bar> ${this.renderGridNoRows()} </ix-grid> </div> <ix-drawer ?isVisible="${this.showDrawer}" .onClosed="${()=>this.toggleDrawer()}" class="site-maintenance-drawer"> ${this.renderHeader()} <div slot="content">${this.renderBody()}</div> </ix-drawer>`}renderHeader(){var e;return r`<div slot="header"> <div class="site-maintenance-details__header"> <span>PLANNED SITE MAINTENANCE</span> </div> <div class="site-maintenance-details__subheader"> <span>${(e=this.selectedMaintenanceRecordFromList)===null||e===void 0?void 0:e.subject}</span> </div> </div>`}renderBody(){return c.loadings.getPlannedMaintenanceTicket?$:this.maintenanceRecord?this.renderTicketDetails():this.renderError()}renderTicketDetails(){return r`<site-maintenance-details .maintenance="${this.maintenanceRecord}"></site-maintenance-details>`}renderError(){return r`<div class="report-drawer-error"> <sm-error> This report is currently not available. Check back later, or contact support. </sm-error> </div>`}};h.styles=[x],p([v()],h.prototype,"hashedLocalStorageID",void 0),p([v()],h.prototype,"currentFilters",void 0),p([v()],h.prototype,"showDrawer",void 0),p([v()],h.prototype,"maintenanceRecords",void 0),p([v()],h.prototype,"maintenanceRecord",void 0),h=p([S("site-maintenance-list")],h);export{h as SiteMaintenanceList};
@@ -1 +1 @@
1
- import{__decorate as d}from"tslib";import{MobxLitElement as P}from"@adobe/lit-mobx";import"@digital-realty/ix-button/ix-button.js";import"@digital-realty/ix-chip/ix-chip.js";import"@digital-realty/ix-date-next/ix-date-next.js";import"@digital-realty/ix-date/ix-date.js";import"@digital-realty/ix-drawer/ix-drawer.js";import"@digital-realty/ix-grid/ix-grid-no-rows.js";import"@digital-realty/ix-grid/ix-grid.js";import"@digital-realty/ix-progress/ix-progress.js";import"@digital-realty/ix-tooltip/ix-tooltip.js";import{LitElement as A,html as n,nothing as w}from"lit";import{property as k,state as h,customElement as f}from"lit/decorators.js";import{b9 as C,aV as g,h as x,bf as O,bg as _,T,Z as L,a5 as N,v as G,L as M,bh as R,aW as U,b6 as V,bc as b,g as F}from"./ui-service-management.js";import{A as E,F as v,b as S,O as $}from"./ui-service-management11.js";import{d as z}from"./ui-service-management12.js";import{S as D}from"./ui-service-management9.js";import"./ui-service-management18.js";import{R as K}from"./ui-service-management28.js";import{makeAutoObservable as q,reaction as B}from"mobx";import"@digital-realty/ix-tabs/ix-tabs.js";import"@digital-realty/ix-tabs/ix-primary-tab.js";import"@digital-realty/ix-divider/ix-divider.js";import"./ui-service-management17.js";import"moment";import"@digital-realty/theme";import"moment-timezone";import"date-fns/format.js";import"mobx-persist-store";import"@digital-realty/ix-account-switcher";import"@vaadin/router";import"oidc-client-ts";import"lit/directives/if-defined.js";import"@digital-realty/ix-select/ix-select.js";import"@digital-realty/ix-select/ix-select-option.js";import"@digital-realty/ix-icon-button/ix-icon-button.js";import"lit-html/directives/until.js";import"libphonenumber-js";import"@digital-realty/ix-toast/ix-toasters.js";import"@digital-realty/ix-grid/ix-grid-nav.js";import"lit/directives/class-map.js";import"lit-html/directives/unsafe-html.js";import"@digital-realty/ix-toast/ix-message-toast.js";const I={loadings:{incidentsList:!0,downloadIncidentsList:!1,downloadAttachment:{},getIncidentTicket:!1},errorIncidentsGrid:!1};class j{constructor(){this.loadings=I.loadings,this.errorIncidentsGrid=I.errorIncidentsGrid,q(this)}async GetIncident(t){let i;return t&&(this.loadings.getIncidentTicket=!0,i=await C.incidentsApi.getIncidentsTicketById({ticketId:t}).catch(s=>{g(s,!1)}).finally(()=>{this.loadings.getIncidentTicket=!1})),i}async GetIncidentsList(t,i,s,r,a){const{accountNumber:o}=x.getUserAccount();let l;return this.errorIncidentsGrid=!1,o&&(this.loadings.incidentsList=!0,l=await C.incidentsApi.getIncidentsTickets({$filter:t,$orderby:i,$skip:s,$top:r},a).catch(y=>{var u;!((u=a==null?void 0:a.signal)===null||u===void 0)&&u.aborted||(g(y,!1),this.errorIncidentsGrid=!0)}).finally(()=>{this.loadings.incidentsList=!1})),l}async downloadIncidentsList(t,i,s,r){this.loadings.downloadIncidentsList=!0,await O(t,i,s,r),this.loadings.downloadIncidentsList=!1}async downloadIncidentAttachment(t,i,s){const r=`${t}_${i}`;this.loadings.downloadAttachment[r]=!0,await _(t,i,s).catch(a=>{g(a,!1)}).finally(()=>{this.loadings.downloadAttachment[r]=!1})}}const c=new j,Z=[{id:"details",label:"Details"},{id:"activity",label:"Activity"}];let p=class extends A{constructor(){super(...arguments),this.useNewDatePickerComponent=!1,this.activeTab="details",this.hasUpdatePermissions=!1,this.statusAllowsUpdate=!1,this.toggleVisibilityReactionDisposers=new Map}async firstUpdated(){const e=L.sites.find(t=>t.name===this.incident.site);this.site=e?`${e==null?void 0:e.name} - ${e==null?void 0:e.streetAddress}`:this.incident.site,e!=null&&e.locationId&&this.incident.accountNumber&&(this.hasUpdatePermissions=await N(M.Update,G.PlannedMaintenance,e.locationId,this.incident.accountNumber)),this.statusAllowsUpdate=this.incident.status!==R.Closed&&this.incident.status!==R.Cancelled}disconnectedCallback(){super.disconnectedCallback(),this.toggleVisibilityReactionDisposers.forEach(e=>e()),this.toggleVisibilityReactionDisposers.clear()}toggleVisibility(e,t,i){const s=e.parentElement,r=s==null?void 0:s.querySelector(`#progress-${t}`);r.style.display=i?"inline-block":"none";const a=e;a.style.display=i?"none":"inline-block"}deleteToggleVisibilityReactionByKey(e){this.toggleVisibilityReactionDisposers.get(e)(),this.toggleVisibilityReactionDisposers.delete(e)}async handleAttachmentClick(e,t){const i=e.currentTarget,s=this.incident.id,r=i.getAttribute("attachment-id");if(!r){U("Unable to download the attachment");return}this.toggleVisibility(i,r,!0);const a=`${s}_${r}`;this.toggleVisibilityReactionDisposers.has(a)&&this.deleteToggleVisibilityReactionByKey(a);const o=B(()=>c.loadings.downloadAttachment[a],l=>{this.toggleVisibility(i,r,l),l||this.deleteToggleVisibilityReactionByKey(a)});this.toggleVisibilityReactionDisposers.set(a,o),await c.downloadIncidentAttachment(s,r,t.fileName||s)}renderActivityPanel(){var e;const t=((e=this.incident.comments)===null||e===void 0?void 0:e.map(i=>({comment:i.comment||"",commentedOn:i.createdAt||"",commentedBy:i.createdBy||""})))||[];return n`<ticket-comments .ticketNumber="${this.incident.id}" .ticketType="${V.INCIDENTS}" .comments="${t}" ?IsDisabled="${!this.hasUpdatePermissions||!this.statusAllowsUpdate}"> </ticket-comments>`}renderDetailsPanel(){var e;return n` <div class=""> <div class="summary-form"> <div class="summary-form__field" name="id"> <span>ID</span> <span>${this.incident.id}</span> </div> <div class="summary-form__field" name="description"> <span>Short Description</span> <span class="whitespace-preserve">${this.incident.subject}</span> </div> <div class="summary-form__field" name="account"> <span>Account</span> <span>${this.incident.accountName}</span> </div> <div class="summary-form__field" name="site"> <span>Site</span> <span>${this.site}</span> </div> <div class="summary-form__field" name="priority"> <span>Priority</span> <span>${this.incident.priority}</span> </div> <div class="summary-form__field" name="status"> <span>Status</span> <span>${this.incident.status}</span> </div> <div class="summary-form__field" name="opened"> <span>Opened</span> <span> ${this.useNewDatePickerComponent===!0?n`<ix-date-next type="static" .value="${this.incident.createdAt}" .noTimeZoneConversion="${!0}" variant="date-time"> </ix-date-next>`:n`<ix-date type="static" .value="${this.incident.createdAt}" .noTimeZoneConversion="${!0}" variant="date-time"> </ix-date>`} </span> </div> <div class="summary-form__field" name="updated"> <span>Updated</span> <span> ${this.useNewDatePickerComponent===!0?n`<ix-date-next type="static" .value="${this.incident.updatedAt}" .noTimeZoneConversion="${!0}" variant="date-time"> </ix-date-next>`:n`<ix-date type="static" .value="${this.incident.updatedAt}" .noTimeZoneConversion="${!0}" variant="date-time"> </ix-date>`} </span> </div> <ix-divider></ix-divider> <div class="summary-form__field" name="attachments"> <span>Attachments</span> <span> ${(e=this.incident.attachments)===null||e===void 0?void 0:e.map(t=>n` <ix-progress id="progress-${t.id}" .linear="${!1}" indeterminate="false" style="--md-circular-progress-size:2rem;display:none;padding:.0625rem"></ix-progress> <div @click="${i=>this.handleAttachmentClick(i,t)}" attachment-id="${t.id}" class="file-attachment cursor-pointer"> <span>${t.fileName}</span> </div>`)} </span> </div> </div> </div>`}renderActivePanel(){switch(this.activeTab){case"details":return this.renderDetailsPanel();case"activity":return this.renderActivityPanel();default:return w}}renderTabs(){return n` <ix-tabs inline> ${Z.map(e=>n` <ix-primary-tab ?active="${this.activeTab===e.id}" @click="${()=>{this.activeTab=e.id}}"> ${e.label} </ix-primary-tab>`)} </ix-tabs> <div class="tab-navigation"></div> `}renderHeader(){return n` <h2>Incident Work Order Case #${this.incident.id}</h2> `}render(){return n` <div class="mt-2 form-margin wizard-content"> <div class="incident-header">${this.renderHeader()}</div> <div>${this.renderTabs()}</div> <div class="overflow-auto">${this.renderActivePanel()}</div> </div> `}};p.styles=[D,T],d([k({type:Object})],p.prototype,"incident",void 0),d([k({type:Boolean})],p.prototype,"useNewDatePickerComponent",void 0),d([h()],p.prototype,"activeTab",void 0),d([h()],p.prototype,"site",void 0),d([h()],p.prototype,"hasUpdatePermissions",void 0),d([h()],p.prototype,"statusAllowsUpdate",void 0),p=d([f("incident-details")],p);let m=class extends P{constructor(){super(),this.incidentRecords=void 0,this.incidentRecord=void 0,this.showDrawer=!1,this.fetchTicketsController=new AbortController,this.listSort="updated_at desc",this.listSkip=0,this.listPageSize=b,this.useNewDatePickerComponent=!1,this.dateCellRenderer=e=>t=>{const i=t[e],s=this.useNewDatePickerComponent?n`<ix-date-next type="static" variant="date-time" .value="${i}" .noTimeZoneConversion="${!0}" @click="${()=>this.handleRowClick(t)}" @keypress="${r=>this.handleKeyPress(r,t)}"></ix-date-next>`:n`<ix-date type="static" variant="date-time" .value="${i}" .noTimeZoneConversion="${!0}" @click="${()=>this.handleRowClick(t)}" @keypress="${r=>this.handleKeyPress(r,t)}"></ix-date>`;return n`<span> ${s} </span>`},this.useNewDatePickerComponent=F.showNewDatePickerComponent()}async connectedCallback(){this.debouncedHandleTableChange=z(this.handleTableChange.bind(this),300);const e=await x.getHashedRootAccountNumberAndUserEmail();e&&(this.hashedLocalStorageID=`incidents-tickets-${e}`),super.connectedCallback()}toggleDrawer(){this.showDrawer=!this.showDrawer,this.showDrawer||window.history.replaceState({},document.title,`${E}/incidents`)}handleCellMouseOver(e,t){const i=e.target,s=i.closest("vaadin-grid-cell-content")||i;s.offsetWidth<s.scrollWidth&&document.dispatchEvent(new CustomEvent("show-tooltip",{detail:{target:e.composedPath()[0],placement:"bottom-start",tooltip:n`<div style="background-color:#092241;font-size:12px;color:#fff;text-align:left;padding:5px 8px;border-radius:3px;max-width:300px;word-wrap:break-word"> ${t} </div>`}}))}handleCellMouseOut(){document.dispatchEvent(new CustomEvent("hide-tooltip"))}getColumns(){return[{name:"id",header:"ID",bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.id)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.id}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"subject",header:"Short Description",width:"360px",bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.subject)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" style="text-wrap:auto;white-space:preserve">${e.subject}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"account",header:"Account",width:"120px",bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.accountName)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" style="text-wrap:auto">${e.accountName}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"site",header:"Site",width:"247px",flexGrow:0,bodyRenderer:e=>n` <site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" .items="${[e.site]}"> </site-location-cell>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"priority",header:"Priority",width:"127px",flexGrow:0,bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.priority)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.priority}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"status",header:"Status",width:"119px",flexGrow:0,bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.status)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.status}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"opened",header:"Opened",bodyRenderer:this.dateCellRenderer("createdAt"),sortable:!0,filterable:!0,filterOperators:["equals"],dataType:"dateTime"},{name:"updated",header:"Updated",bodyRenderer:this.dateCellRenderer("updatedAt"),sortable:!0,filterable:!0,filterOperators:["equals"],dataType:"dateTime"}]}get downloadMenuItems(){return[{label:"Download All Incidents",name:"download-all-tickets",onClick:e=>{this.handleDownloadCsv(e)}},{label:"Download Current View",name:"download-current-filter",onClick:e=>{this.handleDownloadCsv(e)}}]}handleKeyPress(e,t){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.handleRowClick(t))}async handleRowClick(e){e!=null&&e.id&&(this.incidentRecord=await c.GetIncident(e.id),this.showDrawer=!0)}async handleTableChange(e){const{columnName:t,page:i,pageSize:s,sortOrder:r,filters:a,filtersOperators:o}=e.detail;this.listPageSize=s;const l={id:this.tryGetFilter(a,o,"id",v.Single,!0),subject:this.tryGetFilter(a,o,"subject",v.Single,!0),account_name:this.tryGetFilter(a,o,"account",v.Single,!0),site:this.tryGetFilter(a,o,"site",v.Single,!0),priority:this.tryGetFilter(a,o,"priority",v.Single,!0),status:this.tryGetFilter(a,o,"status",v.Single,!0),created_at:this.tryGetFilter(a,o,"opened",v.Single,!1,!0),updated_at:this.tryGetFilter(a,o,"updated",v.Single,!1,!0)};if(this.currentFilters=l,t&&r){const y={account:"account_name",opened:"created_at",updated:"updated_at"}[t]||t;this.listSort=`${y} ${r}`}this.listSkip=(i-1)*this.listPageSize,this.fetchTicketsController.abort(),this.fetchTicketsController=new AbortController,this.fetchTickets({signal:this.fetchTicketsController.signal})}async fetchTickets(e){const t=this.listPageSize||b,i=S(this.currentFilters,{orderBy:[this.listSort],top:t,skip:this.listSkip}),s=new URLSearchParams(i);this.incidentRecords=await c.GetIncidentsList(s.get("$filter")||void 0,s.get("$orderby")||void 0,this.listSkip,t,e)}async handleDownloadCsv(e){switch(e){case"download-all-tickets":await c.downloadIncidentsList(void 0,"updated_at desc");break;case"download-current-filter":{const t=this.listPageSize||b,i=S(this.currentFilters,{orderBy:[this.listSort],top:t,skip:this.listSkip}),s=new URLSearchParams(i);await c.downloadIncidentsList(s.get("$filter")||void 0,s.get("$orderby")||void 0,this.listSkip,t);break}}}tryGetFilter(e,t,i,s,r,a=!1){const o=t.find(u=>u.columnField===i);if(o===void 0)return[];const l=e[i];if(l===void 0)return[];const y=a||o.operator==="contains"?$.Contains:$.Equals;return(Array.isArray(l)?l:[l]).map(u=>({matchValue:u.value||u,equalityOperator:y,concatenationOperator:$.Or,fieldType:s,ignoreCase:r}))}renderGridNoRows(){const e=c.errorIncidentsGrid?"Sorry, an error has occurred":this.incidentRecords!==void 0?"No data to display":null;return e?n`<ix-grid-no-rows slot="no-rows" message="${e}"></ix-grid-no-rows>`:w}renderBody(){return c.loadings.getIncidentTicket?w:this.incidentRecord?n` <incident-details .incident="${this.incidentRecord}" .useNewDatePickerComponent="${this.useNewDatePickerComponent}"> </incident-details>`:n` <div class="report-drawer-error"> <sm-error> This Incident is currently not available. Check back later, or contact support. </sm-error> </div>`}render(){var e,t,i,s;return n`<div class="incidents-grid"> <ix-grid session-storage-key="sm-incidents" column-reordering-allowed .columns="${this.getColumns()}" .downloadMenuItems="${this.downloadMenuItems}" .rows="${(t=(e=this.incidentRecords)===null||e===void 0?void 0:e.items)!==null&&t!==void 0?t:[]}" .recordCount="${(s=(i=this.incidentRecords)===null||i===void 0?void 0:i.totalCount)!==null&&s!==void 0?s:0}" @change="${this.debouncedHandleTableChange}" .localStorageID="${this.hashedLocalStorageID}" .addParamsToURL="${!1}" .pageSize="${20}" .pageSizes="${[5,10,20,50,100]}" .isLoading="${c.loadings.incidentsList||c.loadings.getIncidentTicket}" .isDownloading="${c.loadings.downloadIncidentsList}" ?useNewDatePicker="${this.useNewDatePickerComponent}"> <reports-nav-bar slot="header" .selectedTab="${K.Incidents}"></reports-nav-bar> ${this.renderGridNoRows()} </ix-grid> </div> <ix-tooltip></ix-tooltip> <ix-drawer ?isVisible="${this.showDrawer}" .onClosed="${()=>this.toggleDrawer()}" .scrollable="${!1}"> <div slot="content">${this.renderBody()}</div> </ix-drawer>`}};m.styles=[D,T],d([h()],m.prototype,"hashedLocalStorageID",void 0),d([h()],m.prototype,"currentFilters",void 0),d([h()],m.prototype,"incidentRecords",void 0),d([h()],m.prototype,"incidentRecord",void 0),d([h()],m.prototype,"showDrawer",void 0),m=d([f("incidents-list")],m);export{m as IncidentsList};
1
+ import{__decorate as d}from"tslib";import{MobxLitElement as P}from"@adobe/lit-mobx";import"@digital-realty/ix-button/ix-button.js";import"@digital-realty/ix-chip/ix-chip.js";import"@digital-realty/ix-date-next/ix-date-next.js";import"@digital-realty/ix-date/ix-date.js";import"@digital-realty/ix-drawer/ix-drawer.js";import"@digital-realty/ix-grid/ix-grid-no-rows.js";import"@digital-realty/ix-grid/ix-grid.js";import"@digital-realty/ix-progress/ix-progress.js";import{LitElement as A,html as n,nothing as w}from"lit";import{property as k,state as h,customElement as f}from"lit/decorators.js";import{b9 as C,aV as g,h as T,bf as O,bg as _,T as x,Z as L,a5 as N,v as G,L as M,bh as R,aW as U,b6 as V,bc as b,g as F}from"./ui-service-management.js";import{A as E,F as v,b as S,O as $}from"./ui-service-management11.js";import{d as z}from"./ui-service-management12.js";import{S as D}from"./ui-service-management9.js";import"./ui-service-management18.js";import{R as K}from"./ui-service-management28.js";import{makeAutoObservable as q,reaction as B}from"mobx";import"@digital-realty/ix-tabs/ix-tabs.js";import"@digital-realty/ix-tabs/ix-primary-tab.js";import"@digital-realty/ix-divider/ix-divider.js";import"./ui-service-management17.js";import"moment";import"@digital-realty/theme";import"moment-timezone";import"date-fns/format.js";import"mobx-persist-store";import"@digital-realty/ix-account-switcher";import"@vaadin/router";import"oidc-client-ts";import"lit/directives/if-defined.js";import"@digital-realty/ix-select/ix-select.js";import"@digital-realty/ix-select/ix-select-option.js";import"@digital-realty/ix-icon-button/ix-icon-button.js";import"lit-html/directives/until.js";import"libphonenumber-js";import"@digital-realty/ix-toast/ix-toasters.js";import"@digital-realty/ix-grid/ix-grid-nav.js";import"lit/directives/class-map.js";import"lit-html/directives/unsafe-html.js";import"@digital-realty/ix-toast/ix-message-toast.js";const I={loadings:{incidentsList:!0,downloadIncidentsList:!1,downloadAttachment:{},getIncidentTicket:!1},errorIncidentsGrid:!1};class j{constructor(){this.loadings=I.loadings,this.errorIncidentsGrid=I.errorIncidentsGrid,q(this)}async GetIncident(t){let i;return t&&(this.loadings.getIncidentTicket=!0,i=await C.incidentsApi.getIncidentsTicketById({ticketId:t}).catch(s=>{g(s,!1)}).finally(()=>{this.loadings.getIncidentTicket=!1})),i}async GetIncidentsList(t,i,s,r,a){const{accountNumber:o}=T.getUserAccount();let l;return this.errorIncidentsGrid=!1,o&&(this.loadings.incidentsList=!0,l=await C.incidentsApi.getIncidentsTickets({$filter:t,$orderby:i,$skip:s,$top:r},a).catch(y=>{var u;!((u=a==null?void 0:a.signal)===null||u===void 0)&&u.aborted||(g(y,!1),this.errorIncidentsGrid=!0)}).finally(()=>{this.loadings.incidentsList=!1})),l}async downloadIncidentsList(t,i,s,r){this.loadings.downloadIncidentsList=!0,await O(t,i,s,r),this.loadings.downloadIncidentsList=!1}async downloadIncidentAttachment(t,i,s){const r=`${t}_${i}`;this.loadings.downloadAttachment[r]=!0,await _(t,i,s).catch(a=>{g(a,!1)}).finally(()=>{this.loadings.downloadAttachment[r]=!1})}}const c=new j,Z=[{id:"details",label:"Details"},{id:"activity",label:"Activity"}];let p=class extends A{constructor(){super(...arguments),this.useNewDatePickerComponent=!1,this.activeTab="details",this.hasUpdatePermissions=!1,this.statusAllowsUpdate=!1,this.toggleVisibilityReactionDisposers=new Map}async firstUpdated(){const e=L.sites.find(t=>t.name===this.incident.site);this.site=e?`${e==null?void 0:e.name} - ${e==null?void 0:e.streetAddress}`:this.incident.site,e!=null&&e.locationId&&this.incident.accountNumber&&(this.hasUpdatePermissions=await N(M.Update,G.PlannedMaintenance,e.locationId,this.incident.accountNumber)),this.statusAllowsUpdate=this.incident.status!==R.Closed&&this.incident.status!==R.Cancelled}disconnectedCallback(){super.disconnectedCallback(),this.toggleVisibilityReactionDisposers.forEach(e=>e()),this.toggleVisibilityReactionDisposers.clear()}toggleVisibility(e,t,i){const s=e.parentElement,r=s==null?void 0:s.querySelector(`#progress-${t}`);r.style.display=i?"inline-block":"none";const a=e;a.style.display=i?"none":"inline-block"}deleteToggleVisibilityReactionByKey(e){this.toggleVisibilityReactionDisposers.get(e)(),this.toggleVisibilityReactionDisposers.delete(e)}async handleAttachmentClick(e,t){const i=e.currentTarget,s=this.incident.id,r=i.getAttribute("attachment-id");if(!r){U("Unable to download the attachment");return}this.toggleVisibility(i,r,!0);const a=`${s}_${r}`;this.toggleVisibilityReactionDisposers.has(a)&&this.deleteToggleVisibilityReactionByKey(a);const o=B(()=>c.loadings.downloadAttachment[a],l=>{this.toggleVisibility(i,r,l),l||this.deleteToggleVisibilityReactionByKey(a)});this.toggleVisibilityReactionDisposers.set(a,o),await c.downloadIncidentAttachment(s,r,t.fileName||s)}renderActivityPanel(){var e;const t=((e=this.incident.comments)===null||e===void 0?void 0:e.map(i=>({comment:i.comment||"",commentedOn:i.createdAt||"",commentedBy:i.createdBy||""})))||[];return n`<ticket-comments .ticketNumber="${this.incident.id}" .ticketType="${V.INCIDENTS}" .comments="${t}" ?IsDisabled="${!this.hasUpdatePermissions||!this.statusAllowsUpdate}"> </ticket-comments>`}renderDetailsPanel(){var e;return n` <div class=""> <div class="summary-form"> <div class="summary-form__field" name="id"> <span>ID</span> <span>${this.incident.id}</span> </div> <div class="summary-form__field" name="description"> <span>Short Description</span> <span class="whitespace-preserve">${this.incident.subject}</span> </div> <div class="summary-form__field" name="account"> <span>Account</span> <span>${this.incident.accountName}</span> </div> <div class="summary-form__field" name="site"> <span>Site</span> <span>${this.site}</span> </div> <div class="summary-form__field" name="priority"> <span>Priority</span> <span>${this.incident.priority}</span> </div> <div class="summary-form__field" name="status"> <span>Status</span> <span>${this.incident.status}</span> </div> <div class="summary-form__field" name="opened"> <span>Opened</span> <span> ${this.useNewDatePickerComponent===!0?n`<ix-date-next type="static" .value="${this.incident.createdAt}" .noTimeZoneConversion="${!0}" variant="date-time"> </ix-date-next>`:n`<ix-date type="static" .value="${this.incident.createdAt}" .noTimeZoneConversion="${!0}" variant="date-time"> </ix-date>`} </span> </div> <div class="summary-form__field" name="updated"> <span>Updated</span> <span> ${this.useNewDatePickerComponent===!0?n`<ix-date-next type="static" .value="${this.incident.updatedAt}" .noTimeZoneConversion="${!0}" variant="date-time"> </ix-date-next>`:n`<ix-date type="static" .value="${this.incident.updatedAt}" .noTimeZoneConversion="${!0}" variant="date-time"> </ix-date>`} </span> </div> <ix-divider></ix-divider> <div class="summary-form__field" name="attachments"> <span>Attachments</span> <span> ${(e=this.incident.attachments)===null||e===void 0?void 0:e.map(t=>n` <ix-progress id="progress-${t.id}" .linear="${!1}" indeterminate="false" style="--md-circular-progress-size:2rem;display:none;padding:.0625rem"></ix-progress> <div @click="${i=>this.handleAttachmentClick(i,t)}" attachment-id="${t.id}" class="file-attachment cursor-pointer"> <span>${t.fileName}</span> </div>`)} </span> </div> </div> </div>`}renderActivePanel(){switch(this.activeTab){case"details":return this.renderDetailsPanel();case"activity":return this.renderActivityPanel();default:return w}}renderTabs(){return n` <ix-tabs inline> ${Z.map(e=>n` <ix-primary-tab ?active="${this.activeTab===e.id}" @click="${()=>{this.activeTab=e.id}}"> ${e.label} </ix-primary-tab>`)} </ix-tabs> <div class="tab-navigation"></div> `}renderHeader(){return n` <h2>Incident Work Order Case #${this.incident.id}</h2> `}render(){return n` <div class="mt-2 form-margin wizard-content"> <div class="incident-header">${this.renderHeader()}</div> <div>${this.renderTabs()}</div> <div class="overflow-auto">${this.renderActivePanel()}</div> </div> `}};p.styles=[D,x],d([k({type:Object})],p.prototype,"incident",void 0),d([k({type:Boolean})],p.prototype,"useNewDatePickerComponent",void 0),d([h()],p.prototype,"activeTab",void 0),d([h()],p.prototype,"site",void 0),d([h()],p.prototype,"hasUpdatePermissions",void 0),d([h()],p.prototype,"statusAllowsUpdate",void 0),p=d([f("incident-details")],p);let m=class extends P{constructor(){super(),this.incidentRecords=void 0,this.incidentRecord=void 0,this.showDrawer=!1,this.fetchTicketsController=new AbortController,this.listSort="updated_at desc",this.listSkip=0,this.listPageSize=b,this.useNewDatePickerComponent=!1,this.dateCellRenderer=e=>t=>{const i=t[e],s=this.useNewDatePickerComponent?n`<ix-date-next type="static" variant="date-time" .value="${i}" .noTimeZoneConversion="${!0}" @click="${()=>this.handleRowClick(t)}" @keypress="${r=>this.handleKeyPress(r,t)}"></ix-date-next>`:n`<ix-date type="static" variant="date-time" .value="${i}" .noTimeZoneConversion="${!0}" @click="${()=>this.handleRowClick(t)}" @keypress="${r=>this.handleKeyPress(r,t)}"></ix-date>`;return n`<span> ${s} </span>`},this.useNewDatePickerComponent=F.showNewDatePickerComponent()}async connectedCallback(){this.debouncedHandleTableChange=z(this.handleTableChange.bind(this),300);const e=await T.getHashedRootAccountNumberAndUserEmail();e&&(this.hashedLocalStorageID=`incidents-tickets-${e}`),super.connectedCallback()}toggleDrawer(){this.showDrawer=!this.showDrawer,this.showDrawer||window.history.replaceState({},document.title,`${E}/incidents`)}handleCellMouseOver(e,t){const i=e.target,s=i.closest("vaadin-grid-cell-content")||i;s.offsetWidth<s.scrollWidth&&document.dispatchEvent(new CustomEvent("show-tooltip",{detail:{target:e.composedPath()[0],placement:"bottom-start",tooltip:n`<div style="background-color:#092241;font-size:12px;color:#fff;text-align:left;padding:5px 8px;border-radius:3px;max-width:300px;word-wrap:break-word"> ${t} </div>`}}))}handleCellMouseOut(){document.dispatchEvent(new CustomEvent("hide-tooltip"))}getColumns(){return[{name:"id",header:"ID",bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.id)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.id}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"subject",header:"Short Description",width:"360px",bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.subject)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" style="text-wrap:auto;white-space:preserve">${e.subject}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"account",header:"Account",width:"120px",bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.accountName)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" style="text-wrap:auto">${e.accountName}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"site",header:"Site",width:"247px",flexGrow:0,bodyRenderer:e=>n` <site-location-cell @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}" .items="${[e.site]}"> </site-location-cell>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"priority",header:"Priority",width:"127px",flexGrow:0,bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.priority)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.priority}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"status",header:"Status",width:"119px",flexGrow:0,bodyRenderer:e=>n`<span @mouseover="${t=>{var i;return this.handleCellMouseOver(t,(i=e.status)!==null&&i!==void 0?i:"")}}" @mouseout="${this.handleCellMouseOut}" @click="${()=>this.handleRowClick(e)}" @keypress="${t=>this.handleKeyPress(t,e)}">${e.status}</span>`,sortable:!0,filterable:!0,filterOperators:["contains","equals"]},{name:"opened",header:"Opened",bodyRenderer:this.dateCellRenderer("createdAt"),sortable:!0,filterable:!0,filterOperators:["equals"],dataType:"dateTime"},{name:"updated",header:"Updated",bodyRenderer:this.dateCellRenderer("updatedAt"),sortable:!0,filterable:!0,filterOperators:["equals"],dataType:"dateTime"}]}get downloadMenuItems(){return[{label:"Download All Incidents",name:"download-all-tickets",onClick:e=>{this.handleDownloadCsv(e)}},{label:"Download Current View",name:"download-current-filter",onClick:e=>{this.handleDownloadCsv(e)}}]}handleKeyPress(e,t){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.handleRowClick(t))}async handleRowClick(e){e!=null&&e.id&&(this.incidentRecord=await c.GetIncident(e.id),this.showDrawer=!0)}async handleTableChange(e){const{columnName:t,page:i,pageSize:s,sortOrder:r,filters:a,filtersOperators:o}=e.detail;this.listPageSize=s;const l={id:this.tryGetFilter(a,o,"id",v.Single,!0),subject:this.tryGetFilter(a,o,"subject",v.Single,!0),account_name:this.tryGetFilter(a,o,"account",v.Single,!0),site:this.tryGetFilter(a,o,"site",v.Single,!0),priority:this.tryGetFilter(a,o,"priority",v.Single,!0),status:this.tryGetFilter(a,o,"status",v.Single,!0),created_at:this.tryGetFilter(a,o,"opened",v.Single,!1,!0),updated_at:this.tryGetFilter(a,o,"updated",v.Single,!1,!0)};if(this.currentFilters=l,t&&r){const y={account:"account_name",opened:"created_at",updated:"updated_at"}[t]||t;this.listSort=`${y} ${r}`}this.listSkip=(i-1)*this.listPageSize,this.fetchTicketsController.abort(),this.fetchTicketsController=new AbortController,this.fetchTickets({signal:this.fetchTicketsController.signal})}async fetchTickets(e){const t=this.listPageSize||b,i=S(this.currentFilters,{orderBy:[this.listSort],top:t,skip:this.listSkip}),s=new URLSearchParams(i);this.incidentRecords=await c.GetIncidentsList(s.get("$filter")||void 0,s.get("$orderby")||void 0,this.listSkip,t,e)}async handleDownloadCsv(e){switch(e){case"download-all-tickets":await c.downloadIncidentsList(void 0,"updated_at desc");break;case"download-current-filter":{const t=this.listPageSize||b,i=S(this.currentFilters,{orderBy:[this.listSort],top:t,skip:this.listSkip}),s=new URLSearchParams(i);await c.downloadIncidentsList(s.get("$filter")||void 0,s.get("$orderby")||void 0,this.listSkip,t);break}}}tryGetFilter(e,t,i,s,r,a=!1){const o=t.find(u=>u.columnField===i);if(o===void 0)return[];const l=e[i];if(l===void 0)return[];const y=a||o.operator==="contains"?$.Contains:$.Equals;return(Array.isArray(l)?l:[l]).map(u=>({matchValue:u.value||u,equalityOperator:y,concatenationOperator:$.Or,fieldType:s,ignoreCase:r}))}renderGridNoRows(){const e=c.errorIncidentsGrid?"Sorry, an error has occurred":this.incidentRecords!==void 0?"No data to display":null;return e?n`<ix-grid-no-rows slot="no-rows" message="${e}"></ix-grid-no-rows>`:w}renderBody(){return c.loadings.getIncidentTicket?w:this.incidentRecord?n` <incident-details .incident="${this.incidentRecord}" .useNewDatePickerComponent="${this.useNewDatePickerComponent}"> </incident-details>`:n` <div class="report-drawer-error"> <sm-error> This Incident is currently not available. Check back later, or contact support. </sm-error> </div>`}render(){var e,t,i,s;return n`<div class="incidents-grid"> <ix-grid session-storage-key="sm-incidents" column-reordering-allowed .columns="${this.getColumns()}" .downloadMenuItems="${this.downloadMenuItems}" .rows="${(t=(e=this.incidentRecords)===null||e===void 0?void 0:e.items)!==null&&t!==void 0?t:[]}" .recordCount="${(s=(i=this.incidentRecords)===null||i===void 0?void 0:i.totalCount)!==null&&s!==void 0?s:0}" @change="${this.debouncedHandleTableChange}" .localStorageID="${this.hashedLocalStorageID}" .addParamsToURL="${!1}" .pageSize="${20}" .pageSizes="${[5,10,20,50,100]}" .isLoading="${c.loadings.incidentsList||c.loadings.getIncidentTicket}" .isDownloading="${c.loadings.downloadIncidentsList}" ?useNewDatePicker="${this.useNewDatePickerComponent}"> <reports-nav-bar slot="header" .selectedTab="${K.Incidents}"></reports-nav-bar> ${this.renderGridNoRows()} </ix-grid> </div> <ix-drawer ?isVisible="${this.showDrawer}" .onClosed="${()=>this.toggleDrawer()}" .scrollable="${!1}"> <div slot="content">${this.renderBody()}</div> </ix-drawer>`}};m.styles=[D,x],d([h()],m.prototype,"hashedLocalStorageID",void 0),d([h()],m.prototype,"currentFilters",void 0),d([h()],m.prototype,"incidentRecords",void 0),d([h()],m.prototype,"incidentRecord",void 0),d([h()],m.prototype,"showDrawer",void 0),m=d([f("incidents-list")],m);export{m as IncidentsList};
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent ui-service-management following open-wc recommendations",
4
4
  "license": "UNLICENSED",
5
5
  "author": "ui-service-management",
6
- "version": "15.0.0",
6
+ "version": "15.0.1",
7
7
  "type": "module",
8
8
  "exports": {
9
9
  "./ui-service-management.js": "./dist/ui-service-management.js",