@tylertech/forge 2.8.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +4350 -82
- package/dist/esm/accordion/index.js +7 -7
- package/dist/esm/app-bar/help-button/index.js +9 -9
- package/dist/esm/app-bar/index.js +15 -15
- package/dist/esm/app-bar/menu-button/index.js +6 -6
- package/dist/esm/app-bar/notification-button/index.js +6 -6
- package/dist/esm/app-bar/profile-button/index.js +7 -7
- package/dist/esm/app-bar/search/index.js +5 -5
- package/dist/esm/autocomplete/index.js +13 -13
- package/dist/esm/banner/index.js +6 -6
- package/dist/esm/bottom-sheet/index.js +5 -5
- package/dist/esm/busy-indicator/index.js +4 -4
- package/dist/esm/button/index.js +3 -3
- package/dist/esm/calendar/calendar-dropdown/index.js +2 -2
- package/dist/esm/calendar/calendar-menu/index.js +2 -2
- package/dist/esm/calendar/index.js +7 -7
- package/dist/esm/checkbox/index.js +2 -2
- package/dist/esm/chip-field/index.js +9 -9
- package/dist/esm/chips/chip/index.js +6 -6
- package/dist/esm/chips/chip-set/index.js +6 -6
- package/dist/esm/chips/index.js +7 -7
- package/dist/esm/chunks/{chunk.VXVE7KEM.js → chunk.2QB3WXEH.js} +4 -4
- package/dist/esm/chunks/{chunk.VXVE7KEM.js.map → chunk.2QB3WXEH.js.map} +0 -0
- package/dist/esm/chunks/{chunk.3QXCVTCP.js → chunk.2Z23LQVW.js} +2 -2
- package/dist/esm/chunks/{chunk.3QXCVTCP.js.map → chunk.2Z23LQVW.js.map} +0 -0
- package/dist/esm/chunks/{chunk.BEAJZPWS.js → chunk.3TFBNPQF.js} +2 -2
- package/dist/esm/chunks/{chunk.BEAJZPWS.js.map → chunk.3TFBNPQF.js.map} +0 -0
- package/dist/esm/chunks/{chunk.2MBI5DLT.js → chunk.3ULPDQ2I.js} +71 -15
- package/dist/esm/chunks/chunk.3ULPDQ2I.js.map +7 -0
- package/dist/esm/chunks/{chunk.JC2PZ4TS.js → chunk.5DJS3K7V.js} +10 -8
- package/dist/esm/chunks/chunk.5DJS3K7V.js.map +7 -0
- package/dist/esm/chunks/{chunk.GHZ75UPO.js → chunk.5EBM357P.js} +3 -3
- package/dist/esm/chunks/{chunk.GHZ75UPO.js.map → chunk.5EBM357P.js.map} +0 -0
- package/dist/esm/chunks/{chunk.J5NUYQ4D.js → chunk.5XUOWRCK.js} +3 -3
- package/dist/esm/chunks/{chunk.J5NUYQ4D.js.map → chunk.5XUOWRCK.js.map} +0 -0
- package/dist/esm/chunks/{chunk.6EGTLHJS.js → chunk.65ZCTZEM.js} +6 -2
- package/dist/esm/chunks/{chunk.6EGTLHJS.js.map → chunk.65ZCTZEM.js.map} +2 -2
- package/dist/esm/chunks/chunk.A5GIQB6E.js +20 -0
- package/dist/esm/chunks/{chunk.2NMHSTAO.js.map → chunk.A5GIQB6E.js.map} +3 -3
- package/dist/esm/chunks/{chunk.PM7D2SUE.js → chunk.A6YZB7UK.js} +33 -2
- package/dist/esm/chunks/{chunk.PM7D2SUE.js.map → chunk.A6YZB7UK.js.map} +2 -2
- package/dist/esm/chunks/chunk.AJJILT3A.js +6 -0
- package/dist/esm/chunks/chunk.AJJILT3A.js.map +7 -0
- package/dist/esm/chunks/chunk.CGKWQIL3.js +1236 -0
- package/dist/esm/chunks/chunk.CGKWQIL3.js.map +7 -0
- package/dist/esm/chunks/chunk.CGOYP37Z.js +345 -0
- package/dist/esm/chunks/chunk.CGOYP37Z.js.map +7 -0
- package/dist/esm/chunks/{chunk.QYWAZCBX.js → chunk.CTMCTMRO.js} +2 -2
- package/dist/esm/chunks/{chunk.QYWAZCBX.js.map → chunk.CTMCTMRO.js.map} +0 -0
- package/dist/esm/chunks/{chunk.2NMHSTAO.js → chunk.D2AL6QLF.js} +10 -13
- package/dist/esm/chunks/chunk.D2AL6QLF.js.map +7 -0
- package/dist/esm/chunks/{chunk.U5ECVIX5.js → chunk.D3MXPNTL.js} +2 -2
- package/dist/esm/chunks/{chunk.U5ECVIX5.js.map → chunk.D3MXPNTL.js.map} +0 -0
- package/dist/esm/chunks/{chunk.HAWYW54W.js → chunk.D45QN7JA.js} +5 -5
- package/dist/esm/chunks/{chunk.HAWYW54W.js.map → chunk.D45QN7JA.js.map} +0 -0
- package/dist/esm/chunks/{chunk.2WBHHTUM.js → chunk.EFQZGAM5.js} +2 -2
- package/dist/esm/chunks/{chunk.2WBHHTUM.js.map → chunk.EFQZGAM5.js.map} +0 -0
- package/dist/esm/chunks/{chunk.BLZJIYMG.js → chunk.F5O63UF4.js} +2 -2
- package/dist/esm/chunks/{chunk.BLZJIYMG.js.map → chunk.F5O63UF4.js.map} +0 -0
- package/dist/esm/chunks/{chunk.RL7ZFLMG.js → chunk.FRT7RD5L.js} +2 -2
- package/dist/esm/chunks/{chunk.RL7ZFLMG.js.map → chunk.FRT7RD5L.js.map} +0 -0
- package/dist/esm/chunks/{chunk.LK2DN5KX.js → chunk.GG3O42UP.js} +4 -4
- package/dist/esm/chunks/{chunk.LK2DN5KX.js.map → chunk.GG3O42UP.js.map} +0 -0
- package/dist/esm/chunks/{chunk.WSH4S3GM.js → chunk.GVR5LXMJ.js} +2 -2
- package/dist/esm/chunks/{chunk.WSH4S3GM.js.map → chunk.GVR5LXMJ.js.map} +0 -0
- package/dist/esm/chunks/{chunk.LHWZ4KZU.js → chunk.HL2ORG3A.js} +4 -4
- package/dist/esm/chunks/{chunk.LHWZ4KZU.js.map → chunk.HL2ORG3A.js.map} +1 -1
- package/dist/esm/chunks/{chunk.ELAJS33V.js → chunk.J2FCOFOE.js} +2 -2
- package/dist/esm/chunks/{chunk.ELAJS33V.js.map → chunk.J2FCOFOE.js.map} +0 -0
- package/dist/esm/chunks/{chunk.PKZ43JNW.js → chunk.JM6SZSUI.js} +50 -4
- package/dist/esm/chunks/{chunk.PKZ43JNW.js.map → chunk.JM6SZSUI.js.map} +2 -2
- package/dist/esm/chunks/{chunk.VXAPRFMK.js → chunk.K4B7NJ2G.js} +4 -4
- package/dist/esm/chunks/{chunk.VXAPRFMK.js.map → chunk.K4B7NJ2G.js.map} +0 -0
- package/dist/esm/chunks/{chunk.67B6JDOJ.js → chunk.KVOXJKCU.js} +3 -3
- package/dist/esm/chunks/{chunk.67B6JDOJ.js.map → chunk.KVOXJKCU.js.map} +0 -0
- package/dist/esm/chunks/{chunk.ITQ55IPH.js → chunk.LTN47GWQ.js} +4 -4
- package/dist/esm/chunks/{chunk.ITQ55IPH.js.map → chunk.LTN47GWQ.js.map} +0 -0
- package/dist/esm/chunks/{chunk.UPW5HUKB.js → chunk.NU3XRT37.js} +5 -5
- package/dist/esm/chunks/{chunk.UPW5HUKB.js.map → chunk.NU3XRT37.js.map} +0 -0
- package/dist/esm/chunks/{chunk.I6PJGNJS.js → chunk.NWPH4FRE.js} +6 -6
- package/dist/esm/chunks/chunk.NWPH4FRE.js.map +7 -0
- package/dist/esm/chunks/{chunk.KNR5DXE4.js → chunk.OTJJU35B.js} +2 -2
- package/dist/esm/chunks/{chunk.KNR5DXE4.js.map → chunk.OTJJU35B.js.map} +0 -0
- package/dist/esm/chunks/{chunk.BVGJFMEG.js → chunk.PRRL5C6Z.js} +7 -7
- package/dist/esm/chunks/{chunk.BVGJFMEG.js.map → chunk.PRRL5C6Z.js.map} +0 -0
- package/dist/esm/chunks/{chunk.TIUNGGBF.js → chunk.QFG7SPQV.js} +3 -3
- package/dist/esm/chunks/{chunk.TIUNGGBF.js.map → chunk.QFG7SPQV.js.map} +0 -0
- package/dist/esm/chunks/{chunk.XE7ZMJBZ.js → chunk.QKCIMRRG.js} +32 -17
- package/dist/esm/chunks/chunk.QKCIMRRG.js.map +7 -0
- package/dist/esm/chunks/{chunk.IGBDDH3J.js → chunk.QRGWP6Z2.js} +3 -3
- package/dist/esm/chunks/chunk.QRGWP6Z2.js.map +7 -0
- package/dist/esm/chunks/{chunk.MUP3NY6M.js → chunk.QSFE3J74.js} +5 -5
- package/dist/esm/chunks/{chunk.MUP3NY6M.js.map → chunk.QSFE3J74.js.map} +0 -0
- package/dist/esm/chunks/{chunk.UFMUXBT4.js → chunk.R357QRWX.js} +53 -49
- package/dist/esm/chunks/chunk.R357QRWX.js.map +7 -0
- package/dist/esm/chunks/{chunk.46BED43J.js → chunk.SVS3G6Y7.js} +5 -19
- package/dist/esm/chunks/chunk.SVS3G6Y7.js.map +7 -0
- package/dist/esm/chunks/{chunk.S3UVF647.js → chunk.TBQ72CBS.js} +3 -3
- package/dist/esm/chunks/{chunk.S3UVF647.js.map → chunk.TBQ72CBS.js.map} +0 -0
- package/dist/esm/chunks/{chunk.ZSHQMR4O.js → chunk.TSHHEAIC.js} +2 -2
- package/dist/esm/chunks/{chunk.ZSHQMR4O.js.map → chunk.TSHHEAIC.js.map} +0 -0
- package/dist/esm/chunks/{chunk.EBC2HGO3.js → chunk.UAW46BWM.js} +3 -3
- package/dist/esm/chunks/{chunk.EBC2HGO3.js.map → chunk.UAW46BWM.js.map} +0 -0
- package/dist/esm/chunks/{chunk.FJJVIMZ2.js → chunk.V6ESTGWD.js} +5 -5
- package/dist/esm/chunks/chunk.V6ESTGWD.js.map +7 -0
- package/dist/esm/chunks/{chunk.5OYAJ36F.js → chunk.VLAUYV76.js} +2 -2
- package/dist/esm/chunks/{chunk.5OYAJ36F.js.map → chunk.VLAUYV76.js.map} +0 -0
- package/dist/esm/chunks/{chunk.L4OUV7W6.js → chunk.VSKPHQZE.js} +4 -4
- package/dist/esm/chunks/{chunk.L4OUV7W6.js.map → chunk.VSKPHQZE.js.map} +0 -0
- package/dist/esm/chunks/{chunk.GS2AXUCN.js → chunk.WOL4KRZK.js} +6 -1
- package/dist/esm/chunks/{chunk.GS2AXUCN.js.map → chunk.WOL4KRZK.js.map} +1 -1
- package/dist/esm/chunks/{chunk.TM46MNYN.js → chunk.WQRR5OGK.js} +5 -5
- package/dist/esm/chunks/{chunk.TM46MNYN.js.map → chunk.WQRR5OGK.js.map} +0 -0
- package/dist/esm/chunks/chunk.X2RP4QW3.js +6 -0
- package/dist/esm/chunks/chunk.X2RP4QW3.js.map +7 -0
- package/dist/esm/chunks/{chunk.K7OLG7CS.js → chunk.X3TV6IHS.js} +2 -2
- package/dist/esm/chunks/{chunk.K7OLG7CS.js.map → chunk.X3TV6IHS.js.map} +0 -0
- package/dist/esm/chunks/{chunk.U37G47LH.js → chunk.XC56O73Q.js} +6 -6
- package/dist/esm/chunks/{chunk.U37G47LH.js.map → chunk.XC56O73Q.js.map} +0 -0
- package/dist/esm/chunks/{chunk.QWW6A7AF.js → chunk.XRK62M5E.js} +2 -2
- package/dist/esm/chunks/{chunk.QWW6A7AF.js.map → chunk.XRK62M5E.js.map} +0 -0
- package/dist/esm/chunks/{chunk.ZLF2G3YT.js → chunk.XSS7BYJS.js} +3 -3
- package/dist/esm/chunks/{chunk.ZLF2G3YT.js.map → chunk.XSS7BYJS.js.map} +0 -0
- package/dist/esm/chunks/{chunk.PNKLV3BK.js → chunk.YCHKXJLN.js} +2 -2
- package/dist/esm/chunks/{chunk.PNKLV3BK.js.map → chunk.YCHKXJLN.js.map} +0 -0
- package/dist/esm/chunks/{chunk.UQ3QTUUB.js → chunk.YMP3JQQQ.js} +2 -2
- package/dist/esm/chunks/{chunk.UQ3QTUUB.js.map → chunk.YMP3JQQQ.js.map} +0 -0
- package/dist/esm/chunks/{chunk.7I2XNJBL.js → chunk.YTFOQNFU.js} +6 -16
- package/dist/esm/chunks/chunk.YTFOQNFU.js.map +7 -0
- package/dist/esm/chunks/{chunk.IJW2YKP3.js → chunk.Z5KLXKMB.js} +21 -15
- package/dist/esm/chunks/chunk.Z5KLXKMB.js.map +7 -0
- package/dist/esm/chunks/{chunk.MBZLA635.js → chunk.ZIZGRSAX.js} +6 -6
- package/dist/esm/chunks/{chunk.MBZLA635.js.map → chunk.ZIZGRSAX.js.map} +1 -1
- package/dist/esm/chunks/{chunk.CLEUHAZ6.js → chunk.ZLX3L6KW.js} +2 -2
- package/dist/esm/chunks/{chunk.CLEUHAZ6.js.map → chunk.ZLX3L6KW.js.map} +0 -0
- package/dist/esm/color-picker/index.js +6 -6
- package/dist/esm/core/index.js +14 -2
- package/dist/esm/core/utils/index.js +14 -2
- package/dist/esm/date-picker/index.js +11 -11
- package/dist/esm/date-range-picker/index.js +11 -11
- package/dist/esm/dialog/index.js +5 -5
- package/dist/esm/drawer/base/index.js +2 -2
- package/dist/esm/drawer/drawer/index.js +3 -3
- package/dist/esm/drawer/index.js +5 -5
- package/dist/esm/drawer/mini-drawer/index.js +3 -3
- package/dist/esm/drawer/modal-drawer/index.js +3 -3
- package/dist/esm/expansion-panel/index.js +6 -6
- package/dist/esm/file-picker/index.js +4 -4
- package/dist/esm/icon/index.js +3 -3
- package/dist/esm/icon-button/index.js +4 -4
- package/dist/esm/index.js +168 -93
- package/dist/esm/list-dropdown/index.js +5 -5
- package/dist/esm/menu/index.js +7 -7
- package/dist/esm/open-icon/index.js +5 -5
- package/dist/esm/paginator/index.js +12 -12
- package/dist/esm/profile-card/index.js +4 -4
- package/dist/esm/quantity-field/index.js +6 -7
- package/dist/esm/select/core/index.js +7 -7
- package/dist/esm/select/index.js +11 -11
- package/dist/esm/select/select/index.js +9 -9
- package/dist/esm/select/select-dropdown/index.js +9 -9
- package/dist/esm/slider/index.js +2 -2
- package/dist/esm/split-view/core/index.js +7 -0
- package/dist/esm/split-view/core/index.js.map +7 -0
- package/dist/esm/split-view/index.js +92 -0
- package/dist/esm/split-view/index.js.map +7 -0
- package/dist/esm/split-view/split-view/index.js +44 -0
- package/dist/esm/split-view/split-view/index.js.map +7 -0
- package/dist/esm/split-view/split-view-panel/index.js +78 -0
- package/dist/esm/split-view/split-view-panel/index.js.map +7 -0
- package/dist/esm/stepper/index.js +6 -6
- package/dist/esm/stepper/step/index.js +5 -5
- package/dist/esm/stepper/stepper/index.js +6 -6
- package/dist/esm/switch/index.js +2 -2
- package/dist/esm/table/index.js +7 -7
- package/dist/esm/tabs/index.js +6 -6
- package/dist/esm/tabs/tab-bar/index.js +6 -6
- package/dist/esm/text-field/index.js +2 -2
- package/dist/esm/time-picker/index.js +11 -10
- package/dist/esm/toast/index.js +7 -7
- package/esm/app-bar/profile-button/app-bar-profile-button-adapter.d.ts +6 -1
- package/esm/app-bar/profile-button/app-bar-profile-button-adapter.js +30 -12
- package/esm/app-bar/profile-button/app-bar-profile-button-constants.d.ts +4 -0
- package/esm/app-bar/profile-button/app-bar-profile-button-constants.js +2 -0
- package/esm/app-bar/profile-button/app-bar-profile-button-foundation.d.ts +8 -0
- package/esm/app-bar/profile-button/app-bar-profile-button-foundation.js +22 -0
- package/esm/app-bar/profile-button/app-bar-profile-button.d.ts +4 -0
- package/esm/app-bar/profile-button/app-bar-profile-button.js +14 -0
- package/esm/autocomplete/autocomplete-adapter.d.ts +2 -0
- package/esm/autocomplete/autocomplete-adapter.js +4 -0
- package/esm/autocomplete/autocomplete-foundation.js +10 -7
- package/esm/chip-field/chip-field-adapter.d.ts +1 -1
- package/esm/chip-field/chip-field-adapter.js +2 -2
- package/esm/chip-field/chip-field.js +1 -1
- package/esm/chips/chip/chip.js +1 -1
- package/esm/core/utils/event-utils.d.ts +1 -0
- package/esm/core/utils/event-utils.js +3 -0
- package/esm/core/utils/utils.d.ts +36 -0
- package/esm/core/utils/utils.js +57 -0
- package/esm/date-picker/date-picker-foundation.js +3 -1
- package/esm/field/field-adapter.d.ts +4 -4
- package/esm/field/field-adapter.js +4 -13
- package/esm/field/field-foundation.js +2 -2
- package/esm/index.d.ts +1 -0
- package/esm/index.js +3 -0
- package/esm/profile-card/profile-card-adapter.d.ts +4 -0
- package/esm/profile-card/profile-card-adapter.js +6 -0
- package/esm/profile-card/profile-card-constants.d.ts +4 -0
- package/esm/profile-card/profile-card-constants.js +5 -1
- package/esm/profile-card/profile-card-foundation.d.ts +6 -0
- package/esm/profile-card/profile-card-foundation.js +22 -0
- package/esm/profile-card/profile-card.d.ts +4 -0
- package/esm/profile-card/profile-card.js +15 -1
- package/esm/quantity-field/quantity-field-adapter.d.ts +0 -2
- package/esm/quantity-field/quantity-field-adapter.js +1 -13
- package/esm/quantity-field/quantity-field-foundation.js +0 -1
- package/esm/quantity-field/quantity-field.js +1 -1
- package/esm/select/select/select.js +1 -1
- package/esm/split-view/core/index.d.ts +6 -0
- package/esm/split-view/core/index.js +6 -0
- package/esm/split-view/core/split-view-base.d.ts +14 -0
- package/esm/split-view/core/split-view-base.js +6 -0
- package/esm/split-view/index.d.ts +8 -0
- package/esm/split-view/index.js +8 -0
- package/esm/split-view/split-view/index.d.ts +10 -0
- package/esm/split-view/split-view/index.js +14 -0
- package/esm/split-view/split-view/split-view-adapter.d.ts +29 -0
- package/esm/split-view/split-view/split-view-adapter.js +62 -0
- package/esm/split-view/split-view/split-view-constants.d.ts +41 -0
- package/esm/split-view/split-view/split-view-constants.js +40 -0
- package/esm/split-view/split-view/split-view-foundation.d.ts +86 -0
- package/esm/split-view/split-view/split-view-foundation.js +179 -0
- package/esm/split-view/split-view/split-view.d.ts +67 -0
- package/esm/split-view/split-view/split-view.js +103 -0
- package/esm/split-view/split-view-panel/index.d.ts +11 -0
- package/esm/split-view/split-view-panel/index.js +15 -0
- package/esm/split-view/split-view-panel/split-view-panel-adapter.d.ts +171 -0
- package/esm/split-view/split-view-panel/split-view-panel-adapter.js +295 -0
- package/esm/split-view/split-view-panel/split-view-panel-constants.d.ts +97 -0
- package/esm/split-view/split-view-panel/split-view-panel-constants.js +78 -0
- package/esm/split-view/split-view-panel/split-view-panel-foundation.d.ts +235 -0
- package/esm/split-view/split-view-panel/split-view-panel-foundation.js +667 -0
- package/esm/split-view/split-view-panel/split-view-panel-utils.d.ts +130 -0
- package/esm/split-view/split-view-panel/split-view-panel-utils.js +300 -0
- package/esm/split-view/split-view-panel/split-view-panel.d.ts +105 -0
- package/esm/split-view/split-view-panel/split-view-panel.js +173 -0
- package/esm/table/table-utils.d.ts +2 -2
- package/esm/table/table-utils.js +30 -14
- package/esm/text-field/text-field-adapter.d.ts +1 -1
- package/esm/text-field/text-field-adapter.js +2 -2
- package/esm/text-field/text-field.js +1 -1
- package/package.json +2 -2
- package/styles/chip-field/_base.scss +2 -2
- package/styles/chip-field/_selector.scss +1 -1
- package/styles/chip-field/_variables.scss +1 -1
- package/styles/chips/chip/_mixins.scss +4 -3
- package/styles/chips/chip/_variables.scss +3 -2
- package/styles/field/_base.scss +16 -4
- package/styles/field/_selector.scss +4 -4
- package/styles/quantity-field/_mixins.scss +1 -1
- package/styles/select/select/_selector.scss +1 -1
- package/styles/split-view/split-view/_mixins.scss +48 -0
- package/styles/split-view/split-view/split-view.scss +25 -0
- package/styles/split-view/split-view-panel/_mixins.scss +260 -0
- package/styles/split-view/split-view-panel/_variables.scss +7 -0
- package/styles/split-view/split-view-panel/split-view-panel.scss +23 -0
- package/dist/esm/chunks/chunk.2MBI5DLT.js.map +0 -7
- package/dist/esm/chunks/chunk.46BED43J.js.map +0 -7
- package/dist/esm/chunks/chunk.7I2XNJBL.js.map +0 -7
- package/dist/esm/chunks/chunk.FJJVIMZ2.js.map +0 -7
- package/dist/esm/chunks/chunk.I6PJGNJS.js.map +0 -7
- package/dist/esm/chunks/chunk.IGBDDH3J.js.map +0 -7
- package/dist/esm/chunks/chunk.IJW2YKP3.js.map +0 -7
- package/dist/esm/chunks/chunk.JC2PZ4TS.js.map +0 -7
- package/dist/esm/chunks/chunk.UFMUXBT4.js.map +0 -7
- package/dist/esm/chunks/chunk.XE7ZMJBZ.js.map +0 -7
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use '../../theme/theme';
|
|
7
|
+
|
|
8
|
+
@mixin core-styles() {
|
|
9
|
+
.forge-split-view {
|
|
10
|
+
@include base;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@mixin horizontal-styles() {
|
|
15
|
+
.forge-split-view {
|
|
16
|
+
@include base-horizontal;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@mixin vertical-styles() {
|
|
21
|
+
.forge-split-view {
|
|
22
|
+
@include base-vertical;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@mixin host() {
|
|
27
|
+
--forge-split-view-handle-width: 8px;
|
|
28
|
+
|
|
29
|
+
display: block;
|
|
30
|
+
height: 100%;
|
|
31
|
+
width: 100%;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
contain: paint size;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@mixin base() {
|
|
37
|
+
display: flex;
|
|
38
|
+
width: 100%;
|
|
39
|
+
height: 100%;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@mixin base-horizontal() {
|
|
43
|
+
flex-direction: row;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@mixin base-vertical() {
|
|
47
|
+
flex-direction: column;
|
|
48
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use './mixins';
|
|
7
|
+
@use '../../ripple/forge-ripple.scss';
|
|
8
|
+
|
|
9
|
+
@include mixins.core-styles;
|
|
10
|
+
|
|
11
|
+
:host {
|
|
12
|
+
@include mixins.host;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:host([hidden]) {
|
|
16
|
+
display: none;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:host([orientation=horizontal]) {
|
|
20
|
+
@include mixins.horizontal-styles;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:host([orientation=vertical]) {
|
|
24
|
+
@include mixins.vertical-styles;
|
|
25
|
+
}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use '@material/animation/variables' as mdc-animation-variables;
|
|
7
|
+
@use './variables';
|
|
8
|
+
@use '../../theme/theme';
|
|
9
|
+
|
|
10
|
+
@mixin core-styles() {
|
|
11
|
+
.forge-split-view-panel {
|
|
12
|
+
@include base;
|
|
13
|
+
|
|
14
|
+
&__handle {
|
|
15
|
+
@include handle;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&__content {
|
|
19
|
+
@include content;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&--closed {
|
|
23
|
+
@include closed;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&--disabled {
|
|
27
|
+
// Use an id selector to increase specificity
|
|
28
|
+
#handle {
|
|
29
|
+
@include handle-disabled;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.forge-split-view-panel__icon {
|
|
33
|
+
@include icon-disabled;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@mixin horizontal-styles() {
|
|
40
|
+
.forge-split-view-panel[orientation=horizontal] {
|
|
41
|
+
@include base-horizontal;
|
|
42
|
+
|
|
43
|
+
.forge-split-view-panel {
|
|
44
|
+
&__handle {
|
|
45
|
+
@include handle-orientation(horizontal);
|
|
46
|
+
@include cursor(horizontal);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&.forge-split-view-panel--closing {
|
|
51
|
+
&[resizable=end] {
|
|
52
|
+
@include closing($direction: left);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&[resizable=start] {
|
|
56
|
+
@include closing($direction: right);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
&.forge-split-view-panel--opening {
|
|
61
|
+
&[resizable=end] {
|
|
62
|
+
@include opening($direction: left);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
&[resizable=start] {
|
|
66
|
+
@include opening($direction: right);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@mixin vertical-styles() {
|
|
73
|
+
.forge-split-view-panel[orientation=vertical] {
|
|
74
|
+
@include base-vertical;
|
|
75
|
+
|
|
76
|
+
.forge-split-view-panel {
|
|
77
|
+
&__handle {
|
|
78
|
+
@include handle-orientation(vertical);
|
|
79
|
+
@include cursor(vertical);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
&.forge-split-view-panel--closing {
|
|
84
|
+
&[resizable=end] {
|
|
85
|
+
@include closing($direction: top);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&[resizable=start] {
|
|
89
|
+
@include closing($direction: bottom);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
&.forge-split-view-panel--opening {
|
|
94
|
+
&[resizable=end] {
|
|
95
|
+
@include opening($direction: top);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&[resizable=start] {
|
|
99
|
+
@include opening($direction: bottom);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@mixin static-styles() {
|
|
106
|
+
@include host-static;
|
|
107
|
+
|
|
108
|
+
.forge-split-view-panel {
|
|
109
|
+
@include base-static;
|
|
110
|
+
|
|
111
|
+
&__handle {
|
|
112
|
+
@include handle-static;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
@mixin host() {
|
|
118
|
+
// There is no fallback value for the animating layer
|
|
119
|
+
@include theme.css-custom-property(z-index, --forge-split-view-animating-layer, $important: true);
|
|
120
|
+
|
|
121
|
+
display: block;
|
|
122
|
+
position: relative;
|
|
123
|
+
height: 100%;
|
|
124
|
+
width: 100%;
|
|
125
|
+
flex: 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@mixin host-static() {
|
|
129
|
+
flex: 1;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@mixin base() {
|
|
133
|
+
display: flex;
|
|
134
|
+
width: 100%;
|
|
135
|
+
height: 100%;
|
|
136
|
+
overflow: hidden;
|
|
137
|
+
contain: paint size;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@mixin base-horizontal() {
|
|
141
|
+
@include theme.css-custom-property(min-width, --forge-split-view-handle-width, variables.$handle-width);
|
|
142
|
+
|
|
143
|
+
width: calc(var(--forge-split-view-panel-size, unset) + var(--forge-split-view-handle-width, variables.$handle-width));
|
|
144
|
+
flex-direction: row;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@mixin base-vertical() {
|
|
148
|
+
@include theme.css-custom-property(min-height, --forge-split-view-handle-width, variables.$handle-width);
|
|
149
|
+
|
|
150
|
+
height: calc(var(--forge-split-view-panel-size, unset) + var(--forge-split-view-handle-width, variables.$handle-width));
|
|
151
|
+
flex-direction: column;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@mixin base-static() {
|
|
155
|
+
width: 100%;
|
|
156
|
+
height: 100%;
|
|
157
|
+
min-width: 0;
|
|
158
|
+
min-height: 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@mixin handle() {
|
|
162
|
+
@include theme.property(color, text-secondary-on-light);
|
|
163
|
+
@include theme.property(background-color, border-color);
|
|
164
|
+
|
|
165
|
+
display: flex;
|
|
166
|
+
flex-shrink: 0;
|
|
167
|
+
justify-content: center;
|
|
168
|
+
align-items: center;
|
|
169
|
+
outline: none;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
@mixin handle-orientation($orientation: horizontal) {
|
|
173
|
+
@if $orientation == horizontal {
|
|
174
|
+
@include theme.css-custom-property(width, --forge-split-view-handle-width, variables.$handle-width);
|
|
175
|
+
} @else {
|
|
176
|
+
@include theme.css-custom-property(height, --forge-split-view-handle-width, variables.$handle-width);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
@mixin handle-disabled() {
|
|
181
|
+
pointer-events: none;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@mixin handle-static() {
|
|
185
|
+
display: none;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
@mixin icon-disabled() {
|
|
189
|
+
display: none;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
@mixin content() {
|
|
193
|
+
flex: 1;
|
|
194
|
+
overflow: hidden;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
@mixin cursor($orientation: horizontal) {
|
|
198
|
+
// There is no fallback value for the panel cursor
|
|
199
|
+
@include theme.css-custom-property(cursor, --forge-split-view-panel-cursor);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
@mixin closed() {
|
|
203
|
+
display: none;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
@mixin closing($direction: right) {
|
|
207
|
+
@include closing-animation($direction);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
@mixin opening($direction: right) {
|
|
211
|
+
@include closing-animation($direction);
|
|
212
|
+
|
|
213
|
+
animation-direction: reverse;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@mixin closing-animation($direction: right) {
|
|
217
|
+
@include animating-position($direction);
|
|
218
|
+
|
|
219
|
+
$animation-name: unique-id();
|
|
220
|
+
|
|
221
|
+
animation-name: $animation-name;
|
|
222
|
+
animation-duration: variables.$animation-duration;
|
|
223
|
+
animation-timing-function: mdc-animation-variables.$standard-curve-timing-function;
|
|
224
|
+
|
|
225
|
+
@keyframes #{$animation-name} {
|
|
226
|
+
from {
|
|
227
|
+
transform: none;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
to {
|
|
231
|
+
@if ($direction == right) {
|
|
232
|
+
transform: translateX(100%);
|
|
233
|
+
} @else if ($direction == left) {
|
|
234
|
+
transform: translateX(-100%);
|
|
235
|
+
} @else if ($direction == top) {
|
|
236
|
+
transform: translateY(-100%);
|
|
237
|
+
} @else {
|
|
238
|
+
transform: translateY(100%);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@mixin animating-position($direction: right) {
|
|
245
|
+
position: absolute;
|
|
246
|
+
|
|
247
|
+
@if ($direction == right) {
|
|
248
|
+
top: 0;
|
|
249
|
+
right: 0;
|
|
250
|
+
} @else if ($direction == left) {
|
|
251
|
+
top: 0;
|
|
252
|
+
left: 0;
|
|
253
|
+
} @else if ($direction == top) {
|
|
254
|
+
top: 0;
|
|
255
|
+
left: 0;
|
|
256
|
+
} @else {
|
|
257
|
+
bottom: 0;
|
|
258
|
+
left: 0;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use './mixins';
|
|
7
|
+
@use '../../ripple/forge-ripple.scss';
|
|
8
|
+
|
|
9
|
+
@include mixins.core-styles;
|
|
10
|
+
@include mixins.horizontal-styles;
|
|
11
|
+
@include mixins.vertical-styles;
|
|
12
|
+
|
|
13
|
+
:host {
|
|
14
|
+
@include mixins.host;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
:host([hidden]) {
|
|
18
|
+
display: none;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:host(:not([resizable=start], [resizable=end])) {
|
|
22
|
+
@include mixins.static-styles;
|
|
23
|
+
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/app-bar/profile-button/app-bar-profile-button-constants.ts", "../../src/app-bar/profile-button/app-bar-profile-button-adapter.ts", "../../src/app-bar/profile-button/app-bar-profile-button-foundation.ts", "../../src/app-bar/profile-button/app-bar-profile-button.ts", "../../src/app-bar/profile-button/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}app-bar-profile-button`;\n\nconst attributes = {\n FULL_NAME: 'full-name',\n EMAIL: 'email',\n AVATAR_IMAGE_URL: 'avatar-image-url',\n AVATAR_LETTER_COUNT: 'avatar-letter-count',\n AVATAR_TEXT: 'avatar-text',\n SIGN_OUT_BUTTON: 'sign-out-button',\n PROFILE_BUTTON: 'profile-button',\n OPEN: 'open'\n};\n\nconst selectors = {\n BUTTON: 'button'\n};\n\nexport const APP_BAR_PROFILE_BUTTON_CONSTANTS = {\n elementName,\n attributes,\n selectors\n};\n\nexport interface IAppBarProfileCardConfig {\n fullName: string;\n email: string;\n signOut: boolean;\n profile: boolean;\n avatarText: string;\n avatarImageUrl: string;\n avatarLetterCount: number;\n}\n\nexport type AppBarProfileButtonProfileCardBuilder = () => HTMLElement;\n", "import { getLightElement, notChildEventListener, getActiveElement } from '@tylertech/forge-core';\nimport { AVATAR_CONSTANTS, IAvatarComponent } from '../../avatar';\nimport { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';\nimport { IPopupComponent, PopupAnimationType, PopupPlacement, POPUP_CONSTANTS } from '../../popup';\nimport { IProfileCardComponent, PROFILE_CARD_CONSTANTS } from '../../profile-card';\nimport { IAppBarProfileButtonComponent } from './app-bar-profile-button';\nimport { IAppBarProfileCardConfig, APP_BAR_PROFILE_BUTTON_CONSTANTS } from './app-bar-profile-button-constants';\n\nexport interface IAppBarProfileButtonAdapter extends IBaseAdapter {\n initialize(): void;\n setClickListener(listener: (evt: MouseEvent) => void): void;\n removeClickListener(listener: (evt: MouseEvent) => void): void;\n openPopup(profileCardConfig: IAppBarProfileCardConfig, dismissListener: () => void, profileListener: () => void, signOutListener: () => void, profileCardContent?: HTMLElement): () => void;\n closePopup(): void;\n requestFocus(): void;\n setAvatarText(value: string): void;\n setAvatarLetterCount(value: number): void;\n setAvatarImageUrl(value: string): void;\n}\n\nexport class AppBarProfileButtonAdapter extends BaseAdapter<IAppBarProfileButtonComponent> implements IAppBarProfileButtonAdapter {\n private _avatarElement: IAvatarComponent;\n private _popupElement: IPopupComponent;\n private _buttonElement: HTMLButtonElement;\n\n constructor(component: IAppBarProfileButtonComponent) {\n super(component);\n }\n\n public initialize(): void {\n this._avatarElement = getLightElement(this._component, AVATAR_CONSTANTS.elementName) as IAvatarComponent;\n this._buttonElement = getLightElement(this._component, APP_BAR_PROFILE_BUTTON_CONSTANTS.selectors.BUTTON) as HTMLButtonElement;\n }\n\n public setClickListener(listener: (evt: MouseEvent) => void): void {\n this._component.addEventListener('click', listener);\n }\n\n public removeClickListener(listener: (evt: MouseEvent) => void): void {\n this._component.removeEventListener('click', listener);\n }\n\n public openPopup(profileCardConfig: IAppBarProfileCardConfig, dismissListener: () => void, profileListener: () => void, signOutListener: () => void, profileCardContent?: HTMLElement): () => void {\n const profileCardElement = document.createElement(PROFILE_CARD_CONSTANTS.elementName) as IProfileCardComponent;\n profileCardElement.fullName = profileCardConfig.fullName;\n profileCardElement.email = profileCardConfig.email;\n profileCardElement.signOut = profileCardConfig.signOut;\n profileCardElement.profile = profileCardConfig.profile;\n profileCardElement.avatarText = profileCardConfig.avatarText;\n profileCardElement.avatarImageUrl = profileCardConfig.avatarImageUrl;\n profileCardElement.avatarLetterCount = profileCardConfig.avatarLetterCount;\n profileCardElement.addEventListener(PROFILE_CARD_CONSTANTS.events.PROFILE, () => profileListener());\n profileCardElement.addEventListener(PROFILE_CARD_CONSTANTS.events.SIGN_OUT, () => signOutListener());\n if (profileCardContent) {\n profileCardElement.appendChild(profileCardContent);\n }\n\n this._popupElement = document.createElement(POPUP_CONSTANTS.elementName) as IPopupComponent;\n this._popupElement.targetElement = this._component;\n this._popupElement.placement = 'bottom-end';\n this._popupElement.animationType = PopupAnimationType.Menu;\n this._popupElement.appendChild(profileCardElement);\n this._popupElement.open = true;\n\n return notChildEventListener(this._popupElement, activeElement => {\n if (!this._popupElement) {\n return;\n }\n if (!this._component.contains(getActiveElement())) {\n dismissListener();\n }\n }, true);\n }\n\n public closePopup(): void {\n if (this._popupElement) {\n this._popupElement.open = false;\n }\n }\n\n public requestFocus(): void {\n this._buttonElement.focus();\n }\n\n public setAvatarText(value: string): void {\n this._avatarElement.text = value;\n }\n\n public setAvatarLetterCount(value: number): void {\n this._avatarElement.letterCount = value;\n }\n\n public setAvatarImageUrl(value: string): void {\n this._avatarElement.imageUrl = value;\n }\n}\n", "import { ICustomElementFoundation, isFunction, Platform, getActiveElement } from '@tylertech/forge-core';\nimport { AVATAR_CONSTANTS } from '../../avatar';\nimport { PROFILE_CARD_CONSTANTS } from '../../profile-card';\nimport { IAppBarProfileButtonAdapter } from './app-bar-profile-button-adapter';\nimport { IAppBarProfileCardConfig, AppBarProfileButtonProfileCardBuilder, APP_BAR_PROFILE_BUTTON_CONSTANTS } from './app-bar-profile-button-constants';\n\nexport interface IAppBarProfileButtonFoundation extends ICustomElementFoundation {\n fullName: string;\n email: string;\n avatarImageUrl: string;\n avatarLetterCount: number;\n avatarText: string;\n signOutButton: boolean;\n profileButton: boolean;\n open: boolean;\n profileCardBuilder: AppBarProfileButtonProfileCardBuilder;\n}\n\nexport class AppBarProfileButtonFoundation implements IAppBarProfileButtonFoundation {\n private _fullName: string;\n private _email: string;\n private _avatarImageUrl: string;\n private _avatarLetterCount = AVATAR_CONSTANTS.numbers.DEFAULT_LETTER_COUNT;\n private _avatarText: string;\n private _showSignOutButton = PROFILE_CARD_CONSTANTS.defaults.SHOW_SIGN_OUT_BUTTON;\n private _showProfileButton = PROFILE_CARD_CONSTANTS.defaults.SHOW_PROFILE_BUTTON;\n private _profileCardBuilder: AppBarProfileButtonProfileCardBuilder;\n private _open = false;\n private _isInitialized = false;\n private _clickListener: (evt: MouseEvent) => void;\n private _dismissListener: () => void;\n private _cancelDismissListener: () => void;\n private _keydownListener: (evt: KeyboardEvent) => void;\n private _profileButtonListener: () => void;\n private _signOutButtonListener: () => void;\n\n constructor(private _adapter: IAppBarProfileButtonAdapter) {\n this._clickListener = evt => this._onClick(evt);\n this._dismissListener = () => this._onDimiss();\n this._keydownListener = evt => this._onKeydown(evt);\n this._profileButtonListener = () => this._onProfileButtonClick();\n this._signOutButtonListener = () => this._onSignOutButtonClick();\n }\n\n public initialize(): void {\n this._adapter.initialize();\n this._adapter.setClickListener(this._clickListener);\n this._adapter.setAvatarImageUrl(this._avatarImageUrl);\n this._adapter.setAvatarLetterCount(this._avatarLetterCount);\n this._adapter.setAvatarText(this._avatarText);\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n if (this._open) {\n this._closeDropdown();\n }\n this._adapter.removeWindowListener('keydown', this._keydownListener);\n this._adapter.removeClickListener(this._clickListener);\n this._isInitialized = false;\n }\n\n private _onClick(evt: MouseEvent): void {\n if (!this._open) {\n this._openDropdown();\n } else {\n this._closeDropdown();\n }\n }\n\n private _onKeydown(evt: KeyboardEvent): void {\n if (evt.key === 'Escape' || evt.keyCode === 27) {\n this._closeDropdown();\n this._adapter.requestFocus();\n }\n }\n\n private _onDimiss(): void {\n if (Platform.WEBKIT) {\n window.requestAnimationFrame(() => this._closeDropdown());\n } else {\n this._closeDropdown();\n }\n }\n\n private _onProfileButtonClick(): void {\n this._adapter.emitHostEvent(PROFILE_CARD_CONSTANTS.events.PROFILE);\n this._closeDropdown();\n this._adapter.requestFocus();\n }\n\n private _onSignOutButtonClick(): void {\n this._adapter.emitHostEvent(PROFILE_CARD_CONSTANTS.events.SIGN_OUT);\n this._closeDropdown();\n this._adapter.requestFocus();\n }\n\n private _openDropdown(): void {\n if (this._open) {\n return;\n }\n\n if (isFunction(this._cancelDismissListener)) {\n this._cancelDismissListener();\n }\n const profileCardConfig: IAppBarProfileCardConfig = {\n fullName: this._fullName,\n email: this._email,\n signOut: this._showSignOutButton,\n profile: this._showProfileButton,\n avatarText: this._avatarText,\n avatarImageUrl: this._avatarImageUrl,\n avatarLetterCount: this._avatarLetterCount\n };\n const profileCardContent = this._profileCardBuilder ? this._profileCardBuilder() : undefined;\n this._cancelDismissListener = this._adapter.openPopup(profileCardConfig, this._dismissListener, this._profileButtonListener, this._signOutButtonListener, profileCardContent);\n this._adapter.addWindowListener('keydown', this._keydownListener);\n this._open = true;\n\n // If we aren't showing the sign out or profile buttons then leave focus on our button\n if (!profileCardConfig.signOut && !profileCardConfig.profile) {\n this._adapter.requestFocus();\n }\n }\n\n private _closeDropdown(): void {\n if (!this._open) {\n return;\n }\n if (isFunction(this._cancelDismissListener)) {\n this._cancelDismissListener();\n }\n this._open = false;\n this._adapter.removeWindowListener('keydown', this._keydownListener);\n this._adapter.closePopup();\n }\n\n public get fullName(): string {\n return this._fullName;\n }\n public set fullName(value: string) {\n if (this._fullName !== value) {\n this._fullName = value;\n this._adapter.setHostAttribute(APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.FULL_NAME, this._fullName);\n }\n }\n\n public get email(): string {\n return this._email;\n }\n public set email(value: string) {\n if (this._email !== value) {\n this._email = value;\n this._adapter.setHostAttribute(APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.EMAIL, this._email);\n }\n }\n\n public get avatarImageUrl(): string {\n return this._avatarImageUrl;\n }\n public set avatarImageUrl(value: string) {\n if (this._avatarImageUrl !== value) {\n this._avatarImageUrl = value;\n if (this._isInitialized) {\n this._adapter.setAvatarImageUrl(this._avatarImageUrl);\n this._adapter.setHostAttribute(APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.AVATAR_IMAGE_URL, this._avatarImageUrl);\n }\n }\n }\n\n public get avatarLetterCount(): number {\n return this._avatarLetterCount;\n }\n public set avatarLetterCount(value: number) {\n if (this._avatarLetterCount !== value) {\n this._avatarLetterCount = value;\n if (this._isInitialized) {\n this._adapter.setAvatarLetterCount(this._avatarLetterCount);\n this._adapter.setHostAttribute(APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.AVATAR_LETTER_COUNT, this._avatarLetterCount as any);\n }\n }\n }\n\n public get avatarText(): string {\n return this._avatarText;\n }\n public set avatarText(value: string) {\n if (this._avatarText !== value) {\n this._avatarText = value;\n if (this._isInitialized) {\n this._adapter.setAvatarText(this._avatarText);\n this._adapter.setHostAttribute(APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.AVATAR_TEXT, this._avatarText);\n }\n }\n }\n\n public get signOutButton(): boolean {\n return this._showSignOutButton;\n }\n public set signOutButton(value: boolean) {\n if (this._showSignOutButton !== value) {\n this._showSignOutButton = value;\n this._adapter.setHostAttribute(APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.SIGN_OUT_BUTTON, this._showSignOutButton as any);\n }\n }\n\n public get profileButton(): boolean {\n return this._showProfileButton;\n }\n public set profileButton(value: boolean) {\n if (this._showProfileButton !== value) {\n this._showProfileButton = value;\n this._adapter.setHostAttribute(APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.PROFILE_BUTTON, this._showProfileButton as any);\n }\n }\n\n public get open(): boolean {\n return this._open;\n }\n public set open(value: boolean) {\n if (this._open !== value) {\n if (value) {\n this._openDropdown();\n } else {\n this._closeDropdown();\n }\n }\n }\n\n public get profileCardBuilder(): AppBarProfileButtonProfileCardBuilder {\n return this._profileCardBuilder;\n }\n public set profileCardBuilder(fn: AppBarProfileButtonProfileCardBuilder) {\n this._profileCardBuilder = fn;\n }\n}\n", "import { CustomElement, attachLightTemplate, coerceNumber, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\nimport { AppBarProfileButtonAdapter } from './app-bar-profile-button-adapter';\nimport { AppBarProfileButtonFoundation } from './app-bar-profile-button-foundation';\nimport { APP_BAR_PROFILE_BUTTON_CONSTANTS, AppBarProfileButtonProfileCardBuilder } from './app-bar-profile-button-constants';\nimport { ProfileCardComponent } from '../../profile-card';\nimport { IconButtonComponent } from '../../icon-button';\nimport { AvatarComponent } from '../../avatar';\nimport { PopupComponent } from '../../popup';\nimport { TooltipComponent } from '../../tooltip';\nimport { BaseComponent, IBaseComponent } from '../../core/base/base-component';\n\nconst template = '<template><forge-icon-button><button type=\\\"button\\\" aria-label=\\\"View profile card\\\"><forge-avatar aria-hidden=\\\"true\\\"></forge-avatar></button><forge-tooltip delay=\\\"500\\\" position=\\\"bottom\\\">View profile</forge-tooltip></forge-icon-button></template>';\n\nexport interface IAppBarProfileButtonComponent extends IBaseComponent {\n avatarImageUrl: string;\n avatarLetterCount: number;\n avatarText: string;\n fullName: string;\n email: string;\n signOutButton: boolean;\n profileButton: boolean;\n open: boolean;\n profileCardBuilder: (fn: AppBarProfileButtonProfileCardBuilder) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-app-bar-profile-button': IAppBarProfileButtonComponent;\n }\n}\n\n/**\n * The web component class behind the `<forge-app-bar-profile-button>` custom element.\n * \n * @tag forge-app-bar-profile-button\n */\n@CustomElement({\n name: APP_BAR_PROFILE_BUTTON_CONSTANTS.elementName,\n dependencies: [\n PopupComponent,\n ProfileCardComponent,\n IconButtonComponent,\n AvatarComponent,\n TooltipComponent\n ]\n})\nexport class AppBarProfileButtonComponent extends BaseComponent implements IAppBarProfileButtonComponent {\n public static get observedAttributes(): string[] {\n return [\n APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.FULL_NAME,\n APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.EMAIL,\n APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.AVATAR_IMAGE_URL,\n APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.AVATAR_LETTER_COUNT,\n APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.AVATAR_TEXT,\n APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.SIGN_OUT_BUTTON,\n APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.PROFILE_BUTTON,\n APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.OPEN\n ];\n }\n\n private _foundation: AppBarProfileButtonFoundation;\n\n constructor() {\n super();\n this._foundation = new AppBarProfileButtonFoundation(new AppBarProfileButtonAdapter(this));\n }\n\n public initializedCallback(): void {\n attachLightTemplate(this, template);\n }\n\n public connectedCallback(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.FULL_NAME:\n this.fullName = newValue;\n break;\n case APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.EMAIL:\n this.email = newValue;\n break;\n case APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.AVATAR_IMAGE_URL:\n this.avatarImageUrl = newValue;\n break;\n case APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.AVATAR_LETTER_COUNT:\n this.avatarLetterCount = coerceNumber(newValue);\n break;\n case APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.AVATAR_TEXT:\n this.avatarText = newValue;\n break;\n case APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.SIGN_OUT_BUTTON:\n this.signOutButton = coerceBoolean(newValue);\n break;\n case APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.PROFILE_BUTTON:\n this.profileButton = coerceBoolean(newValue);\n break;\n case APP_BAR_PROFILE_BUTTON_CONSTANTS.attributes.OPEN:\n this.open = coerceBoolean(newValue);\n break;\n }\n }\n\n @FoundationProperty()\n public fullName: string;\n\n @FoundationProperty()\n public email: string;\n\n @FoundationProperty()\n public avatarImageUrl: string;\n\n @FoundationProperty()\n public avatarLetterCount: number;\n\n @FoundationProperty()\n public avatarText: string;\n\n @FoundationProperty()\n public signOutButton: boolean;\n\n @FoundationProperty()\n public profileButton: boolean;\n\n @FoundationProperty()\n public open: boolean;\n\n /** Sets the profile card builder callback that will be used to add extra content to the profile card. */\n @FoundationProperty()\n public profileCardBuilder: AppBarProfileButtonProfileCardBuilder;\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { AppBarProfileButtonComponent } from './app-bar-profile-button';\n\nexport * from './app-bar-profile-button-adapter';\nexport * from './app-bar-profile-button-constants';\nexport * from './app-bar-profile-button-foundation';\nexport * from './app-bar-profile-button';\n\nexport function defineAppBarProfileButtonComponent(): void {\n defineCustomElement(AppBarProfileButtonComponent);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/quantity-field/quantity-field-constants.ts", "../../src/quantity-field/quantity-field-adapter.ts", "../../src/quantity-field/quantity-field-foundation.ts", "../../src/quantity-field/quantity-field.ts", "../../src/quantity-field/quantity-field-component-delegate.ts", "../../src/quantity-field/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}quantity-field`;\n\nconst attributes = {\n INVALID: 'invalid',\n REQUIRED: 'required',\n DISABLED: 'disabled'\n};\n\nconst classes = {\n ROOT: 'forge-quantity-field',\n INVALID: 'forge-quantity-field--invalid',\n REQUIRED: 'forge-quantity-field--required'\n};\n\nconst slots = {\n INCREMENT_BUTTON: 'increment-button',\n DECREMENT_BUTTON: 'decrement-button',\n LABEL: 'label',\n HELPER_TEXT: 'helper-text'\n};\n\nconst selectors = {\n ROOT: `.${classes.ROOT}`,\n INCREMENT_BUTTON_SLOT: `slot[name=${slots.INCREMENT_BUTTON}]`,\n DECREMENT_BUTTON_SLOT: `slot[name=${slots.DECREMENT_BUTTON}]`,\n INCREMENT_BUTTON: `[slot=${slots.INCREMENT_BUTTON}] button, button[slot=${slots.INCREMENT_BUTTON}]`,\n DECREMENT_BUTTON: `[slot=${slots.DECREMENT_BUTTON}] button, button[slot=${slots.DECREMENT_BUTTON}]`,\n TEXT_FIELD: 'forge-text-field',\n INPUT: 'input[type=number]',\n LABEL: `[slot=${slots.LABEL}]`,\n HELPER_TEXT: `[slot=${slots.HELPER_TEXT}]`\n};\n\nexport const QUANTITY_FIELD_CONSTANTS = {\n elementName,\n classes,\n slots,\n selectors,\n attributes\n};\n", "import { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { IQuantityFieldComponent } from './quantity-field';\nimport { getShadowElement, Platform } from '@tylertech/forge-core';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\nimport { TextFieldComponent } from '../text-field';\n\nexport interface IQuantityFieldAdapter extends IBaseAdapter {\n addRootClass(name: string): void;\n removeRootClass(name: string): void;\n inputHasAttribute(name: string): boolean;\n addIncrementButtonSlotListener(listener: () => void): void;\n removeIncrementButtonSlotListener(listener: () => void): void;\n addDecrementButtonSlotListener(listener: (evt: Event) => void): void;\n removeDecrementButtonSlotListener(listener: (evt: Event) => void): void;\n addIncrementEventListener(event: string, callback: (event: Event) => void): void;\n addDecrementEventListener(event: string, callback: (event: Event) => void): void;\n removeIncrementEventListener(event: string, callback: (event: Event) => void): void;\n removeDecrementEventListener(event: string, callback: (event: Event) => void): void;\n addIncrementButtonAttribute(name: string, value?: string): void;\n removeIncrementButtonAttribute(name: string): void;\n addDecrementButtonAttribute(name: string, value?: string): void;\n removeDecrementButtonAttribute(name: string): void;\n addInputDisabledAttributeChangeListener(callback: () => void): void;\n addTextFieldAttribute(name: string, value?: string): void;\n removeTextFieldAttribute(name: string): void;\n removeInputDisabledAttributeChangeListener(): void;\n setLabelAsRequired(required: boolean): void;\n increment(): void;\n decrement(): void;\n}\n\nexport class QuantityFieldAdapter extends BaseAdapter<IQuantityFieldComponent> implements IQuantityFieldAdapter {\n private _rootElement: HTMLElement;\n private _incrementButtonSlot: HTMLSlotElement;\n private _decrementButtonSlot: HTMLSlotElement;\n private _incrementButton: HTMLButtonElement;\n private _decrementButton: HTMLButtonElement;\n private _textField: TextFieldComponent;\n private _inputElement: HTMLInputElement | null;\n private _inputAttributeMutationObserver: MutationObserver | undefined;\n\n constructor(component: IQuantityFieldComponent) {\n super(component);\n this._rootElement = getShadowElement(component, QUANTITY_FIELD_CONSTANTS.selectors.ROOT);\n this._incrementButtonSlot = getShadowElement(this._component, QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON_SLOT) as HTMLSlotElement;\n this._decrementButtonSlot = getShadowElement(this._component, QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON_SLOT) as HTMLSlotElement;\n }\n\n public addRootClass(name: string): void {\n this._rootElement.classList.add(name);\n }\n\n public removeRootClass(name: string): void {\n this._rootElement.classList.remove(name);\n }\n\n public inputHasAttribute(name: string): boolean {\n if (!this.inputElement) {\n return false;\n }\n\n return this.inputElement.hasAttribute(name);\n }\n\n public addIncrementButtonSlotListener(listener: () => void): void {\n this._incrementButtonSlot.addEventListener('slotchange', listener);\n }\n\n public removeIncrementButtonSlotListener(listener: () => void): void {\n if (this._incrementButtonSlot) {\n this._incrementButtonSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addDecrementButtonSlotListener(listener: (evt: Event) => void): void {\n this._decrementButtonSlot.addEventListener('slotchange', listener);\n }\n\n public removeDecrementButtonSlotListener(listener: (evt: Event) => void): void {\n if (this._decrementButtonSlot) {\n this._decrementButtonSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addTextFieldAttribute(name: string, value = ''): void {\n if (this._textFieldComponent) {\n this._textFieldComponent.setAttribute(name, value);\n }\n }\n\n public removeTextFieldAttribute(name: string): void {\n if (this._textFieldComponent) {\n this._textFieldComponent.removeAttribute(name);\n }\n }\n\n public addIncrementEventListener(event: string, callback: (event: Event) => void): void {\n this._incrementButtonElement.addEventListener(event, callback);\n }\n\n public removeIncrementEventListener(event: string, callback: (event: Event) => void): void {\n if (this._incrementButtonElement) {\n this._incrementButtonElement.removeEventListener(event, callback);\n }\n }\n\n public addDecrementEventListener(event: string, callback: (event: Event) => void): void {\n this._decrementButtonElement.addEventListener(event, callback);\n }\n\n public removeDecrementEventListener(event: string, callback: (event: Event) => void): void {\n if (this._decrementButtonElement) {\n this._decrementButtonElement.removeEventListener(event, callback);\n }\n }\n\n public addIncrementButtonAttribute(name: string, value = ''): void {\n this._incrementButtonElement.setAttribute(name, value);\n }\n\n public removeIncrementButtonAttribute(name: string): void {\n this._incrementButtonElement.removeAttribute(name);\n }\n\n public addDecrementButtonAttribute(name: string, value = ''): void {\n this._decrementButtonElement.setAttribute(name, value);\n }\n\n public removeDecrementButtonAttribute(name: string): void {\n this._decrementButtonElement.removeAttribute(name);\n }\n\n public setLabelAsRequired(required: boolean): void {\n const labelElement = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.LABEL) as HTMLLabelElement;\n\n // Due to a Safari bug with ::slotted::after selectors, we need to manually append the required \"asterisk\" to the label text\n // https://bugs.webkit.org/show_bug.cgi?id=178237\n if (required && Platform.WEBKIT && labelElement && !labelElement.innerText.endsWith('*')) {\n const asterisk = document.createElement('span');\n asterisk.style.color = 'var(--mdc-theme-error)';\n asterisk.style.marginLeft = '1px';\n asterisk.textContent = '*';\n labelElement.appendChild(asterisk);\n }\n }\n\n public increment(): void {\n const input = this.inputElement;\n if (!input) {\n return;\n }\n\n const curValue = +input.value;\n const precision = this._calcPrecision(this._inputStep);\n let newValue = parseFloat((curValue + this._inputStep).toFixed(precision));\n if (!!this._inputMax && this._inputMax < newValue) {\n newValue = this._inputMax;\n }\n\n this._setInputValue(newValue);\n }\n\n public decrement(): void {\n const input = this.inputElement;\n if (!input) {\n return;\n }\n\n const curValue = +input.value;\n const precision = this._calcPrecision(this._inputStep);\n let newValue = parseFloat((curValue - this._inputStep).toFixed(precision));\n if (!!this._inputMin && this._inputMin > newValue) {\n newValue = this._inputMin;\n }\n\n this._setInputValue(newValue);\n }\n\n public addInputDisabledAttributeChangeListener(callback: () => void): void {\n this._setupInputDisabledAttributeMutationObserver(callback);\n }\n\n public removeInputDisabledAttributeChangeListener(): void {\n this._cleanupInputDisabledAttributeMutationObserver();\n }\n\n private _setInputValue(value: string | number): void {\n if (!this.inputElement) {\n return;\n }\n\n this.inputElement.value = `${value}`;\n this.inputElement.dispatchEvent(new Event('input'));\n this.inputElement.dispatchEvent(new Event('change'));\n }\n\n private _isNullOrUndefinedOrEmpty(value: any): value is null | undefined {\n return value === null || value === undefined || value === '';\n }\n\n private _setupInputDisabledAttributeMutationObserver(callback: () => void): void {\n if (!this.inputElement) {\n return;\n }\n\n this._cleanupInputDisabledAttributeMutationObserver();\n const mutationCallback = (mutationRecords: MutationRecord[]): void => this._inputDisabledAttributeMutationCallback(mutationRecords, callback);\n this._inputAttributeMutationObserver = new MutationObserver(mutationCallback);\n const mutationOptions: MutationObserverInit = {\n attributes: true,\n attributeOldValue: true,\n attributeFilter: [QUANTITY_FIELD_CONSTANTS.attributes.DISABLED]\n };\n this._inputAttributeMutationObserver.observe(this.inputElement, mutationOptions);\n }\n\n private _cleanupInputDisabledAttributeMutationObserver(): void {\n if (this._inputAttributeMutationObserver) {\n this._inputAttributeMutationObserver.disconnect();\n delete this._inputAttributeMutationObserver;\n }\n }\n\n private _inputDisabledAttributeMutationCallback(mutationRecords: MutationRecord[], callback: () => void): void {\n for (const mutationRecord of mutationRecords) {\n // Skip:\n // - Non-attribute mutations.\n // - Mutations without an attribute name.\n // - Mutations without a matching attribute name.\n // - Mutations that did not change the attribute value.\n if (mutationRecord.type !== 'attributes'\n || !mutationRecord.attributeName\n || mutationRecord.attributeName !== QUANTITY_FIELD_CONSTANTS.attributes.DISABLED\n || mutationRecord.target[mutationRecord.attributeName] === mutationRecord.oldValue) {\n continue;\n }\n\n callback();\n }\n }\n\n private get _incrementButtonElement(): HTMLButtonElement {\n if (!this._incrementButton) {\n this._incrementButton = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON) as HTMLButtonElement;\n }\n return this._incrementButton;\n }\n\n private get _decrementButtonElement(): HTMLButtonElement {\n if (!this._decrementButton) {\n this._decrementButton = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON) as HTMLButtonElement;\n }\n return this._decrementButton;\n }\n\n private get _textFieldComponent(): TextFieldComponent {\n if (!this._textField) {\n this._textField = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.TEXT_FIELD) as TextFieldComponent;\n }\n return this._textField;\n }\n\n public get inputElement(): HTMLInputElement | null {\n if (!this._inputElement) {\n this._inputElement = this._component.querySelector<HTMLInputElement>(QUANTITY_FIELD_CONSTANTS.selectors.INPUT);\n }\n return this._inputElement;\n }\n\n private get _inputStep(): number {\n const input = this.inputElement;\n if (!input || this._isNullOrUndefinedOrEmpty(input.step)) {\n return 1;\n }\n\n return +input.step;\n }\n\n private get _inputMax(): number | null {\n const input = this.inputElement;\n if (!input || this._isNullOrUndefinedOrEmpty(input.max)) {\n return null;\n }\n\n return +input.max;\n }\n\n private get _inputMin(): number | null {\n const input = this.inputElement;\n if (!input || this._isNullOrUndefinedOrEmpty(input.min)) {\n return null;\n }\n\n return +input.min;\n }\n\n private _calcPrecision(value: number): number {\n const strVal = String(value);\n if (strVal.includes('.')) {\n return strVal.split('.')[1].length;\n }\n return 0;\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IQuantityFieldAdapter } from './quantity-field-adapter';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\n\nexport interface IQuantityFieldFoundation extends ICustomElementFoundation {\n required: boolean;\n invalid: boolean;\n}\n\nexport class QuantityFieldFoundation implements IQuantityFieldFoundation {\n private _required: boolean;\n private _invalid: boolean;\n private _incrementButtonSlotChanged: () => void;\n private _decrementButtonSlotChanged: () => void;\n private _incrementValue: () => void;\n private _decrementValue: () => void;\n\n constructor(private _adapter: IQuantityFieldAdapter) {\n this._incrementValue = () => this._adapter.increment();\n this._decrementValue = () => this._adapter.decrement();\n this._incrementButtonSlotChanged = () => this._onIncrementButtonSlotChanged();\n this._decrementButtonSlotChanged = () => this._onDecrementButtonSlotChanged();\n\n this._adapter.addIncrementButtonSlotListener(this._incrementButtonSlotChanged);\n this._adapter.addDecrementButtonSlotListener(this._decrementButtonSlotChanged);\n }\n\n public connect(): void {\n this._adapter.addInputDisabledAttributeChangeListener(() => this._syncDisabledStateOfButtons());\n this._syncDisabledStateOfButtons();\n }\n\n public disconnect(): void {\n this._removeIncrementEventListener();\n this._removeDecrementEventListener();\n this._removeIncrementButtonSlotListener();\n this._removeDecrementButtonSlotListener();\n this._adapter.removeInputDisabledAttributeChangeListener();\n }\n\n private _onIncrementButtonSlotChanged(): void {\n this._addIncrementEventListener();\n }\n\n private _onDecrementButtonSlotChanged(): void {\n this._addDecrementEventListener();\n }\n\n private _addIncrementEventListener(): void {\n this._adapter.addIncrementEventListener('click', this._incrementValue);\n }\n\n private _addDecrementEventListener(): void {\n this._adapter.addDecrementEventListener('click', this._decrementValue);\n }\n\n private _removeIncrementEventListener(): void {\n this._adapter.removeIncrementEventListener('click', this._incrementValue);\n }\n\n private _removeDecrementEventListener(): void {\n this._adapter.removeDecrementEventListener('click', this._decrementValue);\n }\n\n private _removeIncrementButtonSlotListener(): void {\n this._adapter.removeIncrementButtonSlotListener(this._incrementButtonSlotChanged);\n }\n\n private _removeDecrementButtonSlotListener(): void {\n this._adapter.removeDecrementButtonSlotListener(this._decrementButtonSlotChanged);\n }\n\n private _syncDisabledStateOfButtons(): void {\n const isDisabled = this._adapter.inputHasAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n if (isDisabled) {\n this._adapter.addDecrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n this._adapter.addIncrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n } else {\n this._adapter.removeIncrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n this._adapter.removeDecrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n }\n }\n\n public get required(): boolean {\n return this._required;\n }\n public set required(value: boolean) {\n if (this._required === value) {\n return;\n }\n\n this._required = value;\n\n if (this._required) {\n this._adapter.setHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED);\n this._adapter.addRootClass(QUANTITY_FIELD_CONSTANTS.classes.REQUIRED);\n } else {\n this._adapter.removeHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED);\n this._adapter.removeRootClass(QUANTITY_FIELD_CONSTANTS.classes.REQUIRED);\n }\n\n this._adapter.setLabelAsRequired(this._required);\n }\n\n public get invalid(): boolean {\n return this._invalid;\n }\n public set invalid(value: boolean) {\n if (this._invalid === value) {\n return;\n }\n\n this._invalid = value;\n\n if (this._invalid) {\n this._adapter.setHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n this._adapter.addRootClass(QUANTITY_FIELD_CONSTANTS.classes.INVALID);\n this._adapter.addTextFieldAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n } else {\n this._adapter.removeHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n this._adapter.removeRootClass(QUANTITY_FIELD_CONSTANTS.classes.INVALID);\n this._adapter.removeTextFieldAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n }\n }\n\n}\n", "import { CustomElement, attachShadowTemplate, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\nimport { QuantityFieldAdapter } from './quantity-field-adapter';\nimport { QuantityFieldFoundation } from './quantity-field-foundation';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\nimport { IconButtonComponent } from '../icon-button';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\n\nconst template = '<template><div class=\\\"forge-quantity-field\\\" part=\\\"root\\\"><slot name=\\\"label\\\"></slot><div class=\\\"forge-quantity-field__row\\\" part=\\\"row\\\"><slot name=\\\"decrement-button\\\"></slot><slot></slot><slot name=\\\"increment-button\\\"></slot></div><slot name=\\\"helper-text\\\"></slot></div></template>';\nconst styles = '.forge-quantity-field ::slotted([slot=label]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-quantity-field ::slotted([slot=helper-text]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);height:1rem;color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-quantity-field ::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:0}.forge-quantity-field__row{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}.forge-quantity-field ::slotted(forge-icon-button:first-of-type){color:var(--mdc-theme-text-secondary-on-light);margin-right:4px}.forge-quantity-field ::slotted(forge-icon-button:last-of-type){color:var(--mdc-theme-text-secondary-on-light);margin-left:4px}.forge-quantity-field ::slotted(forge-text-field){--forge-text-field-margin-top:0;--forge-text-field-margin-bottom:0}.forge-quantity-field--required ::slotted([slot=label])::before{color:#b00020;color:var(--mdc-theme-error,#b00020);content:\\\"*\\\";margin-right:1px}.forge-quantity-field--invalid ::slotted([slot=label]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-quantity-field--invalid ::slotted([slot=helper-text]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);height:1rem;color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-quantity-field--invalid ::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:0}:host{display:inline-block}:host([hidden]){display:none}';\n\nexport interface IQuantityFieldComponent extends IBaseComponent {\n invalid: boolean;\n required: boolean;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-quantity-field': IQuantityFieldComponent;\n }\n}\n\n/**\n * The web component class behind the `<forge-quantity-field>` custom element.\n * \n * @tag forge-quantity-field\n */\n@CustomElement({\n name: QUANTITY_FIELD_CONSTANTS.elementName,\n dependencies: [\n IconButtonComponent\n ]\n})\nexport class QuantityFieldComponent extends BaseComponent implements IQuantityFieldComponent {\n public static get observedAttributes(): string[] {\n return [\n QUANTITY_FIELD_CONSTANTS.attributes.INVALID,\n QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED\n ];\n }\n\n private _foundation: QuantityFieldFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new QuantityFieldFoundation(new QuantityFieldAdapter(this));\n }\n\n public connectedCallback(): void {\n if (this._requiredElementsPresent()) {\n this._foundation.connect();\n } else {\n this._ensureElementsPresent().then(() => {\n this._foundation.connect();\n });\n }\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case QUANTITY_FIELD_CONSTANTS.attributes.INVALID:\n this.invalid = coerceBoolean(newValue);\n break;\n case QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED:\n this.required = coerceBoolean(newValue);\n break;\n }\n }\n\n private _ensureElementsPresent(): Promise<void> {\n return new Promise<void>(resolve => {\n if (this._requiredElementsPresent()) {\n resolve();\n return;\n }\n\n const observer = new MutationObserver(changes => {\n const hasAddedNodes = changes.reduce((prev, curr) => prev + curr.addedNodes.length, 0) > 0;\n if (hasAddedNodes) {\n if (this._requiredElementsPresent()) {\n observer.disconnect();\n resolve();\n }\n }\n });\n observer.observe(this, { childList: true, subtree: true });\n });\n }\n\n private _requiredElementsPresent(): boolean {\n const inputElement = this.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.INPUT);\n const decrementElement = this.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON);\n const incrementElement = this.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON);\n return !!inputElement && !!decrementElement && !!incrementElement;\n }\n\n /** Gets/sets the invalid state. */\n @FoundationProperty()\n public invalid: boolean;\n\n /** Gets/sets the required state which controls the visibility of the asterisk in the label. */\n @FoundationProperty()\n public required: boolean;\n}\n", "import { IBaseComponentDelegateConfig } from '../core/delegates/base-component-delegate';\nimport { FormFieldComponentDelegate, IFormFieldComponentDelegateOptions } from '../core/delegates/form-field-component-delegate';\nimport { IconButtonComponentDelegate } from '../icon-button';\nimport { ITextFieldComponentDelegateConfig, TextFieldComponentDelegate } from '../text-field/text-field-component-delegate';\nimport { IQuantityFieldComponent } from './quantity-field';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\nimport { tylIconRemoveCircleOutline, tylIconControlPoint } from '@tylertech/tyler-icons/standard';\nimport { IconRegistry } from '../icon';\n\nexport type QuantityFieldComponentDelegateProps = Partial<IQuantityFieldComponent>;\nexport interface IQuantityFieldComponentDelegateOptions extends IFormFieldComponentDelegateOptions {\n id?: string;\n label?: string;\n value?: string;\n step?: string;\n helperText?: string;\n textFieldDelegateConfig?: ITextFieldComponentDelegateConfig;\n}\nexport interface IQuantityFieldComponentDelegateConfig extends IBaseComponentDelegateConfig<IQuantityFieldComponent, IQuantityFieldComponentDelegateOptions> {}\n\nexport class QuantityFieldComponentDelegate extends FormFieldComponentDelegate<IQuantityFieldComponent, IQuantityFieldComponentDelegateOptions> {\n private _textFieldDelegate: TextFieldComponentDelegate;\n private _labelElement: HTMLLabelElement | undefined;\n private _helperTextElement: HTMLSpanElement | undefined;\n\n constructor(config?: IQuantityFieldComponentDelegateConfig) {\n super(config);\n IconRegistry.define([tylIconRemoveCircleOutline, tylIconControlPoint]);\n }\n\n protected _build(): IQuantityFieldComponent {\n const quantityField = document.createElement(QUANTITY_FIELD_CONSTANTS.elementName);\n this._attachButton(quantityField, tylIconRemoveCircleOutline.name, 'decrement-button');\n this._attachTextField(quantityField);\n this._attachButton(quantityField, tylIconControlPoint.name, 'increment-button');\n return quantityField;\n }\n\n protected override _configure(): void {\n this.inputElement.value = this._config.options?.value ?? '0';\n this.inputElement.style.textAlign = 'center';\n this.inputElement.style.width = '64px';\n\n if (this._config.options?.helperText) {\n this.setHelperText(this._config.options.helperText);\n }\n if (typeof this._config.options?.label === 'string') {\n this._createLabel(this._config.options.label);\n }\n if (this._config.options?.step !== undefined) {\n this.inputElement.step = this._config.options.step;\n }\n }\n\n public get value(): string {\n return this._textFieldDelegate.inputElement.value;\n }\n public set value(value: string) {\n this._textFieldDelegate.inputElement.value = value;\n }\n\n public get disabled(): boolean {\n return this._textFieldDelegate.inputElement.disabled;\n }\n public set disabled(value: boolean) {\n this._textFieldDelegate.inputElement.disabled = value;\n }\n\n public get invalid(): boolean {\n return this._element.invalid || false;\n }\n public set invalid(value: boolean) {\n this._element.invalid = value;\n }\n\n public get inputElement(): HTMLInputElement {\n return this._textFieldDelegate.inputElement;\n }\n\n public get labelElement(): HTMLLabelElement | undefined {\n return this._labelElement;\n }\n\n public onChange(listener: (value: string) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('input', evt => listener((evt.target as HTMLInputElement).value));\n }\n\n public onFocus(listener: (evt: Event) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('focus', evt => listener(evt));\n }\n\n public onBlur(listener: (evt: Event) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('blur', evt => listener(evt));\n }\n\n private _attachTextField(quantityField: IQuantityFieldComponent): void {\n const textFieldConfig: ITextFieldComponentDelegateConfig = {\n props: { ...this._config.options?.textFieldDelegateConfig?.props },\n options: {\n ...this._config.options?.textFieldDelegateConfig?.options,\n id: this._config.options?.id,\n type: 'number'\n }\n };\n this._textFieldDelegate = new TextFieldComponentDelegate(textFieldConfig);\n quantityField.appendChild(this._textFieldDelegate.element);\n }\n\n public setLabel(text: string | null): void {\n if (text) {\n if (this._labelElement) {\n this._labelElement.textContent = text;\n } else {\n this._createLabel(text);\n }\n } else if (this._labelElement) {\n this._element.removeChild(this._labelElement);\n this._labelElement = undefined;\n }\n }\n\n public setHelperText(text: string | null): void {\n if (text) {\n if (!this._helperTextElement) {\n this._helperTextElement = document.createElement('span');\n this._helperTextElement.slot = 'helper-text';\n this._element.appendChild(this._helperTextElement);\n }\n this._helperTextElement.textContent = text;\n } else if (this._helperTextElement) {\n this._element.removeChild(this._helperTextElement);\n this._helperTextElement = undefined;\n }\n }\n\n private _createLabel(text: string): void {\n this._labelElement = document.createElement('label');\n this._labelElement.textContent = text;\n this._labelElement.slot = 'label';\n if (this._config.options?.id) {\n this._labelElement.setAttribute('for', this._config.options.id);\n }\n this._element.appendChild(this._labelElement);\n }\n\n private _attachButton(parent: HTMLElement, iconName: string, slot: string): IconButtonComponentDelegate {\n const iconButtonDelegate = new IconButtonComponentDelegate({\n options: {\n iconName,\n parent,\n attributes: { slot }\n }\n });\n return iconButtonDelegate;\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { QuantityFieldComponent } from './quantity-field';\n\nexport * from './quantity-field-adapter';\nexport * from './quantity-field-constants';\nexport * from './quantity-field-foundation';\nexport * from './quantity-field';\nexport * from './quantity-field-component-delegate';\n\nexport function defineQuantityFieldComponent(): void {\n defineCustomElement(QuantityFieldComponent);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/field/field-adapter.ts", "../../src/field/field-foundation.ts", "../../src/field/field.ts"],
|
|
4
|
-
"sourcesContent": ["import { addClass, calculateFontWidth, getShadowElement, IFontInfo, listenOwnProperty, Platform, removeClass, getActiveElement, createElementAttributeObserver, toggleClass } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { FloatingLabel, IFloatingLabel } from '../floating-label/floating-label';\nimport { IFieldComponent } from './field';\nimport { FIELD_CONSTANTS } from './field-constants';\n\nexport interface IFieldAdapter extends IBaseAdapter {\n // root\n setRootClass(classes: string | string[]): void;\n removeRootClass(classes: string | string[]): void;\n\n // input\n addInputListener(type: string, listener: (evt: Event) => void): void;\n removeInputListener(type: string, listener: (evt: Event) => void): void;\n setInputClass(className: string): void;\n removeInputClass(className: string): void;\n\n // label\n addLabelSlotListener(listener: (evt: Event) => void): void;\n removeLabelSlotListener(listener: (evt: Event) => void): void;\n setLabelClass(name: string): void;\n removeLabelClass(name: string): void;\n\n // leading\n addLeadingSlotListener(listener: (evt: Event) => void): void;\n removeLeadingSlotListener(listener: (evt: Event) => void): void;\n\n // trailing\n addTrailingSlotListener(listener: (evt: Event) => void): void;\n removeTrailingSlotListener(listener: (evt: Event) => void): void;\n\n // add on end\n addAddonEndSlotListener(listener: (evt: Event) => void): void;\n removeAddonEndSlotListener(listener: (evt: Event) => void): void;\n\n // state selectors\n hasAddonEndNodes(): boolean;\n hasLabel(): boolean;\n hasLeadingNodes(): boolean;\n hasPlaceholder(): boolean;\n hasTrailingNodes(): boolean;\n inputHasFocus(): boolean;\n inputHasValue(): boolean;\n fieldHasValue(): boolean;\n isDisabled(): boolean;\n isReadonly(): boolean;\n getLabelFontMetrics(): IFontInfo;\n getLabelWidth(fontSize: number, fontFamily: string): number;\n\n // state actions\n initialize(required: boolean, rootSelector: string): void;\n initializeFloatingLabel(): IFloatingLabel;\n ensureLabelOrder(): void;\n ensureSlottedLabel(): void;\n destroy(): void;\n setValueChangedListener(context: any, listener: (value: any) => void): void;\n destroyValueChangeListener(): void;\n detectLabel(required: boolean): void;\n setRoomy(isRoomy: boolean): void;\n setDense(isDense: boolean): void;\n setInputAttributeObserver(listener: (name: string, value: string | null) => void): void;\n}\n\nexport class FieldAdapter extends BaseAdapter<IFieldComponent> implements IFieldAdapter {\n protected _rootElement: HTMLElement;\n protected _labelSlot: HTMLSlotElement;\n protected _leadingSlot: HTMLSlotElement;\n protected _trailingSlot: HTMLSlotElement;\n protected _addonEndSlot: HTMLSlotElement;\n protected _labelElement: HTMLLabelElement;\n protected _inputElement: HTMLInputElement;\n protected _inputMutationObserver: MutationObserver;\n protected _valueChangeListeners: Array<() => void> = [];\n\n constructor(component: IFieldComponent) {\n super(component);\n }\n\n public initialize(required: boolean, rootSelector: string): void {\n this._rootElement = getShadowElement(this._component, rootSelector);\n this._labelSlot = getShadowElement(this._component, 'slot[name=label]') as HTMLSlotElement;\n this._leadingSlot = getShadowElement(this._component, 'slot[name=leading]') as HTMLSlotElement;\n this._trailingSlot = getShadowElement(this._component, 'slot[name=trailing]') as HTMLSlotElement;\n this._addonEndSlot = getShadowElement(this._component, 'slot[name=addon-end]') as HTMLSlotElement;\n this._inputElement = this._component.querySelector('input:not([type=checkbox]):not([type=radio])') as HTMLInputElement;\n this.detectLabel(required);\n }\n\n public destroy(): void {\n if (this._inputMutationObserver) {\n this._inputMutationObserver.disconnect();\n }\n }\n\n public hasLabel(): boolean {\n return !!this._labelElement;\n }\n\n public ensureSlottedLabel(): void {\n this._labelElement.slot = 'label';\n }\n\n public ensureLabelOrder(): void {\n if (this._labelElement) {\n const children = Array.from(this._component.children);\n if (children.length > 1 && children.indexOf(this._labelElement) < children.indexOf(this._inputElement)) {\n this._component.appendChild(this._labelElement);\n }\n }\n }\n\n public addLabelSlotListener(listener: (evt: Event) => void): void {\n this._labelSlot.addEventListener('slotchange', listener);\n }\n\n public removeLabelSlotListener(listener: (evt: Event) => void): void {\n if (this._labelSlot) {\n this._labelSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addLeadingSlotListener(listener: (evt: Event) => void): void {\n this._leadingSlot.addEventListener('slotchange', listener);\n }\n\n public removeLeadingSlotListener(listener: (evt: Event) => void): void {\n if (this._leadingSlot) {\n this._leadingSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addTrailingSlotListener(listener: (evt: Event) => void): void {\n this._trailingSlot.addEventListener('slotchange', listener);\n }\n\n public removeTrailingSlotListener(listener: (evt: Event) => void): void {\n if (this._trailingSlot) {\n this._trailingSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addAddonEndSlotListener(listener: (evt: Event) => void): void {\n this._addonEndSlot.addEventListener('slotchange', listener);\n }\n\n public removeAddonEndSlotListener(listener: (evt: Event) => void): void {\n if (this._addonEndSlot) {\n this._addonEndSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addInputListener(type: string, listener: (evt: Event) => void): void {\n this._inputElement.addEventListener(type, listener);\n }\n public removeInputListener(type: string, listener: (evt: Event) => void): void {\n if (this._inputElement) {\n this._inputElement.removeEventListener(type, listener);\n }\n }\n\n public setValueChangedListener(context: any, listener: (value: any) => void): void {\n this.destroyValueChangeListener();\n const destroyListener = listenOwnProperty(context, this._inputElement, 'value', listener);\n this._valueChangeListeners.push(destroyListener);\n }\n\n public destroyValueChangeListener(): void {\n this._valueChangeListeners.forEach(cb => cb());\n }\n\n public detectLabel(required: boolean): void {\n this._labelElement = this._component.querySelector('label') as HTMLLabelElement;\n\n // Due to a Safari bug with ::slotted::after selectors, we need to manually append the required 'asterisk' to the label text\n // https://bugs.webkit.org/show_bug.cgi?id=178237\n if (required && Platform.WEBKIT && this._labelElement && !this._labelElement.innerText.endsWith('*')) {\n const asterisk = document.createElement('span');\n asterisk.style.color = 'var(--mdc-theme-error)';\n asterisk.style.marginLeft = '1px';\n asterisk.textContent = '*';\n this._labelElement.appendChild(asterisk);\n }\n }\n\n public initializeFloatingLabel(): IFloatingLabel {\n return new FloatingLabel(this._labelElement);\n }\n\n public inputHasValue(): boolean {\n return this._inputElement.value ? this._inputElement.value.trim().length > 0 : false;\n }\n\n // An overrideable method for more generic field values where input.value is not the value.\n public fieldHasValue(): boolean {\n return this.inputHasValue();\n }\n\n public hasPlaceholder(): boolean {\n return this._inputElement.placeholder ? this._inputElement.placeholder.trim().length > 0 : false;\n }\n\n public inputHasFocus(): boolean {\n return this._inputElement === getActiveElement();\n }\n\n public setLabelClass(name: string): void {\n if (this._labelElement) {\n this._labelElement.classList.add(name);\n }\n }\n\n public removeLabelClass(name: string): void {\n if (this._labelElement) {\n this._labelElement.classList.remove(name);\n }\n }\n\n public setRoomy(isRoomy: boolean): void {\n toggleClass(this._rootElement, isRoomy, FIELD_CONSTANTS.classes.ROOMY);\n }\n\n public setDense(isDense: boolean): void {\n toggleClass(this._rootElement, isDense, FIELD_CONSTANTS.classes.DENSE);\n }\n\n public hasLeadingNodes(): boolean {\n if (!this._leadingSlot) {\n return false;\n }\n return this._leadingSlot.assignedNodes().length > 0;\n }\n\n public hasTrailingNodes(): boolean {\n if (!this._trailingSlot) {\n return false;\n }\n return this._trailingSlot.assignedNodes().length > 0;\n }\n\n public hasAddonEndNodes(): boolean {\n if (!this._addonEndSlot) {\n return false;\n }\n return this._addonEndSlot.assignedNodes().length > 0;\n }\n\n public setInputClass(className: string): void {\n this._inputElement.classList.add(className);\n }\n\n public removeInputClass(className: string): void {\n this._inputElement.classList.remove(className);\n }\n\n public setRootClass(classes: string | string[]): void {\n addClass(classes, this._rootElement);\n }\n\n public removeRootClass(classes: string | string[]): void {\n removeClass(classes, this._rootElement);\n }\n\n public setInputAttributeObserver(listener: (name: string, value: string | null) => void): void {\n this._inputMutationObserver = createElementAttributeObserver(this._inputElement, listener, FIELD_CONSTANTS.observedInputAttributes);\n }\n\n public isDisabled(): boolean {\n return this._inputElement.hasAttribute('disabled');\n }\n\n public isReadonly(): boolean {\n return this._inputElement.hasAttribute('readonly');\n }\n\n public getLabelWidth(fontSize: number, fontFamily: string): number {\n return calculateFontWidth(this._labelElement.innerText, { fontSize, fontFamily });\n }\n\n public getLabelFontMetrics(): IFontInfo {\n const style = getComputedStyle(this._labelElement);\n return {\n fontSize: parseInt(style.fontSize || '16', 10),\n fontFamily: style.fontFamily || 'Roboto'\n };\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IFloatingLabel } from '../floating-label/floating-label';\nimport { IFieldAdapter } from './field-adapter';\nimport { FIELD_CONSTANTS, FieldFloatLabelType, FieldShapeType, FieldDensityType } from './field-constants';\n\nexport interface IFieldFoundation extends ICustomElementFoundation {\n density: FieldDensityType;\n floatLabelType: FieldFloatLabelType;\n shape: FieldShapeType;\n invalid: boolean;\n required: boolean;\n floatLabel(value: boolean, alwaysFloat?: boolean): void;\n}\n\nexport class FieldFoundation {\n protected _density: FieldDensityType = 'default';\n protected _floatingLabel: IFloatingLabel | undefined;\n protected _shape: FieldShapeType = 'default';\n protected _invalid = false;\n protected _required = false;\n protected _floatLabelType: FieldFloatLabelType = 'auto';\n protected _isInitialized = false;\n protected _labelSlotListener: (evt: Event) => void;\n protected _leadingSlotListener: (evt: Event) => void;\n protected _trailingSlotListener: (evt: Event) => void;\n protected _addonEndSlotListener: (evt: Event) => void;\n protected _focusListener: (evt: Event) => void;\n protected _blurListener: (evt: Event) => void;\n protected _valueChangedListener: (value: any) => void;\n protected _inputAttributeChangedListener: (name: string, value: string) => void;\n\n constructor(protected _adapter: IFieldAdapter) {\n this._labelSlotListener = evt => this._onLabelSlotChanged(evt);\n this._leadingSlotListener = evt => this._onLeadingSlotChanged(evt);\n this._trailingSlotListener = evt => this._onTrailingSlotChanged(evt);\n this._addonEndSlotListener = evt => this._onAddonEndSlotChanged(evt);\n this._focusListener = (evt: Event) => this._onFocus(evt);\n this._blurListener = (evt: Event) => this._onBlur(evt);\n this._valueChangedListener = (value: any) => this._onValueChanged(value);\n this._inputAttributeChangedListener = (name, value) => this._onInputAttributeChanged(name, value);\n }\n\n //\n // Public\n //\n\n public initialize(): void {\n this._adapter.initialize(this._required, '');\n\n if (this._adapter.hasLabel()) {\n this._adapter.ensureSlottedLabel();\n }\n\n this._initializeLabel();\n\n if (this._adapter.hasPlaceholder()) {\n this._floatLabelType = 'always';\n }\n\n this._detectSlottedContent();\n this._adapter.addLabelSlotListener(this._labelSlotListener);\n this._adapter.addLeadingSlotListener(this._leadingSlotListener);\n this._adapter.addTrailingSlotListener(this._trailingSlotListener);\n this._adapter.addAddonEndSlotListener(this._addonEndSlotListener);\n this._adapter.setValueChangedListener(this, this._valueChangedListener);\n this._adapter.addInputListener('focus', this._focusListener);\n this._adapter.addInputListener('blur', this._blurListener);\n this._adapter.setInputAttributeObserver(this._inputAttributeChangedListener);\n this._applyDensity();\n this._setShapeType();\n this._setValidity();\n\n if (this._adapter.isDisabled()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.DISABLED);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.DISABLED);\n }\n\n if (this._adapter.isReadonly()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.READONLY);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.READONLY);\n }\n\n if (this._floatLabelType === 'always') {\n this.floatLabel(true);\n }\n\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n this._adapter.destroy();\n\n if (this._floatingLabel) {\n this._floatingLabel.destroy();\n this._floatingLabel = undefined;\n }\n\n this._adapter.removeLabelSlotListener(this._labelSlotListener);\n this._adapter.removeLeadingSlotListener(this._leadingSlotListener);\n this._adapter.removeTrailingSlotListener(this._trailingSlotListener);\n this._adapter.removeAddonEndSlotListener(this._addonEndSlotListener);\n this._adapter.removeInputListener('focus', this._focusListener);\n this._adapter.removeInputListener('blur', this._blurListener);\n this._adapter.destroyValueChangeListener();\n }\n\n public get density(): FieldDensityType {\n return this._density;\n }\n public set density(value: FieldDensityType) {\n if (this._density !== value) {\n this._density = value;\n\n if (this._isInitialized) {\n this._applyDensity();\n this._initializeLabel();\n }\n\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.DENSITY, this._density.toString());\n }\n }\n\n public get floatLabelType(): FieldFloatLabelType {\n return this._floatLabelType;\n }\n public set floatLabelType(value: FieldFloatLabelType) {\n if (this._floatLabelType !== value) {\n this._floatLabelType = value;\n\n if (this._isInitialized) {\n this.floatLabel(this._floatLabelType === 'always');\n }\n\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.FLOAT_LABEL_TYPE, this._floatLabelType);\n }\n }\n\n public get shape(): FieldShapeType {\n return this._shape;\n }\n public set shape(value: FieldShapeType) {\n if (this._shape !== value) {\n this._shape = value;\n\n if (this._isInitialized) {\n this._setShapeType();\n }\n\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.SHAPE, this._shape);\n }\n }\n\n public get invalid(): boolean {\n return this._invalid;\n }\n public set invalid(value: boolean) {\n if (this._invalid !== value) {\n this._invalid = value;\n\n if (this._isInitialized) {\n this._setValidity();\n }\n }\n }\n\n public get required(): boolean {\n return this._required;\n }\n public set required(value: boolean) {\n if (this._required !== value) {\n this._required = value;\n\n if (this._isInitialized) {\n this._setValidity();\n }\n\n if (this._required) {\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.REQUIRED);\n } else {\n this._adapter.removeHostAttribute(FIELD_CONSTANTS.attributes.REQUIRED);\n }\n }\n }\n\n public floatLabel(value: boolean): void {\n if (this._floatingLabel?.isFloating === value) {\n return;\n }\n\n if (!value && this._floatLabelType === 'always') {\n if (this._floatingLabel) {\n this._floatingLabel.float(true, true);\n }\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING, '');\n return;\n }\n\n if (this._floatingLabel) {\n this._floatingLabel.float(value, this._floatLabelType === 'always');\n\n if (value) {\n this._adapter.setInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING, '');\n } else {\n this._adapter.removeInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n this._adapter.removeHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING);\n }\n }\n }\n\n //\n // Protected\n //\n\n protected _onLabelSlotChanged(evt: Event): void {\n this._initializeLabel();\n }\n\n protected _onLeadingSlotChanged(evt: Event): void {\n this._detectLeadingContent();\n }\n\n protected _onTrailingSlotChanged(evt: Event): void {\n this._detectTrailingContent();\n }\n\n protected _onAddonEndSlotChanged(evt: Event): void {\n this._detectAddonEndContent();\n }\n\n protected _initializeLabel(): void {\n if (this._floatingLabel) {\n this._floatingLabel.destroy();\n }\n this._adapter.detectLabel(this._required);\n if (this._adapter.hasLabel() && this._density !== 'dense') {\n this._floatingLabel = this._adapter.initializeFloatingLabel();\n this._adapter.ensureLabelOrder();\n this.floatLabel(this._floatLabelType === 'always' || this._adapter.fieldHasValue() || this._adapter.hasPlaceholder());\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.LABEL);\n } else {\n this._adapter.removeHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING);\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.LABEL);\n this._floatingLabel = undefined;\n }\n }\n\n protected _detectLeadingContent(): void {\n if (this._adapter.hasLeadingNodes()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.LEADING);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.LEADING);\n }\n }\n\n protected _detectTrailingContent(): void {\n if (this._adapter.hasTrailingNodes()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.TRAILING);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.TRAILING);\n }\n }\n\n protected _detectAddonEndContent(): void {\n if (this._adapter.hasAddonEndNodes()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.ADDON_END);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.ADDON_END);\n }\n }\n\n protected _detectSlottedContent(): void {\n this._detectLeadingContent();\n this._detectTrailingContent();\n this._detectAddonEndContent();\n }\n\n protected _onFocus(event: Event): void {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.setLabelClass(FIELD_CONSTANTS.classes.LABEL_FOCUSED);\n this.floatLabel(true);\n }\n\n protected _onBlur(event: Event): void {\n if (this._adapter.inputHasFocus()) {\n return;\n }\n\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.removeLabelClass(FIELD_CONSTANTS.classes.LABEL_FOCUSED);\n\n if (!this._adapter.fieldHasValue() && !this._adapter.hasPlaceholder()) {\n this._adapter.removeHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING);\n this.floatLabel(false);\n }\n }\n\n protected _onValueChanged(value: any): void {\n if (this._adapter.fieldHasValue()) {\n this.floatLabel(true);\n } else if (!this._adapter.inputHasFocus() && !this._adapter.hasPlaceholder()) {\n this.floatLabel(false);\n }\n }\n\n protected _onInputAttributeChanged(name: string, value: string | null): void {\n if (this._adapter.isDisabled()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.DISABLED);\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.removeInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n this._adapter.removeLabelClass(FIELD_CONSTANTS.classes.LABEL_FOCUSED);\n\n if (!this._adapter.fieldHasValue() && !this._adapter.hasPlaceholder() && this._floatingLabel) {\n this.floatLabel(false);\n }\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.DISABLED);\n }\n\n if (this._adapter.isReadonly()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.READONLY);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.READONLY);\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.removeInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n }\n\n switch (name) {\n case 'readonly':\n case 'disabled':\n // If we are changing the readonly or disabled attribute, we want to make sure that we apply\n // the focus state properly if the input element also now has focus\n if (this._adapter.inputHasFocus()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.setInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n this._adapter.setLabelClass(FIELD_CONSTANTS.classes.LABEL_FOCUSED);\n }\n break;\n case 'value':\n if (this._floatingLabel) {\n this.floatLabel(this._adapter.fieldHasValue());\n }\n break;\n case 'placeholder':\n if (this._floatingLabel) {\n const float = (!!value && !!value.trim()) || this._adapter.fieldHasValue();\n if (float !== this._floatingLabel.isFloating) {\n this.floatLabel(float);\n }\n }\n break;\n }\n }\n\n protected _setShapeType(): void {\n if (this._shape === 'rounded') {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.SHAPE_ROUNDED);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.SHAPE_ROUNDED);\n }\n }\n\n protected _setValidity(): void {\n if (this._invalid) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.INVALID);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.INVALID);\n }\n\n if (this._required) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.REQUIRED);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.REQUIRED);\n }\n }\n\n protected _applyDensity(): void {\n this._adapter.setRoomy(this._density === 'roomy');\n this._adapter.setDense(this._density === 'dense');\n }\n}\n", "import { FieldDensityType, FieldFloatLabelType, FieldShapeType, FIELD_CONSTANTS } from './field-constants';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { FieldFoundation } from './field-foundation';\nimport { coerceBoolean, ensureChildren, FoundationProperty } from '@tylertech/forge-core';\n\nexport interface IFieldComponent extends IBaseComponent {\n density: FieldDensityType;\n floatLabelType: FieldFloatLabelType;\n shape: FieldShapeType;\n invalid: boolean;\n required: boolean;\n floatLabel(value: boolean): void;\n}\n\nexport abstract class FieldComponent<T extends FieldFoundation> extends BaseComponent implements IFieldComponent {\n public static get observedAttributes(): string[] {\n return [\n FIELD_CONSTANTS.attributes.DENSITY,\n FIELD_CONSTANTS.attributes.FLOAT_LABEL_TYPE,\n FIELD_CONSTANTS.attributes.SHAPE,\n FIELD_CONSTANTS.attributes.INVALID,\n FIELD_CONSTANTS.attributes.REQUIRED\n ];\n }\n\n protected _foundation: T;\n\n constructor() {\n super();\n }\n\n public connectedCallback(): void {\n if (this.children.length) {\n this._initialize();\n } else {\n ensureChildren(this).then(() => this._initialize());\n }\n }\n\n private _initialize(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case FIELD_CONSTANTS.attributes.DENSITY:\n this.density = newValue as FieldDensityType;\n break;\n case FIELD_CONSTANTS.attributes.FLOAT_LABEL_TYPE:\n this.floatLabelType = newValue as FieldFloatLabelType;\n break;\n case FIELD_CONSTANTS.attributes.SHAPE:\n this.shape = newValue as FieldShapeType;\n break;\n case FIELD_CONSTANTS.attributes.INVALID:\n this.invalid = coerceBoolean(newValue);\n break;\n case FIELD_CONSTANTS.attributes.REQUIRED:\n this.required = coerceBoolean(newValue);\n break;\n }\n }\n\n /** Controls the density type. */\n @FoundationProperty()\n public density: FieldDensityType;\n\n /** Whether the label should always float, never float or float as the user types. */\n @FoundationProperty()\n public floatLabelType: FieldFloatLabelType;\n\n /** The shape type to use. */\n @FoundationProperty()\n public shape: FieldShapeType;\n\n /** Gets/sets the invalid state. */\n @FoundationProperty()\n public invalid: boolean;\n\n /** Gets/sets the required state which controls the visibility of the asterisk in the label. */\n @FoundationProperty()\n public required: boolean;\n\n /**\n * Controls whether the label should be floating or not.\n * @param {boolean} value\n */\n public floatLabel(value: boolean): void {\n this._foundation.floatLabel(value);\n }\n}\n\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|