@descope/web-components-ui 3.3.0 → 3.3.2
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/cjs/index.cjs.js +18 -9
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +37 -11
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/DescopeDev.js +1 -1
- package/dist/umd/DescopeDev.js.map +1 -1
- package/dist/umd/descope-date-field-index-js.js +1 -1
- package/dist/umd/descope-date-field-index-js.js.map +1 -1
- package/dist/umd/descope-hybrid-field-index-js.js +2 -2
- package/dist/umd/descope-hybrid-field-index-js.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/phone-fields-descope-phone-field-descope-phone-field-internal-index-js.js +1 -1
- package/dist/umd/phone-fields-descope-phone-field-descope-phone-field-internal-index-js.js.map +1 -1
- package/dist/umd/phone-fields-descope-phone-field-index-js.js +1 -1
- package/dist/umd/phone-fields-descope-phone-field-index-js.js.map +1 -1
- package/dist/umd/phone-fields-descope-phone-input-box-field-descope-phone-input-box-internal-index-js.js +1 -1
- package/dist/umd/phone-fields-descope-phone-input-box-field-descope-phone-input-box-internal-index-js.js.map +1 -1
- package/dist/umd/phone-fields-descope-phone-input-box-field-index-js.js +1 -1
- package/dist/umd/phone-fields-descope-phone-input-box-field-index-js.js.map +1 -1
- package/package.json +32 -32
- package/src/components/descope-date-field/DateFieldClass.js +12 -7
- package/src/components/descope-hybrid-field/HybridFieldClass.js +4 -2
- package/src/components/phone-fields/descope-phone-field/PhoneFieldClass.js +1 -0
- package/src/components/phone-fields/descope-phone-field/descope-phone-field-internal/PhoneFieldInternal.js +12 -2
- package/src/components/phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass.js +1 -0
- package/src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/PhoneFieldInternalInputBox.js +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descope-hybrid-field-index-js.js","mappings":";mOAQA,MAAMA,EAAa,IAAG;;;;;;;;GAUtB,QAAe,qBAAsB,CAAC,IAAkBA,GAAa,CACnEC,SAAU,qB,0BCXL,MAAMC,E,SAAmB,EAAG;;;;;;;;;GCEnC,QAAe,qBAAsBA,EAAkB,CAAED,SAAU,8BAyB5D,MAAME,UAAmB,IAC9B,aAAWC,GACT,MAAO,oBACT,CAEA,WAAAC,GACEC,QACAC,KAAKC,SAAS,SACdD,KAAKE,QAAU,gEACjB,CAGA,KAAAC,GACEJ,MAAMI,QAEFH,KAAKI,eACPJ,KAAKI,aAAaC,eAAiB,MAEvC,GAGF,OAAoBT,G,yDCtCb,MAAMU,GAAgB,QAAiB,eAqBjCC,GAAkB,SAC7B,QAAiB,CACfC,SAAUC,EAAA,IAEZ,MACA,QAAmB,CACjBC,UAAW,QACXC,UAAW,QACXC,iBAAkB,WAClBC,aAAc,CAAC,WAAY,WAAY,cAEzC,QAAgB,CAAEC,WAAY,CAAC,QAAS,kBAAmBC,iBAAiB,IAC5E,KA5BmBC,GACnB,cAAmCA,EACjC,IAAAC,GACElB,MAAMkB,SAGNjB,KAAKkB,YAAYC,aAAa,UATb,qDAWZnB,KAAKoB,aAAa,iBACrBpB,KAAKmB,aAAa,eAXE,YActBnB,KAAKqB,qBACP,GAG2B,EAe7B,QAAY,CACVC,MAAO,CAAC,GAAI,UACZC,eAAgB,qBAChBC,MAAO,IAAM,wGAIOjB,EAAgBkB,WAAWC,4BACzCnB,EAAgBkB,WAAWE,2EAI7B,QAAwB,iCAC3B,QAAuBpB,EAAgBkB,uBACvC,QAAoB,qBAAsBlB,EAAgBkB,uBACvD,ydAiBJG,iBAAkB,CAAC,WAAY,SAC/BtB,mBCpFJuB,eAAeC,OAAOxB,EAAeC,E,+JCFrC,MAAMwB,EAAyB,e,0BCQxB,MAAMzB,GAAgB,QAAiB,gBAExC0B,EAAQ,CACZC,OAAQ,CACN,QACA,WACA,aACA,aACA,OACA,WACA,WACA,WACA,oBACA,wBACA,6BACA,iCAEFC,MAAO,CACL,cACA,wCACA,2CACA,kBAEFC,MAAO,CACLC,YAAa,CACX,oBACA,sBACA,4BACA,qBACA,eACA,kBACA,qBACA,0BACA,yCAEFC,SAAU,CACR,qBACA,eACA,kBACA,qBACA,0BACA,2CAKAC,EAAU,CACdJ,MAAO,CACL,wCAAyC,kCACzC,2CAA4C,sCAE9CC,MAAO,CACL,oBAAqB,QACrB,kBAAmB,YACnB,qBAAsB,eACtB,0BAA2B,oBAC3B,wCAAyC,oCAKvCI,EAAc,sBAGdC,GAAY,EAAAC,EAAA,GAAgB,CAChCnC,gBACAoC,aAAc,QA+PHC,GAAmB,SAC9B,QAAiB,CAAEC,uBAAuB,QAAiB,oBAC3D,QAAiB,CACfpC,SAAU,CACRqC,UAAW,CAAEC,SAAU,IAAM,QAASC,SAAU,SAChDC,cAAe,CACb,CAAEF,SAAU,IAAM,sBAAuBC,SAAU,aACnD,CAAED,SAAU,IAAM,sBAAuBC,SAAU,aACnD,CAAED,SAAU,IAAM,gCAAiCC,SAAU,cAE/DE,iBAAkB,CAChB,CACEH,SAAU,IAAMI,EAAA,GAAgB5C,cAChCyC,SAAUG,EAAA,GAAgBzB,WAAWwB,kBAEvC,CACEH,SAAU,IAAMK,EAAA,GAAwB7C,cACxCyC,SAAUI,EAAA,GAAwB1B,WAAWwB,mBAGjDG,qBAAsB,CACpB,CACEN,SAAU,IAAMI,EAAA,GAAgB5C,cAChCyC,SAAUG,EAAA,GAAgBzB,WAAW2B,sBAEvC,CACEN,SAAU,IAAMK,EAAA,GAAwB7C,cACxCyC,SAAUI,EAAA,GAAwB1B,WAAW2B,uBAGjDC,wBAAyB,CACvB,CACEP,SAAU,IAAMI,EAAA,GAAgB5C,cAChCyC,SAAUG,EAAA,GAAgBzB,WAAW4B,yBAEvC,CACEP,SAAU,IAAMK,EAAA,GAAwB7C,cACxCyC,SAAUI,EAAA,GAAwB1B,WAAW4B,0BAGjDC,uBAAwB,CACtB,CACER,SAAU,IAAMI,EAAA,GAAgB5C,cAChCyC,SAAUG,EAAA,GAAgBzB,WAAW6B,wBAEvC,CACER,SAAU,IAAMK,EAAA,GAAwB7C,cACxCyC,SAAUI,EAAA,GAAwB1B,WAAW6B,yBAGjDC,yBAA0B,CACxB,CACET,SAAU,IAAMI,EAAA,GAAgB5C,cAChCyC,SAAUG,EAAA,GAAgBzB,WAAW8B,0BAEvC,CACET,SAAU,IAAMK,EAAA,GAAwB7C,cACxCyC,SAAUI,EAAA,GAAwB1B,WAAW8B,2BAGjDC,qBAAsB,CACpB,CACEV,SAAU,IAAMI,EAAA,GAAgB5C,cAChCyC,SAAUG,EAAA,GAAgBzB,WAAW+B,sBAEvC,CACEV,SAAU,IAAMK,EAAA,GAAwB7C,cACxCyC,SAAUI,EAAA,GAAwB1B,WAAW+B,0BAKrD,KACA,KAzE8B,CA5PhC,cAA6BhB,EAC3B,IAAsB,EAEtB,GAEA,WAAA1C,GACEC,QAEAC,KAAKyD,aAAa,CAAEC,KAAM,SAAUC,UAAY,2EAEP3D,KAAK4D,uPAM9C,QACE,ubAsBA5D,KAEJ,CAEA,mBAAI4D,GACF,MAA+C,SAAxC5D,KAAKoB,aAAa,iBAC3B,CAEA,iBAAIyC,GACF,OAAO7D,KAAK4D,gBAAkB5D,KAAK8D,WAAWC,cAAgB/D,KAAK8D,WAAW1D,YAChF,CAEA,gBAAI4D,GAEF,MAD0D,aAAvChE,KAAKoB,aAAa,iBACjBpB,KAAKiE,mBAAqBjE,KAAKkE,qBACrD,CAEA,eAAIC,GACF,MAAMC,EAAYpE,KAAKkE,sBAAsBG,eAAe,IAAM,GAClE,OAAOrE,KAAKoB,aAAa,iBAAmBgD,CAC9C,CAEA,kBAAIE,GACF,OAAItE,KAAKuE,cAAgBvE,KAAK8D,WACrB9D,KAAK6D,cAEP7D,KAAKgE,aAAaQ,mBAC3B,CAEA,SAAIC,GACF,OAAOzE,KAAKuE,aAAaE,OAAS,EACpC,CAEA,SAAIA,CAAMC,GACR1E,KAAK2E,kBAAkBD,GACvBE,WAAW,KACT5E,KAAKuE,YAAYE,MAAQC,GAE7B,CAEA,UAAMzD,GACJlB,MAAMkB,SAENjB,KAAK6E,aACL7E,KAAK8E,cACL9E,KAAK+E,8BAEC/E,KAAKgF,gBAEXhF,KAAKiF,gBACLjF,KAAKkF,yBACLlF,KAAKmF,2BACP,CAEA,aAAAH,GACE,OAAO,IAAII,QAASC,IAClB,MAAMC,EAAQC,YAAY,KACpBvF,KAAK6D,gBACP2B,cAAcF,GACdD,QAIR,CAEA,UAAAR,GACE7E,KAAK8D,WAAa9D,KAAKyF,WAAWC,cAlHlB,uBAmHhB1F,KAAKkE,sBAAwBlE,KAAKyF,WAAWC,cAAcnD,GAC3DvC,KAAKiE,mBAAqBjE,KAAKyF,WAAWC,cAlHhB,iCAoH1B1F,KAAK2F,OAAS,CAAC3F,KAAK8D,WAAY9D,KAAKkE,sBAAuBlE,KAAKiE,oBAEjEjE,KAAKuE,YAAcvE,KAAK8D,UAC1B,CAGA,aAAAmB,GACoB,CAChBjF,KAAK6D,cACL7D,KAAKkE,sBAAsBM,oBAC3BxE,KAAKiE,mBAAmBO,qBAGhBoB,QAASC,IACjBA,EAAIC,iBAAiB,QAAS9F,KAAK+F,cAAcC,KAAKhG,QAE1D,CAEA,sBAAAkF,GACElF,KAAK6D,cAAciC,iBAAiB,QAAS,KAC3C9F,KAAK6D,cAAc1C,aAAa,OAAQ,UAE1CnB,KAAK6D,cAAciC,iBAAiB,OAAQ,KAC1ClB,WAAW,KACT5E,KAAK6D,cAAc1C,aAAa,OAAQ,YAG9C,CAIA,yBAAAgE,GACE,MAAMc,EAAmBjG,KAAK8D,WAAW3C,aAAa6E,KAAKhG,KAAK6D,eAChE7D,KAAK6D,cAAc1C,aAAe,CAAC+E,EAAMzB,KAC1B,SAATyB,GAA6B,UAAVzB,IAAsBzE,KAAK8D,WAAWqC,aAAa,aACjEF,EAAiBC,EAAMzB,EAIpC,CAEA,WAAAK,IACE,QAAa9E,KAAMA,KAAK8D,WAAY,CAAEjD,aAAcmB,EAAME,MAAOkE,SAAU9D,EAAQJ,SAEnF,QAAalC,KAAMA,KAAKkE,sBAAuB,CAC7CrD,aAAcmB,EAAMG,MAAMC,YAC1BgE,SAAU9D,EAAQH,SAGpB,QAAanC,KAAMA,KAAKiE,mBAAoB,CAC1CpD,aAAcmB,EAAMG,MAAME,SAC1B+D,SAAU9D,EAAQH,QAGpBnC,KAAK2F,OAAOC,QAASS,IAAU,QAAarG,KAAMqG,EAAO,CAAExF,aAAcmB,EAAMC,UAE/E2C,WAAW,IAAM5E,KAAKkE,sBAAsB/C,aAAa,eAAgBnB,KAAKmE,aAChF,CAEA,aAAA4B,GACE/F,MAAK,EAAkBA,KAAKsE,eAAegC,eAK3CtG,KAAK2E,kBAAkB3E,KAAKsE,eAAeG,OAASzE,KAAKuE,YAAYE,MACvE,CAEA,iBAAAE,CAAkBD,GAChB,MAAM6B,ED7PoB,CAAC7B,KAAUA,IAAQ3C,EAAuByE,KAAK9B,GC6P7C+B,CAAe/B,GAAO1E,KAAKgE,aAAehE,KAAK8D,WAEvE9D,KAAKuE,cAAgBgC,GACvBvG,KAAK0G,eAAeH,EAExB,CAEA,cAAAG,CAAeH,GAKb,MAAM7B,EAAM1E,KAAKsE,eAAeG,OAASzE,KAAKuE,YAAYE,MAE1DzE,KAAKuE,YAAcgC,EACnBvG,KAAK2G,oBAAoBjC,GACrB1E,MAAK,GAAqBA,KAAKuE,YAAYqC,iBAC/C5G,KAAK6G,+BACL7G,KAAK+E,uBACP,CAEA,4BAAA8B,GACEjC,WAAW,KACT5E,KAAKsE,eAAewC,QACpB9G,KAAKsE,eAAeyC,oBAAoB/G,MAAK,EAAiBA,MAAK,IAEvE,CAEA,KACE,MAAMgH,EAAOhH,KAAKoB,aAAa,gBACzB6F,EAAQD,GAAQ9D,EAAA,GAAgBgE,aAAaC,KAAMC,GAAMA,EAAEJ,OAASA,GAC1E,OAAOC,GAAOI,UAAYnE,EAAA,GAAgBgE,aAAa,IAAIG,UAAY,EACzE,CAEA,mBAAAV,CAAoBjC,GAClB,MAAM4C,ED9R+B,CAAC5C,GAAQA,EAAI6C,QAAQ,SAAU,IC8R/C,CAAc7C,GAEnC,GADqB1E,KAAKuE,YAAYiD,YAAcjF,EAClC,CAChB,MAAM8E,EAAWrH,KAAKkE,sBAAsBuD,kBAAoBzH,MAAK,IACrEA,KAAKuE,YAAYE,MAAQ,GAAG4C,KAAYC,GAC1C,MACEtH,KAAKuE,YAAYE,MAAQ6C,CAE7B,CAEA,qBAAAvC,GACE/E,KAAK2F,OAAOC,QAASS,IACnBA,IAAUrG,KAAKuE,YAAc8B,EAAMqB,UAAUC,IAAI,UAAYtB,EAAMqB,UAAUE,OAAO,WAExF,CAEA,cAAAhB,GACE5G,MAAK,GAAsB,EAE3B,MAAM6F,EAAM7F,KAAKsE,eAKXuD,EAAgBhC,EAAIiC,KAO1B,OANAjC,EAAI1E,aAAa,OAAQ,QACzByD,WAAW,KACTiB,EAAIkB,oBAAoBlB,EAAIpB,MAAMsD,OAAQlC,EAAIpB,MAAMsD,QACpDlC,EAAI1E,aAAa,OAAQ0G,KAGpB7H,KAAKuE,YAAYqC,gBAC1B,CAEA,aAAAoB,GACE,OAAOhI,KAAKuE,YAAYyD,eAC1B,ICjUFnG,eAAeC,OAAOxB,EAAeqC,E,oICgBrC,MAAMsF,EAAW,IAAexG,WAEnBnB,GAAgB,QAAiB,0BAkDxC,KACJ4H,EAAI,MACJC,EAAK,aACL/H,EAAY,kBACZgI,EAAiB,WACjBC,EAAU,kBACVC,EAAiB,uBACjBC,EAAsB,WACtBC,EAAU,aACVC,EAAY,WACZC,GACE,CACFR,KAAM,CAAEpF,SAAU,IAAM,SACxBqF,MAAO,CAAErF,SAAU,iBACnB6F,YAAa,CAAE7F,SAAU,6BACzB1C,aAAc,CAAE0C,SAAU,SAC1BsF,kBAAmB,CAAEtF,SAAU,+CAC/BuF,WAAY,CAAEvF,SAAU,IAAM,wCAC9BwF,kBAAmB,CACjBxF,SAAU,0CAEZyF,uBAAwB,CACtBzF,SAAU,iDAEZ0F,WAAY,CAAE1F,SAAU,IAAM,sBAC9B4F,WAAY,CAAE5F,SAAU,uBACxB2F,aAAc,CAAE3F,SAAU,0BAGfK,GAA0B,SACrC,QAAiB,CACf3C,SAAU,CACRoI,SAAU,CACRV,EACAG,EACA,CACEvF,SAAU,IAAexC,cACzByC,SAAU,IAAetB,WAAWmH,WAGxCC,WAAY,CAACV,EAAOM,EAAcC,GAClC7F,UAAW,IAAKqF,EAAMnF,SAAU,SAChC+F,aAAc,IAAKZ,EAAMnF,SAAU,aACnCC,cAAe,IAAKkF,EAAMnF,SAAU,aAEpCgG,uBAAwB,CACtB,IAAKP,EAAYzF,SAAU,gBAC3B,IAAKyF,EAAYzF,SAAU,kBAG7BiG,cAAe,IAAKb,EAAOpF,SAAU,aACrCkG,gBAAiB,IAAKd,EAAOpF,SAAU,eACvCmG,eAAgB,CACd,IAAKf,EAAOpF,SAAU,SACtB,IAAKoF,EAAOpF,SAAU,2BACtB,IAAKqF,EAAmBrF,SAAU,UAEpCoG,uBAAwB,IAAKf,EAAmBrF,SAAU,WAC1DqG,sBAAuB,IAAKX,EAAc1F,SAAU,SAEpDE,iBAAkB,IAAKwF,EAAc1F,SAAU,oBAC/CK,qBAAsB,IAAKqF,EAAc1F,SAAU,mBACnDM,wBAAyB,IAAKoF,EAAc1F,SAAU,wBACtDO,uBAAwB,IAAKmF,EAAc1F,SAAU,qBACrDQ,yBAA0B,IAAKkF,EAAc1F,SAAU,uBACvDS,qBAAsB,IAAKiF,EAAc1F,SAAU,aAEnDsG,oBAAqB,IAAKb,EAAYzF,SAAUkF,EAASoB,qBAEzDC,0BAA2B,IAAKd,EAAYzF,SAAUkF,EAASsB,uBAE/DC,iBAAkB,IAAKjB,EAAwBxF,SAAU,gBACzD0G,iBAAkB,IAAKlB,EAAwBxF,SAAU,gBACzD2G,iBAAkB,IAAKnB,EAAwBxF,SAAU,gBACzD4G,kBAAmB,CACjB,IAAKrB,EAAmBvF,SAAU,iBAClC,IAAKwF,EAAwBxF,SAAU,kBAGzC6G,kBAAmB,IAAKtB,EAAmBvF,SAAU,iBACrD8G,kBAAmB,IAAKvB,EAAmBvF,SAAU,iBACrDrB,kBAAmB,IAAK4G,EAAmBvF,SAAU,iBACrDpB,mBAAoB,IAAK2G,EAAmBvF,SAAU,kBAEtD+G,cAAe,IAAK3B,EAAOpF,SAAU,YACrCgH,iBAAkB,IAAK5B,EAAOpF,SAAU,OACxCiH,wBAAyB,CACvB,IAAK7B,EAAOpF,SAAU,QACtB,IAAKoF,EAAOpF,SAAU,UAExBkH,gBAAiB,IAAK9B,EAAOpF,SAAU,aACvCmH,gBAAiB,IAAK/B,EAAOpF,SAAU,cACvCoH,kBAAmB,IAAKhC,EAAOpF,SAAU,uBACzCqH,iBAAkB,IAAKhK,EAAc2C,SAAU,UAC/CsH,uBAAwB,CACtBvH,SAAU,IAAexC,cACzByC,SAAUkF,EAASoC,2BAIzB,KACA,MACA,QAAgB,CAAEvJ,WAAY,CAAC,QAAS,oBAtJrBE,GACnB,cAA2CA,EACzC,uBAAWkG,GACT,OAAO,GACT,CAEA,IAAAjG,GACElB,MAAMkB,SAEN,MAAMqJ,EAAWC,SAASC,cAAc,YAExCF,EAAS3G,UAAY,cACpB,oEAGE,eAGH3D,KAAKkB,YAAYuJ,YAAYH,EAASI,QAAQC,WAAU,IAExD3K,KAAKI,aAAeJ,KAAKyF,WAAWC,cAAc,MAElD,QAAU1F,KAAMA,KAAKI,aAAc,CAAES,aAAc,CAAC,gBAEpD,QAAab,KAAKyF,WAAWyC,KAAMlI,KAAKI,aAAc,CACpDS,aAAc,CACZ,OACA,YACA,YACA,eACA,WACA,0BACA,QACA,aACA,2BACA,qBACA,eACA,oBACA,oCAGN,CAEA,uBAAI2D,GACF,OAAOxE,KAAKI,cAAcoE,mBAC5B,GAgCmC,EA4ErC,QAAY,CACVlD,MAAO,GACPC,eAAgB,oBAChBC,MAAO,IAAM,kHAMX,QAAuB2B,EAAwB1B,qBAC/C,QAAiB,8BACjB,QAAsC,8BACtC,kqBA2BEwG,EAASvG,gCACTuG,EAAStG,uxBA+BX,QAAwB,8BACxB,kBAEFC,iBAAkB,CAAC,WAAY,SAC/BtB,kB,4GCxPG,MAAMA,GAAgB,QAAiB,kCAExCsK,EAAqB,CACzB,WACA,OACA,WACA,0BACA,OACA,YACA,eACA,cAEIxE,EAAW,CACf,0BAA2B,eAGvByE,GAAiB,OAAqB,CAAEvK,gBAAeoC,aAAc,QAwP3E,EAtPA,cAAiCmI,EAC/B,6BAAWD,GACT,MAAO,GAAGE,OAAOD,EAAeD,oBAAsB,GAAIA,EAC5D,CAEA,GAEA,WAAA9K,GACEC,QAEAC,KAAK2D,UAAY,kIAMjB3D,KAAK+K,UAAY/K,KAAK0F,cAAc,qBACtC,CAGA,uBAAIlB,GACF,OAAOxE,KAAK+K,UAAUtF,WAAWC,cAAc,QACjD,CAEA,mBAAIsF,GACF,OAAO,OAAmBhL,KAAKoB,aAAa,gBAC9C,CAEA,eAAI+C,GACF,OAAOnE,KAAKoB,aAAa,eAC3B,CAEA,0BAAI6J,GACF,MAAyD,SAAlDjL,KAAKoB,aAAa,2BAC3B,CAEA,aAAI8J,GACF,OAAOC,SAASnL,KAAKoB,aAAa,aAAc,KAAO,CACzD,CAEA,aAAIgK,GACF,OAAOD,SAASnL,KAAKoB,aAAa,aAAc,KAAO,EACzD,CAEA,qBAAIiK,GACF,OAAOrL,KAAKoB,aAAa,uBAAuBkK,MAAM,KAAKC,OAAOC,UAAY,EAChF,CAEA,iBAAIC,GACF,MAA6C,SAAtCzL,KAAKoB,aAAa,eAC3B,CAEA,sBAAIsK,GACF,MAAkD,SAA3C1L,KAAKoB,aAAa,oBAC3B,CAEA,SAAIqD,GACF,IAAKzE,KAAK+K,UAAUtG,MAAO,MAAO,GAElC,IAAKzE,KAAK0L,mBACR,OAAO1L,MAAK,IAGd,MAAM2L,EAAY3L,MAAK,IAEvB,OAAI2L,GAAWC,SAAWD,GAAWE,oBAAsBF,GAAWG,eAC7D,IAAI,CAACH,GAAWE,mBAAoBF,GAAWG,gBAAgBC,KAAK,OAItE/L,KAAK+K,UAAUtG,KACxB,CAEA,SAAIA,CAAMC,GACR1E,KAAK+K,UAAUtG,MAAQC,CACzB,CAEA,IAAAzD,GACEjB,KAAK8F,iBAAiB,QAAUkG,IAE1BA,EAAEC,WAAWjM,KAAK+K,UAAUjE,UAGlC/G,MAAMkB,SAENjB,KAAK+K,UAAUjF,iBAAiB,QAAS9F,MAAK,EAASgG,KAAKhG,OAC5DA,KAAKkM,6BAA6B,CAAClM,KAAK+K,aAExC,QAAa/K,KAAK+K,UAAW/K,KAAM,CAAEa,aAAc,CAAC,cACtD,CAEA,WAAAsL,GACE,MAAMC,EAAoB,+BACpBC,EAAarM,MAAK,EAAaA,KAAK+K,UAAUtG,OAAS,IAE7D,GAAIzE,KAAKsM,aAAetM,KAAK+K,UAAUtG,MACrC,MAAO,CAAE8H,cAAc,GAGzB,GAAIvM,KAAK+K,UAAUtG,MAAO,CACxB,GAAI4H,EAAWtE,OAAS/H,KAAKkL,UAC3B,MAAO,CAAEsB,UAAU,GAGrB,GAEGxM,KAAK0L,oBAAsB1L,KAAK+K,UAAUtG,QAAUzE,MAAK,MAExDA,KAAK0L,oBAAsB1L,KAAK+K,UAAUtG,QAAU2H,EAAkB5F,KAAKxG,KAAKyE,OAElF,MAAO,CAAEgI,iBAAiB,EAE9B,CAEA,MAAO,CAAC,CACV,CAEA,iBAAA1F,IAAqB2F,GACnB1M,KAAK+K,UAAUhE,qBAAqB2F,EACtC,CAEA,wBAAAC,CAAyBC,EAAUC,EAAUC,GAG3C,GAFA/M,MAAM4M,yBAAyBC,EAAUC,EAAUC,GAE/CD,IAAaC,GAAYlC,EAAmBmC,SAASH,GAAW,CAClE,MAAMI,EAAO5G,EAASwG,IAAaA,EACnC5M,KAAK+K,UAAU5J,aAAa6L,EAAMF,EACpC,CACF,CAEA,GAASd,GACP,IAAIiB,EAAiBjN,MAAK,EAAegM,EAAEkB,OAAOzI,OAE9CzE,KAAKyL,eAAiBzL,MAAK,EAAWiN,KACxCA,EAAiBjN,MAAK,EAAmBiN,IAG3CjB,EAAEkB,OAAOzI,MAAQwI,CACnB,CAEA,KACE,IAAKjN,KAAKgL,gBACR,OAAOhL,KAAK+K,UAAUtG,MAGxB,MAAMqH,EAAiB9L,MAAK,EAA0BA,KAAK+K,UAAUtG,OAC/D6C,EAAetH,MAAK,EAAa8L,GAEvC,MAAO,CAAC9L,KAAKgL,gBAAiB1D,GAAcyE,KAAK,IACnD,CAEA,KACE,OAAI/L,KAAKgL,iBACA,OACL,CAAChL,KAAKgL,gBAAiBhL,MAAK,EAAaA,KAAK+K,UAAUtG,QAAQ8G,OAAOC,SAASO,KAAK,MAKlF,OAA2B/L,KAAK+K,UAAUtG,MACnD,CAEA,GAAaC,GACX,OAAOA,EAAI6C,QAAQ,MAAO,GAC5B,CAEA,GAA0B7C,GACxB,GAAkC,MAA9B1E,KAAK+K,UAAUtG,QAAQ,GAAY,CACrC,MAAM0I,EAAwB,IAAIC,OAAO,MAAMpN,KAAKgL,mBAEpD,OADgBtG,EAAI6C,QAAQ4F,EAAuB,GAErD,CACA,OAAOzI,CACT,CAEA,KACE,MAAM2I,GAAS,OAA2BrN,KAAKyE,OAC/C,SACI4I,IACAA,EAAOC,cACPD,EAAOzB,UACP5L,MAAK,EAAkBqN,EAAOzB,UAC/B5L,KAAKmE,aAAcnE,KAAKmE,cAAgBkJ,EAAOzB,QAEpD,CAEA,GAAkBxJ,GAChB,OAAKpC,KAAKqL,kBAAkBtD,QAIrB/H,KAAKqL,kBAAkB0B,SAAS3K,EACzC,CAEA,GAAesC,GAOb,GANAA,EAAMA,EACH6C,QAAQ,MAAO,IACfA,QAAQ,WAAY,IACpBA,QAAQ,KAAM,KACdA,QAAQ,KAAM,MAEZvH,KAAKiL,uBAAwB,CAChC,MAAMsC,EAAkB,gBACxB7I,EAAMA,EACH4G,MAAM,IACNC,OAAQiC,GAASD,EAAgB/G,KAAKgH,IACtCzB,KAAK,GACV,CAEA,OAAOrH,CACT,CAEA,GAAmB+I,EAAc,IAE/B,MAAMrL,EAAcpC,KAAKmE,aAAenE,MAAK,EAAyByN,GAGtE,OAAKrL,GAKApC,MAAK,GAAQA,MAAK,EAAK4L,UAAYxJ,IACtCpC,MAAK,EAAO,IAAI,IAAUoC,IAI5BpC,MAAK,EAAK0N,QAGW1N,MAAK,EAAKqG,MAAMoH,IAAgBA,GAZ5CA,CAeX,CAEA,GAAyB/I,GACvB,MAAM2I,GAAS,OAA2B3I,GAC1C,OAAO2I,GAAQzB,SAAW,EAC5B,CAEA,GAAWlH,GACT,SAAK,OAAoBA,EAE3B,E,6CCvQF7C,eAAeC,OAAO,IAAe,I,wHCCrCD,eAAeC,OAAO,KAAe,K,uDCF9B,MAAM6L,EAAsBvL,GACjC,IAAa+E,KAAMC,GAAMA,EAAEJ,OAAS5E,IAAciF,SAEvCuG,EAAuBlJ,IAClC,MAAMmJ,EAAmBnJ,EAAIuC,MAAM,OAC7B6G,EAAoBpJ,EAAIuC,MAAM,OACpC,OAAO4G,GAAkB9F,SAAW+F,GAAmB/F,O","sources":["webpack://@descope/web-components-ui/../../../node_modules/@vaadin/email-field/theme/lumo/vaadin-email-field-styles.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/email-field/src/vaadin-email-field-styles.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/email-field/src/vaadin-email-field.js","webpack://@descope/web-components-ui/./src/components/descope-email-field/EmailFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-email-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-hybrid-field/helpers.js","webpack://@descope/web-components-ui/./src/components/descope-hybrid-field/HybridFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-hybrid-field/index.js","webpack://@descope/web-components-ui/./src/components/phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass.js","webpack://@descope/web-components-ui/./src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/PhoneFieldInternalInputBox.js","webpack://@descope/web-components-ui/./src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/index.js","webpack://@descope/web-components-ui/./src/components/phone-fields/descope-phone-input-box-field/index.js","webpack://@descope/web-components-ui/./src/components/phone-fields/helpers.js"],"sourcesContent":["/**\n * @license\n * Copyright (c) 2021 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { inputFieldShared } from '@vaadin/vaadin-lumo-styles/mixins/input-field-shared.js';\nimport { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';\n\nconst emailField = css`\n :host([dir='rtl']) [part='input-field'] ::slotted(input) {\n --_lumo-text-field-overflow-mask-image: linear-gradient(to left, transparent, #000 1.25em);\n }\n\n :host([dir='rtl']) [part='input-field'] ::slotted(input:placeholder-shown) {\n --_lumo-text-field-overflow-mask-image: none;\n }\n`;\n\nregisterStyles('vaadin-email-field', [inputFieldShared, emailField], {\n moduleId: 'lumo-email-field',\n});\n","/**\n * @license\n * Copyright (c) 2021 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { css } from 'lit';\n\n// See https://github.com/vaadin/vaadin-text-field/issues/466\nexport const emailFieldStyles = css`\n :host([dir='rtl']) [part='input-field'] {\n direction: ltr;\n }\n\n :host([dir='rtl']) [part='input-field'] ::slotted(input)::placeholder {\n direction: rtl;\n text-align: left;\n }\n`;\n","/**\n * @license\n * Copyright (c) 2021 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { defineCustomElement } from '@vaadin/component-base/src/define.js';\nimport { TextField } from '@vaadin/text-field/src/vaadin-text-field.js';\nimport { registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';\nimport { emailFieldStyles } from './vaadin-email-field-styles.js';\n\nregisterStyles('vaadin-email-field', emailFieldStyles, { moduleId: 'vaadin-email-field-styles' });\n\n/**\n * `<vaadin-email-field>` is a Web Component for email field control in forms.\n *\n * ```html\n * <vaadin-email-field label=\"Email\"></vaadin-email-field>\n * ```\n *\n * ### Styling\n *\n * `<vaadin-email-field>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\n * See [`<vaadin-text-field>`](#/elements/vaadin-text-field) for the styling documentation.\n *\n * See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.\n *\n * @fires {Event} input - Fired when the value is changed by the user: on every typing keystroke, and the value is cleared using the clear button.\n * @fires {Event} change - Fired when the user commits a value change.\n * @fires {CustomEvent} invalid-changed - Fired when the `invalid` property changes.\n * @fires {CustomEvent} value-changed - Fired when the `value` property changes.\n * @fires {CustomEvent} validated - Fired whenever the field is validated.\n *\n * @customElement\n * @extends TextField\n */\nexport class EmailField extends TextField {\n static get is() {\n return 'vaadin-email-field';\n }\n\n constructor() {\n super();\n this._setType('email');\n this.pattern = '^([a-zA-Z0-9_\\\\.\\\\-+])+@[a-zA-Z0-9\\\\-.]+\\\\.[a-zA-Z0-9\\\\-]{2,}$';\n }\n\n /** @protected */\n ready() {\n super.ready();\n\n if (this.inputElement) {\n this.inputElement.autocapitalize = 'off';\n }\n }\n}\n\ndefineCustomElement(EmailField);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n externalInputMixin,\n} from '../../mixins';\nimport textFieldMappings from '../descope-text-field/textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('email-field');\n\nconst defaultPattern = \"^[\\\\w\\\\.\\\\%\\\\+\\\\-']+@[\\\\w\\\\.\\\\-]+\\\\.[A-Za-z]{2,}$\";\nconst defaultAutocomplete = 'username';\n\nconst customMixin = (superclass) =>\n class EmailFieldMixinClass extends superclass {\n init() {\n super.init?.();\n\n // we need to set the pattern on the base element because vaadin-email-field is overriding it\n this.baseElement.setAttribute('pattern', defaultPattern);\n\n if (!this.getAttribute('autocomplete')) {\n this.setAttribute('autocomplete', defaultAutocomplete);\n }\n\n this.createExternalInput();\n }\n };\n\nexport const EmailFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n externalInputMixin({\n inputType: 'email',\n inputName: 'email',\n autocompleteType: 'username',\n includeAttrs: ['disabled', 'readonly', 'pattern'],\n }),\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['', 'suffix'],\n wrappedEleName: 'vaadin-email-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${EmailFieldClass.cssVarList.inputOutlineWidth}) + var(${\n EmailFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n ${resetInputLabelPosition('vaadin-email-field')}\n\t\t\t${useHostExternalPadding(EmailFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-email-field', EmailFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-email-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-email-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n\n :host ::slotted(*) {\n -webkit-mask-image: none;\n }\n\n vaadin-email-field[external-input=\"true\"] > input:not(:placeholder-shown) {\n opacity: 0;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/email-field';\nimport { componentName, EmailFieldClass } from './EmailFieldClass';\n\ncustomElements.define(componentName, EmailFieldClass);\n\nexport { EmailFieldClass, componentName };\n","// Matches any character that is not a digit, whitespace, or phone formatting character (+, -, (, ))\nconst INVALID_PHONE_CHARS_RE = /[^\\d\\s+\\-()]/;\n\nexport const isNumericValue = (val) => !!val && !INVALID_PHONE_CHARS_RE.test(val);\n\nexport const sanitizeCountryCodePrefix = (val) => val.replace(/\\+\\d+-/, '');\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { isNumericValue, sanitizeCountryCodePrefix as sanitizeValue } from './helpers';\nimport { PhoneFieldClass } from '../phone-fields/descope-phone-field/PhoneFieldClass';\nimport { PhoneFieldInputBoxClass } from '../phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass';\n\nexport const componentName = getComponentName('hybrid-field');\n\nconst attrs = {\n shared: [\n 'label',\n 'bordered',\n 'full-width',\n 'label-type',\n 'size',\n 'disabled',\n 'readonly',\n 'required',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n email: [\n 'placeholder',\n 'data-errormessage-value-missing-email',\n 'data-errormessage-pattern-mismatch-email',\n 'external-input',\n ],\n phone: {\n countryCode: [\n 'phone-input-label',\n 'country-input-label',\n 'country-input-placeholder',\n 'restrict-countries',\n 'default-code',\n 'phone-minlength',\n 'phone-format-value',\n 'phone-strict-validation',\n 'data-errormessage-value-missing-phone',\n ],\n inputBox: [\n 'restrict-countries',\n 'default-code',\n 'phone-minlength',\n 'phone-format-value',\n 'phone-strict-validation',\n 'data-errormessage-value-missing-phone',\n ],\n },\n};\n\nconst attrMap = {\n email: {\n 'data-errormessage-value-missing-email': 'data-errormessage-value-missing',\n 'data-errormessage-pattern-mismatch-email': 'data-errormessage-pattern-mismatch',\n },\n phone: {\n 'phone-input-label': 'label',\n 'phone-minlength': 'minlength',\n 'phone-format-value': 'format-value',\n 'phone-strict-validation': 'strict-validation',\n 'data-errormessage-value-missing-phone': 'data-errormessage-value-missing',\n },\n};\n\nconst EMAIL_FIELD = 'descope-email-field';\nconst PHONE_FIELD = 'descope-phone-field';\nconst PHONE_INPUT_BOX_FIELD = 'descope-phone-input-box-field';\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: 'div',\n});\n\nclass RawHybridField extends BaseClass {\n #isReportedValidity = false;\n\n #selectionStart;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <descope-email-field external-input=\"${this.isExternalInput}\"></descope-email-field>\n <descope-phone-field allow-alphanumeric-input=\"true\"></descope-phone-field>\n <descope-phone-input-box-field allow-alphanumeric-input=\"true\"></descope-phone-input-box-field>\n </div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n box-sizing: border-box;\n padding: 0;\n gap: 0;\n }\n .wrapper {\n display: grid;\n width: 100%;\n }\n descope-email-field,\n descope-phone-field,\n descope-phone-input-box-field {\n grid-area: 1/1;\n width: 100%;\n height: 100%;\n }\n .hidden {\n visibility: hidden;\n }\n `,\n this\n );\n }\n\n get isExternalInput() {\n return this.getAttribute('external-input') === 'true';\n }\n\n get emailInputEle() {\n return this.isExternalInput ? this.emailInput.externalInput : this.emailInput.inputElement;\n }\n\n get phoneVariant() {\n const isInputBox = this.getAttribute('phone-variant') === 'inputBox';\n return isInputBox ? this.phoneInputBoxInput : this.phoneCountryCodeInput;\n }\n\n get defaultCode() {\n const firstItem = this.phoneCountryCodeInput.countryCodes?.[0] || '';\n return this.getAttribute('default-code') || firstItem;\n }\n\n get activeInputEle() {\n if (this.activeInput === this.emailInput) {\n return this.emailInputEle;\n }\n return this.phoneVariant.phoneNumberInputEle;\n }\n\n get value() {\n return this.activeInput?.value || '';\n }\n\n set value(val) {\n this.handleActiveInput(val);\n setTimeout(() => {\n this.activeInput.value = val;\n });\n }\n\n async init() {\n super.init?.();\n\n this.initInputs();\n this.updateAttrs();\n this.toggleInputVisibility();\n\n await this.waitForInputs();\n\n this.initInputEles();\n this.overrideEmailInputType();\n this.overrideEmailSetAttribute();\n }\n\n waitForInputs() {\n return new Promise((resolve) => {\n const check = setInterval(() => {\n if (this.emailInputEle) {\n clearInterval(check);\n resolve();\n }\n });\n });\n }\n\n initInputs() {\n this.emailInput = this.shadowRoot.querySelector(EMAIL_FIELD);\n this.phoneCountryCodeInput = this.shadowRoot.querySelector(PHONE_FIELD);\n this.phoneInputBoxInput = this.shadowRoot.querySelector(PHONE_INPUT_BOX_FIELD);\n\n this.inputs = [this.emailInput, this.phoneCountryCodeInput, this.phoneInputBoxInput];\n\n this.activeInput = this.emailInput;\n }\n\n // we need to listen on the inner `input` element itself, otherwise we don't always get an `input` event\n initInputEles() {\n const inputEles = [\n this.emailInputEle,\n this.phoneCountryCodeInput.phoneNumberInputEle,\n this.phoneInputBoxInput.phoneNumberInputEle,\n ];\n\n inputEles.forEach((ele) => {\n ele.addEventListener('input', this.onValueChange.bind(this));\n });\n }\n\n overrideEmailInputType() {\n this.emailInputEle.addEventListener('focus', () => {\n this.emailInputEle.setAttribute('type', 'text');\n });\n this.emailInputEle.addEventListener('blur', () => {\n setTimeout(() => {\n this.emailInputEle.setAttribute('type', 'email');\n });\n });\n }\n\n // We want to prevent Vaadin from changing the input type to `email`\n // otherwise, we cannot get the selectionStart from the input.\n overrideEmailSetAttribute() {\n const origEmailSetAttr = this.emailInput.setAttribute.bind(this.emailInputEle);\n this.emailInputEle.setAttribute = (name, value) => {\n if (name !== 'type' || value !== 'email' || !this.emailInput.hasAttribute('focused')) {\n return origEmailSetAttr(name, value);\n }\n return false;\n };\n }\n\n updateAttrs() {\n forwardAttrs(this, this.emailInput, { includeAttrs: attrs.email, mapAttrs: attrMap.email });\n\n forwardAttrs(this, this.phoneCountryCodeInput, {\n includeAttrs: attrs.phone.countryCode,\n mapAttrs: attrMap.phone,\n });\n\n forwardAttrs(this, this.phoneInputBoxInput, {\n includeAttrs: attrs.phone.inputBox,\n mapAttrs: attrMap.phone,\n });\n\n this.inputs.forEach((input) => forwardAttrs(this, input, { includeAttrs: attrs.shared }));\n\n setTimeout(() => this.phoneCountryCodeInput.setAttribute('default-code', this.defaultCode));\n }\n\n onValueChange() {\n this.#selectionStart = this.activeInputEle.selectionStart;\n // phone components expose an API to their inputElement; in case of phone variants like\n // phone-input-box-field, we want to make sure that the value being passed\n // is raw value from input, and not the value with a dial-code prefix, or other decorations\n // applied behind the scenes by the phone components\n this.handleActiveInput(this.activeInputEle.value || this.activeInput.value);\n }\n\n handleActiveInput(val) {\n const expectedActiveInput = isNumericValue(val) ? this.phoneVariant : this.emailInput;\n\n if (this.activeInput !== expectedActiveInput) {\n this.setActiveInput(expectedActiveInput);\n }\n }\n\n setActiveInput(expectedActiveInput) {\n // phone components expose an API to their inputElement; in case of phone variants like\n // phone-input-box-field, we want to make sure that the value being passed\n // is raw value from input, and not the value with a dial-code prefix, or other decorations\n // applied behind the scenes by the phone components\n const val = this.activeInputEle.value || this.activeInput.value;\n\n this.activeInput = expectedActiveInput;\n this.setActiveInputValue(val);\n if (this.#isReportedValidity) this.activeInput.reportValidity();\n this.setActiveInputSelectionStart();\n this.toggleInputVisibility();\n }\n\n setActiveInputSelectionStart() {\n setTimeout(() => {\n this.activeInputEle.focus();\n this.activeInputEle.setSelectionRange?.(this.#selectionStart, this.#selectionStart);\n });\n }\n\n #getDefaultDialCode() {\n const code = this.getAttribute('default-code');\n const match = code && PhoneFieldClass.CountryCodes.find((c) => c.code === code);\n return match?.dialCode || PhoneFieldClass.CountryCodes[0]?.dialCode || '';\n }\n\n setActiveInputValue(val) {\n const sanitizedVal = sanitizeValue(val);\n const isPhoneField = this.activeInput.localName === PHONE_FIELD;\n if (isPhoneField) {\n const dialCode = this.phoneCountryCodeInput.countryCodeItems || this.#getDefaultDialCode();\n this.activeInput.value = `${dialCode}-${sanitizedVal}`;\n } else {\n this.activeInput.value = sanitizedVal;\n }\n }\n\n toggleInputVisibility() {\n this.inputs.forEach((input) => {\n input !== this.activeInput ? input.classList.add('hidden') : input.classList.remove('hidden');\n });\n }\n\n reportValidity() {\n this.#isReportedValidity = true;\n\n const ele = this.activeInputEle;\n\n // On reportValidity we want to set the caret at the end of the input value.\n // Since checkValidity triggers `focus` on the input, it sets the caret at the start of the input,\n // regardless the existing value.\n const origInputType = ele.type;\n ele.setAttribute('type', 'text');\n setTimeout(() => {\n ele.setSelectionRange?.(ele.value.length, ele.value.length);\n ele.setAttribute('type', origInputType);\n });\n\n return this.activeInput.reportValidity();\n }\n\n checkValidity() {\n return this.activeInput.checkValidity();\n }\n}\n\nexport const HybridFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostDirection: [\n { selector: () => 'descope-email-field', property: 'direction' },\n { selector: () => 'descope-phone-field', property: 'direction' },\n { selector: () => 'descope-phone-input-box-field', property: 'direction' },\n ],\n errorMessageIcon: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIcon,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIcon,\n },\n ],\n errorMessageIconSize: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconSize,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconSize,\n },\n ],\n errorMessageIconPadding: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconPadding,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconPadding,\n },\n ],\n errorMessageIconRepeat: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconRepeat,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconRepeat,\n },\n ],\n errorMessageIconPosition: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconPosition,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconPosition,\n },\n ],\n errorMessageFontSize: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageFontSize,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageFontSize,\n },\n ],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawHybridField);\n","import '../descope-email-field';\nimport '../phone-fields/descope-phone-field';\nimport '../phone-fields/descope-phone-input-box-field';\n\nimport { componentName, HybridFieldClass } from './HybridFieldClass';\n\ncustomElements.define(componentName, HybridFieldClass);\n\nexport { HybridFieldClass, componentName };\n","import { syncAttrs } from '@descope-ui/common/components-helpers';\nimport { componentName as descopeInternalComponentName } from './descope-phone-input-box-internal/PhoneFieldInternalInputBox';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n createProxy,\n createStyleMixin,\n draggableMixin,\n inputOverrideValidConstraintsMixin,\n proxyInputMixin,\n} from '../../../mixins';\nimport { TextFieldClass } from '../../descope-text-field/TextFieldClass';\nimport CountryCodes from '../CountryCodes';\nimport {\n resetInputLabelPosition,\n resetInputCursor,\n resetInputFieldDefaultWidth,\n resetInputFieldInvalidBackgroundColor,\n useHostExternalPadding,\n inputFloatingLabelStyle,\n} from '../../../helpers/themeHelpers/resetHelpers';\n\nconst textVars = TextFieldClass.cssVarList;\n\nexport const componentName = getComponentName('phone-input-box-field');\n\nconst customMixin = (superclass) =>\n class PhoneFieldInputBoxMixinClass extends superclass {\n static get CountryCodes() {\n return CountryCodes;\n }\n\n init() {\n super.init?.();\n\n const template = document.createElement('template');\n\n template.innerHTML = `\n\t\t\t\t<${descopeInternalComponentName}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tslot=\"input\"\n\t\t\t\t></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n syncAttrs(this, this.inputElement, { includeAttrs: ['has-value'] });\n\n forwardAttrs(this.shadowRoot.host, this.inputElement, {\n includeAttrs: [\n 'size',\n 'minlength',\n 'maxlength',\n 'default-code',\n 'disabled',\n 'phone-input-placeholder',\n 'label',\n 'label-type',\n 'allow-alphanumeric-input',\n 'restrict-countries',\n 'format-value',\n 'strict-validation',\n 'data-errormessage-type-mismatch',\n ],\n });\n }\n\n get phoneNumberInputEle() {\n return this.inputElement?.phoneNumberInputEle;\n }\n };\n\nconst {\n host,\n label,\n inputElement,\n requiredIndicator,\n inputField,\n internalComponent,\n internalComponentAfter,\n phoneInput,\n errorMessage,\n helperText,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n placeholder: { selector: '> input:placeholder-shown' },\n inputElement: { selector: 'input' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n inputField: { selector: () => 'vaadin-text-field::part(input-field)' },\n internalComponent: {\n selector: 'descope-phone-field-internal-input-box',\n },\n internalComponentAfter: {\n selector: 'descope-phone-field-internal-input-box::after',\n },\n phoneInput: { selector: () => 'descope-text-field' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const PhoneFieldInputBoxClass = compose(\n createStyleMixin({\n mappings: {\n fontSize: [\n host,\n inputField,\n {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.fontSize,\n },\n ],\n fontFamily: [label, errorMessage, helperText],\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n\n inputHorizontalPadding: [\n { ...phoneInput, property: 'padding-left' },\n { ...phoneInput, property: 'padding-right' },\n ],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n labelTextColor: [\n { ...label, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: 'color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n inputValueTextColor: { ...phoneInput, property: textVars.inputValueTextColor },\n\n inputPlaceholderTextColor: { ...phoneInput, property: textVars.inputPlaceholderColor },\n\n inputBorderStyle: { ...internalComponentAfter, property: 'border-style' },\n inputBorderWidth: { ...internalComponentAfter, property: 'border-width' },\n inputBorderColor: { ...internalComponentAfter, property: 'border-color' },\n inputBorderRadius: [\n { ...internalComponent, property: 'border-radius' },\n { ...internalComponentAfter, property: 'border-radius' },\n ],\n\n inputOutlineStyle: { ...internalComponent, property: 'outline-style' },\n inputOutlineColor: { ...internalComponent, property: 'outline-color' },\n inputOutlineWidth: { ...internalComponent, property: 'outline-width' },\n inputOutlineOffset: { ...internalComponent, property: 'outline-offset' },\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n valueInputHeight: { ...inputElement, property: 'height' },\n valueInputMarginBottom: {\n selector: TextFieldClass.componentName,\n property: textVars.valueInputMarginBottom,\n },\n },\n }),\n draggableMixin,\n inputOverrideValidConstraintsMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n box-sizing: border-box;\n }\n ${useHostExternalPadding(PhoneFieldInputBoxClass.cssVarList)}\n ${resetInputCursor('vaadin-text-field')}\n ${resetInputFieldInvalidBackgroundColor('vaadin-text-field')}\n ${resetInputFieldDefaultWidth()}\n\n vaadin-text-field {\n width: 100%;\n box-sizing: border-box;\n padding: 0;\n }\n vaadin-text-field[focus-ring]::part(input-field) {\n box-shadow: none;\n }\n vaadin-text-field::before {\n height: 0;\n }\n vaadin-text-field::part(input-field) {\n padding: 0;\n background: transparent;\n -webkit-mask-image: none;\n }\n descope-phone-field-internal-input-box {\n -webkit-mask-image: none;\n padding: 0;\n width: 100%;\n }\n descope-phone-field-internal-input-box > div {\n width: 100%;\n }\n descope-phone-field-internal-input-box descope-text-field {\n ${textVars.inputOutlineWidth}: 0;\n ${textVars.inputOutlineOffset}: 0;\n }\n descope-phone-field-internal-input-box::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n box-sizing: border-box;\n pointer-events: none;\n }\n descope-text-field {\n flex-grow: 1;\n width: 100%;\n direction: ltr;\n }\n vaadin-text-field[readonly] > input:placeholder-shown {\n opacity: 1;\n }\n vaadin-text-field::part(input-field)::after {\n border: none;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] input:placeholder-shown {\n opacity: 0;\n }\n\n ${resetInputLabelPosition('vaadin-text-field')}\n ${inputFloatingLabelStyle()}\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n\nexport default PhoneFieldInputBoxClass;\n","import { forwardAttrs } from '@descope-ui/common/components-helpers';\nimport parsePhoneNumberFromString, { AsYouType } from 'libphonenumber-js/min';\nimport { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport { getComponentName } from '../../../../helpers/componentHelpers';\nimport { getCountryByCodeId, matchingParenthesis } from '../../helpers';\n\nexport const componentName = getComponentName('phone-field-internal-input-box');\n\nconst observedAttributes = [\n 'disabled',\n 'size',\n 'readonly',\n 'phone-input-placeholder',\n 'name',\n 'maxlength',\n 'autocomplete',\n 'label-type',\n];\nconst mapAttrs = {\n 'phone-input-placeholder': 'placeholder',\n};\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass PhoneFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttributes);\n }\n\n #ayt;\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div>\n <descope-text-field tabindex=\"1\" type=\"tel\" bordered=\"false\"></descope-text-field>\n </div>\n `;\n\n this.textField = this.querySelector('descope-text-field');\n }\n\n // notice: this function is exposed in parent component\n get phoneNumberInputEle() {\n return this.textField.shadowRoot.querySelector('input');\n }\n\n get defaultDialCode() {\n return getCountryByCodeId(this.getAttribute('default-code'));\n }\n\n get defaultCode() {\n return this.getAttribute('default-code');\n }\n\n get allowAlphanumericInput() {\n return this.getAttribute('allow-alphanumeric-input') === 'true';\n }\n\n get minLength() {\n return parseInt(this.getAttribute('minlength'), 10) || 0;\n }\n\n get maxLength() {\n return parseInt(this.getAttribute('maxlength'), 10) || 50;\n }\n\n get restrictCountries() {\n return this.getAttribute('restrict-countries')?.split(',').filter(Boolean) || [];\n }\n\n get isFormatValue() {\n return this.getAttribute('format-value') === 'true';\n }\n\n get isStrictValidation() {\n return this.getAttribute('strict-validation') === 'true';\n }\n\n get value() {\n if (!this.textField.value) return '';\n\n if (!this.isStrictValidation) {\n return this.#nonParsedValue();\n }\n\n const parsedVal = this.#parseWithCountryCode();\n\n if (parsedVal?.country && parsedVal?.countryCallingCode && parsedVal?.nationalNumber) {\n return `+${[parsedVal?.countryCallingCode, parsedVal?.nationalNumber].join('-')}`;\n }\n\n // if failed to parse or to find country code return text field value\n return this.textField.value;\n }\n\n set value(val) {\n this.textField.value = val;\n }\n\n init() {\n this.addEventListener('focus', (e) => {\n // We want to ignore focus events we are dispatching\n if (e.isTrusted) this.textField.focus();\n });\n\n super.init?.();\n\n this.textField.addEventListener('input', this.#onInput.bind(this));\n this.handleFocusEventsDispatching([this.textField]);\n\n forwardAttrs(this.textField, this, { includeAttrs: ['has-value'] });\n }\n\n getValidity() {\n const validPhonePattern = /^\\+?\\d{1,4}-?(?:\\d-?){1,15}$/;\n const stripValue = this.#sanitizeVal(this.textField.value || '');\n\n if (this.isRequired && !this.textField.value) {\n return { valueMissing: true };\n }\n\n if (this.textField.value) {\n if (stripValue.length < this.minLength) {\n return { tooShort: true };\n }\n\n if (\n // has `strict-validation` and not properly parsed\n (this.isStrictValidation && this.textField.value && !this.#isValidParsedValue()) ||\n // if no `strict-validation` then conform with naive pattern\n (!this.isStrictValidation && this.textField.value && !validPhonePattern.test(this.value))\n ) {\n return { patternMismatch: true };\n }\n }\n\n return {};\n }\n\n setSelectionRange(...args) {\n this.textField.setSelectionRange(...args);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback(attrName, oldValue, newValue);\n\n if (oldValue !== newValue && observedAttributes.includes(attrName)) {\n const attr = mapAttrs[attrName] || attrName;\n this.textField.setAttribute(attr, newValue);\n }\n }\n\n #onInput(e) {\n let sanitizedInput = this.#sanitizeInput(e.target.value);\n\n if (this.isFormatValue && this.#canFormat(sanitizedInput)) {\n sanitizedInput = this.#formatPhoneNumber(sanitizedInput);\n }\n\n e.target.value = sanitizedInput;\n }\n\n #nonParsedValue() {\n if (!this.defaultDialCode) {\n return this.textField.value;\n }\n\n const nationalNumber = this.#trimDuplicateCountryCode(this.textField.value);\n const sanitizedVal = this.#sanitizeVal(nationalNumber);\n\n return [this.defaultDialCode, sanitizedVal].join('-');\n }\n\n #parseWithCountryCode() {\n if (this.defaultDialCode) {\n return parsePhoneNumberFromString(\n [this.defaultDialCode, this.#sanitizeVal(this.textField.value)].filter(Boolean).join('')\n );\n }\n\n // if default-code or not parsed - try to extract country code from value\n return parsePhoneNumberFromString(this.textField.value);\n }\n\n #sanitizeVal(val) {\n return val.replace(/\\D/g, '');\n }\n\n #trimDuplicateCountryCode(val) {\n if (this.textField.value?.[0] === '+') {\n const dialCodePrefixPattern = new RegExp(`^\\\\${this.defaultDialCode}`);\n const trimmed = val.replace(dialCodePrefixPattern, '');\n return trimmed;\n }\n return val;\n }\n\n #isValidParsedValue() {\n const parsed = parsePhoneNumberFromString(this.value);\n return (\n !!parsed && // parsed successfully (not undefined)\n !!parsed.isValid?.() && // Parsed object is valid\n !!parsed.country && // Parsed object with a country code\n !!this.#isAllowedCountry(parsed.country) && // Parsed with allowed country code\n (this.defaultCode ? this.defaultCode === parsed.country : true) // In case default country code is set validate parsed country matches it\n );\n }\n\n #isAllowedCountry(countryCode) {\n if (!this.restrictCountries.length) {\n return true;\n }\n\n return this.restrictCountries.includes(countryCode);\n }\n\n #sanitizeInput(val) {\n val = val\n .replace(/^-+/, '') // dash as first char\n .replace(/(?!^)\\+/g, '') // multiple plus symbols\n .replace('--', '-') // consecutive dashes\n .replace('+-', '+'); // dash following plus symbol\n\n if (!this.allowAlphanumericInput) {\n const telDigitsRegExp = /^[+\\d-\\(\\)]+$/;\n val = val\n .split('')\n .filter((char) => telDigitsRegExp.test(char))\n .join('');\n }\n\n return val;\n }\n\n #formatPhoneNumber(phoneNumber = '') {\n // Get country code from `default-code or` from phone number\n const countryCode = this.defaultCode || this.#getCountryCodeFromValue(phoneNumber);\n\n // Skip formatting if no country code is available\n if (!countryCode) {\n return phoneNumber;\n }\n\n // Update AsYouType country code if needed\n if (!this.#ayt || this.#ayt.country !== countryCode) {\n this.#ayt = new AsYouType(countryCode);\n }\n\n // We need to reset AsYouType instance before setting new input\n this.#ayt.reset();\n\n // Set AsYouType input\n const formattedVal = this.#ayt.input(phoneNumber) || phoneNumber;\n\n return formattedVal;\n }\n\n #getCountryCodeFromValue(val) {\n const parsed = parsePhoneNumberFromString(val);\n return parsed?.country || '';\n }\n\n #canFormat(val) {\n if (!matchingParenthesis(val)) return false;\n return true;\n }\n}\n\nexport default PhoneFieldInternal;\n","import '../../../descope-text-field';\n\nimport PhoneFieldInternalInputBox, { componentName } from './PhoneFieldInternalInputBox';\n\ncustomElements.define(componentName, PhoneFieldInternalInputBox);\n","import './descope-phone-input-box-internal';\nimport '../../descope-text-field';\n\nimport { componentName, PhoneFieldInputBoxClass } from './PhoneFieldInputBoxClass';\n\ncustomElements.define(componentName, PhoneFieldInputBoxClass);\n\nexport { PhoneFieldInputBoxClass, componentName };\n","import parsePhoneNumberFromString from 'libphonenumber-js/min';\nimport CountryCodes from './CountryCodes';\n\nexport const getCountryByCodeId = (countryCode) =>\n CountryCodes.find((c) => c.code === countryCode)?.dialCode;\n\nexport const matchingParenthesis = (val) => {\n const openParenMatches = val.match(/\\(/g);\n const closeParenMatches = val.match(/\\)/g);\n return openParenMatches?.length === closeParenMatches?.length;\n};\n"],"names":["emailField","moduleId","emailFieldStyles","EmailField","is","constructor","super","this","_setType","pattern","ready","inputElement","autocapitalize","componentName","EmailFieldClass","mappings","textFieldMappings","inputType","inputName","autocompleteType","includeAttrs","proxyProps","useProxyTargets","superclass","init","baseElement","setAttribute","getAttribute","createExternalInput","slots","wrappedEleName","style","cssVarList","inputOutlineWidth","inputOutlineOffset","excludeAttrsSync","customElements","define","INVALID_PHONE_CHARS_RE","attrs","shared","email","phone","countryCode","inputBox","attrMap","PHONE_FIELD","BaseClass","createBaseClass","baseSelector","HybridFieldClass","componentNameOverride","hostWidth","selector","property","hostDirection","errorMessageIcon","PhoneFieldClass","PhoneFieldInputBoxClass","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","errorMessageFontSize","attachShadow","mode","innerHTML","isExternalInput","emailInputEle","emailInput","externalInput","phoneVariant","phoneInputBoxInput","phoneCountryCodeInput","defaultCode","firstItem","countryCodes","activeInputEle","activeInput","phoneNumberInputEle","value","val","handleActiveInput","setTimeout","initInputs","updateAttrs","toggleInputVisibility","waitForInputs","initInputEles","overrideEmailInputType","overrideEmailSetAttribute","Promise","resolve","check","setInterval","clearInterval","shadowRoot","querySelector","inputs","forEach","ele","addEventListener","onValueChange","bind","origEmailSetAttr","name","hasAttribute","mapAttrs","input","selectionStart","expectedActiveInput","test","isNumericValue","setActiveInput","setActiveInputValue","reportValidity","setActiveInputSelectionStart","focus","setSelectionRange","code","match","CountryCodes","find","c","dialCode","sanitizedVal","replace","localName","countryCodeItems","classList","add","remove","origInputType","type","length","checkValidity","textVars","host","label","requiredIndicator","inputField","internalComponent","internalComponentAfter","phoneInput","errorMessage","helperText","placeholder","fontSize","fontFamily","hostMinWidth","inputHorizontalPadding","labelFontSize","labelFontWeight","labelTextColor","labelRequiredIndicator","errorMessageTextColor","inputValueTextColor","inputPlaceholderTextColor","inputPlaceholderColor","inputBorderStyle","inputBorderWidth","inputBorderColor","inputBorderRadius","inputOutlineStyle","inputOutlineColor","labelPosition","labelTopPosition","labelHorizontalPosition","inputTransformY","inputTransition","marginInlineStart","valueInputHeight","valueInputMarginBottom","template","document","createElement","appendChild","content","cloneNode","observedAttributes","BaseInputClass","concat","textField","defaultDialCode","allowAlphanumericInput","minLength","parseInt","maxLength","restrictCountries","split","filter","Boolean","isFormatValue","isStrictValidation","parsedVal","country","countryCallingCode","nationalNumber","join","e","isTrusted","handleFocusEventsDispatching","getValidity","validPhonePattern","stripValue","isRequired","valueMissing","tooShort","patternMismatch","args","attributeChangedCallback","attrName","oldValue","newValue","includes","attr","sanitizedInput","target","dialCodePrefixPattern","RegExp","parsed","isValid","telDigitsRegExp","char","phoneNumber","reset","getCountryByCodeId","matchingParenthesis","openParenMatches","closeParenMatches"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"descope-hybrid-field-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../../../node_modules/@vaadin/email-field/theme/lumo/vaadin-email-field-styles.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/email-field/src/vaadin-email-field-styles.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/email-field/src/vaadin-email-field.js","webpack://@descope/web-components-ui/./src/components/descope-email-field/EmailFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-email-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-hybrid-field/helpers.js","webpack://@descope/web-components-ui/./src/components/descope-hybrid-field/HybridFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-hybrid-field/index.js","webpack://@descope/web-components-ui/./src/components/phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass.js","webpack://@descope/web-components-ui/./src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/PhoneFieldInternalInputBox.js","webpack://@descope/web-components-ui/./src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/index.js","webpack://@descope/web-components-ui/./src/components/phone-fields/descope-phone-input-box-field/index.js","webpack://@descope/web-components-ui/./src/components/phone-fields/helpers.js"],"sourcesContent":["/**\n * @license\n * Copyright (c) 2021 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { inputFieldShared } from '@vaadin/vaadin-lumo-styles/mixins/input-field-shared.js';\nimport { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';\n\nconst emailField = css`\n :host([dir='rtl']) [part='input-field'] ::slotted(input) {\n --_lumo-text-field-overflow-mask-image: linear-gradient(to left, transparent, #000 1.25em);\n }\n\n :host([dir='rtl']) [part='input-field'] ::slotted(input:placeholder-shown) {\n --_lumo-text-field-overflow-mask-image: none;\n }\n`;\n\nregisterStyles('vaadin-email-field', [inputFieldShared, emailField], {\n moduleId: 'lumo-email-field',\n});\n","/**\n * @license\n * Copyright (c) 2021 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { css } from 'lit';\n\n// See https://github.com/vaadin/vaadin-text-field/issues/466\nexport const emailFieldStyles = css`\n :host([dir='rtl']) [part='input-field'] {\n direction: ltr;\n }\n\n :host([dir='rtl']) [part='input-field'] ::slotted(input)::placeholder {\n direction: rtl;\n text-align: left;\n }\n`;\n","/**\n * @license\n * Copyright (c) 2021 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { defineCustomElement } from '@vaadin/component-base/src/define.js';\nimport { TextField } from '@vaadin/text-field/src/vaadin-text-field.js';\nimport { registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';\nimport { emailFieldStyles } from './vaadin-email-field-styles.js';\n\nregisterStyles('vaadin-email-field', emailFieldStyles, { moduleId: 'vaadin-email-field-styles' });\n\n/**\n * `<vaadin-email-field>` is a Web Component for email field control in forms.\n *\n * ```html\n * <vaadin-email-field label=\"Email\"></vaadin-email-field>\n * ```\n *\n * ### Styling\n *\n * `<vaadin-email-field>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\n * See [`<vaadin-text-field>`](#/elements/vaadin-text-field) for the styling documentation.\n *\n * See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.\n *\n * @fires {Event} input - Fired when the value is changed by the user: on every typing keystroke, and the value is cleared using the clear button.\n * @fires {Event} change - Fired when the user commits a value change.\n * @fires {CustomEvent} invalid-changed - Fired when the `invalid` property changes.\n * @fires {CustomEvent} value-changed - Fired when the `value` property changes.\n * @fires {CustomEvent} validated - Fired whenever the field is validated.\n *\n * @customElement\n * @extends TextField\n */\nexport class EmailField extends TextField {\n static get is() {\n return 'vaadin-email-field';\n }\n\n constructor() {\n super();\n this._setType('email');\n this.pattern = '^([a-zA-Z0-9_\\\\.\\\\-+])+@[a-zA-Z0-9\\\\-.]+\\\\.[a-zA-Z0-9\\\\-]{2,}$';\n }\n\n /** @protected */\n ready() {\n super.ready();\n\n if (this.inputElement) {\n this.inputElement.autocapitalize = 'off';\n }\n }\n}\n\ndefineCustomElement(EmailField);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n externalInputMixin,\n} from '../../mixins';\nimport textFieldMappings from '../descope-text-field/textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('email-field');\n\nconst defaultPattern = \"^[\\\\w\\\\.\\\\%\\\\+\\\\-']+@[\\\\w\\\\.\\\\-]+\\\\.[A-Za-z]{2,}$\";\nconst defaultAutocomplete = 'username';\n\nconst customMixin = (superclass) =>\n class EmailFieldMixinClass extends superclass {\n init() {\n super.init?.();\n\n // we need to set the pattern on the base element because vaadin-email-field is overriding it\n this.baseElement.setAttribute('pattern', defaultPattern);\n\n if (!this.getAttribute('autocomplete')) {\n this.setAttribute('autocomplete', defaultAutocomplete);\n }\n\n this.createExternalInput();\n }\n };\n\nexport const EmailFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n externalInputMixin({\n inputType: 'email',\n inputName: 'email',\n autocompleteType: 'username',\n includeAttrs: ['disabled', 'readonly', 'pattern'],\n }),\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['', 'suffix'],\n wrappedEleName: 'vaadin-email-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${EmailFieldClass.cssVarList.inputOutlineWidth}) + var(${\n EmailFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n ${resetInputLabelPosition('vaadin-email-field')}\n\t\t\t${useHostExternalPadding(EmailFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-email-field', EmailFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-email-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-email-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n\n :host ::slotted(*) {\n -webkit-mask-image: none;\n }\n\n vaadin-email-field[external-input=\"true\"] > input:not(:placeholder-shown) {\n opacity: 0;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/email-field';\nimport { componentName, EmailFieldClass } from './EmailFieldClass';\n\ncustomElements.define(componentName, EmailFieldClass);\n\nexport { EmailFieldClass, componentName };\n","// Matches any character that is not a digit, whitespace, or phone formatting character (+, -, (, ))\nconst INVALID_PHONE_CHARS_RE = /[^\\d\\s+\\-()]/;\n\nexport const isNumericValue = (val) => !!val && !INVALID_PHONE_CHARS_RE.test(val);\n\nexport const sanitizeCountryCodePrefix = (val) => val.replace(/\\+\\d+-/, '');\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { isNumericValue, sanitizeCountryCodePrefix as sanitizeValue } from './helpers';\nimport { PhoneFieldClass } from '../phone-fields/descope-phone-field/PhoneFieldClass';\nimport { PhoneFieldInputBoxClass } from '../phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass';\n\nexport const componentName = getComponentName('hybrid-field');\n\nconst attrs = {\n shared: [\n 'label',\n 'bordered',\n 'full-width',\n 'label-type',\n 'size',\n 'disabled',\n 'readonly',\n 'required',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n email: [\n 'placeholder',\n 'data-errormessage-value-missing-email',\n 'data-errormessage-pattern-mismatch-email',\n 'external-input',\n ],\n phone: {\n countryCode: [\n 'phone-input-label',\n 'country-input-label',\n 'country-input-placeholder',\n 'restrict-countries',\n 'default-code',\n 'phone-minlength',\n 'phone-format-value',\n 'phone-strict-validation',\n 'phone-input-type',\n 'data-errormessage-value-missing-phone',\n ],\n inputBox: [\n 'restrict-countries',\n 'default-code',\n 'phone-minlength',\n 'phone-format-value',\n 'phone-strict-validation',\n 'phone-input-type',\n 'data-errormessage-value-missing-phone',\n ],\n },\n};\n\nconst attrMap = {\n email: {\n 'data-errormessage-value-missing-email': 'data-errormessage-value-missing',\n 'data-errormessage-pattern-mismatch-email': 'data-errormessage-pattern-mismatch',\n },\n phone: {\n 'phone-input-label': 'label',\n 'phone-minlength': 'minlength',\n 'phone-format-value': 'format-value',\n 'phone-strict-validation': 'strict-validation',\n 'data-errormessage-value-missing-phone': 'data-errormessage-value-missing',\n },\n};\n\nconst EMAIL_FIELD = 'descope-email-field';\nconst PHONE_FIELD = 'descope-phone-field';\nconst PHONE_INPUT_BOX_FIELD = 'descope-phone-input-box-field';\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: 'div',\n});\n\nclass RawHybridField extends BaseClass {\n #isReportedValidity = false;\n\n #selectionStart;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <descope-email-field external-input=\"${this.isExternalInput}\"></descope-email-field>\n <descope-phone-field allow-alphanumeric-input=\"true\" phone-input-type=\"text\"></descope-phone-field>\n <descope-phone-input-box-field allow-alphanumeric-input=\"true\" phone-input-type=\"text\"></descope-phone-input-box-field>\n </div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n box-sizing: border-box;\n padding: 0;\n gap: 0;\n }\n .wrapper {\n display: grid;\n width: 100%;\n }\n descope-email-field,\n descope-phone-field,\n descope-phone-input-box-field {\n grid-area: 1/1;\n width: 100%;\n height: 100%;\n }\n .hidden {\n visibility: hidden;\n }\n `,\n this\n );\n }\n\n get isExternalInput() {\n return this.getAttribute('external-input') === 'true';\n }\n\n get emailInputEle() {\n return this.isExternalInput ? this.emailInput.externalInput : this.emailInput.inputElement;\n }\n\n get phoneVariant() {\n const isInputBox = this.getAttribute('phone-variant') === 'inputBox';\n return isInputBox ? this.phoneInputBoxInput : this.phoneCountryCodeInput;\n }\n\n get defaultCode() {\n const firstItem = this.phoneCountryCodeInput.countryCodes?.[0] || '';\n return this.getAttribute('default-code') || firstItem;\n }\n\n get activeInputEle() {\n if (this.activeInput === this.emailInput) {\n return this.emailInputEle;\n }\n return this.phoneVariant.phoneNumberInputEle;\n }\n\n get value() {\n return this.activeInput?.value || '';\n }\n\n set value(val) {\n this.handleActiveInput(val);\n setTimeout(() => {\n this.activeInput.value = val;\n });\n }\n\n async init() {\n super.init?.();\n\n this.initInputs();\n this.updateAttrs();\n this.toggleInputVisibility();\n\n await this.waitForInputs();\n\n this.initInputEles();\n this.overrideEmailInputType();\n this.overrideEmailSetAttribute();\n }\n\n waitForInputs() {\n return new Promise((resolve) => {\n const check = setInterval(() => {\n if (this.emailInputEle) {\n clearInterval(check);\n resolve();\n }\n });\n });\n }\n\n initInputs() {\n this.emailInput = this.shadowRoot.querySelector(EMAIL_FIELD);\n this.phoneCountryCodeInput = this.shadowRoot.querySelector(PHONE_FIELD);\n this.phoneInputBoxInput = this.shadowRoot.querySelector(PHONE_INPUT_BOX_FIELD);\n\n this.inputs = [this.emailInput, this.phoneCountryCodeInput, this.phoneInputBoxInput];\n\n this.activeInput = this.emailInput;\n }\n\n // we need to listen on the inner `input` element itself, otherwise we don't always get an `input` event\n initInputEles() {\n const inputEles = [\n this.emailInputEle,\n this.phoneCountryCodeInput.phoneNumberInputEle,\n this.phoneInputBoxInput.phoneNumberInputEle,\n ];\n\n inputEles.forEach((ele) => {\n ele.addEventListener('input', this.onValueChange.bind(this));\n });\n }\n\n overrideEmailInputType() {\n this.emailInputEle.addEventListener('focus', () => {\n this.emailInputEle.setAttribute('type', 'text');\n });\n this.emailInputEle.addEventListener('blur', () => {\n setTimeout(() => {\n this.emailInputEle.setAttribute('type', 'email');\n });\n });\n }\n\n // We want to prevent Vaadin from changing the input type to `email`\n // otherwise, we cannot get the selectionStart from the input.\n overrideEmailSetAttribute() {\n const origEmailSetAttr = this.emailInput.setAttribute.bind(this.emailInputEle);\n this.emailInputEle.setAttribute = (name, value) => {\n if (name !== 'type' || value !== 'email' || !this.emailInput.hasAttribute('focused')) {\n return origEmailSetAttr(name, value);\n }\n return false;\n };\n }\n\n updateAttrs() {\n forwardAttrs(this, this.emailInput, { includeAttrs: attrs.email, mapAttrs: attrMap.email });\n\n forwardAttrs(this, this.phoneCountryCodeInput, {\n includeAttrs: attrs.phone.countryCode,\n mapAttrs: attrMap.phone,\n });\n\n forwardAttrs(this, this.phoneInputBoxInput, {\n includeAttrs: attrs.phone.inputBox,\n mapAttrs: attrMap.phone,\n });\n\n this.inputs.forEach((input) => forwardAttrs(this, input, { includeAttrs: attrs.shared }));\n\n setTimeout(() => this.phoneCountryCodeInput.setAttribute('default-code', this.defaultCode));\n }\n\n onValueChange() {\n this.#selectionStart = this.activeInputEle.selectionStart;\n // phone components expose an API to their inputElement; in case of phone variants like\n // phone-input-box-field, we want to make sure that the value being passed\n // is raw value from input, and not the value with a dial-code prefix, or other decorations\n // applied behind the scenes by the phone components\n this.handleActiveInput(this.activeInputEle.value || this.activeInput.value);\n }\n\n handleActiveInput(val) {\n const expectedActiveInput = isNumericValue(val) ? this.phoneVariant : this.emailInput;\n\n if (this.activeInput !== expectedActiveInput) {\n this.setActiveInput(expectedActiveInput);\n }\n }\n\n setActiveInput(expectedActiveInput) {\n // phone components expose an API to their inputElement; in case of phone variants like\n // phone-input-box-field, we want to make sure that the value being passed\n // is raw value from input, and not the value with a dial-code prefix, or other decorations\n // applied behind the scenes by the phone components\n const val = this.activeInputEle.value || this.activeInput.value;\n\n this.activeInput = expectedActiveInput;\n this.setActiveInputValue(val);\n if (this.#isReportedValidity) this.activeInput.reportValidity();\n this.setActiveInputSelectionStart();\n this.toggleInputVisibility();\n }\n\n setActiveInputSelectionStart() {\n setTimeout(() => {\n this.activeInputEle.focus();\n this.activeInputEle.setSelectionRange?.(this.#selectionStart, this.#selectionStart);\n });\n }\n\n #getDefaultDialCode() {\n const code = this.getAttribute('default-code');\n const match = code && PhoneFieldClass.CountryCodes.find((c) => c.code === code);\n return match?.dialCode || PhoneFieldClass.CountryCodes[0]?.dialCode || '';\n }\n\n setActiveInputValue(val) {\n const sanitizedVal = sanitizeValue(val);\n const isPhoneField = this.activeInput.localName === PHONE_FIELD;\n if (isPhoneField) {\n const dialCode = this.phoneCountryCodeInput.countryCodeItems || this.#getDefaultDialCode();\n this.activeInput.value = `${dialCode}-${sanitizedVal}`;\n } else {\n this.activeInput.value = sanitizedVal;\n }\n }\n\n toggleInputVisibility() {\n this.inputs.forEach((input) => {\n input !== this.activeInput ? input.classList.add('hidden') : input.classList.remove('hidden');\n });\n }\n\n reportValidity() {\n this.#isReportedValidity = true;\n\n const ele = this.activeInputEle;\n\n // On reportValidity we want to set the caret at the end of the input value.\n // Since checkValidity triggers `focus` on the input, it sets the caret at the start of the input,\n // regardless the existing value.\n const origInputType = ele.type;\n ele.setAttribute('type', 'text');\n setTimeout(() => {\n ele.setSelectionRange?.(ele.value.length, ele.value.length);\n ele.setAttribute('type', origInputType);\n });\n\n return this.activeInput.reportValidity();\n }\n\n checkValidity() {\n return this.activeInput.checkValidity();\n }\n}\n\nexport const HybridFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostDirection: [\n { selector: () => 'descope-email-field', property: 'direction' },\n { selector: () => 'descope-phone-field', property: 'direction' },\n { selector: () => 'descope-phone-input-box-field', property: 'direction' },\n ],\n errorMessageIcon: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIcon,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIcon,\n },\n ],\n errorMessageIconSize: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconSize,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconSize,\n },\n ],\n errorMessageIconPadding: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconPadding,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconPadding,\n },\n ],\n errorMessageIconRepeat: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconRepeat,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconRepeat,\n },\n ],\n errorMessageIconPosition: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconPosition,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconPosition,\n },\n ],\n errorMessageFontSize: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageFontSize,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageFontSize,\n },\n ],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawHybridField);\n","import '../descope-email-field';\nimport '../phone-fields/descope-phone-field';\nimport '../phone-fields/descope-phone-input-box-field';\n\nimport { componentName, HybridFieldClass } from './HybridFieldClass';\n\ncustomElements.define(componentName, HybridFieldClass);\n\nexport { HybridFieldClass, componentName };\n","import { syncAttrs } from '@descope-ui/common/components-helpers';\nimport { componentName as descopeInternalComponentName } from './descope-phone-input-box-internal/PhoneFieldInternalInputBox';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n createProxy,\n createStyleMixin,\n draggableMixin,\n inputOverrideValidConstraintsMixin,\n proxyInputMixin,\n} from '../../../mixins';\nimport { TextFieldClass } from '../../descope-text-field/TextFieldClass';\nimport CountryCodes from '../CountryCodes';\nimport {\n resetInputLabelPosition,\n resetInputCursor,\n resetInputFieldDefaultWidth,\n resetInputFieldInvalidBackgroundColor,\n useHostExternalPadding,\n inputFloatingLabelStyle,\n} from '../../../helpers/themeHelpers/resetHelpers';\n\nconst textVars = TextFieldClass.cssVarList;\n\nexport const componentName = getComponentName('phone-input-box-field');\n\nconst customMixin = (superclass) =>\n class PhoneFieldInputBoxMixinClass extends superclass {\n static get CountryCodes() {\n return CountryCodes;\n }\n\n init() {\n super.init?.();\n\n const template = document.createElement('template');\n\n template.innerHTML = `\n\t\t\t\t<${descopeInternalComponentName}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tslot=\"input\"\n\t\t\t\t></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n syncAttrs(this, this.inputElement, { includeAttrs: ['has-value'] });\n\n forwardAttrs(this.shadowRoot.host, this.inputElement, {\n includeAttrs: [\n 'size',\n 'minlength',\n 'maxlength',\n 'default-code',\n 'disabled',\n 'phone-input-placeholder',\n 'label',\n 'label-type',\n 'allow-alphanumeric-input',\n 'restrict-countries',\n 'format-value',\n 'strict-validation',\n 'data-errormessage-type-mismatch',\n 'phone-input-type',\n ],\n });\n }\n\n get phoneNumberInputEle() {\n return this.inputElement?.phoneNumberInputEle;\n }\n };\n\nconst {\n host,\n label,\n inputElement,\n requiredIndicator,\n inputField,\n internalComponent,\n internalComponentAfter,\n phoneInput,\n errorMessage,\n helperText,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n placeholder: { selector: '> input:placeholder-shown' },\n inputElement: { selector: 'input' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n inputField: { selector: () => 'vaadin-text-field::part(input-field)' },\n internalComponent: {\n selector: 'descope-phone-field-internal-input-box',\n },\n internalComponentAfter: {\n selector: 'descope-phone-field-internal-input-box::after',\n },\n phoneInput: { selector: () => 'descope-text-field' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const PhoneFieldInputBoxClass = compose(\n createStyleMixin({\n mappings: {\n fontSize: [\n host,\n inputField,\n {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.fontSize,\n },\n ],\n fontFamily: [label, errorMessage, helperText],\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n\n inputHorizontalPadding: [\n { ...phoneInput, property: 'padding-left' },\n { ...phoneInput, property: 'padding-right' },\n ],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n labelTextColor: [\n { ...label, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: 'color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n inputValueTextColor: { ...phoneInput, property: textVars.inputValueTextColor },\n\n inputPlaceholderTextColor: { ...phoneInput, property: textVars.inputPlaceholderColor },\n\n inputBorderStyle: { ...internalComponentAfter, property: 'border-style' },\n inputBorderWidth: { ...internalComponentAfter, property: 'border-width' },\n inputBorderColor: { ...internalComponentAfter, property: 'border-color' },\n inputBorderRadius: [\n { ...internalComponent, property: 'border-radius' },\n { ...internalComponentAfter, property: 'border-radius' },\n ],\n\n inputOutlineStyle: { ...internalComponent, property: 'outline-style' },\n inputOutlineColor: { ...internalComponent, property: 'outline-color' },\n inputOutlineWidth: { ...internalComponent, property: 'outline-width' },\n inputOutlineOffset: { ...internalComponent, property: 'outline-offset' },\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n valueInputHeight: { ...inputElement, property: 'height' },\n valueInputMarginBottom: {\n selector: TextFieldClass.componentName,\n property: textVars.valueInputMarginBottom,\n },\n },\n }),\n draggableMixin,\n inputOverrideValidConstraintsMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n box-sizing: border-box;\n }\n ${useHostExternalPadding(PhoneFieldInputBoxClass.cssVarList)}\n ${resetInputCursor('vaadin-text-field')}\n ${resetInputFieldInvalidBackgroundColor('vaadin-text-field')}\n ${resetInputFieldDefaultWidth()}\n\n vaadin-text-field {\n width: 100%;\n box-sizing: border-box;\n padding: 0;\n }\n vaadin-text-field[focus-ring]::part(input-field) {\n box-shadow: none;\n }\n vaadin-text-field::before {\n height: 0;\n }\n vaadin-text-field::part(input-field) {\n padding: 0;\n background: transparent;\n -webkit-mask-image: none;\n }\n descope-phone-field-internal-input-box {\n -webkit-mask-image: none;\n padding: 0;\n width: 100%;\n }\n descope-phone-field-internal-input-box > div {\n width: 100%;\n }\n descope-phone-field-internal-input-box descope-text-field {\n ${textVars.inputOutlineWidth}: 0;\n ${textVars.inputOutlineOffset}: 0;\n }\n descope-phone-field-internal-input-box::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n box-sizing: border-box;\n pointer-events: none;\n }\n descope-text-field {\n flex-grow: 1;\n width: 100%;\n direction: ltr;\n }\n vaadin-text-field[readonly] > input:placeholder-shown {\n opacity: 1;\n }\n vaadin-text-field::part(input-field)::after {\n border: none;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] input:placeholder-shown {\n opacity: 0;\n }\n\n ${resetInputLabelPosition('vaadin-text-field')}\n ${inputFloatingLabelStyle()}\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n\nexport default PhoneFieldInputBoxClass;\n","import { forwardAttrs } from '@descope-ui/common/components-helpers';\nimport parsePhoneNumberFromString, { AsYouType } from 'libphonenumber-js/min';\nimport { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport { getComponentName } from '../../../../helpers/componentHelpers';\nimport { getCountryByCodeId, matchingParenthesis } from '../../helpers';\n\nexport const componentName = getComponentName('phone-field-internal-input-box');\n\nconst observedAttributes = [\n 'disabled',\n 'size',\n 'readonly',\n 'phone-input-placeholder',\n 'name',\n 'maxlength',\n 'autocomplete',\n 'label-type',\n 'phone-input-type',\n];\nconst mapAttrs = {\n 'phone-input-placeholder': 'placeholder',\n 'phone-input-type': 'type',\n};\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass PhoneFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttributes);\n }\n\n #ayt;\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div>\n <descope-text-field tabindex=\"1\" type=\"tel\" bordered=\"false\"></descope-text-field>\n </div>\n `;\n\n this.textField = this.querySelector('descope-text-field');\n }\n\n // notice: this function is exposed in parent component\n get phoneNumberInputEle() {\n return this.textField.shadowRoot.querySelector('input');\n }\n\n get defaultDialCode() {\n return getCountryByCodeId(this.getAttribute('default-code'));\n }\n\n get defaultCode() {\n return this.getAttribute('default-code');\n }\n\n get allowAlphanumericInput() {\n return this.getAttribute('allow-alphanumeric-input') === 'true';\n }\n\n get minLength() {\n return parseInt(this.getAttribute('minlength'), 10) || 0;\n }\n\n get maxLength() {\n return parseInt(this.getAttribute('maxlength'), 10) || 50;\n }\n\n get restrictCountries() {\n return this.getAttribute('restrict-countries')?.split(',').filter(Boolean) || [];\n }\n\n get isFormatValue() {\n return this.getAttribute('format-value') === 'true';\n }\n\n get isStrictValidation() {\n return this.getAttribute('strict-validation') === 'true';\n }\n\n get value() {\n if (!this.textField.value) return '';\n\n if (!this.isStrictValidation) {\n return this.#nonParsedValue();\n }\n\n const parsedVal = this.#parseWithCountryCode();\n\n if (parsedVal?.country && parsedVal?.countryCallingCode && parsedVal?.nationalNumber) {\n return `+${[parsedVal?.countryCallingCode, parsedVal?.nationalNumber].join('-')}`;\n }\n\n // if failed to parse or to find country code return text field value\n return this.textField.value;\n }\n\n set value(val) {\n this.textField.value = val;\n }\n\n init() {\n this.addEventListener('focus', (e) => {\n // We want to ignore focus events we are dispatching\n if (e.isTrusted) this.textField.focus();\n });\n\n super.init?.();\n\n this.textField.addEventListener('input', this.#onInput.bind(this));\n this.handleFocusEventsDispatching([this.textField]);\n\n forwardAttrs(this.textField, this, { includeAttrs: ['has-value'] });\n\n forwardAttrs(this, this.textField, {\n includeAttrs: ['phone-input-type'],\n mapAttrs: { 'phone-input-type': 'type' },\n });\n }\n\n getValidity() {\n const validPhonePattern = /^\\+?\\d{1,4}-?(?:\\d-?){1,15}$/;\n const stripValue = this.#sanitizeVal(this.textField.value || '');\n\n if (this.isRequired && !this.textField.value) {\n return { valueMissing: true };\n }\n\n if (this.textField.value) {\n if (stripValue.length < this.minLength) {\n return { tooShort: true };\n }\n\n if (\n // has `strict-validation` and not properly parsed\n (this.isStrictValidation && this.textField.value && !this.#isValidParsedValue()) ||\n // if no `strict-validation` then conform with naive pattern\n (!this.isStrictValidation && this.textField.value && !validPhonePattern.test(this.value))\n ) {\n return { patternMismatch: true };\n }\n }\n\n return {};\n }\n\n setSelectionRange(...args) {\n this.textField.setSelectionRange(...args);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback(attrName, oldValue, newValue);\n\n if (oldValue !== newValue && observedAttributes.includes(attrName)) {\n const attr = mapAttrs[attrName] || attrName;\n this.textField.setAttribute(attr, newValue);\n }\n }\n\n #onInput(e) {\n let sanitizedInput = this.#sanitizeInput(e.target.value);\n\n if (this.isFormatValue && this.#canFormat(sanitizedInput)) {\n sanitizedInput = this.#formatPhoneNumber(sanitizedInput);\n }\n\n e.target.value = sanitizedInput;\n }\n\n #nonParsedValue() {\n if (!this.defaultDialCode) {\n return this.textField.value;\n }\n\n const nationalNumber = this.#trimDuplicateCountryCode(this.textField.value);\n const sanitizedVal = this.#sanitizeVal(nationalNumber);\n\n return [this.defaultDialCode, sanitizedVal].join('-');\n }\n\n #parseWithCountryCode() {\n if (this.defaultDialCode) {\n return parsePhoneNumberFromString(\n [this.defaultDialCode, this.#sanitizeVal(this.textField.value)].filter(Boolean).join('')\n );\n }\n\n // if default-code or not parsed - try to extract country code from value\n return parsePhoneNumberFromString(this.textField.value);\n }\n\n #sanitizeVal(val) {\n return val.replace(/\\D/g, '');\n }\n\n #trimDuplicateCountryCode(val) {\n if (this.textField.value?.[0] === '+') {\n const dialCodePrefixPattern = new RegExp(`^\\\\${this.defaultDialCode}`);\n const trimmed = val.replace(dialCodePrefixPattern, '');\n return trimmed;\n }\n return val;\n }\n\n #isValidParsedValue() {\n const parsed = parsePhoneNumberFromString(this.value);\n return (\n !!parsed && // parsed successfully (not undefined)\n !!parsed.isValid?.() && // Parsed object is valid\n !!parsed.country && // Parsed object with a country code\n !!this.#isAllowedCountry(parsed.country) && // Parsed with allowed country code\n (this.defaultCode ? this.defaultCode === parsed.country : true) // In case default country code is set validate parsed country matches it\n );\n }\n\n #isAllowedCountry(countryCode) {\n if (!this.restrictCountries.length) {\n return true;\n }\n\n return this.restrictCountries.includes(countryCode);\n }\n\n #sanitizeInput(val) {\n val = val\n .replace(/^-+/, '') // dash as first char\n .replace(/(?!^)\\+/g, '') // multiple plus symbols\n .replace('--', '-') // consecutive dashes\n .replace('+-', '+'); // dash following plus symbol\n\n if (!this.allowAlphanumericInput) {\n const telDigitsRegExp = /^[+\\d-\\(\\)]+$/;\n val = val\n .split('')\n .filter((char) => telDigitsRegExp.test(char))\n .join('');\n }\n\n return val;\n }\n\n #formatPhoneNumber(phoneNumber = '') {\n // Get country code from `default-code or` from phone number\n const countryCode = this.defaultCode || this.#getCountryCodeFromValue(phoneNumber);\n\n // Skip formatting if no country code is available\n if (!countryCode) {\n return phoneNumber;\n }\n\n // Update AsYouType country code if needed\n if (!this.#ayt || this.#ayt.country !== countryCode) {\n this.#ayt = new AsYouType(countryCode);\n }\n\n // We need to reset AsYouType instance before setting new input\n this.#ayt.reset();\n\n // Set AsYouType input\n const formattedVal = this.#ayt.input(phoneNumber) || phoneNumber;\n\n return formattedVal;\n }\n\n #getCountryCodeFromValue(val) {\n const parsed = parsePhoneNumberFromString(val);\n return parsed?.country || '';\n }\n\n #canFormat(val) {\n if (!matchingParenthesis(val)) return false;\n return true;\n }\n}\n\nexport default PhoneFieldInternal;\n","import '../../../descope-text-field';\n\nimport PhoneFieldInternalInputBox, { componentName } from './PhoneFieldInternalInputBox';\n\ncustomElements.define(componentName, PhoneFieldInternalInputBox);\n","import './descope-phone-input-box-internal';\nimport '../../descope-text-field';\n\nimport { componentName, PhoneFieldInputBoxClass } from './PhoneFieldInputBoxClass';\n\ncustomElements.define(componentName, PhoneFieldInputBoxClass);\n\nexport { PhoneFieldInputBoxClass, componentName };\n","import parsePhoneNumberFromString from 'libphonenumber-js/min';\nimport CountryCodes from './CountryCodes';\n\nexport const getCountryByCodeId = (countryCode) =>\n CountryCodes.find((c) => c.code === countryCode)?.dialCode;\n\nexport const matchingParenthesis = (val) => {\n const openParenMatches = val.match(/\\(/g);\n const closeParenMatches = val.match(/\\)/g);\n return openParenMatches?.length === closeParenMatches?.length;\n};\n"],"names":["emailField","moduleId","emailFieldStyles","EmailField","is","constructor","super","this","_setType","pattern","ready","inputElement","autocapitalize","componentName","EmailFieldClass","mappings","textFieldMappings","inputType","inputName","autocompleteType","includeAttrs","proxyProps","useProxyTargets","superclass","init","baseElement","setAttribute","getAttribute","createExternalInput","slots","wrappedEleName","style","cssVarList","inputOutlineWidth","inputOutlineOffset","excludeAttrsSync","customElements","define","INVALID_PHONE_CHARS_RE","attrs","shared","email","phone","countryCode","inputBox","attrMap","PHONE_FIELD","BaseClass","createBaseClass","baseSelector","HybridFieldClass","componentNameOverride","hostWidth","selector","property","hostDirection","errorMessageIcon","PhoneFieldClass","PhoneFieldInputBoxClass","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","errorMessageFontSize","attachShadow","mode","innerHTML","isExternalInput","emailInputEle","emailInput","externalInput","phoneVariant","phoneInputBoxInput","phoneCountryCodeInput","defaultCode","firstItem","countryCodes","activeInputEle","activeInput","phoneNumberInputEle","value","val","handleActiveInput","setTimeout","initInputs","updateAttrs","toggleInputVisibility","waitForInputs","initInputEles","overrideEmailInputType","overrideEmailSetAttribute","Promise","resolve","check","setInterval","clearInterval","shadowRoot","querySelector","inputs","forEach","ele","addEventListener","onValueChange","bind","origEmailSetAttr","name","hasAttribute","mapAttrs","input","selectionStart","expectedActiveInput","test","isNumericValue","setActiveInput","setActiveInputValue","reportValidity","setActiveInputSelectionStart","focus","setSelectionRange","code","match","CountryCodes","find","c","dialCode","sanitizedVal","replace","localName","countryCodeItems","classList","add","remove","origInputType","type","length","checkValidity","textVars","host","label","requiredIndicator","inputField","internalComponent","internalComponentAfter","phoneInput","errorMessage","helperText","placeholder","fontSize","fontFamily","hostMinWidth","inputHorizontalPadding","labelFontSize","labelFontWeight","labelTextColor","labelRequiredIndicator","errorMessageTextColor","inputValueTextColor","inputPlaceholderTextColor","inputPlaceholderColor","inputBorderStyle","inputBorderWidth","inputBorderColor","inputBorderRadius","inputOutlineStyle","inputOutlineColor","labelPosition","labelTopPosition","labelHorizontalPosition","inputTransformY","inputTransition","marginInlineStart","valueInputHeight","valueInputMarginBottom","template","document","createElement","appendChild","content","cloneNode","observedAttributes","BaseInputClass","concat","textField","defaultDialCode","allowAlphanumericInput","minLength","parseInt","maxLength","restrictCountries","split","filter","Boolean","isFormatValue","isStrictValidation","parsedVal","country","countryCallingCode","nationalNumber","join","e","isTrusted","handleFocusEventsDispatching","getValidity","validPhonePattern","stripValue","isRequired","valueMissing","tooShort","patternMismatch","args","attributeChangedCallback","attrName","oldValue","newValue","includes","attr","sanitizedInput","target","dialCodePrefixPattern","RegExp","parsed","isValid","telDigitsRegExp","char","phoneNumber","reset","getCountryByCodeId","matchingParenthesis","openParenMatches","closeParenMatches"],"sourceRoot":""}
|