@tylertech/forge 2.7.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 +4428 -86
- 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.GL72QT42.js → chunk.35BJJH5E.js} +2 -2
- package/dist/esm/chunks/{chunk.GL72QT42.js.map → chunk.35BJJH5E.js.map} +1 -1
- 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.JUXKYUD4.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.JUXKYUD4.js → chunk.D2AL6QLF.js} +60 -40
- 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.L344BPCW.js → chunk.F5O63UF4.js} +2 -2
- package/dist/esm/chunks/{chunk.L344BPCW.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.65GHMPX2.js → chunk.J2FCOFOE.js} +6 -6
- package/dist/esm/chunks/chunk.J2FCOFOE.js.map +7 -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.C73AZRT4.js → chunk.QKCIMRRG.js} +36 -19
- 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.ZXMJB7OW.js → chunk.R357QRWX.js} +54 -50
- 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.MF3IZXQG.js → chunk.TSHHEAIC.js} +2 -2
- package/dist/esm/chunks/{chunk.MF3IZXQG.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.GOWHXADJ.js → chunk.X3TV6IHS.js} +23 -15
- package/dist/esm/chunks/chunk.X3TV6IHS.js.map +7 -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.XHMNHBZD.js → chunk.YCHKXJLN.js} +3 -3
- package/dist/esm/chunks/{chunk.XHMNHBZD.js.map → chunk.YCHKXJLN.js.map} +1 -1
- 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 +169 -94
- package/dist/esm/inline-message/index.js +1 -1
- 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/drawer/base/base-drawer-foundation.d.ts +4 -2
- package/esm/drawer/base/base-drawer-foundation.js +22 -14
- package/esm/drawer/modal-drawer/modal-drawer-foundation.d.ts +2 -2
- package/esm/drawer/modal-drawer/modal-drawer-foundation.js +4 -4
- 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/file-picker/file-picker.js +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.js +3 -0
- package/esm/inline-message/inline-message.js +1 -1
- 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/table/table.js +3 -1
- 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/esm/time-picker/time-picker-constants.d.ts +1 -0
- package/esm/time-picker/time-picker-constants.js +1 -0
- package/esm/time-picker/time-picker-foundation.d.ts +4 -0
- package/esm/time-picker/time-picker-foundation.js +44 -29
- package/esm/time-picker/time-picker.d.ts +3 -0
- package/esm/time-picker/time-picker.js +7 -0
- 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/file-picker/_mixins.scss +3 -1
- package/styles/inline-message/inline-message.scss +4 -0
- 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.65GHMPX2.js.map +0 -7
- package/dist/esm/chunks/chunk.7I2XNJBL.js.map +0 -7
- package/dist/esm/chunks/chunk.C73AZRT4.js.map +0 -7
- package/dist/esm/chunks/chunk.FJJVIMZ2.js.map +0 -7
- package/dist/esm/chunks/chunk.GOWHXADJ.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.ZXMJB7OW.js.map +0 -7
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';
|
|
7
|
+
import { ISplitViewPanelComponent } from '../split-view-panel';
|
|
8
|
+
import { ISplitViewComponent } from './split-view';
|
|
9
|
+
import { SplitViewOrientation } from './split-view-constants';
|
|
10
|
+
export interface ISplitViewAdapter extends IBaseAdapter {
|
|
11
|
+
registerSlotListener(listener: (evt: Event) => void): void;
|
|
12
|
+
observeResize(callback: (entry: ResizeObserverEntry) => void): void;
|
|
13
|
+
unobserveResize(): void;
|
|
14
|
+
getSlottedPanels(): ISplitViewPanelComponent[];
|
|
15
|
+
refitSlottedPanels(orientation: SplitViewOrientation): void;
|
|
16
|
+
}
|
|
17
|
+
export declare class SplitViewAdapter extends BaseAdapter<ISplitViewComponent> implements ISplitViewAdapter {
|
|
18
|
+
private _root;
|
|
19
|
+
constructor(component: ISplitViewComponent);
|
|
20
|
+
registerSlotListener(listener: (evt: Event) => void): void;
|
|
21
|
+
observeResize(callback: (entry: ResizeObserverEntry) => void): void;
|
|
22
|
+
unobserveResize(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Gets all child panels.
|
|
25
|
+
* @returns All child panels.
|
|
26
|
+
*/
|
|
27
|
+
getSlottedPanels(): ISplitViewPanelComponent[];
|
|
28
|
+
refitSlottedPanels(orientation: SplitViewOrientation): void;
|
|
29
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ForgeResizeObserver, getShadowElement } from '@tylertech/forge-core';
|
|
7
|
+
import { BaseAdapter } from '../../core/base/base-adapter';
|
|
8
|
+
import { SPLIT_VIEW_PANEL_CONSTANTS } from '../split-view-panel';
|
|
9
|
+
import { SPLIT_VIEW_CONSTANTS } from './split-view-constants';
|
|
10
|
+
export class SplitViewAdapter extends BaseAdapter {
|
|
11
|
+
constructor(component) {
|
|
12
|
+
super(component);
|
|
13
|
+
this._root = getShadowElement(component, SPLIT_VIEW_CONSTANTS.selectors.ROOT);
|
|
14
|
+
}
|
|
15
|
+
registerSlotListener(listener) {
|
|
16
|
+
this._root.addEventListener('slotchange', listener);
|
|
17
|
+
}
|
|
18
|
+
observeResize(callback) {
|
|
19
|
+
ForgeResizeObserver.observe(this._root, callback);
|
|
20
|
+
}
|
|
21
|
+
unobserveResize() {
|
|
22
|
+
ForgeResizeObserver.unobserve(this._root);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Gets all child panels.
|
|
26
|
+
* @returns All child panels.
|
|
27
|
+
*/
|
|
28
|
+
getSlottedPanels() {
|
|
29
|
+
const nodeList = this._component.querySelectorAll(SPLIT_VIEW_CONSTANTS.selectors.PANEL);
|
|
30
|
+
return Array.from(nodeList);
|
|
31
|
+
}
|
|
32
|
+
refitSlottedPanels(orientation) {
|
|
33
|
+
// Check if the combined panel size is greater than the split view size along the relevant axis
|
|
34
|
+
const size = orientation === 'horizontal' ? this._root.clientWidth : this._root.clientHeight;
|
|
35
|
+
const panels = this.getSlottedPanels();
|
|
36
|
+
const combinedPanelSize = panels.map(panel => {
|
|
37
|
+
var _a;
|
|
38
|
+
const panelRoot = (_a = panel.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(SPLIT_VIEW_PANEL_CONSTANTS.selectors.ROOT);
|
|
39
|
+
const panelSize = orientation === 'horizontal' ? panelRoot === null || panelRoot === void 0 ? void 0 : panelRoot.clientWidth : panelRoot === null || panelRoot === void 0 ? void 0 : panelRoot.clientHeight;
|
|
40
|
+
return panelSize !== null && panelSize !== void 0 ? panelSize : 0;
|
|
41
|
+
}).reduce((cur, acc) => cur + acc, 0);
|
|
42
|
+
// Do nothing if all the panels fit
|
|
43
|
+
if (combinedPanelSize <= size) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Get the size adjustment needed to fit
|
|
47
|
+
let diff = combinedPanelSize - size;
|
|
48
|
+
// Size down the panels as needed in reverse order, adjusting diff accordingly
|
|
49
|
+
panels.reverse().forEach(panel => {
|
|
50
|
+
if (diff <= 0) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const panelSize = panel.getContentSize();
|
|
54
|
+
const collapsibleSize = panel.getCollapsibleSize();
|
|
55
|
+
const reduceBy = Math.min(diff, collapsibleSize);
|
|
56
|
+
const newSize = panelSize - reduceBy;
|
|
57
|
+
panel.setContentSize(newSize);
|
|
58
|
+
diff -= reduceBy;
|
|
59
|
+
});
|
|
60
|
+
// If there's still overflow nothing else can be done
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ISplitViewBase } from '../core';
|
|
7
|
+
export declare const SPLIT_VIEW_CONSTANTS: {
|
|
8
|
+
elementName: "forge-split-view";
|
|
9
|
+
attributes: {
|
|
10
|
+
ORIENTATION: string;
|
|
11
|
+
DISABLED: string;
|
|
12
|
+
ALLOW_CLOSE: string;
|
|
13
|
+
AUTO_CLOSE: string;
|
|
14
|
+
AUTO_CLOSE_THRESHOLD: string;
|
|
15
|
+
};
|
|
16
|
+
classes: {
|
|
17
|
+
ROOT: string;
|
|
18
|
+
};
|
|
19
|
+
ids: {
|
|
20
|
+
ROOT: string;
|
|
21
|
+
};
|
|
22
|
+
selectors: {
|
|
23
|
+
ROOT: string;
|
|
24
|
+
PANEL: "forge-split-view-panel";
|
|
25
|
+
};
|
|
26
|
+
numbers: {
|
|
27
|
+
RESIZE_THROTTLE_THRESHOLD: number;
|
|
28
|
+
};
|
|
29
|
+
customCssProperties: {
|
|
30
|
+
ANIMATING_LAYER: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export declare type SplitViewOrientation = 'horizontal' | 'vertical';
|
|
34
|
+
export interface ISplitViewUpdateConfig {
|
|
35
|
+
accessibility?: boolean;
|
|
36
|
+
clearCursor?: boolean;
|
|
37
|
+
cursor?: boolean;
|
|
38
|
+
orientation?: SplitViewOrientation;
|
|
39
|
+
properties?: Partial<ISplitViewBase>;
|
|
40
|
+
size?: boolean;
|
|
41
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { COMPONENT_NAME_PREFIX } from '../../constants';
|
|
7
|
+
import { SPLIT_VIEW_PANEL_CONSTANTS } from '../split-view-panel/split-view-panel-constants';
|
|
8
|
+
const elementName = `${COMPONENT_NAME_PREFIX}split-view`;
|
|
9
|
+
const attributes = {
|
|
10
|
+
ORIENTATION: 'orientation',
|
|
11
|
+
DISABLED: 'disabled',
|
|
12
|
+
ALLOW_CLOSE: 'allow-close',
|
|
13
|
+
AUTO_CLOSE: 'auto-close',
|
|
14
|
+
AUTO_CLOSE_THRESHOLD: 'auto-close-threshold'
|
|
15
|
+
};
|
|
16
|
+
const classes = {
|
|
17
|
+
ROOT: 'forge-split-view'
|
|
18
|
+
};
|
|
19
|
+
const ids = {
|
|
20
|
+
ROOT: 'root'
|
|
21
|
+
};
|
|
22
|
+
const selectors = {
|
|
23
|
+
ROOT: `#${ids.ROOT}`,
|
|
24
|
+
PANEL: SPLIT_VIEW_PANEL_CONSTANTS.elementName
|
|
25
|
+
};
|
|
26
|
+
const numbers = {
|
|
27
|
+
RESIZE_THROTTLE_THRESHOLD: 200
|
|
28
|
+
};
|
|
29
|
+
const customCssProperties = {
|
|
30
|
+
ANIMATING_LAYER: '--forge-split-view-animating-layer'
|
|
31
|
+
};
|
|
32
|
+
export const SPLIT_VIEW_CONSTANTS = {
|
|
33
|
+
elementName,
|
|
34
|
+
attributes,
|
|
35
|
+
classes,
|
|
36
|
+
ids,
|
|
37
|
+
selectors,
|
|
38
|
+
numbers,
|
|
39
|
+
customCssProperties
|
|
40
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ICustomElementFoundation } from '@tylertech/forge-core';
|
|
7
|
+
import { ISplitViewBase } from '../core/split-view-base';
|
|
8
|
+
import { ISplitViewPanelComponent } from '../split-view-panel';
|
|
9
|
+
import { ISplitViewAdapter } from './split-view-adapter';
|
|
10
|
+
import { ISplitViewUpdateConfig, SplitViewOrientation } from './split-view-constants';
|
|
11
|
+
export interface ISplitViewFoundation extends ISplitViewBase, ICustomElementFoundation {
|
|
12
|
+
orientation: SplitViewOrientation;
|
|
13
|
+
layerSlottedPanels(target: ISplitViewPanelComponent): void;
|
|
14
|
+
unlayerSlottedPanels(): void;
|
|
15
|
+
update(config: ISplitViewUpdateConfig): void;
|
|
16
|
+
refitSlottedPanels(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare class SplitViewFoundation implements ISplitViewFoundation {
|
|
19
|
+
private _adapter;
|
|
20
|
+
private _orientation;
|
|
21
|
+
private _disabled;
|
|
22
|
+
private _allowClose;
|
|
23
|
+
private _autoClose;
|
|
24
|
+
private _autoCloseThreshold;
|
|
25
|
+
private _slotListener;
|
|
26
|
+
private _resizeObserverCallback;
|
|
27
|
+
private _isInitialized;
|
|
28
|
+
constructor(_adapter: ISplitViewAdapter);
|
|
29
|
+
initialize(): void;
|
|
30
|
+
disconnect(): void;
|
|
31
|
+
private _onSlotChange;
|
|
32
|
+
private _onResize;
|
|
33
|
+
/**
|
|
34
|
+
* Sets the resizable value of slotted panels with no resizable value set.
|
|
35
|
+
*/
|
|
36
|
+
private _layoutSlottedPanels;
|
|
37
|
+
/**
|
|
38
|
+
* Get/set whether panels are arranged horizontally or vertically.
|
|
39
|
+
*/
|
|
40
|
+
get orientation(): SplitViewOrientation;
|
|
41
|
+
set orientation(value: SplitViewOrientation);
|
|
42
|
+
private _applyOrientation;
|
|
43
|
+
/**
|
|
44
|
+
* Get/set whether interactions are disabled.
|
|
45
|
+
*/
|
|
46
|
+
get disabled(): boolean;
|
|
47
|
+
set disabled(value: boolean);
|
|
48
|
+
private _applyDisabled;
|
|
49
|
+
/**
|
|
50
|
+
* Get/set whether closing the panel is disabled.
|
|
51
|
+
*/
|
|
52
|
+
get allowClose(): boolean;
|
|
53
|
+
set allowClose(value: boolean);
|
|
54
|
+
private _applyAllowClose;
|
|
55
|
+
/**
|
|
56
|
+
* Get/set whether the panel closes when a threshold size is reached.
|
|
57
|
+
*/
|
|
58
|
+
get autoClose(): boolean;
|
|
59
|
+
set autoClose(value: boolean);
|
|
60
|
+
private _applyAutoClose;
|
|
61
|
+
/**
|
|
62
|
+
* Get/set the size at which panels auto close.
|
|
63
|
+
*/
|
|
64
|
+
get autoCloseThreshold(): number;
|
|
65
|
+
set autoCloseThreshold(value: number);
|
|
66
|
+
private _applyAutoCloseThreshold;
|
|
67
|
+
/**
|
|
68
|
+
* Layers panels in a set order during an animation. Panels that the target is animating toward
|
|
69
|
+
* stack above it and other layers stack under it.
|
|
70
|
+
* @param target The animating panel.
|
|
71
|
+
*/
|
|
72
|
+
layerSlottedPanels(target: ISplitViewPanelComponent): void;
|
|
73
|
+
/**
|
|
74
|
+
* Removes layering after an animation.
|
|
75
|
+
*/
|
|
76
|
+
unlayerSlottedPanels(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Updates the provided characteristics of each panel.
|
|
79
|
+
* @param config An update configuration.
|
|
80
|
+
*/
|
|
81
|
+
update(config: ISplitViewUpdateConfig): void;
|
|
82
|
+
/**
|
|
83
|
+
* Resizes panels within the split view to avoid overflow.
|
|
84
|
+
*/
|
|
85
|
+
refitSlottedPanels(): void;
|
|
86
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { throttle } from '@tylertech/forge-core';
|
|
7
|
+
import { SplitViewAnimatingLayer } from '../split-view-panel';
|
|
8
|
+
import { SPLIT_VIEW_CONSTANTS } from './split-view-constants';
|
|
9
|
+
export class SplitViewFoundation {
|
|
10
|
+
constructor(_adapter) {
|
|
11
|
+
this._adapter = _adapter;
|
|
12
|
+
this._orientation = 'horizontal';
|
|
13
|
+
this._disabled = false;
|
|
14
|
+
this._allowClose = false;
|
|
15
|
+
this._autoClose = false;
|
|
16
|
+
this._autoCloseThreshold = 0;
|
|
17
|
+
this._isInitialized = false;
|
|
18
|
+
this._slotListener = evt => this._onSlotChange(evt);
|
|
19
|
+
this._resizeObserverCallback = throttle((entry) => this._onResize(entry), SPLIT_VIEW_CONSTANTS.numbers.RESIZE_THROTTLE_THRESHOLD);
|
|
20
|
+
}
|
|
21
|
+
initialize() {
|
|
22
|
+
this._adapter.registerSlotListener(this._slotListener);
|
|
23
|
+
this._adapter.observeResize(this._resizeObserverCallback);
|
|
24
|
+
this._applyOrientation();
|
|
25
|
+
this._isInitialized = true;
|
|
26
|
+
}
|
|
27
|
+
disconnect() {
|
|
28
|
+
this._adapter.unobserveResize();
|
|
29
|
+
}
|
|
30
|
+
_onSlotChange(evt) {
|
|
31
|
+
this._layoutSlottedPanels();
|
|
32
|
+
this.update({ accessibility: true, cursor: true, orientation: this._orientation });
|
|
33
|
+
}
|
|
34
|
+
_onResize(entry) {
|
|
35
|
+
this.update({ accessibility: true, cursor: true, size: true });
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Sets the resizable value of slotted panels with no resizable value set.
|
|
39
|
+
*/
|
|
40
|
+
_layoutSlottedPanels() {
|
|
41
|
+
const panels = this._adapter.getSlottedPanels();
|
|
42
|
+
// A single panel should have resizable set to off. Just leave it alone.
|
|
43
|
+
if (panels.length < 2) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Don't change any panels if resizable is already set.
|
|
47
|
+
if (panels.some(panel => panel.resizable !== 'off')) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// All panels after the first have resizable set to start.
|
|
51
|
+
panels.slice(1).forEach(panel => panel.resizable = 'start');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get/set whether panels are arranged horizontally or vertically.
|
|
55
|
+
*/
|
|
56
|
+
get orientation() {
|
|
57
|
+
return this._orientation;
|
|
58
|
+
}
|
|
59
|
+
set orientation(value) {
|
|
60
|
+
if (this._orientation !== value) {
|
|
61
|
+
this._orientation = value;
|
|
62
|
+
this._applyOrientation();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
_applyOrientation() {
|
|
66
|
+
this._adapter.setHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.ORIENTATION, this._orientation);
|
|
67
|
+
this.update({ orientation: this._orientation });
|
|
68
|
+
if (this._isInitialized) {
|
|
69
|
+
this._adapter.refitSlottedPanels(this._orientation);
|
|
70
|
+
}
|
|
71
|
+
this.update({ accessibility: true, cursor: true });
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get/set whether interactions are disabled.
|
|
75
|
+
*/
|
|
76
|
+
get disabled() {
|
|
77
|
+
return this._disabled;
|
|
78
|
+
}
|
|
79
|
+
set disabled(value) {
|
|
80
|
+
if (this._disabled !== value) {
|
|
81
|
+
this._disabled = value;
|
|
82
|
+
this._applyDisabled();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
_applyDisabled() {
|
|
86
|
+
this._adapter.toggleHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.DISABLED, this._disabled);
|
|
87
|
+
this.update({ properties: { disabled: this._disabled } });
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get/set whether closing the panel is disabled.
|
|
91
|
+
*/
|
|
92
|
+
get allowClose() {
|
|
93
|
+
return this._allowClose;
|
|
94
|
+
}
|
|
95
|
+
set allowClose(value) {
|
|
96
|
+
if (this._allowClose !== value) {
|
|
97
|
+
this._allowClose = value;
|
|
98
|
+
this._applyAllowClose();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
_applyAllowClose() {
|
|
102
|
+
this._adapter.toggleHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.ALLOW_CLOSE, this._allowClose);
|
|
103
|
+
this.update({ properties: { allowClose: this._allowClose } });
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get/set whether the panel closes when a threshold size is reached.
|
|
107
|
+
*/
|
|
108
|
+
get autoClose() {
|
|
109
|
+
return this._autoClose;
|
|
110
|
+
}
|
|
111
|
+
set autoClose(value) {
|
|
112
|
+
if (this._autoClose !== value) {
|
|
113
|
+
this._autoClose = value;
|
|
114
|
+
this._applyAutoClose();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
_applyAutoClose() {
|
|
118
|
+
this._adapter.toggleHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE, this._autoClose);
|
|
119
|
+
this.update({ properties: { autoClose: this._autoClose } });
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get/set the size at which panels auto close.
|
|
123
|
+
*/
|
|
124
|
+
get autoCloseThreshold() {
|
|
125
|
+
return this._autoCloseThreshold;
|
|
126
|
+
}
|
|
127
|
+
set autoCloseThreshold(value) {
|
|
128
|
+
if (this._autoCloseThreshold !== value) {
|
|
129
|
+
this._autoCloseThreshold = value;
|
|
130
|
+
this._applyAutoCloseThreshold();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
_applyAutoCloseThreshold() {
|
|
134
|
+
this._adapter.setHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE_THRESHOLD, this._autoCloseThreshold.toString());
|
|
135
|
+
this.update({ properties: { autoCloseThreshold: this._autoCloseThreshold } });
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Layers panels in a set order during an animation. Panels that the target is animating toward
|
|
139
|
+
* stack above it and other layers stack under it.
|
|
140
|
+
* @param target The animating panel.
|
|
141
|
+
*/
|
|
142
|
+
layerSlottedPanels(target) {
|
|
143
|
+
const panels = this._adapter.getSlottedPanels();
|
|
144
|
+
const increment = target.resizable === 'start' ? 1 : -1;
|
|
145
|
+
let layer = target.resizable === 'start' ? SplitViewAnimatingLayer.Under : SplitViewAnimatingLayer.Above;
|
|
146
|
+
panels.forEach(panel => {
|
|
147
|
+
// Increment the layer if moving into or out of the target panel
|
|
148
|
+
if (panel === target || layer === SplitViewAnimatingLayer.Active) {
|
|
149
|
+
layer += increment;
|
|
150
|
+
}
|
|
151
|
+
panel.style.setProperty(SPLIT_VIEW_CONSTANTS.customCssProperties.ANIMATING_LAYER, layer.toString());
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Removes layering after an animation.
|
|
156
|
+
*/
|
|
157
|
+
unlayerSlottedPanels() {
|
|
158
|
+
const panels = this._adapter.getSlottedPanels();
|
|
159
|
+
panels.forEach(panel => {
|
|
160
|
+
panel.style.removeProperty(SPLIT_VIEW_CONSTANTS.customCssProperties.ANIMATING_LAYER);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Updates the provided characteristics of each panel.
|
|
165
|
+
* @param config An update configuration.
|
|
166
|
+
*/
|
|
167
|
+
update(config) {
|
|
168
|
+
const panels = this._adapter.getSlottedPanels();
|
|
169
|
+
panels.forEach(panel => {
|
|
170
|
+
panel.update(config);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Resizes panels within the split view to avoid overflow.
|
|
175
|
+
*/
|
|
176
|
+
refitSlottedPanels() {
|
|
177
|
+
this._adapter.refitSlottedPanels(this._orientation);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BaseComponent, IBaseComponent } from '../../core/base/base-component';
|
|
7
|
+
import { ISplitViewUpdateConfig, SplitViewOrientation } from './split-view-constants';
|
|
8
|
+
import { ISplitViewPanelComponent } from '../split-view-panel';
|
|
9
|
+
import { ISplitViewBase } from '../core/split-view-base';
|
|
10
|
+
export interface ISplitViewComponent extends ISplitViewBase, IBaseComponent {
|
|
11
|
+
orientation: SplitViewOrientation;
|
|
12
|
+
layerSlottedPanels(target: ISplitViewPanelComponent): void;
|
|
13
|
+
unlayerSlottedPanels(): void;
|
|
14
|
+
update(config: ISplitViewUpdateConfig): void;
|
|
15
|
+
refit(): void;
|
|
16
|
+
}
|
|
17
|
+
declare global {
|
|
18
|
+
interface HTMLElementTagNameMap {
|
|
19
|
+
'forge-split-view': ISplitViewComponent;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export declare class SplitViewComponent extends BaseComponent implements ISplitViewComponent {
|
|
23
|
+
static get observedAttributes(): string[];
|
|
24
|
+
private _foundation;
|
|
25
|
+
constructor();
|
|
26
|
+
connectedCallback(): void;
|
|
27
|
+
disconnectedCallback(): void;
|
|
28
|
+
attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Whether child split view panels are laid out and resize horizontally or vertically.
|
|
31
|
+
*/
|
|
32
|
+
orientation: SplitViewOrientation;
|
|
33
|
+
/**
|
|
34
|
+
* Whether child split view panels have resize interactions disabled or enabled.
|
|
35
|
+
*/
|
|
36
|
+
disabled: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Whether child split view panels can be closed via keyboard interaction.
|
|
39
|
+
*/
|
|
40
|
+
allowClose: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether child split view panels automatically close when they reach a size of 0.
|
|
43
|
+
*/
|
|
44
|
+
autoClose: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* The size at which panels auto close.
|
|
47
|
+
*/
|
|
48
|
+
autoCloseThreshold: number;
|
|
49
|
+
/**
|
|
50
|
+
* Arranges split view panels to avoid overlapping during animations.
|
|
51
|
+
* @param target The originating split view panel component.
|
|
52
|
+
*/
|
|
53
|
+
layerSlottedPanels(target: ISplitViewPanelComponent): void;
|
|
54
|
+
/**
|
|
55
|
+
* Removes presentation data set during an animation.
|
|
56
|
+
*/
|
|
57
|
+
unlayerSlottedPanels(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Updates the provided characteristics of each slotted panel.
|
|
60
|
+
* @param config An update configuration.
|
|
61
|
+
*/
|
|
62
|
+
update(config: ISplitViewUpdateConfig): void;
|
|
63
|
+
/**
|
|
64
|
+
* Resizes panels within the split view to avoid overflow.
|
|
65
|
+
*/
|
|
66
|
+
refit(): void;
|
|
67
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { __decorate } from "tslib";
|
|
7
|
+
import { CustomElement, attachShadowTemplate, FoundationProperty, coerceBoolean, coerceNumber } from '@tylertech/forge-core';
|
|
8
|
+
import { BaseComponent } from '../../core/base/base-component';
|
|
9
|
+
import { SplitViewAdapter } from './split-view-adapter';
|
|
10
|
+
import { SplitViewFoundation } from './split-view-foundation';
|
|
11
|
+
import { SPLIT_VIEW_CONSTANTS } from './split-view-constants';
|
|
12
|
+
import { SplitViewPanelComponent } from '../split-view-panel';
|
|
13
|
+
const template = '<template><div class=\"forge-split-view\" id=\"root\" part=\"root\"><slot></slot></div></template>';
|
|
14
|
+
const styles = '@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;position:relative;outline:0;overflow:hidden}.mdc-ripple-surface::after,.mdc-ripple-surface::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface::after,.mdc-ripple-surface::before{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-upgraded--unbounded::after,.mdc-ripple-upgraded--unbounded::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{background-color:#000;background-color:var(--mdc-ripple-color,#000)}.mdc-ripple-surface.mdc-ripple-surface--hover::before,.mdc-ripple-surface:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{--mdc-ripple-color:var(--mdc-theme-on-surface)}.forge-split-view{display:-webkit-box;display:flex;width:100%;height:100%}:host{--forge-split-view-handle-width:8px;display:block;height:100%;width:100%;overflow:hidden;contain:paint size}:host([hidden]){display:none}:host([orientation=horizontal]) .forge-split-view{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}:host([orientation=vertical]) .forge-split-view{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}';
|
|
15
|
+
let SplitViewComponent = class SplitViewComponent extends BaseComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
attachShadowTemplate(this, template, styles);
|
|
19
|
+
this._foundation = new SplitViewFoundation(new SplitViewAdapter(this));
|
|
20
|
+
}
|
|
21
|
+
static get observedAttributes() {
|
|
22
|
+
return [
|
|
23
|
+
SPLIT_VIEW_CONSTANTS.attributes.ORIENTATION,
|
|
24
|
+
SPLIT_VIEW_CONSTANTS.attributes.DISABLED,
|
|
25
|
+
SPLIT_VIEW_CONSTANTS.attributes.ALLOW_CLOSE,
|
|
26
|
+
SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE,
|
|
27
|
+
SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE_THRESHOLD
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
connectedCallback() {
|
|
31
|
+
this._foundation.initialize();
|
|
32
|
+
}
|
|
33
|
+
disconnectedCallback() {
|
|
34
|
+
this._foundation.disconnect();
|
|
35
|
+
}
|
|
36
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
37
|
+
switch (name) {
|
|
38
|
+
case SPLIT_VIEW_CONSTANTS.attributes.ORIENTATION:
|
|
39
|
+
this.orientation = newValue;
|
|
40
|
+
break;
|
|
41
|
+
case SPLIT_VIEW_CONSTANTS.attributes.DISABLED:
|
|
42
|
+
this.disabled = coerceBoolean(newValue);
|
|
43
|
+
break;
|
|
44
|
+
case SPLIT_VIEW_CONSTANTS.attributes.ALLOW_CLOSE:
|
|
45
|
+
this.allowClose = coerceBoolean(newValue);
|
|
46
|
+
break;
|
|
47
|
+
case SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE:
|
|
48
|
+
this.autoClose = coerceBoolean(newValue);
|
|
49
|
+
break;
|
|
50
|
+
case SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE_THRESHOLD:
|
|
51
|
+
this.autoCloseThreshold = coerceNumber(newValue);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Arranges split view panels to avoid overlapping during animations.
|
|
57
|
+
* @param target The originating split view panel component.
|
|
58
|
+
*/
|
|
59
|
+
layerSlottedPanels(target) {
|
|
60
|
+
this._foundation.layerSlottedPanels(target);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Removes presentation data set during an animation.
|
|
64
|
+
*/
|
|
65
|
+
unlayerSlottedPanels() {
|
|
66
|
+
this._foundation.unlayerSlottedPanels();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Updates the provided characteristics of each slotted panel.
|
|
70
|
+
* @param config An update configuration.
|
|
71
|
+
*/
|
|
72
|
+
update(config) {
|
|
73
|
+
this._foundation.update(config);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Resizes panels within the split view to avoid overflow.
|
|
77
|
+
*/
|
|
78
|
+
refit() {
|
|
79
|
+
this._foundation.refitSlottedPanels();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
__decorate([
|
|
83
|
+
FoundationProperty()
|
|
84
|
+
], SplitViewComponent.prototype, "orientation", void 0);
|
|
85
|
+
__decorate([
|
|
86
|
+
FoundationProperty()
|
|
87
|
+
], SplitViewComponent.prototype, "disabled", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
FoundationProperty()
|
|
90
|
+
], SplitViewComponent.prototype, "allowClose", void 0);
|
|
91
|
+
__decorate([
|
|
92
|
+
FoundationProperty()
|
|
93
|
+
], SplitViewComponent.prototype, "autoClose", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
FoundationProperty()
|
|
96
|
+
], SplitViewComponent.prototype, "autoCloseThreshold", void 0);
|
|
97
|
+
SplitViewComponent = __decorate([
|
|
98
|
+
CustomElement({
|
|
99
|
+
name: SPLIT_VIEW_CONSTANTS.elementName,
|
|
100
|
+
dependencies: [SplitViewPanelComponent]
|
|
101
|
+
})
|
|
102
|
+
], SplitViewComponent);
|
|
103
|
+
export { SplitViewComponent };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export * from './split-view-panel-adapter';
|
|
7
|
+
export * from './split-view-panel-constants';
|
|
8
|
+
export * from './split-view-panel-foundation';
|
|
9
|
+
export * from './split-view-panel';
|
|
10
|
+
export * from './split-view-panel-utils';
|
|
11
|
+
export declare function defineSplitViewPanelComponent(): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { defineCustomElement } from '@tylertech/forge-core';
|
|
7
|
+
import { SplitViewPanelComponent } from './split-view-panel';
|
|
8
|
+
export * from './split-view-panel-adapter';
|
|
9
|
+
export * from './split-view-panel-constants';
|
|
10
|
+
export * from './split-view-panel-foundation';
|
|
11
|
+
export * from './split-view-panel';
|
|
12
|
+
export * from './split-view-panel-utils';
|
|
13
|
+
export function defineSplitViewPanelComponent() {
|
|
14
|
+
defineCustomElement(SplitViewPanelComponent);
|
|
15
|
+
}
|